diff --git a/paper-server/patches/unapplied/net/minecraft/world/item/alchemy/PotionBrewing.java.patch b/paper-server/patches/sources/net/minecraft/world/item/alchemy/PotionBrewing.java.patch similarity index 76% rename from paper-server/patches/unapplied/net/minecraft/world/item/alchemy/PotionBrewing.java.patch rename to paper-server/patches/sources/net/minecraft/world/item/alchemy/PotionBrewing.java.patch index c9c0b22f57..1ccb0b5432 100644 --- a/paper-server/patches/unapplied/net/minecraft/world/item/alchemy/PotionBrewing.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/item/alchemy/PotionBrewing.java.patch @@ -1,14 +1,14 @@ --- a/net/minecraft/world/item/alchemy/PotionBrewing.java +++ b/net/minecraft/world/item/alchemy/PotionBrewing.java -@@ -19,6 +19,7 @@ +@@ -19,6 +_,7 @@ private final List containers; private final List> potionMixes; private final List> containerMixes; + private final it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap customMixes = new it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap<>(); // Paper - Custom Potion Mixes - PotionBrewing(List potionTypes, List> potionRecipes, List> itemRecipes) { - this.containers = potionTypes; -@@ -27,7 +28,7 @@ + PotionBrewing(List containers, List> potionMixes, List> containerMixes) { + this.containers = containers; +@@ -27,7 +_,7 @@ } public boolean isIngredient(ItemStack stack) { @@ -17,36 +17,37 @@ } private boolean isContainer(ItemStack stack) { -@@ -71,6 +72,11 @@ +@@ -71,6 +_,11 @@ } - public boolean hasMix(ItemStack input, ItemStack ingredient) { + public boolean hasMix(ItemStack reagent, ItemStack potionItem) { + // Paper start - Custom Potion Mixes -+ if (this.hasCustomMix(input, ingredient)) { ++ if (this.hasCustomMix(reagent, potionItem)) { + return true; + } + // Paper end - Custom Potion Mixes - return this.isContainer(input) && (this.hasContainerMix(input, ingredient) || this.hasPotionMix(input, ingredient)); + return this.isContainer(reagent) && (this.hasContainerMix(reagent, potionItem) || this.hasPotionMix(reagent, potionItem)); } -@@ -103,6 +109,13 @@ - if (input.isEmpty()) { - return input; +@@ -103,6 +_,13 @@ + if (potionItem.isEmpty()) { + return potionItem; } else { + // Paper start - Custom Potion Mixes + for (io.papermc.paper.potion.PaperPotionMix mix : this.customMixes.values()) { -+ if (mix.input().test(input) && mix.ingredient().test(ingredient)) { ++ if (mix.input().test(potionItem) && mix.ingredient().test(potion)) { + return mix.result().copy(); + } + } + // Paper end - Custom Potion Mixes - Optional> optional = input.getOrDefault(DataComponents.POTION_CONTENTS, PotionContents.EMPTY).potion(); + Optional> optional = potionItem.getOrDefault(DataComponents.POTION_CONTENTS, PotionContents.EMPTY).potion(); if (optional.isEmpty()) { - return input; -@@ -190,6 +203,50 @@ + return potionItem; +@@ -189,6 +_,50 @@ + builder.addMix(Potions.AWKWARD, Items.PHANTOM_MEMBRANE, Potions.SLOW_FALLING); builder.addMix(Potions.SLOW_FALLING, Items.REDSTONE, Potions.LONG_SLOW_FALLING); } - ++ + // Paper start - Custom Potion Mixes + public boolean isCustomIngredient(ItemStack stack) { + for (io.papermc.paper.potion.PaperPotionMix mix : this.customMixes.values()) { @@ -90,7 +91,6 @@ + return bootstrap(flags); + } + // Paper end - Custom Potion Mixes -+ + public static class Builder { private final List containers = new ArrayList<>(); - private final List> potionMixes = new ArrayList<>(); diff --git a/paper-server/patches/sources/net/minecraft/world/item/alchemy/PotionContents.java.patch b/paper-server/patches/sources/net/minecraft/world/item/alchemy/PotionContents.java.patch new file mode 100644 index 0000000000..f499dec2ee --- /dev/null +++ b/paper-server/patches/sources/net/minecraft/world/item/alchemy/PotionContents.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/item/alchemy/PotionContents.java ++++ b/net/minecraft/world/item/alchemy/PotionContents.java +@@ -158,7 +_,7 @@ + if (mobEffectInstance.getEffect().value().isInstantenous()) { + mobEffectInstance.getEffect().value().applyInstantenousEffect(serverLevel, player1, player1, entity, mobEffectInstance.getAmplifier(), 1.0); + } else { +- entity.addEffect(mobEffectInstance); ++ entity.addEffect(mobEffectInstance, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.POTION_DRINK); // CraftBukkit + } + }); + } diff --git a/paper-server/patches/unapplied/net/minecraft/world/item/alchemy/PotionContents.java.patch b/paper-server/patches/unapplied/net/minecraft/world/item/alchemy/PotionContents.java.patch deleted file mode 100644 index 163fbb5056..0000000000 --- a/paper-server/patches/unapplied/net/minecraft/world/item/alchemy/PotionContents.java.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/net/minecraft/world/item/alchemy/PotionContents.java -+++ b/net/minecraft/world/item/alchemy/PotionContents.java -@@ -93,7 +93,7 @@ - } - - public PotionContents withEffectAdded(MobEffectInstance customEffect) { -- return new PotionContents(this.potion, this.customColor, Util.copyAndAdd(this.customEffects, (Object) customEffect), this.customName); -+ return new PotionContents(this.potion, this.customColor, Util.copyAndAdd(this.customEffects, customEffect), this.customName); // CraftBukkit - decompile error - } - - public int getColor() { -@@ -172,7 +172,7 @@ - if (((MobEffect) mobeffect.getEffect().value()).isInstantenous()) { - ((MobEffect) mobeffect.getEffect().value()).applyInstantenousEffect(worldserver, entityhuman2, entityhuman2, user, mobeffect.getAmplifier(), 1.0D); - } else { -- user.addEffect(mobeffect); -+ user.addEffect(mobeffect, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.POTION_DRINK); // CraftBukkit - } - - });