AbstractUUIDFix.java

net.minecraft.util.datafix.fixes.AbstractUUIDFix

信息

  • 全限定名:net.minecraft.util.datafix.fixes.AbstractUUIDFix
  • 类型:public abstract class
  • 包:net.minecraft.util.datafix.fixes
  • 源码路径:src/main/java/net/minecraft/util/datafix/fixes/AbstractUUIDFix.java
  • 起始行号:L15
  • 继承:DataFix
  • 职责:

    TODO

字段/常量

  • typeReference
    • 类型: TypeReference
    • 修饰符: protected final
    • 源码定位: L16
    • 说明:

      TODO

内部类/嵌套类型

构造器

public AbstractUUIDFix(Schema outputSchema, TypeReference typeReference) @ L18

  • 构造器名:AbstractUUIDFix
  • 源码定位:L18
  • 修饰符:public

参数:

  • outputSchema: Schema
  • typeReference: TypeReference

说明:

TODO

方法

下面的方法块按源码顺序生成。

protected Typed<?> updateNamedChoice(Typed<?> input, String name, Function<Dynamic<?>,Dynamic<?>> function) @ L23

  • 方法名:updateNamedChoice
  • 源码定位:L23
  • 返回类型:Typed<?>
  • 修饰符:protected

参数:

  • input: Typed<?>
  • name: String
  • function: Function<Dynamic,Dynamic>

说明:

TODO

protected static Optional<Dynamic<?>> replaceUUIDString(Dynamic<?> tag, String oldKey, String newKey) @ L29

  • 方法名:replaceUUIDString
  • 源码定位:L29
  • 返回类型:Optional<Dynamic<?>>
  • 修饰符:protected static

参数:

  • tag: Dynamic<?>
  • oldKey: String
  • newKey: String

说明:

TODO

protected static Optional<Dynamic<?>> replaceUUIDMLTag(Dynamic<?> tag, String oldKey, String newKey) @ L33

  • 方法名:replaceUUIDMLTag
  • 源码定位:L33
  • 返回类型:Optional<Dynamic<?>>
  • 修饰符:protected static

参数:

  • tag: Dynamic<?>
  • oldKey: String
  • newKey: String

说明:

TODO

protected static Optional<Dynamic<?>> replaceUUIDLeastMost(Dynamic<?> tag, String oldKey, String newKey) @ L37

  • 方法名:replaceUUIDLeastMost
  • 源码定位:L37
  • 返回类型:Optional<Dynamic<?>>
  • 修饰符:protected static

参数:

  • tag: Dynamic<?>
  • oldKey: String
  • newKey: String

说明:

TODO

protected static Optional<Dynamic<?>> createUUIDFromString(Dynamic<?> tag, String oldKey) @ L43

  • 方法名:createUUIDFromString
  • 源码定位:L43
  • 返回类型:Optional<Dynamic<?>>
  • 修饰符:protected static

参数:

  • tag: Dynamic<?>
  • oldKey: String

说明:

TODO

protected static Optional<Dynamic<?>> createUUIDFromML(Dynamic<?> tag) @ L58

  • 方法名:createUUIDFromML
  • 源码定位:L58
  • 返回类型:Optional<Dynamic<?>>
  • 修饰符:protected static

参数:

  • tag: Dynamic<?>

说明:

TODO

protected static Optional<Dynamic<?>> createUUIDFromLongs(Dynamic<?> tag, String mostKey, String leastKey) @ L62

  • 方法名:createUUIDFromLongs
  • 源码定位:L62
  • 返回类型:Optional<Dynamic<?>>
  • 修饰符:protected static

参数:

  • tag: Dynamic<?>
  • mostKey: String
  • leastKey: String

说明:

TODO

protected static Optional<Dynamic<?>> createUUIDTag(Dynamic<?> tag, long mostSignificantBits, long leastSignificantBits) @ L68

  • 方法名:createUUIDTag
  • 源码定位:L68
  • 返回类型:Optional<Dynamic<?>>
  • 修饰符:protected static

参数:

  • tag: Dynamic<?>
  • mostSignificantBits: long
  • leastSignificantBits: long

说明:

TODO

代码

public abstract class AbstractUUIDFix extends DataFix {
    protected final TypeReference typeReference;
 
    public AbstractUUIDFix(Schema outputSchema, TypeReference typeReference) {
        super(outputSchema, false);
        this.typeReference = typeReference;
    }
 
    protected Typed<?> updateNamedChoice(Typed<?> input, String name, Function<Dynamic<?>, Dynamic<?>> function) {
        Type<?> oldType = this.getInputSchema().getChoiceType(this.typeReference, name);
        Type<?> newType = this.getOutputSchema().getChoiceType(this.typeReference, name);
        return input.updateTyped(DSL.namedChoice(name, oldType), newType, typedTag -> typedTag.update(DSL.remainderFinder(), function));
    }
 
    protected static Optional<Dynamic<?>> replaceUUIDString(Dynamic<?> tag, String oldKey, String newKey) {
        return createUUIDFromString(tag, oldKey).map(uuidTag -> tag.remove(oldKey).set(newKey, (Dynamic<?>)uuidTag));
    }
 
    protected static Optional<Dynamic<?>> replaceUUIDMLTag(Dynamic<?> tag, String oldKey, String newKey) {
        return tag.get(oldKey).result().flatMap(AbstractUUIDFix::createUUIDFromML).map(uuidTag -> tag.remove(oldKey).set(newKey, (Dynamic<?>)uuidTag));
    }
 
    protected static Optional<Dynamic<?>> replaceUUIDLeastMost(Dynamic<?> tag, String oldKey, String newKey) {
        String mostKey = oldKey + "Most";
        String leastKey = oldKey + "Least";
        return createUUIDFromLongs(tag, mostKey, leastKey).map(uuidTag -> tag.remove(mostKey).remove(leastKey).set(newKey, (Dynamic<?>)uuidTag));
    }
 
    protected static Optional<Dynamic<?>> createUUIDFromString(Dynamic<?> tag, String oldKey) {
        return tag.get(oldKey).result().flatMap(uuidStringTag -> {
            String uuidString = uuidStringTag.asString(null);
            if (uuidString != null) {
                try {
                    UUID uuid = UUID.fromString(uuidString);
                    return createUUIDTag(tag, uuid.getMostSignificantBits(), uuid.getLeastSignificantBits());
                } catch (IllegalArgumentException var4) {
                }
            }
 
            return Optional.empty();
        });
    }
 
    protected static Optional<Dynamic<?>> createUUIDFromML(Dynamic<?> tag) {
        return createUUIDFromLongs(tag, "M", "L");
    }
 
    protected static Optional<Dynamic<?>> createUUIDFromLongs(Dynamic<?> tag, String mostKey, String leastKey) {
        long mostSignificantBits = tag.get(mostKey).asLong(0L);
        long leastSignificantBits = tag.get(leastKey).asLong(0L);
        return mostSignificantBits != 0L && leastSignificantBits != 0L ? createUUIDTag(tag, mostSignificantBits, leastSignificantBits) : Optional.empty();
    }
 
    protected static Optional<Dynamic<?>> createUUIDTag(Dynamic<?> tag, long mostSignificantBits, long leastSignificantBits) {
        return Optional.of(
            tag.createIntList(
                Arrays.stream(
                    new int[]{(int)(mostSignificantBits >> 32), (int)mostSignificantBits, (int)(leastSignificantBits >> 32), (int)leastSignificantBits}
                )
            )
        );
    }
}

引用的其他类