RealmsTermsScreen.java

com.mojang.realmsclient.gui.screens.RealmsTermsScreen

信息

  • 全限定名:com.mojang.realmsclient.gui.screens.RealmsTermsScreen
  • 类型:public class
  • 包:com.mojang.realmsclient.gui.screens
  • 源码路径:src/main/java/com/mojang/realmsclient/gui/screens/RealmsTermsScreen.java
  • 起始行号:L24
  • 继承:RealmsScreen
  • 职责:

    TODO

字段/常量

  • LOGGER

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

      TODO

  • TITLE

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

      TODO

  • TERMS_STATIC_TEXT

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

      TODO

  • TERMS_LINK_TEXT

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

      TODO

  • lastScreen

    • 类型: Screen
    • 修饰符: private final
    • 源码定位: L30
    • 说明:

      TODO

  • realmsServer

    • 类型: RealmsServer
    • 修饰符: private final
    • 源码定位: L31
    • 说明:

      TODO

  • onLink

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

      TODO

内部类/嵌套类型

构造器

public RealmsTermsScreen(Screen lastScreen, RealmsServer realmsServer) @ L34

  • 构造器名:RealmsTermsScreen
  • 源码定位:L34
  • 修饰符:public

参数:

  • lastScreen: Screen
  • realmsServer: RealmsServer

说明:

TODO

方法

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

public void init() @ L40

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

参数:

说明:

TODO

public boolean keyPressed(KeyEvent event) @ L55

  • 方法名:keyPressed
  • 源码定位:L55
  • 返回类型:boolean
  • 修饰符:public

参数:

  • event: KeyEvent

说明:

TODO

private void agreedToTos() @ L65

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

参数:

说明:

TODO

public boolean mouseClicked(MouseButtonEvent event, boolean doubleClick) @ L76

  • 方法名:mouseClicked
  • 源码定位:L76
  • 返回类型:boolean
  • 修饰符:public

参数:

  • event: MouseButtonEvent
  • doubleClick: boolean

说明:

TODO

public Component getNarrationMessage() @ L87

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

参数:

说明:

TODO

public void extractRenderState(GuiGraphicsExtractor graphics, int xm, int ym, float a) @ L92

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

参数:

  • graphics: GuiGraphicsExtractor
  • xm: int
  • ym: int
  • a: float

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class RealmsTermsScreen extends RealmsScreen {
    private static final Logger LOGGER = LogUtils.getLogger();
    private static final Component TITLE = Component.translatable("mco.terms.title");
    private static final Component TERMS_STATIC_TEXT = Component.translatable("mco.terms.sentence.1");
    private static final Component TERMS_LINK_TEXT = CommonComponents.space()
        .append(Component.translatable("mco.terms.sentence.2").withStyle(Style.EMPTY.withUnderlined(true)));
    private final Screen lastScreen;
    private final RealmsServer realmsServer;
    private boolean onLink;
 
    public RealmsTermsScreen(Screen lastScreen, RealmsServer realmsServer) {
        super(TITLE);
        this.lastScreen = lastScreen;
        this.realmsServer = realmsServer;
    }
 
    @Override
    public void init() {
        int columnWidth = this.width / 4 - 2;
        this.addRenderableWidget(
            Button.builder(Component.translatable("mco.terms.buttons.agree"), button -> this.agreedToTos())
                .bounds(this.width / 4, row(12), columnWidth, 20)
                .build()
        );
        this.addRenderableWidget(
            Button.builder(Component.translatable("mco.terms.buttons.disagree"), button -> this.minecraft.setScreen(this.lastScreen))
                .bounds(this.width / 2 + 4, row(12), columnWidth, 20)
                .build()
        );
    }
 
    @Override
    public boolean keyPressed(KeyEvent event) {
        if (event.isEscape()) {
            this.minecraft.setScreen(this.lastScreen);
            return true;
        } else {
            return super.keyPressed(event);
        }
    }
 
    private void agreedToTos() {
        RealmsClient client = RealmsClient.getOrCreate();
 
        try {
            client.agreeToTos();
            this.minecraft.setScreen(new RealmsLongRunningMcoTaskScreen(this.lastScreen, new GetServerDetailsTask(this.lastScreen, this.realmsServer)));
        } catch (RealmsServiceException var3) {
            LOGGER.error("Couldn't agree to TOS", (Throwable)var3);
        }
    }
 
    @Override
    public boolean mouseClicked(MouseButtonEvent event, boolean doubleClick) {
        if (this.onLink) {
            this.minecraft.keyboardHandler.setClipboard(CommonLinks.REALMS_TERMS.toString());
            Util.getPlatform().openUri(CommonLinks.REALMS_TERMS);
            return true;
        } else {
            return super.mouseClicked(event, doubleClick);
        }
    }
 
    @Override
    public Component getNarrationMessage() {
        return CommonComponents.joinForNarration(super.getNarrationMessage(), TERMS_STATIC_TEXT).append(CommonComponents.SPACE).append(TERMS_LINK_TEXT);
    }
 
    @Override
    public void extractRenderState(GuiGraphicsExtractor graphics, int xm, int ym, float a) {
        super.extractRenderState(graphics, xm, ym, a);
        graphics.centeredText(this.font, this.title, this.width / 2, 17, -1);
        graphics.text(this.font, TERMS_STATIC_TEXT, this.width / 2 - 120, row(5), -1);
        int firstPartWidth = this.font.width(TERMS_STATIC_TEXT);
        int x1 = this.width / 2 - 121 + firstPartWidth;
        int y1 = row(5);
        int x2 = x1 + this.font.width(TERMS_LINK_TEXT) + 1;
        int y2 = y1 + 1 + 9;
        this.onLink = x1 <= xm && xm <= x2 && y1 <= ym && ym <= y2;
        graphics.text(this.font, TERMS_LINK_TEXT, this.width / 2 - 120 + firstPartWidth, row(5), this.onLink ? -9670204 : -13408581);
    }
}

引用的其他类