BanNoticeScreens.java

net.minecraft.client.gui.screens.BanNoticeScreens

信息

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

    TODO

字段/常量

  • TEMPORARY_BAN_TITLE

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

      TODO

  • PERMANENT_BAN_TITLE

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

      TODO

  • NAME_BAN_TITLE

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

      TODO

  • SKIN_BAN_TITLE

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

      TODO

  • SKIN_BAN_DESCRIPTION

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

      TODO

内部类/嵌套类型

构造器

方法

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

public static ConfirmLinkScreen create(BooleanConsumer callback, BanDetails multiplayerBanned) @ L30

  • 方法名:create
  • 源码定位:L30
  • 返回类型:ConfirmLinkScreen
  • 修饰符:public static

参数:

  • callback: BooleanConsumer
  • multiplayerBanned: BanDetails

说明:

TODO

public static ConfirmLinkScreen createSkinBan(Runnable onClose) @ L41

  • 方法名:createSkinBan
  • 源码定位:L41
  • 返回类型:ConfirmLinkScreen
  • 修饰符:public static

参数:

  • onClose: Runnable

说明:

TODO

public static ConfirmLinkScreen createNameBan(String name, Runnable onClose) @ L52

  • 方法名:createNameBan
  • 源码定位:L52
  • 返回类型:ConfirmLinkScreen
  • 修饰符:public static

参数:

  • name: String
  • onClose: Runnable

说明:

TODO

private static Component getBannedTitle(BanDetails multiplayerBanned) @ L72

  • 方法名:getBannedTitle
  • 源码定位:L72
  • 返回类型:Component
  • 修饰符:private static

参数:

  • multiplayerBanned: BanDetails

说明:

TODO

private static Component getBannedScreenText(BanDetails multiplayerBanned) @ L76

  • 方法名:getBannedScreenText
  • 源码定位:L76
  • 返回类型:Component
  • 修饰符:private static

参数:

  • multiplayerBanned: BanDetails

说明:

TODO

private static Component getBanReasonText(BanDetails multiplayerBanned) @ L85

  • 方法名:getBanReasonText
  • 源码定位:L85
  • 返回类型:Component
  • 修饰符:private static

参数:

  • multiplayerBanned: BanDetails

说明:

TODO

private static Component getBanStatusText(BanDetails multiplayerBanned) @ L106

  • 方法名:getBanStatusText
  • 源码定位:L106
  • 返回类型:Component
  • 修饰符:private static

参数:

  • multiplayerBanned: BanDetails

说明:

TODO

private static Component getBanDurationText(BanDetails multiplayerBanned) @ L118

  • 方法名:getBanDurationText
  • 源码定位:L118
  • 返回类型:Component
  • 修饰符:private static

参数:

  • multiplayerBanned: BanDetails

说明:

TODO

private static boolean isTemporaryBan(BanDetails multiplayerBanned) @ L128

  • 方法名:isTemporaryBan
  • 源码定位:L128
  • 返回类型:boolean
  • 修饰符:private static

参数:

  • multiplayerBanned: BanDetails

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class BanNoticeScreens {
    private static final Component TEMPORARY_BAN_TITLE = Component.translatable("gui.banned.title.temporary").withStyle(ChatFormatting.BOLD);
    private static final Component PERMANENT_BAN_TITLE = Component.translatable("gui.banned.title.permanent").withStyle(ChatFormatting.BOLD);
    public static final Component NAME_BAN_TITLE = Component.translatable("gui.banned.name.title").withStyle(ChatFormatting.BOLD);
    private static final Component SKIN_BAN_TITLE = Component.translatable("gui.banned.skin.title").withStyle(ChatFormatting.BOLD);
    private static final Component SKIN_BAN_DESCRIPTION = Component.translatable(
        "gui.banned.skin.description", Component.translationArg(CommonLinks.SUSPENSION_HELP)
    );
 
    public static ConfirmLinkScreen create(BooleanConsumer callback, BanDetails multiplayerBanned) {
        return new ConfirmLinkScreen(
            callback,
            getBannedTitle(multiplayerBanned),
            getBannedScreenText(multiplayerBanned),
            CommonLinks.SUSPENSION_HELP,
            CommonComponents.GUI_ACKNOWLEDGE,
            true
        );
    }
 
    public static ConfirmLinkScreen createSkinBan(Runnable onClose) {
        URI uri = CommonLinks.SUSPENSION_HELP;
        return new ConfirmLinkScreen(result -> {
            if (result) {
                Util.getPlatform().openUri(uri);
            }
 
            onClose.run();
        }, SKIN_BAN_TITLE, SKIN_BAN_DESCRIPTION, uri, CommonComponents.GUI_ACKNOWLEDGE, true);
    }
 
    public static ConfirmLinkScreen createNameBan(String name, Runnable onClose) {
        URI uri = CommonLinks.SUSPENSION_HELP;
        return new ConfirmLinkScreen(
            result -> {
                if (result) {
                    Util.getPlatform().openUri(uri);
                }
 
                onClose.run();
            },
            NAME_BAN_TITLE,
            Component.translatable(
                "gui.banned.name.description", Component.literal(name).withStyle(ChatFormatting.YELLOW), Component.translationArg(CommonLinks.SUSPENSION_HELP)
            ),
            uri,
            CommonComponents.GUI_ACKNOWLEDGE,
            true
        );
    }
 
    private static Component getBannedTitle(BanDetails multiplayerBanned) {
        return isTemporaryBan(multiplayerBanned) ? TEMPORARY_BAN_TITLE : PERMANENT_BAN_TITLE;
    }
 
    private static Component getBannedScreenText(BanDetails multiplayerBanned) {
        return Component.translatable(
            "gui.banned.description",
            getBanReasonText(multiplayerBanned),
            getBanStatusText(multiplayerBanned),
            Component.translationArg(CommonLinks.SUSPENSION_HELP)
        );
    }
 
    private static Component getBanReasonText(BanDetails multiplayerBanned) {
        String reasonString = multiplayerBanned.reason();
        String reasonMessage = multiplayerBanned.reasonMessage();
        if (StringUtils.isNumeric(reasonString)) {
            int reasonId = Integer.parseInt(reasonString);
            BanReason reason = BanReason.byId(reasonId);
            Component reasonText;
            if (reason != null) {
                reasonText = ComponentUtils.mergeStyles(reason.title(), Style.EMPTY.withBold(true));
            } else if (reasonMessage != null) {
                reasonText = Component.translatable("gui.banned.description.reason_id_message", reasonId, reasonMessage).withStyle(ChatFormatting.BOLD);
            } else {
                reasonText = Component.translatable("gui.banned.description.reason_id", reasonId).withStyle(ChatFormatting.BOLD);
            }
 
            return Component.translatable("gui.banned.description.reason", reasonText);
        } else {
            return Component.translatable("gui.banned.description.unknownreason");
        }
    }
 
    private static Component getBanStatusText(BanDetails multiplayerBanned) {
        if (isTemporaryBan(multiplayerBanned)) {
            Component banDurationText = getBanDurationText(multiplayerBanned);
            return Component.translatable(
                "gui.banned.description.temporary",
                Component.translatable("gui.banned.description.temporary.duration", banDurationText).withStyle(ChatFormatting.BOLD)
            );
        } else {
            return Component.translatable("gui.banned.description.permanent").withStyle(ChatFormatting.BOLD);
        }
    }
 
    private static Component getBanDurationText(BanDetails multiplayerBanned) {
        Duration banDuration = Duration.between(Instant.now(), multiplayerBanned.expires());
        long durationHours = banDuration.toHours();
        if (durationHours > 72L) {
            return CommonComponents.days(banDuration.toDays());
        } else {
            return durationHours < 1L ? CommonComponents.minutes(banDuration.toMinutes()) : CommonComponents.hours(banDuration.toHours());
        }
    }
 
    private static boolean isTemporaryBan(BanDetails multiplayerBanned) {
        return multiplayerBanned.expires() != null;
    }
}

引用的其他类

  • ConfirmLinkScreen

    • 引用位置: 构造调用/返回值
    • 关联成员: ConfirmLinkScreen()
  • BanReason

    • 引用位置: 方法调用
    • 关联成员: BanReason.byId()
  • CommonComponents

    • 引用位置: 方法调用
    • 关联成员: CommonComponents.days(), CommonComponents.hours(), CommonComponents.minutes()
  • Component

    • 引用位置: 字段/方法调用/返回值
    • 关联成员: Component.literal(), Component.translatable(), Component.translationArg()
  • ComponentUtils

    • 引用位置: 方法调用
    • 关联成员: ComponentUtils.mergeStyles()
  • Util

    • 引用位置: 方法调用
    • 关联成员: Util.getPlatform()