From f12a4b5c1e4e1a8e399a8cedc2fd1f881a8f349d Mon Sep 17 00:00:00 2001 From: LexManos Date: Fri, 18 Nov 2016 14:42:22 -0800 Subject: [PATCH] Fix Item transfers related to Hoppers. --- .../minecraft/net/minecraft/block/Block.java.patch | 4 ++-- .../tileentity/TileEntityHopper.java.patch | 13 +++++++++++++ .../items/VanillaHopperItemHandler.java | 14 +++++++------- .../items/VanillaInventoryCodeHooks.java | 2 +- .../minecraftforge/items/wrapper/InvWrapper.java | 2 +- src/main/resources/forge_at.cfg | 6 +++++- 6 files changed, 29 insertions(+), 12 deletions(-) diff --git a/patches/minecraft/net/minecraft/block/Block.java.patch b/patches/minecraft/net/minecraft/block/Block.java.patch index 7d902a0588..40fa9c7ba3 100644 --- a/patches/minecraft/net/minecraft/block/Block.java.patch +++ b/patches/minecraft/net/minecraft/block/Block.java.patch @@ -208,7 +208,7 @@ public SoundType func_185467_w() { return this.field_149762_H; -@@ -908,6 +934,1187 @@ +@@ -908,6 +934,1176 @@ { } @@ -1385,7 +1385,7 @@ public static void func_149671_p() { func_176215_a(0, field_176230_a, (new BlockAir()).func_149663_c("air")); -@@ -1201,14 +2408,7 @@ +@@ -1201,14 +2397,7 @@ } else { diff --git a/patches/minecraft/net/minecraft/tileentity/TileEntityHopper.java.patch b/patches/minecraft/net/minecraft/tileentity/TileEntityHopper.java.patch index 3d768de9bc..7f15008962 100644 --- a/patches/minecraft/net/minecraft/tileentity/TileEntityHopper.java.patch +++ b/patches/minecraft/net/minecraft/tileentity/TileEntityHopper.java.patch @@ -30,3 +30,16 @@ public static ItemStack func_174918_a(IInventory p_174918_0_, IInventory p_174918_1_, ItemStack p_174918_2_, @Nullable EnumFacing p_174918_3_) { if (p_174918_1_ instanceof ISidedInventory && p_174918_3_ != null) +@@ -509,9 +518,10 @@ + int j = MathHelper.func_76128_c(p_145893_3_); + int k = MathHelper.func_76128_c(p_145893_5_); + BlockPos blockpos = new BlockPos(i, j, k); +- Block block = p_145893_0_.func_180495_p(blockpos).func_177230_c(); ++ net.minecraft.block.state.IBlockState state = p_145893_0_.func_180495_p(blockpos); ++ Block block = state.func_177230_c(); + +- if (block.func_149716_u()) ++ if (block.hasTileEntity(state)) + { + TileEntity tileentity = p_145893_0_.func_175625_s(blockpos); + diff --git a/src/main/java/net/minecraftforge/items/VanillaHopperItemHandler.java b/src/main/java/net/minecraftforge/items/VanillaHopperItemHandler.java index bcbf7ca682..3a758b88db 100644 --- a/src/main/java/net/minecraftforge/items/VanillaHopperItemHandler.java +++ b/src/main/java/net/minecraftforge/items/VanillaHopperItemHandler.java @@ -40,16 +40,16 @@ public class VanillaHopperItemHandler extends InvWrapper public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) { if (stack.func_190926_b()) - return null; -// if (simulate || !hopper.mayTransfer()) -// return super.insertItem(slot, stack, simulate); + return ItemStack.field_190927_a; + if (simulate || !hopper.mayTransfer()) + return super.insertItem(slot, stack, simulate); int curStackSize = stack.func_190916_E(); ItemStack itemStack = super.insertItem(slot, stack, false); -// if (itemStack == null || curStackSize != itemStack.func_190916_E()) -// { -// hopper.setTransferCooldown(8); -// } + if (itemStack.func_190926_b() || curStackSize != itemStack.func_190916_E()) + { + hopper.setTransferCooldown(8); + } return itemStack; } } diff --git a/src/main/java/net/minecraftforge/items/VanillaInventoryCodeHooks.java b/src/main/java/net/minecraftforge/items/VanillaInventoryCodeHooks.java index 00d3aa1e5c..141496d40d 100644 --- a/src/main/java/net/minecraftforge/items/VanillaInventoryCodeHooks.java +++ b/src/main/java/net/minecraftforge/items/VanillaInventoryCodeHooks.java @@ -120,7 +120,7 @@ public class VanillaInventoryCodeHooks for (int i = 0; i < hopper.getSizeInventory(); i++) { ItemStack stackInSlot = hopper.getStackInSlot(i); - if (stackInSlot.func_190926_b()) + if (!stackInSlot.func_190926_b()) { ItemStack insert = stackInSlot.copy(); insert.func_190920_e(1); diff --git a/src/main/java/net/minecraftforge/items/wrapper/InvWrapper.java b/src/main/java/net/minecraftforge/items/wrapper/InvWrapper.java index 4546675396..6606526cd8 100644 --- a/src/main/java/net/minecraftforge/items/wrapper/InvWrapper.java +++ b/src/main/java/net/minecraftforge/items/wrapper/InvWrapper.java @@ -93,7 +93,7 @@ public class InvWrapper implements IItemHandlerModifiable if (!simulate) { ItemStack copy = stack.copy(); - copy.func_190918_g(stackInSlot.func_190916_E()); + copy.func_190917_f(stackInSlot.func_190916_E()); getInv().setInventorySlotContents(slot, copy); getInv().markDirty(); } diff --git a/src/main/resources/forge_at.cfg b/src/main/resources/forge_at.cfg index 34db5f903f..14df9d2bff 100644 --- a/src/main/resources/forge_at.cfg +++ b/src/main/resources/forge_at.cfg @@ -283,4 +283,8 @@ public net.minecraft.potion.PotionHelper$ItemPredicateInstance public net.minecraft.potion.PotionHelper$MixPredicate public net.minecraft.potion.PotionHelper func_185201_a(Lnet/minecraft/item/ItemPotion;Lnet/minecraft/potion/PotionHelper$ItemPredicateInstance;Lnet/minecraft/item/ItemPotion;)V # registerPotionItemConversion public net.minecraft.potion.PotionHelper func_185202_a(Lnet/minecraft/potion/PotionHelper$ItemPredicateInstance;)V # registerPotionItem -public net.minecraft.potion.PotionHelper func_185204_a(Lnet/minecraft/potion/PotionType;Lcom/google/common/base/Predicate;Lnet/minecraft/potion/PotionType;)V # registerPotionTypeConversion \ No newline at end of file +public net.minecraft.potion.PotionHelper func_185204_a(Lnet/minecraft/potion/PotionType;Lcom/google/common/base/Predicate;Lnet/minecraft/potion/PotionType;)V # registerPotionTypeConversion + +# TileEntityHopper +public net.minecraft.tileentity.TileEntityHopper func_174914_o()Z # mayTransfer +public net.minecraft.tileentity.TileEntityHopper func_145896_c(I)V # setTransferCooldown \ No newline at end of file