HotbarManager.java

net.minecraft.client.HotbarManager

信息

  • 全限定名:net.minecraft.client.HotbarManager
  • 类型:public class
  • 包:net.minecraft.client
  • 源码路径:src/main/java/net/minecraft/client/HotbarManager.java
  • 起始行号:L19
  • 职责:

    TODO

字段/常量

  • LOGGER

    • 类型: Logger
    • 修饰符: private static final
    • 源码定位: L20
    • 说明:

      TODO

  • NUM_HOTBAR_GROUPS

    • 类型: int
    • 修饰符: public static final
    • 源码定位: L21
    • 说明:

      TODO

  • optionsFile

    • 类型: Path
    • 修饰符: private final
    • 源码定位: L22
    • 说明:

      TODO

  • fixerUpper

    • 类型: DataFixer
    • 修饰符: private final
    • 源码定位: L23
    • 说明:

      TODO

  • hotbars

    • 类型: Hotbar[]
    • 修饰符: private final
    • 源码定位: L24
    • 说明:

      TODO

  • loaded

    • 类型: boolean
    • 修饰符: private
    • 源码定位: L25
    • 说明:

      TODO

内部类/嵌套类型

构造器

public HotbarManager(Path workingDirectory, DataFixer fixerUpper) @ L27

  • 构造器名:HotbarManager
  • 源码定位:L27
  • 修饰符:public

参数:

  • workingDirectory: Path
  • fixerUpper: DataFixer

说明:

TODO

方法

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

private void load() @ L36

  • 方法名:load
  • 源码定位:L36
  • 返回类型:void
  • 修饰符:private

参数:

说明:

TODO

public void save() @ L57

  • 方法名:save
  • 源码定位:L57
  • 返回类型:void
  • 修饰符:public

参数:

说明:

TODO

public Hotbar get(int id) @ L73

  • 方法名:get
  • 源码定位:L73
  • 返回类型:Hotbar
  • 修饰符:public

参数:

  • id: int

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class HotbarManager {
    private static final Logger LOGGER = LogUtils.getLogger();
    public static final int NUM_HOTBAR_GROUPS = 9;
    private final Path optionsFile;
    private final DataFixer fixerUpper;
    private final Hotbar[] hotbars = new Hotbar[9];
    private boolean loaded;
 
    public HotbarManager(Path workingDirectory, DataFixer fixerUpper) {
        this.optionsFile = workingDirectory.resolve("hotbar.nbt");
        this.fixerUpper = fixerUpper;
 
        for (int i = 0; i < 9; i++) {
            this.hotbars[i] = new Hotbar();
        }
    }
 
    private void load() {
        try {
            CompoundTag tag = NbtIo.read(this.optionsFile);
            if (tag == null) {
                return;
            }
 
            int version = NbtUtils.getDataVersion(tag, 1343);
            tag = DataFixTypes.HOTBAR.updateToCurrentVersion(this.fixerUpper, tag, version);
 
            for (int i = 0; i < 9; i++) {
                this.hotbars[i] = Hotbar.CODEC
                    .parse(NbtOps.INSTANCE, tag.get(String.valueOf(i)))
                    .resultOrPartial(error -> LOGGER.warn("Failed to parse hotbar: {}", error))
                    .orElseGet(Hotbar::new);
            }
        } catch (Exception var4) {
            LOGGER.error("Failed to load creative mode options", (Throwable)var4);
        }
    }
 
    public void save() {
        try {
            CompoundTag tag = NbtUtils.addCurrentDataVersion(new CompoundTag());
 
            for (int i = 0; i < 9; i++) {
                Hotbar hotbar = this.get(i);
                DataResult<Tag> result = Hotbar.CODEC.encodeStart(NbtOps.INSTANCE, hotbar);
                tag.put(String.valueOf(i), result.getOrThrow());
            }
 
            NbtIo.write(tag, this.optionsFile);
        } catch (Exception var5) {
            LOGGER.error("Failed to save creative mode options", (Throwable)var5);
        }
    }
 
    public Hotbar get(int id) {
        if (!this.loaded) {
            this.load();
            this.loaded = true;
        }
 
        return this.hotbars[id];
    }
}

引用的其他类

  • Hotbar

    • 引用位置: 字段/构造调用/返回值
    • 关联成员: Hotbar()
  • CompoundTag

    • 引用位置: 构造调用
    • 关联成员: CompoundTag()
  • NbtIo

    • 引用位置: 方法调用
    • 关联成员: NbtIo.read(), NbtIo.write()
  • NbtUtils

    • 引用位置: 方法调用
    • 关联成员: NbtUtils.addCurrentDataVersion(), NbtUtils.getDataVersion()