diff --git a/editions/edition-bedrock/src/main/java/au/com/grieve/reversion/editions/bedrock/handlers/LevelEventHandler_Bedrock.java b/editions/edition-bedrock/src/main/java/au/com/grieve/reversion/editions/bedrock/handlers/LevelEventHandler_Bedrock.java index 05d4813..a31f577 100644 --- a/editions/edition-bedrock/src/main/java/au/com/grieve/reversion/editions/bedrock/handlers/LevelEventHandler_Bedrock.java +++ b/editions/edition-bedrock/src/main/java/au/com/grieve/reversion/editions/bedrock/handlers/LevelEventHandler_Bedrock.java @@ -36,14 +36,24 @@ public LevelEventHandler_Bedrock(BedrockTranslator translator) { @Override public boolean fromDownstream(LevelEventPacket packet) { + int id; + int face; + int damage; switch (packet.getType()) { - case PARTICLE_DESTROY_BLOCK: + case PARTICLE_DESTROY_BLOCK: // block + case PARTICLE_DESTROY_BLOCK_NO_SOUND: + case PARTICLE_FALLING_DUST: packet.setData(getTranslator().getRegisteredTranslator().getBlockMapper().mapRuntimeIdToUpstream(packet.getData())); break; - case PARTICLE_CRACK_BLOCK: - int block = packet.getData() & 16777215; - int face = packet.getData() >> 24; - packet.setData(getTranslator().getRegisteredTranslator().getBlockMapper().mapRuntimeIdToUpstream(block) | (face << 24)); + case PARTICLE_CRACK_BLOCK: // (face << 24) | block + id = packet.getData() & 16777215; + face = packet.getData() >> 24; + packet.setData(getTranslator().getRegisteredTranslator().getBlockMapper().mapRuntimeIdToUpstream(id) | (face << 24)); + break; + case PARTICLE_ITEM_BREAK: // (id << 16) | damage + id = packet.getData() >> 16; + damage = packet.getData() & 65535; + packet.setData((getTranslator().getRegisteredTranslator().getItemMapper().mapRuntimeIdToUpstream(id) << 16) | damage); break; } return false; diff --git a/editions/edition-bedrock/src/main/java/au/com/grieve/reversion/editions/bedrock/mappers/ItemMapper.java b/editions/edition-bedrock/src/main/java/au/com/grieve/reversion/editions/bedrock/mappers/ItemMapper.java index 7d4d367..bf0b95f 100644 --- a/editions/edition-bedrock/src/main/java/au/com/grieve/reversion/editions/bedrock/mappers/ItemMapper.java +++ b/editions/edition-bedrock/src/main/java/au/com/grieve/reversion/editions/bedrock/mappers/ItemMapper.java @@ -557,6 +557,15 @@ public NbtMap mapEnchantmentNbtToUpstream(NbtMap original) { return original; } + public int mapRuntimeIdToUpstream(int original) { + List translatedItems = itemToUpstreamMap.get(original); + if (translatedItems == null) { + return original; + } + + return translatedItems.get(0).getUpstream().getId(); + } + /** * Provides an entry for the ItemMapper