Mirror von
https://github.com/GeyserMC/Geyser.git
synchronisiert 2024-12-26 00:00:41 +01:00
JavaUpdateTileEntityTranslator improvements
- Remove the use of deprecated functions - Check for empty NBT (fixes errors on CubeCraft)
Dieser Commit ist enthalten in:
Ursprung
82c6276794
Commit
545dfa38f0
@ -40,12 +40,17 @@ public class JavaUpdateTileEntityTranslator extends PacketTranslator<ServerUpdat
|
|||||||
@Override
|
@Override
|
||||||
public void translate(ServerUpdateTileEntityPacket packet, GeyserSession session) {
|
public void translate(ServerUpdateTileEntityPacket packet, GeyserSession session) {
|
||||||
String id = BlockEntityUtils.getBedrockBlockEntityId(packet.getType().name());
|
String id = BlockEntityUtils.getBedrockBlockEntityId(packet.getType().name());
|
||||||
|
if (packet.getNbt().isEmpty()) { // Fixes errors in CubeCraft sending empty NBT
|
||||||
|
BlockEntityUtils.updateBlockEntity(session, null, packet.getPosition());
|
||||||
|
return;
|
||||||
|
}
|
||||||
BlockEntityTranslator translator = BlockEntityUtils.getBlockEntityTranslator(id);
|
BlockEntityTranslator translator = BlockEntityUtils.getBlockEntityTranslator(id);
|
||||||
// If not null then the BlockState is used in BlockEntityTranslator.translateTag()
|
// If not null then the BlockState is used in BlockEntityTranslator.translateTag()
|
||||||
if (ChunkUtils.CACHED_BLOCK_ENTITIES.get(packet.getPosition()) != null) {
|
if (ChunkUtils.CACHED_BLOCK_ENTITIES.containsKey(packet.getPosition())) {
|
||||||
|
int blockState = ChunkUtils.CACHED_BLOCK_ENTITIES.getOrDefault(packet.getPosition(), 0);
|
||||||
BlockEntityUtils.updateBlockEntity(session, translator.getBlockEntityTag(id, packet.getNbt(),
|
BlockEntityUtils.updateBlockEntity(session, translator.getBlockEntityTag(id, packet.getNbt(),
|
||||||
ChunkUtils.CACHED_BLOCK_ENTITIES.get(packet.getPosition())), packet.getPosition());
|
blockState), packet.getPosition());
|
||||||
ChunkUtils.CACHED_BLOCK_ENTITIES.remove(packet.getPosition());
|
ChunkUtils.CACHED_BLOCK_ENTITIES.remove(packet.getPosition(), blockState);
|
||||||
} else {
|
} else {
|
||||||
BlockEntityUtils.updateBlockEntity(session, translator.getBlockEntityTag(id, packet.getNbt(), 0), packet.getPosition());
|
BlockEntityUtils.updateBlockEntity(session, translator.getBlockEntityTag(id, packet.getNbt(), 0), packet.getPosition());
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren