package net.minecraft.network.protocol; import io.netty.buffer.ByteBuf; import net.minecraft.network.PacketListener; import net.minecraft.network.codec.IdDispatchCodec; import net.minecraft.network.codec.StreamCodec; public class ProtocolCodecBuilder { private final IdDispatchCodec.Builder, PacketType>> dispatchBuilder = IdDispatchCodec.builder(Packet::type); private final PacketFlow flow; public ProtocolCodecBuilder(PacketFlow flow) { this.flow = flow; } public > ProtocolCodecBuilder add(PacketType packetType, StreamCodec codec) { if (packetType.flow() != this.flow) { throw new IllegalArgumentException("Invalid packet flow for packet " + packetType + ", expected " + this.flow.name()); } else { this.dispatchBuilder.add(packetType, codec); return this; } } public StreamCodec> build() { return this.dispatchBuilder.build(); } }