package codechicken.lib.packet; import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.Minecraft; import net.minecraft.client.network.play.IClientPlayNetHandler; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import static codechicken.lib.packet.ICustomPacketHandler.IClientPacketHandler; /** * Created by covers1624 on 21/5/20. */ public class SimpleClientPacketHandler implements IClientPacketHandler { private static final Logger logger = LogManager.getLogger(); private static final Int2ObjectMap<IClientPacketHandler> handlers = new Int2ObjectArrayMap<>(); public void addHandler(int id, IClientPacketHandler handler) { if (handlers.containsKey(id)) { throw new IllegalArgumentException("Handler already registered for ID: " + id); } handlers.put(id, handler); } @Override public void handlePacket(PacketCustom packet, Minecraft mc, IClientPlayNetHandler handler) { IClientPacketHandler h = handlers.get(packet.getType()); if (h != null) { h.handlePacket(packet, mc, handler); } else { logger.warn("Received unknown packet on channel '{}' with descriptor '{}'.", packet.getChannel(), packet.getType()); } } }