@@ -55,30 +55,32 @@ public boolean prepareInventory(GeyserSession session, Inventory inventory) {
5555 // See BlockInventoryHolder - same concept there except we're also dealing with a specific block state
5656 if (session .getLastInteractionPlayerPosition ().equals (session .getPlayerEntity ().getPosition ())) {
5757 int javaBlockId = session .getGeyser ().getWorldManager ().getBlockAt (session , session .getLastInteractionBlockPosition ());
58- String [] javaBlockString = BlockRegistries .JAVA_IDENTIFIERS .get ().getOrDefault (javaBlockId , "minecraft:air" ).split ("\\ [" );
59- if (javaBlockString .length > 1 && (javaBlockString [0 ].equals ("minecraft:chest" ) || javaBlockString [0 ].equals ("minecraft:trapped_chest" ))
60- && !javaBlockString [1 ].contains ("type=single" )) {
61- inventory .setHolderPosition (session .getLastInteractionBlockPosition ());
62- ((Container ) inventory ).setUsingRealBlock (true , javaBlockString [0 ]);
63-
64- NbtMapBuilder tag = NbtMap .builder ()
65- .putString ("id" , "Chest" )
66- .putInt ("x" , session .getLastInteractionBlockPosition ().getX ())
67- .putInt ("y" , session .getLastInteractionBlockPosition ().getY ())
68- .putInt ("z" , session .getLastInteractionBlockPosition ().getZ ())
69- .putString ("CustomName" , inventory .getTitle ())
70- .putString ("id" , "Chest" );
71-
72- DoubleChestValue chestValue = BlockStateValues .getDoubleChestValues ().get (javaBlockId );
73- DoubleChestBlockEntityTranslator .translateChestValue (tag , chestValue ,
74- session .getLastInteractionBlockPosition ().getX (), session .getLastInteractionBlockPosition ().getZ ());
75-
76- BlockEntityDataPacket dataPacket = new BlockEntityDataPacket ();
77- dataPacket .setData (tag .build ());
78- dataPacket .setBlockPosition (session .getLastInteractionBlockPosition ());
79- session .sendUpstreamPacket (dataPacket );
80-
81- return true ;
58+ if (!BlockRegistries .CUSTOM_BLOCK_STATE_OVERRIDES .get ().containsKey (javaBlockId )) {
59+ String [] javaBlockString = BlockRegistries .JAVA_IDENTIFIERS .get ().getOrDefault (javaBlockId , "minecraft:air" ).split ("\\ [" );
60+ if (javaBlockString .length > 1 && (javaBlockString [0 ].equals ("minecraft:chest" ) || javaBlockString [0 ].equals ("minecraft:trapped_chest" ))
61+ && !javaBlockString [1 ].contains ("type=single" )) {
62+ inventory .setHolderPosition (session .getLastInteractionBlockPosition ());
63+ ((Container ) inventory ).setUsingRealBlock (true , javaBlockString [0 ]);
64+
65+ NbtMapBuilder tag = NbtMap .builder ()
66+ .putString ("id" , "Chest" )
67+ .putInt ("x" , session .getLastInteractionBlockPosition ().getX ())
68+ .putInt ("y" , session .getLastInteractionBlockPosition ().getY ())
69+ .putInt ("z" , session .getLastInteractionBlockPosition ().getZ ())
70+ .putString ("CustomName" , inventory .getTitle ())
71+ .putString ("id" , "Chest" );
72+
73+ DoubleChestValue chestValue = BlockStateValues .getDoubleChestValues ().get (javaBlockId );
74+ DoubleChestBlockEntityTranslator .translateChestValue (tag , chestValue ,
75+ session .getLastInteractionBlockPosition ().getX (), session .getLastInteractionBlockPosition ().getZ ());
76+
77+ BlockEntityDataPacket dataPacket = new BlockEntityDataPacket ();
78+ dataPacket .setData (tag .build ());
79+ dataPacket .setBlockPosition (session .getLastInteractionBlockPosition ());
80+ session .sendUpstreamPacket (dataPacket );
81+
82+ return true ;
83+ }
8284 }
8385 }
8486
@@ -88,7 +90,7 @@ public boolean prepareInventory(GeyserSession session, Inventory inventory) {
8890 }
8991
9092 Vector3i pairPosition = position .add (Vector3i .UNIT_X );
91- int bedrockBlockId = session .getBlockMappings ().getBedrockBlockId (defaultJavaBlockState );
93+ int bedrockBlockId = session .getBlockMappings ().getVanillaBedrockBlockId (defaultJavaBlockState );
9294
9395 UpdateBlockPacket blockPacket = new UpdateBlockPacket ();
9496 blockPacket .setDataLayer (0 );
0 commit comments