package com.captainbern.minecraft.net.protocol; import com.captainbern.minecraft.net.codec.Codec; import com.captainbern.minecraft.net.codec.CodecRegistrationEntry; import com.captainbern.minecraft.net.handler.Handler; import com.captainbern.minecraft.net.packet.Packet; import io.netty.buffer.ByteBuf; import java.util.List; public interface Protocol { public String getId(); public <P extends Packet> Handler<?, P> getHandlerFor(Class<P> packetClass); public void registerHandlers(String packageName); public <P extends Packet, H extends Handler<?, P>> void registerHandler(Class<H> handlerClass); public <P extends Packet> CodecRegistrationEntry getCodecRegistration(Side side, Class<P> packetClass); public Codec<?> readHeader(Side side, ByteBuf byteBuf); }