MessageSignature.java

net.minecraft.network.chat.MessageSignature

信息

  • 全限定名:net.minecraft.network.chat.MessageSignature
  • 类型:public record
  • 包:net.minecraft.network.chat
  • 源码路径:src/main/java/net/minecraft/network/chat/MessageSignature.java
  • 起始行号:L15
  • 职责:

    TODO

字段/常量

  • CODEC

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

      TODO

  • BYTES

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

      TODO

内部类/嵌套类型

  • net.minecraft.network.chat.MessageSignature.Packed
    • 类型: record
    • 修饰符: public
    • 源码定位: L70
    • 说明:

      TODO

构造器

public MessageSignature(byte[] bytes) @ L19

  • 构造器名:MessageSignature
  • 源码定位:L19
  • 修饰符:public

参数:

  • bytes: byte[]

说明:

TODO

方法

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

public static MessageSignature read(FriendlyByteBuf input) @ L24

  • 方法名:read
  • 源码定位:L24
  • 返回类型:MessageSignature
  • 修饰符:public static

参数:

  • input: FriendlyByteBuf

说明:

TODO

public static void write(FriendlyByteBuf output, MessageSignature signature) @ L30

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

参数:

  • output: FriendlyByteBuf
  • signature: MessageSignature

说明:

TODO

public boolean verify(SignatureValidator signature, SignatureUpdater updater) @ L34

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

参数:

  • signature: SignatureValidator
  • updater: SignatureUpdater

说明:

TODO

public ByteBuffer asByteBuffer() @ L38

  • 方法名:asByteBuffer
  • 源码定位:L38
  • 返回类型:ByteBuffer
  • 修饰符:public

参数:

说明:

TODO

public boolean equals(Object o) @ L42

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

参数:

  • o: Object

说明:

TODO

public int hashCode() @ L47

  • 方法名:hashCode
  • 源码定位:L47
  • 返回类型:int
  • 修饰符:public

参数:

说明:

TODO

public String toString() @ L52

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

参数:

说明:

TODO

public static String describe(MessageSignature signature) @ L57

  • 方法名:describe
  • 源码定位:L57
  • 返回类型:String
  • 修饰符:public static

参数:

  • signature: MessageSignature

说明:

TODO

public MessageSignature.Packed pack(MessageSignatureCache cache) @ L61

  • 方法名:pack
  • 源码定位:L61
  • 返回类型:MessageSignature.Packed
  • 修饰符:public

参数:

  • cache: MessageSignatureCache

说明:

TODO

public int checksum() @ L66

  • 方法名:checksum
  • 源码定位:L66
  • 返回类型:int
  • 修饰符:public

参数:

说明:

TODO

代码

public record MessageSignature(byte[] bytes) {
    public static final Codec<MessageSignature> CODEC = ExtraCodecs.BASE64_STRING.xmap(MessageSignature::new, MessageSignature::bytes);
    public static final int BYTES = 256;
 
    public MessageSignature(byte[] bytes) {
        Preconditions.checkState(bytes.length == 256, "Invalid message signature size");
        this.bytes = bytes;
    }
 
    public static MessageSignature read(FriendlyByteBuf input) {
        byte[] bytes = new byte[256];
        input.readBytes(bytes);
        return new MessageSignature(bytes);
    }
 
    public static void write(FriendlyByteBuf output, MessageSignature signature) {
        output.writeBytes(signature.bytes);
    }
 
    public boolean verify(SignatureValidator signature, SignatureUpdater updater) {
        return signature.validate(updater, this.bytes);
    }
 
    public ByteBuffer asByteBuffer() {
        return ByteBuffer.wrap(this.bytes);
    }
 
    @Override
    public boolean equals(Object o) {
        return this == o || o instanceof MessageSignature that && Arrays.equals(this.bytes, that.bytes);
    }
 
    @Override
    public int hashCode() {
        return Arrays.hashCode(this.bytes);
    }
 
    @Override
    public String toString() {
        return Base64.getEncoder().encodeToString(this.bytes);
    }
 
    public static String describe(@Nullable MessageSignature signature) {
        return signature == null ? "<no signature>" : signature.toString();
    }
 
    public MessageSignature.Packed pack(MessageSignatureCache cache) {
        int packedId = cache.pack(this);
        return packedId != -1 ? new MessageSignature.Packed(packedId) : new MessageSignature.Packed(this);
    }
 
    public int checksum() {
        return Arrays.hashCode(this.bytes);
    }
 
    public record Packed(int id, @Nullable MessageSignature fullSignature) {
        public static final int FULL_SIGNATURE = -1;
 
        public Packed(MessageSignature signature) {
            this(-1, signature);
        }
 
        public Packed(int id) {
            this(id, null);
        }
 
        public static MessageSignature.Packed read(FriendlyByteBuf input) {
            int id = input.readVarInt() - 1;
            return id == -1 ? new MessageSignature.Packed(MessageSignature.read(input)) : new MessageSignature.Packed(id);
        }
 
        public static void write(FriendlyByteBuf output, MessageSignature.Packed packed) {
            output.writeVarInt(packed.id() + 1);
            if (packed.fullSignature() != null) {
                MessageSignature.write(output, packed.fullSignature());
            }
        }
 
        public Optional<MessageSignature> unpack(MessageSignatureCache cache) {
            return this.fullSignature != null ? Optional.of(this.fullSignature) : Optional.ofNullable(cache.unpack(this.id));
        }
    }
}

引用的其他类