Replace default backing map of NBT tags in more compatible way
Related: #111
This commit is contained in:
parent
b5d62b4bbb
commit
c4a50bb6e2
|
|
@ -6,27 +6,24 @@ import org.embeddedt.modernfix.util.CanonizingStringMap;
|
||||||
import org.spongepowered.asm.mixin.*;
|
import org.spongepowered.asm.mixin.*;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
import org.spongepowered.asm.mixin.injection.ModifyArg;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Mixin(CompoundTag.class)
|
@Mixin(CompoundTag.class)
|
||||||
public class CompoundTagMixin {
|
public class CompoundTagMixin {
|
||||||
@Shadow @Final @Mutable
|
@Shadow @Final
|
||||||
private Map<String, Tag> tags;
|
private Map<String, Tag> tags;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ensure that the backing map is always a CanonizingStringMap.
|
* Ensure that the default backing map is a CanonizingStringMap.
|
||||||
*/
|
*/
|
||||||
@Redirect(method = "<init>(Ljava/util/Map;)V", at = @At(value = "FIELD", target = "Lnet/minecraft/nbt/CompoundTag;tags:Ljava/util/Map;", ordinal = 0))
|
@ModifyArg(method = "<init>()V", at = @At(value = "INVOKE", target = "Lnet/minecraft/nbt/CompoundTag;<init>(Ljava/util/Map;)V"), index = 0)
|
||||||
private void replaceTagMap(CompoundTag tag, Map<String, Tag> incomingMap) {
|
private static Map<String, Tag> useCanonizingStringMap(Map<String, Tag> incoming) {
|
||||||
if(incomingMap instanceof CanonizingStringMap)
|
CanonizingStringMap<Tag> newMap = new CanonizingStringMap<>();
|
||||||
this.tags = incomingMap;
|
newMap.putAll(incoming);
|
||||||
else {
|
return newMap;
|
||||||
this.tags = new CanonizingStringMap<>();
|
|
||||||
this.tags.putAll(incomingMap);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user