OnlineOptionsScreen.java

net.minecraft.client.gui.screens.options.OnlineOptionsScreen

信息

  • 全限定名:net.minecraft.client.gui.screens.options.OnlineOptionsScreen
  • 类型:public class
  • 包:net.minecraft.client.gui.screens.options
  • 源码路径:src/main/java/net/minecraft/client/gui/screens/options/OnlineOptionsScreen.java
  • 起始行号:L20
  • 继承:OptionsSubScreen
  • 职责:

    TODO

字段/常量

  • TITLE

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

      TODO

  • difficultyDisplay

    • 类型: OptionInstance<Unit>
    • 修饰符: private
    • 源码定位: L22
    • 说明:

      TODO

内部类/嵌套类型

构造器

public OnlineOptionsScreen(Screen lastScreen, Options options) @ L24

  • 构造器名:OnlineOptionsScreen
  • 源码定位:L24
  • 修饰符:public

参数:

  • lastScreen: Screen
  • options: Options

说明:

TODO

方法

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

protected void init() @ L28

  • 方法名:init
  • 源码定位:L28
  • 返回类型:void
  • 修饰符:protected

参数:

说明:

TODO

private OptionInstance<?>[] options(Options options, Minecraft minecraft) @ L39

  • 方法名:options
  • 源码定位:L39
  • 返回类型:OptionInstance<?>[]
  • 修饰符:private

参数:

  • options: Options
  • minecraft: Minecraft

说明:

TODO

protected void addOptions() @ L65

  • 方法名:addOptions
  • 源码定位:L65
  • 返回类型:void
  • 修饰符:protected

参数:

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class OnlineOptionsScreen extends OptionsSubScreen {
    private static final Component TITLE = Component.translatable("options.online.title");
    private @Nullable OptionInstance<Unit> difficultyDisplay;
 
    public OnlineOptionsScreen(Screen lastScreen, Options options) {
        super(lastScreen, options, TITLE);
    }
 
    @Override
    protected void init() {
        super.init();
        if (this.difficultyDisplay != null) {
            AbstractWidget difficultyButton = this.list.findOption(this.difficultyDisplay);
            if (difficultyButton != null) {
                difficultyButton.active = false;
            }
        }
    }
 
    private OptionInstance<?>[] options(Options options, Minecraft minecraft) {
        List<OptionInstance<?>> optionList = new ArrayList<>();
        optionList.add(options.realmsNotifications());
        optionList.add(options.allowServerListing());
        OptionInstance<Unit> difficultyDisplay = Optionull.map(
            minecraft.level,
            level -> {
                Difficulty difficulty = level.getDifficulty();
                return new OptionInstance<>(
                    "options.difficulty.online",
                    OptionInstance.noTooltip(),
                    (caption, value) -> difficulty.getDisplayName(),
                    new OptionInstance.Enum<>(List.of(Unit.INSTANCE), Codec.EMPTY.codec()),
                    Unit.INSTANCE,
                    value -> {}
                );
            }
        );
        if (difficultyDisplay != null) {
            this.difficultyDisplay = difficultyDisplay;
            optionList.add(difficultyDisplay);
        }
 
        return optionList.toArray(new OptionInstance[0]);
    }
 
    @Override
    protected void addOptions() {
        this.list.addSmall(this.options(this.options, this.minecraft));
    }
}

引用的其他类

  • Optionull

    • 引用位置: 方法调用
    • 关联成员: Optionull.map()
  • Minecraft

    • 引用位置: 参数
  • OptionInstance

    • 引用位置: 字段/方法调用/返回值
    • 关联成员: OptionInstance.noTooltip()
  • Options

    • 引用位置: 参数
  • Screen

    • 引用位置: 参数
  • OptionsSubScreen

    • 引用位置: 继承
  • Component

    • 引用位置: 字段/方法调用
    • 关联成员: Component.translatable()