DataFixTypes.java

net.minecraft.util.datafix.DataFixTypes

信息

  • 全限定名:net.minecraft.util.datafix.DataFixTypes
  • 类型:public enum
  • 包:net.minecraft.util.datafix
  • 源码路径:src/main/java/net/minecraft/util/datafix/DataFixTypes.java
  • 起始行号:L17
  • 职责:

    TODO

字段/常量

  • LEVEL, LIGHTWEIGHT_LEVEL, PLAYER, CHUNK, HOTBAR, OPTIONS, STRUCTURE, STATS, SAVED_DATA_COMMAND_STORAGE, SAVED_DATA_CUSTOM_BOSS_EVENTS, SAVED_DATA_ENDER_DRAGON_FIGHT, SAVED_DATA_GAME_RULES, SAVED_DATA_TICKETS, SAVED_DATA_MAP_DATA, SAVED_DATA_MAP_INDEX, SAVED_DATA_RAIDS, SAVED_DATA_RANDOM_SEQUENCES, SAVED_DATA_SCHEDULED_EVENTS, SAVED_DATA_SCOREBOARD, SAVED_DATA_STOPWATCHES, SAVED_DATA_STRUCTURE_FEATURE_INDICES, SAVED_DATA_WANDERING_TRADER, SAVED_DATA_WEATHER, SAVED_DATA_WORLD_BORDER, SAVED_DATA_WORLD_CLOCKS, SAVED_DATA_WORLD_GEN_SETTINGS, ADVANCEMENTS, POI_CHUNK, WORLD_GEN_SETTINGS, ENTITY_CHUNK, DEBUG_PROFILE

    • 类型: LEVEL(References.
    • 修饰符: package-private
    • 源码定位: L18
    • 说明:

      TODO

  • TYPES_FOR_LEVEL_LIST

    • 类型: Set<TypeReference>
    • 修饰符: public static final
    • 源码定位: L50
    • 说明:

      TODO

  • type

    • 类型: TypeReference
    • 修饰符: private final
    • 源码定位: L51
    • 说明:

      TODO

内部类/嵌套类型

构造器

private DataFixTypes(TypeReference type) @ L53

  • 构造器名:DataFixTypes
  • 源码定位:L53
  • 修饰符:private

参数:

  • type: TypeReference

说明:

TODO

方法

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

private static int currentVersion() @ L57

  • 方法名:currentVersion
  • 源码定位:L57
  • 返回类型:int
  • 修饰符:private static

参数:

说明:

TODO

public <A> Codec<A> wrapCodec(Codec<A> codec, DataFixer dataFixer, int defaultVersion) @ L61

参数:

说明:

TODO

public <T> Dynamic<T> update(DataFixer fixerUpper, Dynamic<T> input, int fromVersion, int toVersion) @ L83

  • 方法名:update
  • 源码定位:L83
  • 返回类型: Dynamic
  • 修饰符:public

参数:

  • fixerUpper: DataFixer
  • input: Dynamic
  • fromVersion: int
  • toVersion: int

说明:

TODO

public <T> Dynamic<T> updateToCurrentVersion(DataFixer fixerUpper, Dynamic<T> input, int dataVersion) @ L87

  • 方法名:updateToCurrentVersion
  • 源码定位:L87
  • 返回类型: Dynamic
  • 修饰符:public

参数:

  • fixerUpper: DataFixer
  • input: Dynamic
  • dataVersion: int

说明:

TODO

public CompoundTag update(DataFixer fixer, CompoundTag tag, int fromVersion, int toVersion) @ L91

  • 方法名:update
  • 源码定位:L91
  • 返回类型:CompoundTag
  • 修饰符:public

参数:

  • fixer: DataFixer
  • tag: CompoundTag
  • fromVersion: int
  • toVersion: int

说明:

TODO

public CompoundTag updateToCurrentVersion(DataFixer fixer, CompoundTag tag, int fromVersion) @ L95

  • 方法名:updateToCurrentVersion
  • 源码定位:L95
  • 返回类型:CompoundTag
  • 修饰符:public

参数:

  • fixer: DataFixer
  • tag: CompoundTag
  • fromVersion: int

说明:

TODO

代码

public enum DataFixTypes {
    LEVEL(References.LEVEL),
    LEVEL_SUMMARY(References.LIGHTWEIGHT_LEVEL),
    PLAYER(References.PLAYER),
    CHUNK(References.CHUNK),
    HOTBAR(References.HOTBAR),
    OPTIONS(References.OPTIONS),
    STRUCTURE(References.STRUCTURE),
    STATS(References.STATS),
    SAVED_DATA_COMMAND_STORAGE(References.SAVED_DATA_COMMAND_STORAGE),
    SAVED_DATA_CUSTOM_BOSS_EVENTS(References.SAVED_DATA_CUSTOM_BOSS_EVENTS),
    SAVED_DATA_ENDER_DRAGON_FIGHT(References.SAVED_DATA_ENDER_DRAGON_FIGHT),
    SAVED_DATA_GAME_RULES(References.SAVED_DATA_GAME_RULES),
    SAVED_DATA_FORCED_CHUNKS(References.SAVED_DATA_TICKETS),
    SAVED_DATA_MAP_DATA(References.SAVED_DATA_MAP_DATA),
    SAVED_DATA_MAP_INDEX(References.SAVED_DATA_MAP_INDEX),
    SAVED_DATA_RAIDS(References.SAVED_DATA_RAIDS),
    SAVED_DATA_RANDOM_SEQUENCES(References.SAVED_DATA_RANDOM_SEQUENCES),
    SAVED_DATA_SCHEDULED_EVENTS(References.SAVED_DATA_SCHEDULED_EVENTS),
    SAVED_DATA_SCOREBOARD(References.SAVED_DATA_SCOREBOARD),
    SAVED_DATA_STOPWATCHES(References.SAVED_DATA_STOPWATCHES),
    SAVED_DATA_STRUCTURE_FEATURE_INDICES(References.SAVED_DATA_STRUCTURE_FEATURE_INDICES),
    SAVED_DATA_WANDERING_TRADER(References.SAVED_DATA_WANDERING_TRADER),
    SAVED_DATA_WEATHER(References.SAVED_DATA_WEATHER),
    SAVED_DATA_WORLD_BORDER(References.SAVED_DATA_WORLD_BORDER),
    SAVED_DATA_WORLD_CLOCKS(References.SAVED_DATA_WORLD_CLOCKS),
    SAVED_DATA_WORLD_GEN_SETTINGS(References.SAVED_DATA_WORLD_GEN_SETTINGS),
    ADVANCEMENTS(References.ADVANCEMENTS),
    POI_CHUNK(References.POI_CHUNK),
    WORLD_GEN_SETTINGS(References.WORLD_GEN_SETTINGS),
    ENTITY_CHUNK(References.ENTITY_CHUNK),
    DEBUG_PROFILE(References.DEBUG_PROFILE);
 
    public static final Set<TypeReference> TYPES_FOR_LEVEL_LIST;
    private final TypeReference type;
 
    private DataFixTypes(TypeReference type) {
        this.type = type;
    }
 
    private static int currentVersion() {
        return SharedConstants.getCurrentVersion().dataVersion().version();
    }
 
    public <A> Codec<A> wrapCodec(Codec<A> codec, DataFixer dataFixer, int defaultVersion) {
        return new Codec<A>() {
            {
                Objects.requireNonNull(DataFixTypes.this);
            }
 
            @Override
            public <T> DataResult<T> encode(A input, DynamicOps<T> ops, T prefix) {
                return codec.encode(input, ops, prefix)
                    .flatMap(data -> ops.mergeToMap((T)data, ops.createString("DataVersion"), ops.createInt(DataFixTypes.currentVersion())));
            }
 
            @Override
            public <T> DataResult<Pair<A, T>> decode(DynamicOps<T> ops, T input) {
                int fromVersion = ops.get(input, "DataVersion").flatMap(ops::getNumberValue).map(Number::intValue).result().orElse(defaultVersion);
                Dynamic<T> dataWithoutVersion = new Dynamic<>(ops, ops.remove(input, "DataVersion"));
                Dynamic<T> fixedData = DataFixTypes.this.updateToCurrentVersion(dataFixer, dataWithoutVersion, fromVersion);
                return codec.decode(fixedData);
            }
        };
    }
 
    public <T> Dynamic<T> update(DataFixer fixerUpper, Dynamic<T> input, int fromVersion, int toVersion) {
        return fixerUpper.update(this.type, input, fromVersion, toVersion);
    }
 
    public <T> Dynamic<T> updateToCurrentVersion(DataFixer fixerUpper, Dynamic<T> input, int dataVersion) {
        return this.update(fixerUpper, input, dataVersion, currentVersion());
    }
 
    public CompoundTag update(DataFixer fixer, CompoundTag tag, int fromVersion, int toVersion) {
        return (CompoundTag)this.update(fixer, new Dynamic<>(NbtOps.INSTANCE, tag), fromVersion, toVersion).getValue();
    }
 
    public CompoundTag updateToCurrentVersion(DataFixer fixer, CompoundTag tag, int fromVersion) {
        return this.update(fixer, tag, fromVersion, currentVersion());
    }
 
    static {
        TYPES_FOR_LEVEL_LIST = Set.of(LEVEL_SUMMARY.type);
    }
}

引用的其他类