Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package fr.vinetos.packetlistener;
- import io.netty.channel.Channel;
- import org.bukkit.entity.Player;
- import java.lang.reflect.Field;
- /**
- * Created by VINETOS on 29/12/2015.
- */
- public class PacketInjector {
- private Field EntityPlayer_playerConnection;
- private Class<?> PlayerConnection;
- private Field PlayerConnection_networkManager;
- private Class<?> NetworkManager;
- private Field channel;
- private Field packetListener;//net.minecraft
- public PacketInjector() {
- try {
- EntityPlayer_playerConnection = Reflection.getField(Reflection.getClass("{nms}.EntityPlayer"), "playerConnection");
- PlayerConnection = Reflection.getClass("{nms}.PlayerConnection");
- PlayerConnection_networkManager = Reflection.getField(PlayerConnection, "networkManager");
- NetworkManager = Reflection.getClass("{nms}.NetworkManager");
- if(Reflection.getNmsVersion().equals("v1_8_R2")){
- channel = Reflection.getField(NetworkManager, "k");
- }else
- if(Reflection.getNmsVersion().equals("v1_8_R3")){
- channel = Reflection.getField(NetworkManager, "channel");
- }
- packetListener = Reflection.getField(NetworkManager, "m");//PacketListener
- } catch (Throwable t) {
- t.printStackTrace();
- }
- }
- public void addPlayer(Player p) {
- try {
- Channel ch = getChannel(getNetworkManager(Reflection.getNmsPlayer(p)));
- if(ch.pipeline().get("PacketInjector") == null) {
- PacketHandler h = new PacketHandler(p);
- ch.pipeline().addBefore("packet_handler", "PacketInjector", h);
- }
- } catch (Throwable t) {
- t.printStackTrace();
- }
- }
- public void removePlayer(Player p) {
- try {
- Channel ch = getChannel(getNetworkManager(Reflection.getNmsPlayer(p)));
- if(ch.pipeline().get("PacketInjector") != null) {
- ch.pipeline().remove("PacketInjector");
- }
- } catch (Throwable t) {
- t.printStackTrace();
- }
- }
- private Object getNetworkManager(Object ep) {
- return Reflection.getFieldValue(PlayerConnection_networkManager, Reflection.getFieldValue(EntityPlayer_playerConnection, ep));
- }
- private Channel getChannel(Object networkManager) {
- Channel ch = null;
- try {
- ch = Reflection.getFieldValue(channel, networkManager);
- } catch (Exception e) {
- ch = Reflection.getFieldValue(packetListener, networkManager);
- }
- return ch;
- }
- }
Add Comment
Please, Sign In to add comment