Skip to content

Commit c4a50bb

Browse files
committed
Replace default backing map of NBT tags in more compatible way
Related: #111
1 parent b5d62b4 commit c4a50bb

File tree

1 file changed

+8
-11
lines changed

1 file changed

+8
-11
lines changed

common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/nbt_memory_usage/CompoundTagMixin.java

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,24 @@
66
import org.spongepowered.asm.mixin.*;
77
import org.spongepowered.asm.mixin.injection.At;
88
import org.spongepowered.asm.mixin.injection.Inject;
9-
import org.spongepowered.asm.mixin.injection.Redirect;
9+
import org.spongepowered.asm.mixin.injection.ModifyArg;
1010
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
1111

1212
import java.util.Map;
1313

1414
@Mixin(CompoundTag.class)
1515
public class CompoundTagMixin {
16-
@Shadow @Final @Mutable
16+
@Shadow @Final
1717
private Map<String, Tag> tags;
1818

1919
/**
20-
* Ensure that the backing map is always a CanonizingStringMap.
20+
* Ensure that the default backing map is a CanonizingStringMap.
2121
*/
22-
@Redirect(method = "<init>(Ljava/util/Map;)V", at = @At(value = "FIELD", target = "Lnet/minecraft/nbt/CompoundTag;tags:Ljava/util/Map;", ordinal = 0))
23-
private void replaceTagMap(CompoundTag tag, Map<String, Tag> incomingMap) {
24-
if(incomingMap instanceof CanonizingStringMap)
25-
this.tags = incomingMap;
26-
else {
27-
this.tags = new CanonizingStringMap<>();
28-
this.tags.putAll(incomingMap);
29-
}
22+
@ModifyArg(method = "<init>()V", at = @At(value = "INVOKE", target = "Lnet/minecraft/nbt/CompoundTag;<init>(Ljava/util/Map;)V"), index = 0)
23+
private static Map<String, Tag> useCanonizingStringMap(Map<String, Tag> incoming) {
24+
CanonizingStringMap<Tag> newMap = new CanonizingStringMap<>();
25+
newMap.putAll(incoming);
26+
return newMap;
3027
}
3128

3229
/**

0 commit comments

Comments
 (0)