From 28d3f2d74200145821a693c3a4857279047194a6 Mon Sep 17 00:00:00 2001 From: Dragon-Seeker Date: Mon, 11 Nov 2024 17:07:01 -0600 Subject: [PATCH] Adjust NbtSerializer to prevent issues with equality and hashcode --- .../owo/serialization/format/nbt/NbtSerializer.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/wispforest/owo/serialization/format/nbt/NbtSerializer.java b/src/main/java/io/wispforest/owo/serialization/format/nbt/NbtSerializer.java index 6fe8877a..81524d01 100644 --- a/src/main/java/io/wispforest/owo/serialization/format/nbt/NbtSerializer.java +++ b/src/main/java/io/wispforest/owo/serialization/format/nbt/NbtSerializer.java @@ -101,7 +101,7 @@ public void writeBytes(SerializationContext ctx, byte[] bytes) { this.consume(new NbtByteArray(bytes)); } - private final Set encodedOptionals = Collections.newSetFromMap(new WeakHashMap<>()); + private final Set> encodedOptionals = Collections.newSetFromMap(new WeakHashMap<>()); @Override public void writeOptional(SerializationContext ctx, Endec endec, Optional optional) { @@ -115,7 +115,7 @@ public void writeOptional(SerializationContext ctx, Endec endec, Optional var compound = encoded.require("optional representation"); - encodedOptionals.add(compound); + encodedOptionals.add(new IdentityHolder<>(compound)); frameData.setValue(compound); }); @@ -177,7 +177,7 @@ public Struct field(String name, SerializationContext ctx, Endec endec, F var element = encoded.require("struct field"); - if (mayOmit && NbtSerializer.this.encodedOptionals.contains(element)) { + if (mayOmit && NbtSerializer.this.encodedOptionals.contains(new IdentityHolder<>(element))) { var nbtCompound = (NbtCompound) element; if(!nbtCompound.getBoolean("present")) return;