From 2ff284c41cb39a26dbe027a5e84bced7e2dfcfc3 Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Mon, 12 Sep 2022 00:05:53 +0200 Subject: [PATCH 1/2] Add support for hiding enchantments via hide flags, and hiding enchantment book additional details --- .../item/nbt/EnchantmentTranslator.java | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/item/nbt/EnchantmentTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/item/nbt/EnchantmentTranslator.java index 204981965c6..dd3e973f662 100644 --- a/core/src/main/java/org/geysermc/geyser/translator/inventory/item/nbt/EnchantmentTranslator.java +++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/item/nbt/EnchantmentTranslator.java @@ -42,29 +42,34 @@ public class EnchantmentTranslator extends NbtItemStackTranslator { @Override public void translateToBedrock(GeyserSession session, CompoundTag itemTag, ItemMapping mapping) { + IntTag hideFlagsTag = itemTag.get("HideFlags"); + List newTags = new ArrayList<>(); - Tag enchantmentTag = itemTag.get("Enchantments"); - if (enchantmentTag instanceof ListTag listTag) { + Tag enchantmentTag = itemTag.get("StoredEnchantments"); + if ((hideFlagsTag == null || (hideFlagsTag.getValue() & 32) == 0) && enchantmentTag instanceof ListTag listTag) { for (Tag tag : listTag.getValue()) { if (!(tag instanceof CompoundTag)) continue; CompoundTag bedrockTag = remapEnchantment((CompoundTag) tag); - newTags.add(bedrockTag); + if (bedrockTag != null) { + bedrockTag.put(new ShortTag("GeyserStoredEnchantment", (short) 0)); + newTags.add(bedrockTag); + } } - itemTag.remove("Enchantments"); + itemTag.remove("StoredEnchantments"); } - enchantmentTag = itemTag.get("StoredEnchantments"); + enchantmentTag = itemTag.get("Enchantments"); if (enchantmentTag instanceof ListTag listTag) { - for (Tag tag : listTag.getValue()) { - if (!(tag instanceof CompoundTag)) continue; + if (hideFlagsTag == null || (hideFlagsTag.getValue() & 1) == 0) { + for (Tag tag : listTag.getValue()) { + if (!(tag instanceof CompoundTag)) continue; - CompoundTag bedrockTag = remapEnchantment((CompoundTag) tag); - if (bedrockTag != null) { - bedrockTag.put(new ShortTag("GeyserStoredEnchantment", (short) 0)); + CompoundTag bedrockTag = remapEnchantment((CompoundTag) tag); newTags.add(bedrockTag); } + itemTag.remove("Enchantments"); } - itemTag.remove("StoredEnchantments"); + itemTag.put(new ListTag("ench")); } if (!newTags.isEmpty()) { From 83945ca8c7a4a90d7a5da2f2c0ff0da8046a5a37 Mon Sep 17 00:00:00 2001 From: Kevin Ludwig Date: Mon, 12 Sep 2022 12:05:59 +0200 Subject: [PATCH 2/2] Revert add support for hiding enchantments via hide flags, and hiding enchantment book additional details, add foil-effect for empty enchantments --- .../item/nbt/EnchantmentTranslator.java | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/item/nbt/EnchantmentTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/item/nbt/EnchantmentTranslator.java index dd3e973f662..34860509e72 100644 --- a/core/src/main/java/org/geysermc/geyser/translator/inventory/item/nbt/EnchantmentTranslator.java +++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/item/nbt/EnchantmentTranslator.java @@ -42,11 +42,9 @@ public class EnchantmentTranslator extends NbtItemStackTranslator { @Override public void translateToBedrock(GeyserSession session, CompoundTag itemTag, ItemMapping mapping) { - IntTag hideFlagsTag = itemTag.get("HideFlags"); - List newTags = new ArrayList<>(); Tag enchantmentTag = itemTag.get("StoredEnchantments"); - if ((hideFlagsTag == null || (hideFlagsTag.getValue() & 32) == 0) && enchantmentTag instanceof ListTag listTag) { + if (enchantmentTag instanceof ListTag listTag) { for (Tag tag : listTag.getValue()) { if (!(tag instanceof CompoundTag)) continue; @@ -60,15 +58,13 @@ public void translateToBedrock(GeyserSession session, CompoundTag itemTag, ItemM } enchantmentTag = itemTag.get("Enchantments"); if (enchantmentTag instanceof ListTag listTag) { - if (hideFlagsTag == null || (hideFlagsTag.getValue() & 1) == 0) { - for (Tag tag : listTag.getValue()) { - if (!(tag instanceof CompoundTag)) continue; + for (Tag tag : listTag.getValue()) { + if (!(tag instanceof CompoundTag)) continue; - CompoundTag bedrockTag = remapEnchantment((CompoundTag) tag); - newTags.add(bedrockTag); - } - itemTag.remove("Enchantments"); + CompoundTag bedrockTag = remapEnchantment((CompoundTag) tag); + newTags.add(bedrockTag); } + itemTag.remove("Enchantments"); itemTag.put(new ListTag("ench")); }