--- a/net/minecraft/server/TileEntity.java
+++ b/net/minecraft/server/TileEntity.java
@@ -4,6 +4,8 @@
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
+import org.bukkit.inventory.InventoryHolder; // CraftBukkit
+
 public abstract class TileEntity {
 
     private static final Logger a = LogManager.getLogger();
@@ -250,4 +252,13 @@
         a("command_block", TileEntityCommand.class);
         a("shulker_box", TileEntityShulkerBox.class);
     }
+
+    // CraftBukkit start - add method
+    public InventoryHolder getOwner() {
+        if (world == null) return null;
+        org.bukkit.block.BlockState state = world.getWorld().getBlockAt(position.getX(), position.getY(), position.getZ()).getState();
+        if (state instanceof InventoryHolder) return (InventoryHolder) state;
+        return null;
+    }
+    // CraftBukkit end
 }