From 0f86efa3f506df1acb5e16d28f7e97a0b8a3529c Mon Sep 17 00:00:00 2001 From: Gunther De Wachter Date: Sun, 2 Jul 2017 06:05:43 +0200 Subject: [PATCH] Added workaround for dispenser logic. --- src/main/java/appeng/hooks/DispenserBlockTool.java | 3 +-- src/main/java/appeng/hooks/IBlockTool.java | 2 ++ .../appeng/items/tools/powered/ToolColorApplicator.java | 7 ++++++- .../appeng/items/tools/powered/ToolEntropyManipulator.java | 7 ++++++- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/appeng/hooks/DispenserBlockTool.java b/src/main/java/appeng/hooks/DispenserBlockTool.java index 9f5d217a9..298d0e4c1 100644 --- a/src/main/java/appeng/hooks/DispenserBlockTool.java +++ b/src/main/java/appeng/hooks/DispenserBlockTool.java @@ -47,8 +47,7 @@ public final class DispenserBlockTool extends BehaviorDefaultDispenseItem final World w = dispenser.getWorld(); if( w instanceof WorldServer ) { - // TODO : Fix dispenser logic. - tm.onItemUse( Platform.getPlayer( (WorldServer) w ), w, dispenser.getBlockPos().offset( enumfacing ), EnumHand.MAIN_HAND, enumfacing, 0.5f, 0.5f, 0.5f ); + tm.onItemUse( dispensedItem, Platform.getPlayer( (WorldServer) w ), w, dispenser.getBlockPos().offset( enumfacing ), EnumHand.MAIN_HAND, enumfacing, 0.5f, 0.5f, 0.5f ); } } return dispensedItem; diff --git a/src/main/java/appeng/hooks/IBlockTool.java b/src/main/java/appeng/hooks/IBlockTool.java index 425c65e22..f002018fc 100644 --- a/src/main/java/appeng/hooks/IBlockTool.java +++ b/src/main/java/appeng/hooks/IBlockTool.java @@ -30,6 +30,8 @@ import net.minecraft.world.World; public interface IBlockTool { + // Workaround for dispenser logic. + EnumActionResult onItemUse( ItemStack is, EntityPlayer p, World w, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ ); EnumActionResult onItemUse( EntityPlayer p, World w, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ ); diff --git a/src/main/java/appeng/items/tools/powered/ToolColorApplicator.java b/src/main/java/appeng/items/tools/powered/ToolColorApplicator.java index 24778fde4..9b425ce25 100644 --- a/src/main/java/appeng/items/tools/powered/ToolColorApplicator.java +++ b/src/main/java/appeng/items/tools/powered/ToolColorApplicator.java @@ -105,7 +105,12 @@ public class ToolColorApplicator extends AEBasePoweredItem implements IStorageCe @Override public EnumActionResult onItemUse( EntityPlayer p, World w, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ ) { - final ItemStack is = p.getHeldItem(hand); + return this.onItemUse( p.getHeldItem(hand), p, w, pos, hand, side, hitX, hitY, hitZ ); + } + + @Override + public EnumActionResult onItemUse( ItemStack is, EntityPlayer p, World w, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ ) + { final Block blk = w.getBlockState( pos ).getBlock(); ItemStack paintBall = this.getColor( is ); diff --git a/src/main/java/appeng/items/tools/powered/ToolEntropyManipulator.java b/src/main/java/appeng/items/tools/powered/ToolEntropyManipulator.java index b6e0e1c8d..afb5e3799 100644 --- a/src/main/java/appeng/items/tools/powered/ToolEntropyManipulator.java +++ b/src/main/java/appeng/items/tools/powered/ToolEntropyManipulator.java @@ -238,7 +238,12 @@ public class ToolEntropyManipulator extends AEBasePoweredItem implements IBlockT @Override public EnumActionResult onItemUse( EntityPlayer p, World w, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ ) { - final ItemStack item = p.getHeldItem(hand); + return this.onItemUse( p.getHeldItem(hand), p, w, pos, hand, side, hitX, hitY, hitZ ); + } + + @Override + public EnumActionResult onItemUse( ItemStack item, EntityPlayer p, World w, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ ) + { if( this.getAECurrentPower( item ) > 1600 ) { if( !p.canPlayerEdit( pos, side, item ) )