CustomPacketPayload.java
net.minecraft.network.protocol.common.custom.CustomPacketPayload
信息
- 全限定名:net.minecraft.network.protocol.common.custom.CustomPacketPayload
- 类型:public interface
- 包:net.minecraft.network.protocol.common.custom
- 源码路径:src/main/java/net/minecraft/network/protocol/common/custom/CustomPacketPayload.java
- 起始行号:L13
- 职责:
TODO
字段/常量
- 无
内部类/嵌套类型
-
net.minecraft.network.protocol.common.custom.CustomPacketPayload.FallbackProvider- 类型:
interface - 修饰符:
public - 源码定位:
L52 - 说明:
TODO
- 类型:
-
net.minecraft.network.protocol.common.custom.CustomPacketPayload.Type- 类型:
record - 修饰符:
public - 源码定位:
L56 - 说明:
TODO
- 类型:
-
net.minecraft.network.protocol.common.custom.CustomPacketPayload.TypeAndCodec- 类型:
record - 修饰符:
public - 源码定位:
L59 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
CustomPacketPayload.Type<?extends CustomPacketPayload> type() @ L14
- 方法名:type
- 源码定位:L14
- 返回类型:CustomPacketPayload.Type<?extends CustomPacketPayload>
- 修饰符:package-private
参数:
- 无
说明:
TODO
static <B extends ByteBuf,T extends CustomPacketPayload> StreamCodec<B,T> codec(StreamMemberEncoder<B,T> writer, StreamDecoder<B,T> reader) @ L16
- 方法名:codec
- 源码定位:L16
- 返回类型:<B extends ByteBuf,T extends CustomPacketPayload> StreamCodec<B,T>
- 修饰符:static
参数:
- writer: StreamMemberEncoder<B,T>
- reader: StreamDecoder<B,T>
说明:
TODO
static <T extends CustomPacketPayload> CustomPacketPayload.Type<T> createType(String id) @ L20
- 方法名:createType
- 源码定位:L20
- 返回类型:
CustomPacketPayload.Type - 修饰符:static
参数:
- id: String
说明:
TODO
static <B extends FriendlyByteBuf> StreamCodec<B,CustomPacketPayload> codec(CustomPacketPayload.FallbackProvider<B> fallback, List<CustomPacketPayload.TypeAndCodec<?super B,?>> types) @ L24
- 方法名:codec
- 源码定位:L24
- 返回类型: StreamCodec<B,CustomPacketPayload>
- 修饰符:static
参数:
- fallback: CustomPacketPayload.FallbackProvider
- types: List<CustomPacketPayload.TypeAndCodec>
说明:
TODO
代码
public interface CustomPacketPayload {
CustomPacketPayload.Type<? extends CustomPacketPayload> type();
static <B extends ByteBuf, T extends CustomPacketPayload> StreamCodec<B, T> codec(StreamMemberEncoder<B, T> writer, StreamDecoder<B, T> reader) {
return StreamCodec.ofMember(writer, reader);
}
static <T extends CustomPacketPayload> CustomPacketPayload.Type<T> createType(String id) {
return new CustomPacketPayload.Type<>(Identifier.withDefaultNamespace(id));
}
static <B extends FriendlyByteBuf> StreamCodec<B, CustomPacketPayload> codec(
CustomPacketPayload.FallbackProvider<B> fallback, List<CustomPacketPayload.TypeAndCodec<? super B, ?>> types
) {
final Map<Identifier, StreamCodec<? super B, ? extends CustomPacketPayload>> idToType = types.stream()
.collect(Collectors.toUnmodifiableMap(t -> t.type().id(), CustomPacketPayload.TypeAndCodec::codec));
return new StreamCodec<B, CustomPacketPayload>() {
private StreamCodec<? super B, ? extends CustomPacketPayload> findCodec(Identifier typeId) {
StreamCodec<? super B, ? extends CustomPacketPayload> codec = idToType.get(typeId);
return codec != null ? codec : fallback.create(typeId);
}
private <T extends CustomPacketPayload> void writeCap(B output, CustomPacketPayload.Type<T> type, CustomPacketPayload payload) {
output.writeIdentifier(type.id());
StreamCodec<B, T> codec = (StreamCodec<B, T>)this.findCodec(type.id);
codec.encode(output, (T)payload);
}
public void encode(B output, CustomPacketPayload value) {
this.writeCap(output, value.type(), value);
}
public CustomPacketPayload decode(B input) {
Identifier identifier = input.readIdentifier();
return (CustomPacketPayload)this.findCodec(identifier).decode(input);
}
};
}
public interface FallbackProvider<B extends FriendlyByteBuf> {
StreamCodec<B, ? extends CustomPacketPayload> create(Identifier typeId);
}
public record Type<T extends CustomPacketPayload>(Identifier id) {
}
public record TypeAndCodec<B extends FriendlyByteBuf, T extends CustomPacketPayload>(CustomPacketPayload.Type<T> type, StreamCodec<B, T> codec) {
}
}引用的其他类
-
- 引用位置:
返回值
- 引用位置:
-
- 引用位置:
方法调用/返回值 - 关联成员:
StreamCodec.ofMember()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Identifier.withDefaultNamespace()
- 引用位置: