mirror of https://github.com/Minestom/Minestom.git
31 lines
1.1 KiB
Java
31 lines
1.1 KiB
Java
package fr.themode.minestom.net.packet.client.handler;
|
|
|
|
import com.esotericsoftware.reflectasm.ConstructorAccess;
|
|
import fr.themode.minestom.net.packet.client.ClientPacket;
|
|
|
|
public class ClientPacketsHandler {
|
|
|
|
// Max packet id
|
|
private static final int SIZE = 0x2E;
|
|
|
|
private ConstructorAccess[] constructorAccesses = new ConstructorAccess[SIZE];
|
|
|
|
public void register(int id, Class<? extends ClientPacket> packet) {
|
|
constructorAccesses[id] = ConstructorAccess.get(packet);
|
|
}
|
|
|
|
public ClientPacket getPacketInstance(int id) {
|
|
//System.out.println("RECEIVED PACKET 0x" + Integer.toHexString(id));
|
|
if (id > SIZE)
|
|
throw new IllegalStateException("Packet ID 0x" + Integer.toHexString(id) + " has been tried to be parsed, debug needed");
|
|
|
|
ConstructorAccess<? extends ClientPacket> constructorAccess = constructorAccesses[id];
|
|
if (constructorAccess == null)
|
|
throw new IllegalStateException("Packet id 0x" + Integer.toHexString(id) + " isn't registered!");
|
|
|
|
ClientPacket packet = constructorAccess.newInstance();
|
|
return packet;
|
|
}
|
|
|
|
}
|