Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package fr.dorvak.ia.utils;
- import java.lang.reflect.Field;
- import java.util.List;
- import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
- import org.bukkit.entity.Player;
- import fr.dorvak.ia.Main;
- import fr.dorvak.ia.twitch.TwitchInventory;
- import io.netty.channel.Channel;
- import io.netty.channel.ChannelHandlerContext;
- import io.netty.handler.codec.MessageToMessageDecoder;
- import net.minecraft.server.v1_8_R3.Packet;
- public class PacketReader {
- Player player;
- Channel channel;
- public PacketReader(Player player) {
- this.player = player;
- }
- public void inject() {
- CraftPlayer cPlayer = (CraftPlayer)this.player;
- channel = cPlayer.getHandle().playerConnection.networkManager.channel;
- channel.pipeline().addAfter("decoder", "PacketInjector", new MessageToMessageDecoder<Packet<?>>() {
- @Override
- protected void decode(ChannelHandlerContext arg0, Packet<?> packet, List<Object> arg2) throws Exception {
- arg2.add(packet);
- readPacket(packet);
- }
- });
- }
- public void unInject() {
- if(channel.pipeline().get("PacketInjector") != null) {
- channel.pipeline().remove("PacketInjector");
- }
- }
- public void readPacket(Packet<?> packet) {
- if(packet.getClass().getSimpleName().equalsIgnoreCase("PacketPlayInUseEntity")) {
- int id = (Integer)getValue(packet, "a");
- TwitchInventory twitchInventory = new TwitchInventory(player);
- if(Main.ncpTwitch.getEntityID() == id) {
- if(getValue(packet, "action").toString().equalsIgnoreCase("ATTACK")) {
- twitchInventory.open();
- System.out.println("attack");
- } else if(getValue(packet, "action").toString().equalsIgnoreCase("INTERACT_AT")) {
- twitchInventory.open();
- }
- }
- }
- }
- public void setValue(Object obj, String name, Object value) {
- try {
- Field field = obj.getClass().getDeclaredField(name);
- field.setAccessible(true);
- field.set(obj, value);
- } catch (Exception e) {}
- }
- public Object getValue(Object obj, String name) {
- try {
- Field field = obj.getClass().getDeclaredField(name);
- field.setAccessible(true);
- return field.get(obj);
- } catch (Exception e) {}
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement