From 14dcb4d3dffa659acfb8f637cc55595d930b0990 Mon Sep 17 00:00:00 2001 From: Eclipse Date: Thu, 4 Apr 2024 16:53:52 +0000 Subject: [PATCH 1/3] Fix (or workaround) armor items with custom armor trims having no texture on bedrock --- .../java/org/geysermc/geyser/item/type/ArmorItem.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java b/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java index 38144f31807..9d54a476564 100644 --- a/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java +++ b/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java @@ -33,6 +33,7 @@ import org.geysermc.geyser.session.GeyserSession; public class ArmorItem extends Item { + private static final String MINECRAFT_NAMESPACE = "minecraft:"; private final ArmorMaterial material; public ArmorItem(String javaIdentifier, ArmorMaterial material, Builder builder) { @@ -47,6 +48,13 @@ public void translateNbtToBedrock(@NonNull GeyserSession session, @NonNull Compo if (tag.get("Trim") instanceof CompoundTag trim) { StringTag material = trim.remove("material"); StringTag pattern = trim.remove("pattern"); + + // discard custom trim patterns/materials to prevent visual glitches on bedrock + if (!material.getValue().startsWith(MINECRAFT_NAMESPACE) + || !pattern.getValue().startsWith(MINECRAFT_NAMESPACE)) { + return; + } + // bedrock has an uppercase first letter key, and the value is not namespaced trim.put(new StringTag("Material", stripNamespace(material.getValue()))); trim.put(new StringTag("Pattern", stripNamespace(pattern.getValue()))); From 05477246fe2b9bab74865caacd8a4f99a7a3b7e6 Mon Sep 17 00:00:00 2001 From: Eclipse Date: Thu, 4 Apr 2024 17:14:22 +0000 Subject: [PATCH 2/3] Fix armor items with custom trims causing issues on entity models by removing the Trim tag entirely --- core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java b/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java index 9d54a476564..03a253a4ec2 100644 --- a/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java +++ b/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java @@ -52,6 +52,7 @@ public void translateNbtToBedrock(@NonNull GeyserSession session, @NonNull Compo // discard custom trim patterns/materials to prevent visual glitches on bedrock if (!material.getValue().startsWith(MINECRAFT_NAMESPACE) || !pattern.getValue().startsWith(MINECRAFT_NAMESPACE)) { + tag.remove("Trim"); return; } From 22b1b8116718b4092f858da97527cbb72f7da3ca Mon Sep 17 00:00:00 2001 From: Eclipse Date: Thu, 4 Apr 2024 17:35:22 +0000 Subject: [PATCH 3/3] Refer to minecraft namespace inline for consistency --- .../main/java/org/geysermc/geyser/item/type/ArmorItem.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java b/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java index 03a253a4ec2..b58f760d19d 100644 --- a/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java +++ b/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java @@ -33,7 +33,6 @@ import org.geysermc.geyser.session.GeyserSession; public class ArmorItem extends Item { - private static final String MINECRAFT_NAMESPACE = "minecraft:"; private final ArmorMaterial material; public ArmorItem(String javaIdentifier, ArmorMaterial material, Builder builder) { @@ -50,8 +49,8 @@ public void translateNbtToBedrock(@NonNull GeyserSession session, @NonNull Compo StringTag pattern = trim.remove("pattern"); // discard custom trim patterns/materials to prevent visual glitches on bedrock - if (!material.getValue().startsWith(MINECRAFT_NAMESPACE) - || !pattern.getValue().startsWith(MINECRAFT_NAMESPACE)) { + if (!material.getValue().startsWith("minecraft:") + || !pattern.getValue().startsWith("minecraft:")) { tag.remove("Trim"); return; }