ChatTrustLevel.java

net.minecraft.client.multiplayer.chat.ChatTrustLevel

信息

  • 全限定名:net.minecraft.client.multiplayer.chat.ChatTrustLevel
  • 类型:public enum
  • 包:net.minecraft.client.multiplayer.chat
  • 源码路径:src/main/java/net/minecraft/client/multiplayer/chat/ChatTrustLevel.java
  • 起始行号:L16
  • 实现:StringRepresentable
  • 职责:

    TODO

字段/常量

  • SECURE, MODIFIED, NOT_SECURE

    • 类型: ChatTrustLevel
    • 修饰符: package-private
    • 源码定位: L17
    • 说明:

      TODO

  • CODEC

    • 类型: Codec<ChatTrustLevel>
    • 修饰符: public static final
    • 源码定位: L21
    • 说明:

      TODO

  • serializedName

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

      TODO

内部类/嵌套类型

构造器

private ChatTrustLevel(String serializedName) @ L24

  • 构造器名:ChatTrustLevel
  • 源码定位:L24
  • 修饰符:private

参数:

  • serializedName: String

说明:

TODO

方法

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

public static ChatTrustLevel evaluate(PlayerChatMessage message, Component decoratedMessage, Instant received) @ L28

  • 方法名:evaluate
  • 源码定位:L28
  • 返回类型:ChatTrustLevel
  • 修饰符:public static

参数:

  • message: PlayerChatMessage
  • decoratedMessage: Component
  • received: Instant

说明:

TODO

private static boolean isModified(PlayerChatMessage message, Component decoratedMessage) @ L36

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

参数:

  • message: PlayerChatMessage
  • decoratedMessage: Component

说明:

TODO

private static boolean containsModifiedStyle(Component decoratedContent) @ L45

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

参数:

  • decoratedContent: Component

说明:

TODO

private static boolean isModifiedStyle(Style style) @ L49

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

参数:

  • style: Style

说明:

TODO

public boolean isNotSecure() @ L53

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

参数:

说明:

TODO

public GuiMessageTag createTag(PlayerChatMessage message) @ L57

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

参数:

  • message: PlayerChatMessage

说明:

TODO

public String getSerializedName() @ L65

  • 方法名:getSerializedName
  • 源码定位:L65
  • 返回类型:String
  • 修饰符:public

参数:

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public enum ChatTrustLevel implements StringRepresentable {
    SECURE("secure"),
    MODIFIED("modified"),
    NOT_SECURE("not_secure");
 
    public static final Codec<ChatTrustLevel> CODEC = StringRepresentable.fromEnum(ChatTrustLevel::values);
    private final String serializedName;
 
    private ChatTrustLevel(String serializedName) {
        this.serializedName = serializedName;
    }
 
    public static ChatTrustLevel evaluate(PlayerChatMessage message, Component decoratedMessage, Instant received) {
        if (!message.hasSignature() || message.hasExpiredClient(received)) {
            return NOT_SECURE;
        } else {
            return isModified(message, decoratedMessage) ? MODIFIED : SECURE;
        }
    }
 
    private static boolean isModified(PlayerChatMessage message, Component decoratedMessage) {
        if (!decoratedMessage.getString().contains(message.signedContent())) {
            return true;
        } else {
            Component decoratedContent = message.unsignedContent();
            return decoratedContent == null ? false : containsModifiedStyle(decoratedContent);
        }
    }
 
    private static boolean containsModifiedStyle(Component decoratedContent) {
        return decoratedContent.<Boolean>visit((style, contents) -> isModifiedStyle(style) ? Optional.of(true) : Optional.empty(), Style.EMPTY).orElse(false);
    }
 
    private static boolean isModifiedStyle(Style style) {
        return !style.getFont().equals(FontDescription.DEFAULT);
    }
 
    public boolean isNotSecure() {
        return this == NOT_SECURE;
    }
 
    public @Nullable GuiMessageTag createTag(PlayerChatMessage message) {
        return switch (this) {
            case MODIFIED -> GuiMessageTag.chatModified(message.signedContent());
            case NOT_SECURE -> GuiMessageTag.chatNotSecure();
            default -> null;
        };
    }
 
    @Override
    public String getSerializedName() {
        return this.serializedName;
    }
}

引用的其他类

  • GuiMessageTag

    • 引用位置: 方法调用/返回值
    • 关联成员: GuiMessageTag.chatModified(), GuiMessageTag.chatNotSecure()
  • Component

    • 引用位置: 参数
  • PlayerChatMessage

    • 引用位置: 参数
  • Style

    • 引用位置: 参数
  • StringRepresentable

    • 引用位置: 实现/方法调用
    • 关联成员: StringRepresentable.fromEnum()