package net.minecraft.network.protocol; import io.netty.buffer.ByteBuf; import net.minecraft.network.PacketListener; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.codec.StreamDecoder; import net.minecraft.network.codec.StreamMemberEncoder; public interface Packet { PacketType> type(); /** * Passes this Packet on to the PacketListener for processing. */ void handle(T handler); /** * Whether decoding errors will be ignored for this packet. */ default boolean isSkippable() { return false; } default boolean isTerminal() { return false; } static > StreamCodec codec(StreamMemberEncoder encoder, StreamDecoder decoder) { return StreamCodec.ofMember(encoder, decoder); } }