ClientboundResourcePackPushPacket.java

net.minecraft.network.protocol.common.ClientboundResourcePackPushPacket

信息

  • 全限定名:net.minecraft.network.protocol.common.ClientboundResourcePackPushPacket
  • 类型:public record
  • 包:net.minecraft.network.protocol.common
  • 源码路径:src/main/java/net/minecraft/network/protocol/common/ClientboundResourcePackPushPacket.java
  • 起始行号:L14
  • 实现:Packet
  • 职责:

    TODO

字段/常量

  • MAX_HASH_LENGTH

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

      TODO

  • STREAM_CODEC

    • 类型: StreamCodec<ByteBuf,ClientboundResourcePackPushPacket>
    • 修饰符: public static final
    • 源码定位: L17
    • 说明:

      TODO

内部类/嵌套类型

构造器

public ClientboundResourcePackPushPacket(UUID id, String url, String hash, boolean required, Optional<Component> prompt) @ L31

  • 构造器名:ClientboundResourcePackPushPacket
  • 源码定位:L31
  • 修饰符:public

参数:

  • id: UUID
  • url: String
  • hash: String
  • required: boolean
  • prompt: Optional

说明:

TODO

方法

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

public PacketType<ClientboundResourcePackPushPacket> type() @ L43

  • 方法名:type
  • 源码定位:L43
  • 返回类型:PacketType
  • 修饰符:public

参数:

说明:

TODO

public void handle(ClientCommonPacketListener listener) @ L48

  • 方法名:handle
  • 源码定位:L48
  • 返回类型:void
  • 修饰符:public

参数:

  • listener: ClientCommonPacketListener

说明:

TODO

代码

public record ClientboundResourcePackPushPacket(UUID id, String url, String hash, boolean required, Optional<Component> prompt)
    implements Packet<ClientCommonPacketListener> {
    public static final int MAX_HASH_LENGTH = 40;
    public static final StreamCodec<ByteBuf, ClientboundResourcePackPushPacket> STREAM_CODEC = StreamCodec.composite(
        UUIDUtil.STREAM_CODEC,
        ClientboundResourcePackPushPacket::id,
        ByteBufCodecs.STRING_UTF8,
        ClientboundResourcePackPushPacket::url,
        ByteBufCodecs.stringUtf8(40),
        ClientboundResourcePackPushPacket::hash,
        ByteBufCodecs.BOOL,
        ClientboundResourcePackPushPacket::required,
        ComponentSerialization.TRUSTED_CONTEXT_FREE_STREAM_CODEC.apply(ByteBufCodecs::optional),
        ClientboundResourcePackPushPacket::prompt,
        ClientboundResourcePackPushPacket::new
    );
 
    public ClientboundResourcePackPushPacket(UUID id, String url, String hash, boolean required, Optional<Component> prompt) {
        if (hash.length() > 40) {
            throw new IllegalArgumentException("Hash is too long (max 40, was " + hash.length() + ")");
        } else {
            this.id = id;
            this.url = url;
            this.hash = hash;
            this.required = required;
            this.prompt = prompt;
        }
    }
 
    @Override
    public PacketType<ClientboundResourcePackPushPacket> type() {
        return CommonPacketTypes.CLIENTBOUND_RESOURCE_PACK_PUSH;
    }
 
    public void handle(ClientCommonPacketListener listener) {
        listener.handleResourcePackPush(this);
    }
}

引用的其他类