--- a/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java
+++ b/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java
@@ -18,8 +_,8 @@
 
 public abstract class RandomizableContainerBlockEntity extends BaseContainerBlockEntity implements RandomizableContainer {
     @Nullable
-    protected ResourceKey<LootTable> lootTable;
-    protected long lootTableSeed = 0L;
+    public ResourceKey<LootTable> lootTable;
+    public long lootTableSeed = 0L;
 
     protected RandomizableContainerBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState blockState) {
         super(type, pos, blockState);
@@ -54,7 +_,7 @@
 
     @Override
     public ItemStack getItem(int index) {
-        this.unpackLootTable(null);
+        if (index == 0) this.unpackLootTable(null); // Paper - Perf: Optimize Hoppers
         return super.getItem(index);
     }
 
@@ -116,4 +_,13 @@
         output.discard("LootTable");
         output.discard("LootTableSeed");
     }
+
+    // Paper start - LootTable API
+    final com.destroystokyo.paper.loottable.PaperLootableInventoryData lootableData = new com.destroystokyo.paper.loottable.PaperLootableInventoryData(); // Paper
+
+    @Override
+    public com.destroystokyo.paper.loottable.PaperLootableInventoryData lootableData() {
+        return this.lootableData;
+    }
+    // Paper end - LootTable API
 }
