2019-07-11 22:39:28 +00:00
|
|
|
package org.geysermc.connector.network.translators;
|
|
|
|
|
|
|
|
import com.github.steveice10.packetlib.packet.Packet;
|
2019-07-13 19:00:51 +00:00
|
|
|
import org.geysermc.api.Geyser;
|
|
|
|
import org.geysermc.connector.network.session.GeyserSession;
|
2019-07-11 22:39:28 +00:00
|
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.Map;
|
2019-07-13 19:00:51 +00:00
|
|
|
import java.util.function.BiConsumer;
|
2019-07-11 22:39:28 +00:00
|
|
|
import java.util.function.Consumer;
|
|
|
|
|
|
|
|
public class Registry<T> {
|
2019-07-13 19:00:51 +00:00
|
|
|
private final Map<Class<? extends T>, BiConsumer<? extends T, GeyserSession>> MAP = new HashMap<>();
|
2019-07-11 22:39:28 +00:00
|
|
|
|
|
|
|
public static final Registry<Packet> JAVA = new Registry<>();
|
|
|
|
|
2019-07-13 19:00:51 +00:00
|
|
|
public static <T extends Packet> void add(Class<T> clazz, BiConsumer<T, GeyserSession> translator) {
|
2019-07-11 22:39:28 +00:00
|
|
|
JAVA.MAP.put(clazz, translator);
|
|
|
|
}
|
|
|
|
|
2019-07-13 19:00:51 +00:00
|
|
|
public <P extends T> void translate(Class<P> clazz, P p, GeyserSession s) {
|
2019-07-11 22:39:28 +00:00
|
|
|
try {
|
2019-07-13 19:00:51 +00:00
|
|
|
((BiConsumer<P, GeyserSession>) JAVA.MAP.get(clazz)).accept(p, s);
|
2019-07-11 22:39:28 +00:00
|
|
|
} catch (NullPointerException e) {
|
|
|
|
System.err.println("could not translate packet" + p.getClass().getSimpleName());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|