Advertisement
Guest User

Untitled

a guest
Aug 19th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.16 KB | None | 0 0
  1. package fr.dorvak.ia.utils;
  2.  
  3. import java.lang.reflect.Field;
  4. import java.util.List;
  5.  
  6. import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
  7. import org.bukkit.entity.Player;
  8.  
  9. import fr.dorvak.ia.Main;
  10. import fr.dorvak.ia.twitch.TwitchInventory;
  11. import io.netty.channel.Channel;
  12. import io.netty.channel.ChannelHandlerContext;
  13. import io.netty.handler.codec.MessageToMessageDecoder;
  14. import net.minecraft.server.v1_8_R3.Packet;
  15.  
  16. public class PacketReader {
  17.    
  18.     Player player;
  19.     Channel channel;
  20.    
  21.     public PacketReader(Player player) {
  22.         this.player = player;
  23.     }
  24.    
  25.     public void inject() {
  26.         CraftPlayer cPlayer = (CraftPlayer)this.player;
  27.         channel = cPlayer.getHandle().playerConnection.networkManager.channel;
  28.        
  29.         channel.pipeline().addAfter("decoder", "PacketInjector", new MessageToMessageDecoder<Packet<?>>() {
  30.            
  31.             @Override
  32.             protected void decode(ChannelHandlerContext arg0, Packet<?> packet, List<Object> arg2) throws Exception {
  33.                 arg2.add(packet);
  34.                 readPacket(packet);
  35.             }
  36.         });
  37.     }
  38.    
  39.     public void unInject() {
  40.         if(channel.pipeline().get("PacketInjector") != null) {
  41.             channel.pipeline().remove("PacketInjector");
  42.         }
  43.     }
  44.    
  45.     public void readPacket(Packet<?> packet) {
  46.         if(packet.getClass().getSimpleName().equalsIgnoreCase("PacketPlayInUseEntity")) {
  47.             int id = (Integer)getValue(packet, "a");
  48.            
  49.             TwitchInventory twitchInventory = new TwitchInventory(player);
  50.            
  51.             if(Main.ncpTwitch.getEntityID() == id) {
  52.                 if(getValue(packet, "action").toString().equalsIgnoreCase("ATTACK")) {
  53.                     twitchInventory.open();
  54.                     System.out.println("attack");
  55.                 } else if(getValue(packet, "action").toString().equalsIgnoreCase("INTERACT_AT")) {
  56.                     twitchInventory.open();
  57.                 }
  58.             }
  59.         }
  60.     }
  61.    
  62.     public void setValue(Object obj, String name, Object value) {
  63.         try {
  64.             Field field = obj.getClass().getDeclaredField(name);
  65.             field.setAccessible(true);
  66.             field.set(obj, value);
  67.         } catch (Exception e) {}
  68.     }
  69.    
  70.     public Object getValue(Object obj, String name) {
  71.         try {
  72.             Field field = obj.getClass().getDeclaredField(name);
  73.             field.setAccessible(true);
  74.             return field.get(obj);
  75.         } catch (Exception e) {}
  76.         return null;
  77.     }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement