|
6 | 6 | import org.spongepowered.asm.mixin.*; |
7 | 7 | import org.spongepowered.asm.mixin.injection.At; |
8 | 8 | import org.spongepowered.asm.mixin.injection.Inject; |
9 | | -import org.spongepowered.asm.mixin.injection.Redirect; |
| 9 | +import org.spongepowered.asm.mixin.injection.ModifyArg; |
10 | 10 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; |
11 | 11 |
|
12 | 12 | import java.util.Map; |
13 | 13 |
|
14 | 14 | @Mixin(CompoundTag.class) |
15 | 15 | public class CompoundTagMixin { |
16 | | - @Shadow @Final @Mutable |
| 16 | + @Shadow @Final |
17 | 17 | private Map<String, Tag> tags; |
18 | 18 |
|
19 | 19 | /** |
20 | | - * Ensure that the backing map is always a CanonizingStringMap. |
| 20 | + * Ensure that the default backing map is a CanonizingStringMap. |
21 | 21 | */ |
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; |
30 | 27 | } |
31 | 28 |
|
32 | 29 | /** |
|
0 commit comments