AccessibilityOptionsScreen.java

net.minecraft.client.gui.screens.options.AccessibilityOptionsScreen

信息

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

    TODO

字段/常量

  • TITLE
    • 类型: Component
    • 修饰符: public static final
    • 源码定位: L23
    • 说明:

      TODO

内部类/嵌套类型

构造器

public AccessibilityOptionsScreen(Screen lastScreen, Options options) @ L54

  • 构造器名:AccessibilityOptionsScreen
  • 源码定位:L54
  • 修饰符:public

参数:

  • lastScreen: Screen
  • options: Options

说明:

TODO

方法

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

private static OptionInstance<?>[] options(Options options) @ L25

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

参数:

  • options: Options

说明:

TODO

protected void init() @ L58

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

参数:

说明:

TODO

protected void addOptions() @ L73

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

参数:

说明:

TODO

protected void addFooter() @ L82

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

参数:

说明:

TODO

protected boolean panoramaShouldSpin() @ L91

  • 方法名:panoramaShouldSpin
  • 源码定位:L91
  • 返回类型:boolean
  • 修饰符:protected

参数:

说明:

TODO

private boolean isMinecartOptionEnabled() @ L96

  • 方法名:isMinecartOptionEnabled
  • 源码定位:L96
  • 返回类型:boolean
  • 修饰符:private

参数:

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class AccessibilityOptionsScreen extends OptionsSubScreen {
    public static final Component TITLE = Component.translatable("options.accessibility.title");
 
    private static OptionInstance<?>[] options(Options options) {
        return new OptionInstance[]{
            options.narrator(),
            options.showSubtitles(),
            options.highContrast(),
            options.menuBackgroundBlurriness(),
            options.textBackgroundOpacity(),
            options.backgroundForChatOnly(),
            options.chatOpacity(),
            options.chatLineSpacing(),
            options.chatDelay(),
            options.notificationDisplayTime(),
            options.bobView(),
            options.screenEffectScale(),
            options.fovEffectScale(),
            options.darknessEffectScale(),
            options.damageTiltStrength(),
            options.glintSpeed(),
            options.glintStrength(),
            options.hideLightningFlash(),
            options.darkMojangStudiosBackground(),
            options.panoramaSpeed(),
            options.hideSplashTexts(),
            options.narratorHotkey(),
            options.rotateWithMinecart(),
            options.highContrastBlockOutline()
        };
    }
 
    public AccessibilityOptionsScreen(Screen lastScreen, Options options) {
        super(lastScreen, options, TITLE);
    }
 
    @Override
    protected void init() {
        super.init();
        AbstractWidget highContrast = this.list.findOption(this.options.highContrast());
        if (highContrast != null && !this.minecraft.getResourcePackRepository().getAvailableIds().contains("high_contrast")) {
            highContrast.active = false;
            highContrast.setTooltip(Tooltip.create(Component.translatable("options.accessibility.high_contrast.error.tooltip")));
        }
 
        AbstractWidget rotateWithMinecart = this.list.findOption(this.options.rotateWithMinecart());
        if (rotateWithMinecart != null) {
            rotateWithMinecart.active = this.isMinecartOptionEnabled();
        }
    }
 
    @Override
    protected void addOptions() {
        OptionInstance<?>[] optionsInstances = options(this.options);
        Button controlsLink = Button.builder(OptionsScreen.CONTROLS, button -> this.minecraft.setScreen(new ControlsScreen(this, this.options))).build();
        OptionInstance<?> firstOptionInstance = optionsInstances[0];
        this.list.addSmall(firstOptionInstance.createButton(this.options), this.options.narrator(), controlsLink);
        this.list.addSmall(Arrays.stream(optionsInstances).filter(instance -> instance != firstOptionInstance).toArray(OptionInstance[]::new));
    }
 
    @Override
    protected void addFooter() {
        LinearLayout footer = this.layout.addToFooter(LinearLayout.horizontal().spacing(8));
        footer.addChild(
            Button.builder(Component.translatable("options.accessibility.link"), ConfirmLinkScreen.confirmLink(this, CommonLinks.ACCESSIBILITY_HELP)).build()
        );
        footer.addChild(Button.builder(CommonComponents.GUI_DONE, button -> this.minecraft.setScreen(this.lastScreen)).build());
    }
 
    @Override
    protected boolean panoramaShouldSpin() {
        return !(this.lastScreen instanceof AccessibilityOnboardingScreen);
    }
 
    private boolean isMinecartOptionEnabled() {
        return this.minecraft.level != null && this.minecraft.level.enabledFeatures().contains(FeatureFlags.MINECART_IMPROVEMENTS);
    }
}

引用的其他类

  • OptionInstance

    • 引用位置: 返回值
  • Options

    • 引用位置: 参数
  • Button

    • 引用位置: 方法调用
    • 关联成员: Button.builder()
  • Tooltip

    • 引用位置: 方法调用
    • 关联成员: Tooltip.create()
  • LinearLayout

    • 引用位置: 方法调用
    • 关联成员: LinearLayout.horizontal()
  • ConfirmLinkScreen

    • 引用位置: 方法调用
    • 关联成员: ConfirmLinkScreen.confirmLink()
  • Screen

    • 引用位置: 参数
  • OptionsSubScreen

    • 引用位置: 继承
  • ControlsScreen

    • 引用位置: 构造调用
    • 关联成员: ControlsScreen()
  • Component

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