blob: 0a9f7c046bcc7d0d8c6bc439a690a3b6af9c02c9 [file] [log] [blame] [raw]
package protocolsupport.protocol.utils.registry;
import java.util.Arrays;
import java.util.EnumMap;
import java.util.NoSuchElementException;
import protocolsupport.api.utils.NetworkState;
public class PacketIdTransformerRegistry {
private final EnumMap<NetworkState, int[]> registry = new EnumMap<>(NetworkState.class);
{
for (NetworkState state : NetworkState.values()) {
int[] newIds = new int[256];
Arrays.fill(newIds, -1);
registry.put(state, newIds);
}
}
public void register(NetworkState protocol, int packetId, int newPacketId) {
registry.get(protocol)[packetId] = newPacketId;
}
public int getNewPacketId(NetworkState protocol, int packetId) {
int[] newIds = registry.get(protocol);
if (newIds == null) {
return -1;
}
int id = newIds[packetId];
if (id == -1) {
throw new NoSuchElementException("No packet id found for state " + protocol + " and packet id " + packetId);
}
return id;
}
}