LastSeenMessages.java
net.minecraft.network.chat.LastSeenMessages
信息
- 全限定名:net.minecraft.network.chat.LastSeenMessages
- 类型:public record
- 包:net.minecraft.network.chat
- 源码路径:src/main/java/net/minecraft/network/chat/LastSeenMessages.java
- 起始行号:L13
- 职责:
TODO
字段/常量
-
CODEC- 类型:
Codec<LastSeenMessages> - 修饰符:
public static final - 源码定位:
L14 - 说明:
TODO
- 类型:
-
EMPTY- 类型:
LastSeenMessages - 修饰符:
public static final - 源码定位:
L15 - 说明:
TODO
- 类型:
-
LAST_SEEN_MESSAGES_MAX_LENGTH- 类型:
int - 修饰符:
public static final - 源码定位:
L16 - 说明:
TODO
- 类型:
内部类/嵌套类型
-
net.minecraft.network.chat.LastSeenMessages.Packed- 类型:
record - 修饰符:
public - 源码定位:
L41 - 说明:
TODO
- 类型:
-
net.minecraft.network.chat.LastSeenMessages.Update- 类型:
record - 修饰符:
public - 源码定位:
L68 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
public void updateSignature(SignatureUpdater.Output output) @ L18
- 方法名:updateSignature
- 源码定位:L18
- 返回类型:void
- 修饰符:public
参数:
- output: SignatureUpdater.Output
说明:
TODO
public LastSeenMessages.Packed pack(MessageSignatureCache cache) @ L26
- 方法名:pack
- 源码定位:L26
- 返回类型:LastSeenMessages.Packed
- 修饰符:public
参数:
- cache: MessageSignatureCache
说明:
TODO
public byte computeChecksum() @ L30
- 方法名:computeChecksum
- 源码定位:L30
- 返回类型:byte
- 修饰符:public
参数:
- 无
说明:
TODO
代码
public record LastSeenMessages(List<MessageSignature> entries) {
public static final Codec<LastSeenMessages> CODEC = MessageSignature.CODEC.listOf().xmap(LastSeenMessages::new, LastSeenMessages::entries);
public static final LastSeenMessages EMPTY = new LastSeenMessages(List.of());
public static final int LAST_SEEN_MESSAGES_MAX_LENGTH = 20;
public void updateSignature(SignatureUpdater.Output output) throws SignatureException {
output.update(Ints.toByteArray(this.entries.size()));
for (MessageSignature entry : this.entries) {
output.update(entry.bytes());
}
}
public LastSeenMessages.Packed pack(MessageSignatureCache cache) {
return new LastSeenMessages.Packed(this.entries.stream().map(entry -> entry.pack(cache)).toList());
}
public byte computeChecksum() {
int checksum = 1;
for (MessageSignature entry : this.entries) {
checksum = 31 * checksum + entry.checksum();
}
byte checksumByte = (byte)checksum;
return checksumByte == 0 ? 1 : checksumByte;
}
public record Packed(List<MessageSignature.Packed> entries) {
public static final LastSeenMessages.Packed EMPTY = new LastSeenMessages.Packed(List.of());
public Packed(FriendlyByteBuf input) {
this(input.readCollection(FriendlyByteBuf.<List<MessageSignature.Packed>>limitValue(ArrayList::new, 20), MessageSignature.Packed::read));
}
public void write(FriendlyByteBuf output) {
output.writeCollection(this.entries, MessageSignature.Packed::write);
}
public Optional<LastSeenMessages> unpack(MessageSignatureCache cache) {
List<MessageSignature> unpacked = new ArrayList<>(this.entries.size());
for (MessageSignature.Packed packed : this.entries) {
Optional<MessageSignature> entry = packed.unpack(cache);
if (entry.isEmpty()) {
return Optional.empty();
}
unpacked.add(entry.get());
}
return Optional.of(new LastSeenMessages(unpacked));
}
}
public record Update(int offset, BitSet acknowledged, byte checksum) {
public static final byte IGNORE_CHECKSUM = 0;
public Update(FriendlyByteBuf input) {
this(input.readVarInt(), input.readFixedBitSet(20), input.readByte());
}
public void write(FriendlyByteBuf output) {
output.writeVarInt(this.offset);
output.writeFixedBitSet(this.acknowledged, 20);
output.writeByte(this.checksum);
}
public boolean verifyChecksum(LastSeenMessages lastSeen) {
return this.checksum == 0 || this.checksum == lastSeen.computeChecksum();
}
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置: