From 5c7ae7738cf2c2426a9a2f42b22baad1645141e7 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Mon, 15 Jun 2020 01:47:41 -0500 Subject: [PATCH] Fix up secret anvil controls a bit more --- patches/server/0112-More-anvil-controls.patch | 52 ++++++++++++++----- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/patches/server/0112-More-anvil-controls.patch b/patches/server/0112-More-anvil-controls.patch index d2eb35a25..b191bb655 100644 --- a/patches/server/0112-More-anvil-controls.patch +++ b/patches/server/0112-More-anvil-controls.patch @@ -1,15 +1,15 @@ -From ce8a02f259fb4f0a02d036c03f84af8fe2334399 Mon Sep 17 00:00:00 2001 +From 43aa8b97055c288e41c3c0a0924b99752559c53a Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 19 Apr 2020 00:17:56 -0500 Subject: [PATCH] More anvil controls --- - .../net/minecraft/server/ContainerAnvil.java | 25 ++++++++++++++++--- - .../inventory/CraftInventoryAnvil.java | 22 ++++++++++++++++ - 2 files changed, 43 insertions(+), 4 deletions(-) + .../net/minecraft/server/ContainerAnvil.java | 31 +++++++++++++++++-- + .../inventory/CraftInventoryAnvil.java | 24 +++++++++++++- + 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/minecraft/server/ContainerAnvil.java b/src/main/java/net/minecraft/server/ContainerAnvil.java -index 286b930ddb..c34f1e02cb 100644 +index 286b930ddb..d418c04414 100644 --- a/src/main/java/net/minecraft/server/ContainerAnvil.java +++ b/src/main/java/net/minecraft/server/ContainerAnvil.java @@ -8,6 +8,7 @@ import org.apache.logging.log4j.Logger; @@ -76,15 +76,22 @@ index 286b930ddb..c34f1e02cb 100644 ++i; } } -@@ -310,12 +321,18 @@ public class ContainerAnvil extends Container { - k2 = d(k2); - } - -- itemstack1.setRepairCost(k2); -+ if (!bypassCost) itemstack1.setRepairCost(k2); // Purpur - EnchantmentManager.a(map, itemstack1); +@@ -295,6 +306,13 @@ public class ContainerAnvil extends Container { + this.levelCost.set(maximumRepairCost - 1); // CraftBukkit } ++ // Purpur start ++ if (bypassCost && levelCost.get() >= maximumRepairCost) { ++ itemstack.getOrCreateTagAndSet("Purpur.realCost", NBTTagInt.a(levelCost.get())); ++ levelCost.set(maximumRepairCost - 1); ++ } ++ // Purpur end ++ + if (this.levelCost.get() >= maximumRepairCost && !this.player.abilities.canInstantlyBuild) { // CraftBukkit + itemstack1 = ItemStack.a; + } +@@ -316,6 +334,12 @@ public class ContainerAnvil extends Container { + org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(getBukkitView(), itemstack1); // CraftBukkit this.c(); + // Purpur start @@ -96,10 +103,27 @@ index 286b930ddb..c34f1e02cb 100644 } } +@@ -349,6 +373,7 @@ public class ContainerAnvil extends Container { + + itemstack = itemstack1.cloneItemStack(); + if (i == 2) { ++ if (net.pl3x.purpur.event.inventory.AnvilTakeResultEvent.getHandlerList().getRegisteredListeners().length > 0) new net.pl3x.purpur.event.inventory.AnvilTakeResultEvent(entityhuman.getBukkitEntity(), getBukkitView(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack)).callEvent(); // Purpur + if (!this.a(itemstack1, 3, 39, true)) { + return ItemStack.a; + } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java -index 9374c27061..db5e4f2bd1 100644 +index 9374c27061..d45f356be3 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java +@@ -9,7 +9,7 @@ import org.bukkit.inventory.AnvilInventory; + public class CraftInventoryAnvil extends CraftResultInventory implements AnvilInventory { + + private final Location location; +- private final ContainerAnvil container; ++ public final ContainerAnvil container; // Purpur - private -> public + + public CraftInventoryAnvil(Location location, IInventory inventory, IInventory resultInventory, ContainerAnvil container) { + super(inventory, resultInventory); @@ -47,4 +47,26 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn Preconditions.checkArgument(levels >= 0, "Maximum repair cost must be positive (or 0)"); container.maximumRepairCost = levels; @@ -128,5 +152,5 @@ index 9374c27061..db5e4f2bd1 100644 + // Purpur end } -- -2.24.0 +2.26.2