aboutsummaryrefslogtreecommitdiffhomepage
path: root/patch-remap/og/net/minecraft/world/inventory/ContainerGrindstone.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patch-remap/og/net/minecraft/world/inventory/ContainerGrindstone.patch')
-rw-r--r--patch-remap/og/net/minecraft/world/inventory/ContainerGrindstone.patch106
1 files changed, 106 insertions, 0 deletions
diff --git a/patch-remap/og/net/minecraft/world/inventory/ContainerGrindstone.patch b/patch-remap/og/net/minecraft/world/inventory/ContainerGrindstone.patch
new file mode 100644
index 0000000000..7569ed90a7
--- /dev/null
+++ b/patch-remap/og/net/minecraft/world/inventory/ContainerGrindstone.patch
@@ -0,0 +1,106 @@
+--- a/net/minecraft/world/inventory/ContainerGrindstone.java
++++ b/net/minecraft/world/inventory/ContainerGrindstone.java
+@@ -19,8 +19,30 @@
+ import net.minecraft.world.level.block.Blocks;
+ import net.minecraft.world.phys.Vec3D;
+
++// CraftBukkit start
++import org.bukkit.Location;
++import org.bukkit.craftbukkit.inventory.CraftInventoryGrindstone;
++import org.bukkit.craftbukkit.inventory.CraftInventoryView;
++import org.bukkit.entity.Player;
++// CraftBukkit end
++
+ public class ContainerGrindstone extends Container {
+
++ // CraftBukkit start
++ private CraftInventoryView bukkitEntity = null;
++ private Player player;
++
++ @Override
++ public CraftInventoryView getBukkitView() {
++ if (bukkitEntity != null) {
++ return bukkitEntity;
++ }
++
++ CraftInventoryGrindstone inventory = new CraftInventoryGrindstone(this.repairSlots, this.resultSlots);
++ bukkitEntity = new CraftInventoryView(this.player, inventory, this);
++ return bukkitEntity;
++ }
++ // CraftBukkit end
+ public static final int MAX_NAME_LENGTH = 35;
+ public static final int INPUT_SLOT = 0;
+ public static final int ADDITIONAL_SLOT = 1;
+@@ -46,6 +68,13 @@
+ super.setChanged();
+ ContainerGrindstone.this.slotsChanged(this);
+ }
++
++ // CraftBukkit start
++ @Override
++ public Location getLocation() {
++ return containeraccess.getLocation();
++ }
++ // CraftBukkit end
+ };
+ this.access = containeraccess;
+ this.addSlot(new Slot(this.repairSlots, 0, 49, 19) {
+@@ -124,6 +153,7 @@
+ this.addSlot(new Slot(playerinventory, j, 8 + j * 18, 142));
+ }
+
++ player = (Player) playerinventory.player.getBukkitEntity(); // CraftBukkit
+ }
+
+ @Override
+@@ -145,7 +175,7 @@
+ boolean flag2 = !itemstack.isEmpty() && !itemstack.is(Items.ENCHANTED_BOOK) && !itemstack.isEnchanted() || !itemstack1.isEmpty() && !itemstack1.is(Items.ENCHANTED_BOOK) && !itemstack1.isEnchanted();
+
+ if (itemstack.getCount() > 1 || itemstack1.getCount() > 1 || !flag1 && flag2) {
+- this.resultSlots.setItem(0, ItemStack.EMPTY);
++ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareGrindstoneEvent(getBukkitView(), ItemStack.EMPTY); // CraftBukkit
+ this.broadcastChanges();
+ return;
+ }
+@@ -156,7 +186,7 @@
+
+ if (flag1) {
+ if (!itemstack.is(itemstack1.getItem())) {
+- this.resultSlots.setItem(0, ItemStack.EMPTY);
++ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareGrindstoneEvent(getBukkitView(), ItemStack.EMPTY); // CraftBukkit
+ this.broadcastChanges();
+ return;
+ }
+@@ -170,7 +200,7 @@
+ itemstack2 = this.mergeEnchants(itemstack, itemstack1);
+ if (!itemstack2.isDamageableItem()) {
+ if (!ItemStack.matches(itemstack, itemstack1)) {
+- this.resultSlots.setItem(0, ItemStack.EMPTY);
++ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareGrindstoneEvent(getBukkitView(), ItemStack.EMPTY); // CraftBukkit
+ this.broadcastChanges();
+ return;
+ }
+@@ -183,12 +213,12 @@
+ i = flag3 ? itemstack.getDamageValue() : itemstack1.getDamageValue();
+ itemstack2 = flag3 ? itemstack : itemstack1;
+ }
+-
+- this.resultSlots.setItem(0, this.removeNonCurses(itemstack2, i, b0));
++ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareGrindstoneEvent(getBukkitView(), this.removeNonCurses(itemstack2, i, b0)); // CraftBukkit
+ } else {
+- this.resultSlots.setItem(0, ItemStack.EMPTY);
++ org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareGrindstoneEvent(getBukkitView(), ItemStack.EMPTY); // CraftBukkit
+ }
+
++ sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client
+ this.broadcastChanges();
+ }
+
+@@ -250,6 +280,7 @@
+
+ @Override
+ public boolean stillValid(EntityHuman entityhuman) {
++ if (!this.checkReachable) return true; // CraftBukkit
+ return stillValid(this.access, entityhuman, Blocks.GRINDSTONE);
+ }
+