--- a/net/minecraft/world/level/block/BlockChest.java +++ b/net/minecraft/world/level/block/BlockChest.java @@ -90,24 +90,7 @@ public Optional acceptDouble(final TileEntityChest tileentitychest, final TileEntityChest tileentitychest1) { final InventoryLargeChest inventorylargechest = new InventoryLargeChest(tileentitychest, tileentitychest1); - return Optional.of(new ITileInventory(this) { - @Nullable - @Override - public Container createMenu(int i, PlayerInventory playerinventory, EntityHuman entityhuman) { - if (tileentitychest.canOpen(entityhuman) && tileentitychest1.canOpen(entityhuman)) { - tileentitychest.unpackLootTable(playerinventory.player); - tileentitychest1.unpackLootTable(playerinventory.player); - return ContainerChest.sixRows(i, playerinventory, inventorylargechest); - } else { - return null; - } - } - - @Override - public IChatBaseComponent getDisplayName() { - return (IChatBaseComponent) (tileentitychest.hasCustomName() ? tileentitychest.getDisplayName() : (tileentitychest1.hasCustomName() ? tileentitychest1.getDisplayName() : IChatBaseComponent.translatable("container.chestDouble"))); - } - }); + return Optional.of(new DoubleInventory(tileentitychest, tileentitychest1, inventorylargechest)); // CraftBukkit // CraftBukkit - decompile error } public Optional acceptSingle(TileEntityChest tileentitychest) { @@ -120,6 +103,38 @@ } }; + // CraftBukkit start + public static class DoubleInventory implements ITileInventory { + + private final TileEntityChest tileentitychest; + private final TileEntityChest tileentitychest1; + public final InventoryLargeChest inventorylargechest; + + public DoubleInventory(TileEntityChest tileentitychest, TileEntityChest tileentitychest1, InventoryLargeChest inventorylargechest) { + this.tileentitychest = tileentitychest; + this.tileentitychest1 = tileentitychest1; + this.inventorylargechest = inventorylargechest; + } + + @Nullable + @Override + public Container createMenu(int i, PlayerInventory playerinventory, EntityHuman entityhuman) { + if (tileentitychest.canOpen(entityhuman) && tileentitychest1.canOpen(entityhuman)) { + tileentitychest.unpackLootTable(playerinventory.player); + tileentitychest1.unpackLootTable(playerinventory.player); + return ContainerChest.sixRows(i, playerinventory, inventorylargechest); + } else { + return null; + } + } + + @Override + public IChatBaseComponent getDisplayName() { + return (IChatBaseComponent) (tileentitychest.hasCustomName() ? tileentitychest.getDisplayName() : (tileentitychest1.hasCustomName() ? tileentitychest1.getDisplayName() : IChatBaseComponent.translatable("container.chestDouble"))); + } + }; + // CraftBukkit end + @Override public MapCodec codec() { return BlockChest.CODEC; @@ -263,7 +278,7 @@ @Override public DoubleBlockFinder.Result combine(IBlockData iblockdata, World world, BlockPosition blockposition, boolean flag) { - BiPredicate bipredicate; + BiPredicate bipredicate; // CraftBukkit - decompile error if (flag) { bipredicate = (generatoraccess, blockposition1) -> { @@ -279,7 +294,14 @@ @Nullable @Override protected ITileInventory getMenuProvider(IBlockData iblockdata, World world, BlockPosition blockposition) { - return (ITileInventory) ((Optional) this.combine(iblockdata, world, blockposition, false).apply(BlockChest.MENU_PROVIDER_COMBINER)).orElse((Object) null); + // CraftBukkit start + return getMenuProvider(iblockdata, world, blockposition, false); + } + + @Nullable + public ITileInventory getMenuProvider(IBlockData iblockdata, World world, BlockPosition blockposition, boolean ignoreObstructions) { + return (ITileInventory) ((Optional) this.combine(iblockdata, world, blockposition, ignoreObstructions).apply(BlockChest.MENU_PROVIDER_COMBINER)).orElse((Object) null); + // CraftBukkit end } public static DoubleBlockFinder.Combiner opennessCombiner(final LidBlockEntity lidblockentity) {