From d405316a4bdd38074ccfe5c4b85d9c5a30085818 Mon Sep 17 00:00:00 2001 From: SquidDev Date: Mon, 9 Jul 2018 20:53:49 +0100 Subject: [PATCH] Be a little smarter about our detection of the placed sign When placing a sign against a tile entity (such as a turtle or chest), we would consider that block the "placed" one instead, meaning the text was never set. This solution isn't entirely ideal either, but short of capturing block snapshots I'm not sure of a better solution. Fixes #552 --- .../shared/turtle/core/TurtlePlaceCommand.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlaceCommand.java b/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlaceCommand.java index 26b1a47801..4e7cedd6fc 100644 --- a/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlaceCommand.java +++ b/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlaceCommand.java @@ -365,7 +365,7 @@ private static ItemStack deployOnBlock( @Nonnull ItemStack stack, ITurtleAccess // Do the deploying (put everything in the players inventory) boolean placed = false; - + TileEntity existingTile = turtle.getWorld().getTileEntity( position ); // See PlayerInteractionManager.processRightClickBlock PlayerInteractEvent.RightClickBlock event = ForgeHooks.onRightClickBlock( turtlePlayer, EnumHand.MAIN_HAND, position, side, new Vec3d( hitX, hitY, hitZ ) ); @@ -409,12 +409,11 @@ else if( actionResult == null ) { World world = turtle.getWorld(); TileEntity tile = world.getTileEntity( position ); - if( tile == null ) + if( tile == null || tile == existingTile ) { - BlockPos newPosition = WorldUtil.moveCoords( position, side ); - tile = world.getTileEntity( newPosition ); + tile = world.getTileEntity( WorldUtil.moveCoords( position, side ) ); } - if( tile != null && tile instanceof TileEntitySign ) + if( tile instanceof TileEntitySign ) { TileEntitySign signTile = (TileEntitySign) tile; String s = (String)extraArguments[0];