package fr.hugo4715.crackedskywars.util;
import org.bukkit.entity.Player;
import fr.hugo4715.crackedskywars.util.Reflection.FieldAccessor;
import fr.hugo4715.crackedskywars.util.Reflection.MethodInvoker;
public class PacketUtil {
private static PacketUtil instance;
public static PacketUtil getInstance() {
if (null == instance) {
instance = new PacketUtil();
}
return instance;
}
private MethodInvoker methodGetPlayerHandle;
private MethodInvoker methodSendPacket;
private FieldAccessor<?> fieldPlayerConnection;
private PacketUtil() {
methodGetPlayerHandle = Reflection.getMethod("{obc}.entity.CraftPlayer", "getHandle");
methodSendPacket = Reflection.getMethod("{nms}.PlayerConnection","sendPacket", Object.class);
fieldPlayerConnection = Reflection.getField("{nms}.EntityPlayer", "playerConnection", Object.class);
}
public void sendPacket(Player p, Object packet){
Object nmsPlayer = methodGetPlayerHandle.invoke(p);
Object connection = fieldPlayerConnection.get(nmsPlayer);
methodSendPacket.invoke(connection, packet);
}
}