--- a/net/minecraft/world/item/SignItem.java
+++ b/net/minecraft/world/item/SignItem.java
@@ -7,10 +7,14 @@
 import net.minecraft.world.level.Level;
 import net.minecraft.world.level.block.Block;
 import net.minecraft.world.level.block.SignBlock;
+import net.minecraft.world.level.block.entity.BlockEntity;
 import net.minecraft.world.level.block.entity.SignBlockEntity;
 import net.minecraft.world.level.block.state.BlockState;
 
 public class SignItem extends StandingAndWallBlockItem {
+
+    public static BlockPos openSign; // CraftBukkit
+
     public SignItem(Item.Properties settings, Block standingBlock, Block wallBlock) {
         super(standingBlock, wallBlock, settings, Direction.DOWN);
     }
@@ -21,15 +25,26 @@
 
     @Override
     protected boolean updateCustomBlockEntityTag(BlockPos pos, Level world, @Nullable Player player, ItemStack stack, BlockState state) {
-        boolean bl = super.updateCustomBlockEntityTag(pos, world, player, stack, state);
-        if (!world.isClientSide
-            && !bl
-            && player != null
-            && world.getBlockEntity(pos) instanceof SignBlockEntity signBlockEntity
-            && world.getBlockState(pos).getBlock() instanceof SignBlock signBlock) {
-            signBlock.openTextEdit(player, signBlockEntity, true);
+        boolean flag = super.updateCustomBlockEntityTag(pos, world, player, stack, state);
+
+        if (!world.isClientSide && !flag && player != null) {
+            BlockEntity tileentity = world.getBlockEntity(pos);
+
+            if (tileentity instanceof SignBlockEntity) {
+                SignBlockEntity tileentitysign = (SignBlockEntity) tileentity;
+                Block block = world.getBlockState(pos).getBlock();
+
+                if (block instanceof SignBlock) {
+                    SignBlock blocksign = (SignBlock) block;
+
+                    // CraftBukkit start - SPIGOT-4678
+                    // blocksign.openTextEdit(entityhuman, tileentitysign, true);
+                    SignItem.openSign = pos;
+                    // CraftBukkit end
+                }
+            }
         }
 
-        return bl;
+        return flag;
     }
 }
