Fix bug with hopper optimizations when amount > 3 - Closes #1011

This commit is contained in:
Aikar 2018-02-14 21:30:12 -05:00
parent 3d9d0a7227
commit c28c88eb35

View File

@ -60,7 +60,7 @@ index 8e2d55a73..fe2df18df 100644
this.g = iblockdata.getBlock().toLegacyData(iblockdata); this.g = iblockdata.getBlock().toLegacyData(iblockdata);
diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java diff --git a/src/main/java/net/minecraft/server/TileEntityHopper.java b/src/main/java/net/minecraft/server/TileEntityHopper.java
index e9315f2d5..6ec292714 100644 index e9315f2d5..5198a590a 100644
--- a/src/main/java/net/minecraft/server/TileEntityHopper.java --- a/src/main/java/net/minecraft/server/TileEntityHopper.java
+++ b/src/main/java/net/minecraft/server/TileEntityHopper.java +++ b/src/main/java/net/minecraft/server/TileEntityHopper.java
@@ -0,0 +0,0 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi @@ -0,0 +0,0 @@ public class TileEntityHopper extends TileEntityLootable implements IHopper, ITi
@ -94,11 +94,11 @@ index e9315f2d5..6ec292714 100644
+ return false; + return false;
+ } + }
+ } + }
+ final ItemStack itemstack1 = addItem(this, iinventory, itemstack, enumdirection); + final ItemStack itemstack2 = addItem(this, iinventory, itemstack, enumdirection);
+ + final int remaining = itemstack2.getCount();
+ if (itemstack1.isEmpty()) { + if (remaining != moved) {
+ origItemStack = origItemStack.cloneItemStack(); + origItemStack = origItemStack.cloneItemStack();
+ origItemStack.setCount(origCount - moved); + origItemStack.setCount(origCount - moved + remaining);
+ this.setItem(i, origItemStack); + this.setItem(i, origItemStack);
+ iinventory.update(); + iinventory.update();
+ return true; + return true;
@ -132,9 +132,10 @@ index e9315f2d5..6ec292714 100644
+ } + }
+ +
+ final ItemStack itemstack2 = addItem(iinventory, ihopper, itemstack, null); + final ItemStack itemstack2 = addItem(iinventory, ihopper, itemstack, null);
+ if (itemstack2.isEmpty()) { + final int remaining = itemstack2.getCount();
+ if (remaining != moved) {
+ origItemStack = origItemStack.cloneItemStack(); + origItemStack = origItemStack.cloneItemStack();
+ origItemStack.setCount(origCount - moved); + origItemStack.setCount(origCount - moved + remaining);
+ IGNORE_TILE_UPDATES = true; + IGNORE_TILE_UPDATES = true;
+ iinventory.setItem(i, origItemStack); + iinventory.setItem(i, origItemStack);
+ IGNORE_TILE_UPDATES = false; + IGNORE_TILE_UPDATES = false;