Advertisement
lNockl

Untitled

Sep 22nd, 2017
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.13 KB | None | 0 0
  1. package me.nock.test.Utils.KillauraDetection;
  2.  
  3. import java.lang.reflect.Field;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import java.util.UUID;
  7.  
  8. import org.bukkit.Bukkit;
  9. import org.bukkit.Location;
  10. import org.bukkit.Material;
  11. import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
  12. import org.bukkit.craftbukkit.v1_8_R3.util.CraftChatMessage;
  13. import org.bukkit.entity.Player;
  14.  
  15. import com.mojang.authlib.GameProfile;
  16. import com.mojang.authlib.properties.Property;
  17.  
  18. import me.nock.test.Main;
  19. import net.minecraft.server.v1_8_R3.BlockPosition;
  20. import net.minecraft.server.v1_8_R3.DataWatcher;
  21. import net.minecraft.server.v1_8_R3.ItemStack;
  22. import net.minecraft.server.v1_8_R3.MathHelper;
  23. import net.minecraft.server.v1_8_R3.Packet;
  24. import net.minecraft.server.v1_8_R3.PacketPlayOutAnimation;
  25. import net.minecraft.server.v1_8_R3.PacketPlayOutBed;
  26. import net.minecraft.server.v1_8_R3.PacketPlayOutEntity.PacketPlayOutEntityLook;
  27. import net.minecraft.server.v1_8_R3.PacketPlayOutEntityDestroy;
  28. import net.minecraft.server.v1_8_R3.PacketPlayOutEntityEquipment;
  29. import net.minecraft.server.v1_8_R3.PacketPlayOutEntityHeadRotation;
  30. import net.minecraft.server.v1_8_R3.PacketPlayOutEntityStatus;
  31. import net.minecraft.server.v1_8_R3.PacketPlayOutEntityTeleport;
  32. import net.minecraft.server.v1_8_R3.PacketPlayOutNamedEntitySpawn;
  33. import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo;
  34. import net.minecraft.server.v1_8_R3.WorldSettings.EnumGamemode;
  35.  
  36. @SuppressWarnings("all")
  37. public class NPC {
  38.  
  39.     private ArrayList<Player> players = new ArrayList<>();
  40.     private int entityID;
  41.     private Location location;
  42.     public GameProfile gameprofile;
  43.  
  44.     public NPC(Player p, String name, Location location) {
  45.         this.players.add(p);
  46.         entityID = (int) Math.ceil(Math.random() * 1000) + 2000;
  47.         gameprofile = new GameProfile(UUID.randomUUID(), name);
  48.         changeSkin(gameprofile);
  49.         this.location = location.clone();
  50.     }
  51.  
  52.     public NPC(String name, Location location) {
  53.         entityID = (int) Math.ceil(Math.random() * 1000) + 2000;
  54.         gameprofile = new GameProfile(UUID.randomUUID(), name);
  55.         changeSkin(gameprofile);
  56.         this.location = location.clone();
  57.         for (Player ps : Bukkit.getOnlinePlayers()) {
  58.             players.add(ps);
  59.         }
  60.     }
  61.  
  62.     public void changeSkin(GameProfile profile) {
  63.         String signature = "jrr3LzKNEzpfZAc+jRTVAq2Tm93YmOQoRUyd7plVPNyq8BoL/W+5i2ngwOEsQAdLnS2H+OUuhevYbiohxqcU97BeZCOSnUwb1xQio0jHxaca7c3Eq9uv2SnuLp8YP1pLyvprXaYI/OD6vW4b/1sCf+gKD3xIrH5CgxXxTHT4rv+vk7Ggjp2BljyrmkE2C7W1c9gBmB1pH9iw45rbfpB1t/Cw0YGCzOCIwxS0EGx/6M3hKjmDF9SzPnQCt/eekHwuoo6r2FebK51bl5WWgMWEF5PGIrJbQOMimuliBLnORvRr6RX1t6zxteFYccAizQgcvcZXhGzNCdtc3Bv5+95OyrnFyqvrrTHsKpKPGtWV3u8+WKo7b1Rlg3EAF7HNK56A6CWAG0jr9p2geT/Q4fRlPAkmvlrC8GU1OF2erIJBbcf1ChF0qO/0mqCHPRf2xhvLt4f87mqvtISMjhrZyACjc9Dku+lpMNZamK0a6BBiN23XKwFbqkxfmCrG78mvTl1GeX/llipc9DsQi2EH6W54o+Rs7lA7jaCjwgcWEhpUsKk4b4HuiUfUqfy2tZGAI7XfagcwT/86uAi3YrTlMWWpvmtuWTFwj3NDifHNkqNTnpLx1Q1IyI9JeFRdhhcZS8775uXSiVS/sL62B6zhdCNSzzkRlHfXvyYsrffgTqx25K8=";
  64.         String texture = "eyJ0aW1lc3RhbXAiOjE1MDA4NDI4NzUyNjIsInByb2ZpbGVJZCI6IjYwN2Y1Yzc2MGQ0YzQ1MzZiNTA4N2NlMTM1NjM4NWM3IiwicHJvZmlsZU5hbWUiOiJDaG9jb2xhdGUiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJtZXRhZGF0YSI6eyJtb2RlbCI6InNsaW0ifSwidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9hY2RjYWZjYjk3MzlkMmJhYjQyNDFjZGRkZjE0YWQyYzZjMjRjNDFmOTg2Y2NiNzQ1ZjdiYzhlZjkyODgyOGExIn19fQ==";
  65.         profile.getProperties().put("textures", new Property("textures", texture, signature));
  66.     }
  67.  
  68.     public void animation(int animation) {
  69.         PacketPlayOutAnimation packet = new PacketPlayOutAnimation();
  70.         setValue(packet, "a", entityID);
  71.         setValue(packet, "b", (byte) animation);
  72.         for (Player ps : players) {
  73.             sendPacket(packet, ps);
  74.         }
  75.     }
  76.  
  77.     public void status(int status) {
  78.         PacketPlayOutEntityStatus packet = new PacketPlayOutEntityStatus();
  79.         setValue(packet, "a", entityID);
  80.         setValue(packet, "b", (byte) status);
  81.         sendPacket(packet);
  82.     }
  83.  
  84.     public void equip(int slot, ItemStack itemstack) {
  85.         PacketPlayOutEntityEquipment packet = new PacketPlayOutEntityEquipment();
  86.         setValue(packet, "a", entityID);
  87.         setValue(packet, "b", slot);
  88.         setValue(packet, "c", itemstack);
  89.         sendPacket(packet);
  90.     }
  91.  
  92.     public void sleep(boolean state) {
  93.         if (state) {
  94.             Location bedLocation = new Location(location.getWorld(), 1, 1, 1);
  95.             PacketPlayOutBed packet = new PacketPlayOutBed();
  96.             setValue(packet, "a", entityID);
  97.             setValue(packet, "b", new BlockPosition(bedLocation.getX(), bedLocation.getY(), bedLocation.getZ()));
  98.  
  99.             for (Player pl : Bukkit.getOnlinePlayers()) {
  100.                 pl.sendBlockChange(bedLocation, Material.BED_BLOCK, (byte) 0);
  101.             }
  102.  
  103.             for (Player ps : players) {
  104.                 sendPacket(packet, ps);
  105.             }
  106.             teleport(location.clone().add(0, 0.3, 0));
  107.         } else {
  108.             animation(2);
  109.             teleport(location.clone().subtract(0, 0.3, 0));
  110.         }
  111.     }
  112.  
  113.     public void spawn() {
  114.         PacketPlayOutNamedEntitySpawn packet = new PacketPlayOutNamedEntitySpawn();
  115.         setValue(packet, "a", entityID);
  116.         setValue(packet, "b", gameprofile.getId());
  117.         setValue(packet, "c", getFixLocation(location.getX()));
  118.         setValue(packet, "d", getFixLocation(location.getY()));
  119.         setValue(packet, "e", getFixLocation(location.getZ()));
  120.         setValue(packet, "f", getFixRotation(location.getYaw()));
  121.         setValue(packet, "g", getFixRotation(location.getPitch()));
  122.         setValue(packet, "h", 0);
  123.         DataWatcher w = new DataWatcher(null);
  124.         w.a(6, (float) 20);
  125.         w.a(10, (byte) 127);
  126.         setValue(packet, "i", w);
  127.         addToTablist();
  128.         for (Player ps : players) {
  129.             sendPacket(packet, ps);
  130.         }
  131.         headRotation(location.getYaw(), location.getPitch());
  132.     }
  133.  
  134.     public void teleport(Location location) {
  135.         PacketPlayOutEntityTeleport packet = new PacketPlayOutEntityTeleport();
  136.         setValue(packet, "a", entityID);
  137.         setValue(packet, "b", getFixLocation(location.getX()));
  138.         setValue(packet, "c", getFixLocation(location.getY()));
  139.         setValue(packet, "d", getFixLocation(location.getZ()));
  140.         setValue(packet, "e", getFixRotation(location.getYaw()));
  141.         setValue(packet, "f", getFixRotation(location.getPitch()));
  142.  
  143.         for (Player ps : players) {
  144.             sendPacket(packet, ps);
  145.         }
  146.         headRotation(location.getYaw(), location.getPitch());
  147.         this.location = location.clone();
  148.     }
  149.  
  150.     public void headRotation(float yaw, float pitch) {
  151.         PacketPlayOutEntityLook packet = new PacketPlayOutEntityLook(entityID, getFixRotation(yaw),
  152.                 getFixRotation(pitch), true);
  153.         PacketPlayOutEntityHeadRotation packetHead = new PacketPlayOutEntityHeadRotation();
  154.         setValue(packetHead, "a", entityID);
  155.         setValue(packetHead, "b", getFixRotation(yaw));
  156.  
  157.         sendPacket(packet);
  158.         sendPacket(packetHead);
  159.     }
  160.  
  161.     public void destroy() {
  162.         PacketPlayOutEntityDestroy packet = new PacketPlayOutEntityDestroy(new int[] { entityID });
  163.         rmvFromTablist();
  164.         for (Player ps : players) {
  165.             sendPacket(packet, ps);
  166.         }
  167.     }
  168.  
  169.     public void addToTablist() {
  170.         PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo();
  171.         PacketPlayOutPlayerInfo.PlayerInfoData data = packet.new PlayerInfoData(gameprofile, 1, EnumGamemode.NOT_SET,
  172.                 CraftChatMessage.fromString(gameprofile.getName())[0]);
  173.         @SuppressWarnings("unchecked")
  174.         List<PacketPlayOutPlayerInfo.PlayerInfoData> players = (List<PacketPlayOutPlayerInfo.PlayerInfoData>) getValue(
  175.                 packet, "b");
  176.         players.add(data);
  177.  
  178.         setValue(packet, "a", PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER);
  179.         setValue(packet, "b", players);
  180.  
  181.         for (Player ps : this.players) {
  182.             sendPacket(packet, ps);
  183.         }
  184.     }
  185.  
  186.     public void rmvFromTablist() {
  187.         PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo();
  188.         PacketPlayOutPlayerInfo.PlayerInfoData data = packet.new PlayerInfoData(gameprofile, 1, EnumGamemode.NOT_SET,
  189.                 CraftChatMessage.fromString(gameprofile.getName())[0]);
  190.         @SuppressWarnings("unchecked")
  191.         List<PacketPlayOutPlayerInfo.PlayerInfoData> players = (List<PacketPlayOutPlayerInfo.PlayerInfoData>) getValue(
  192.                 packet, "b");
  193.         players.add(data);
  194.  
  195.         setValue(packet, "a", PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER);
  196.         setValue(packet, "b", players);
  197.  
  198.         Bukkit.getScheduler().runTaskLater(Main.main, new Runnable() {
  199.  
  200.             @Override
  201.             public void run() {
  202.                 sendPacket(packet);
  203.  
  204.             }
  205.         }, 5);
  206.  
  207.     }
  208.  
  209.     public int getFixLocation(double pos) {
  210.         return (int) MathHelper.floor(pos * 32.0D);
  211.     }
  212.  
  213.     public int getEntityID() {
  214.         return entityID;
  215.     }
  216.  
  217.     public byte getFixRotation(float yawpitch) {
  218.         return (byte) ((int) (yawpitch * 256.0F / 360.0F));
  219.     }
  220.    
  221.     public void setValue(Object obj, String name, Object value) {
  222.         try {
  223.             Field field = obj.getClass().getDeclaredField(name);
  224.             field.setAccessible(true);
  225.             field.set(obj, value);
  226.         } catch (Exception e) {
  227.         }
  228.     }
  229.  
  230.     public Object getValue(Object obj, String name) {
  231.         try {
  232.             Field field = obj.getClass().getDeclaredField(name);
  233.             field.setAccessible(true);
  234.             return field.get(obj);
  235.         } catch (Exception e) {
  236.         }
  237.         return null;
  238.     }
  239.  
  240.     public void sendPacket(Packet<?> packet, Player player) {
  241.         ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
  242.     }
  243.  
  244.     public void sendPacket(Packet<?> packet) {
  245.         for (Player player : Bukkit.getOnlinePlayers()) {
  246.             sendPacket(packet, player);
  247.         }
  248.     }
  249.  
  250. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement