Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.nock.test.Utils.KillauraDetection;
- import java.lang.reflect.Field;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.UUID;
- import org.bukkit.Bukkit;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
- import org.bukkit.craftbukkit.v1_8_R3.util.CraftChatMessage;
- import org.bukkit.entity.Player;
- import com.mojang.authlib.GameProfile;
- import com.mojang.authlib.properties.Property;
- import me.nock.test.Main;
- import net.minecraft.server.v1_8_R3.BlockPosition;
- import net.minecraft.server.v1_8_R3.DataWatcher;
- import net.minecraft.server.v1_8_R3.ItemStack;
- import net.minecraft.server.v1_8_R3.MathHelper;
- import net.minecraft.server.v1_8_R3.Packet;
- import net.minecraft.server.v1_8_R3.PacketPlayOutAnimation;
- import net.minecraft.server.v1_8_R3.PacketPlayOutBed;
- import net.minecraft.server.v1_8_R3.PacketPlayOutEntity.PacketPlayOutEntityLook;
- import net.minecraft.server.v1_8_R3.PacketPlayOutEntityDestroy;
- import net.minecraft.server.v1_8_R3.PacketPlayOutEntityEquipment;
- import net.minecraft.server.v1_8_R3.PacketPlayOutEntityHeadRotation;
- import net.minecraft.server.v1_8_R3.PacketPlayOutEntityStatus;
- import net.minecraft.server.v1_8_R3.PacketPlayOutEntityTeleport;
- import net.minecraft.server.v1_8_R3.PacketPlayOutNamedEntitySpawn;
- import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo;
- import net.minecraft.server.v1_8_R3.WorldSettings.EnumGamemode;
- @SuppressWarnings("all")
- public class NPC {
- private ArrayList<Player> players = new ArrayList<>();
- private int entityID;
- private Location location;
- public GameProfile gameprofile;
- public NPC(Player p, String name, Location location) {
- this.players.add(p);
- entityID = (int) Math.ceil(Math.random() * 1000) + 2000;
- gameprofile = new GameProfile(UUID.randomUUID(), name);
- changeSkin(gameprofile);
- this.location = location.clone();
- }
- public NPC(String name, Location location) {
- entityID = (int) Math.ceil(Math.random() * 1000) + 2000;
- gameprofile = new GameProfile(UUID.randomUUID(), name);
- changeSkin(gameprofile);
- this.location = location.clone();
- for (Player ps : Bukkit.getOnlinePlayers()) {
- players.add(ps);
- }
- }
- public void changeSkin(GameProfile profile) {
- String signature = "jrr3LzKNEzpfZAc+jRTVAq2Tm93YmOQoRUyd7plVPNyq8BoL/W+5i2ngwOEsQAdLnS2H+OUuhevYbiohxqcU97BeZCOSnUwb1xQio0jHxaca7c3Eq9uv2SnuLp8YP1pLyvprXaYI/OD6vW4b/1sCf+gKD3xIrH5CgxXxTHT4rv+vk7Ggjp2BljyrmkE2C7W1c9gBmB1pH9iw45rbfpB1t/Cw0YGCzOCIwxS0EGx/6M3hKjmDF9SzPnQCt/eekHwuoo6r2FebK51bl5WWgMWEF5PGIrJbQOMimuliBLnORvRr6RX1t6zxteFYccAizQgcvcZXhGzNCdtc3Bv5+95OyrnFyqvrrTHsKpKPGtWV3u8+WKo7b1Rlg3EAF7HNK56A6CWAG0jr9p2geT/Q4fRlPAkmvlrC8GU1OF2erIJBbcf1ChF0qO/0mqCHPRf2xhvLt4f87mqvtISMjhrZyACjc9Dku+lpMNZamK0a6BBiN23XKwFbqkxfmCrG78mvTl1GeX/llipc9DsQi2EH6W54o+Rs7lA7jaCjwgcWEhpUsKk4b4HuiUfUqfy2tZGAI7XfagcwT/86uAi3YrTlMWWpvmtuWTFwj3NDifHNkqNTnpLx1Q1IyI9JeFRdhhcZS8775uXSiVS/sL62B6zhdCNSzzkRlHfXvyYsrffgTqx25K8=";
- String texture = "eyJ0aW1lc3RhbXAiOjE1MDA4NDI4NzUyNjIsInByb2ZpbGVJZCI6IjYwN2Y1Yzc2MGQ0YzQ1MzZiNTA4N2NlMTM1NjM4NWM3IiwicHJvZmlsZU5hbWUiOiJDaG9jb2xhdGUiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJtZXRhZGF0YSI6eyJtb2RlbCI6InNsaW0ifSwidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9hY2RjYWZjYjk3MzlkMmJhYjQyNDFjZGRkZjE0YWQyYzZjMjRjNDFmOTg2Y2NiNzQ1ZjdiYzhlZjkyODgyOGExIn19fQ==";
- profile.getProperties().put("textures", new Property("textures", texture, signature));
- }
- public void animation(int animation) {
- PacketPlayOutAnimation packet = new PacketPlayOutAnimation();
- setValue(packet, "a", entityID);
- setValue(packet, "b", (byte) animation);
- for (Player ps : players) {
- sendPacket(packet, ps);
- }
- }
- public void status(int status) {
- PacketPlayOutEntityStatus packet = new PacketPlayOutEntityStatus();
- setValue(packet, "a", entityID);
- setValue(packet, "b", (byte) status);
- sendPacket(packet);
- }
- public void equip(int slot, ItemStack itemstack) {
- PacketPlayOutEntityEquipment packet = new PacketPlayOutEntityEquipment();
- setValue(packet, "a", entityID);
- setValue(packet, "b", slot);
- setValue(packet, "c", itemstack);
- sendPacket(packet);
- }
- public void sleep(boolean state) {
- if (state) {
- Location bedLocation = new Location(location.getWorld(), 1, 1, 1);
- PacketPlayOutBed packet = new PacketPlayOutBed();
- setValue(packet, "a", entityID);
- setValue(packet, "b", new BlockPosition(bedLocation.getX(), bedLocation.getY(), bedLocation.getZ()));
- for (Player pl : Bukkit.getOnlinePlayers()) {
- pl.sendBlockChange(bedLocation, Material.BED_BLOCK, (byte) 0);
- }
- for (Player ps : players) {
- sendPacket(packet, ps);
- }
- teleport(location.clone().add(0, 0.3, 0));
- } else {
- animation(2);
- teleport(location.clone().subtract(0, 0.3, 0));
- }
- }
- public void spawn() {
- PacketPlayOutNamedEntitySpawn packet = new PacketPlayOutNamedEntitySpawn();
- setValue(packet, "a", entityID);
- setValue(packet, "b", gameprofile.getId());
- setValue(packet, "c", getFixLocation(location.getX()));
- setValue(packet, "d", getFixLocation(location.getY()));
- setValue(packet, "e", getFixLocation(location.getZ()));
- setValue(packet, "f", getFixRotation(location.getYaw()));
- setValue(packet, "g", getFixRotation(location.getPitch()));
- setValue(packet, "h", 0);
- DataWatcher w = new DataWatcher(null);
- w.a(6, (float) 20);
- w.a(10, (byte) 127);
- setValue(packet, "i", w);
- addToTablist();
- for (Player ps : players) {
- sendPacket(packet, ps);
- }
- headRotation(location.getYaw(), location.getPitch());
- }
- public void teleport(Location location) {
- PacketPlayOutEntityTeleport packet = new PacketPlayOutEntityTeleport();
- setValue(packet, "a", entityID);
- setValue(packet, "b", getFixLocation(location.getX()));
- setValue(packet, "c", getFixLocation(location.getY()));
- setValue(packet, "d", getFixLocation(location.getZ()));
- setValue(packet, "e", getFixRotation(location.getYaw()));
- setValue(packet, "f", getFixRotation(location.getPitch()));
- for (Player ps : players) {
- sendPacket(packet, ps);
- }
- headRotation(location.getYaw(), location.getPitch());
- this.location = location.clone();
- }
- public void headRotation(float yaw, float pitch) {
- PacketPlayOutEntityLook packet = new PacketPlayOutEntityLook(entityID, getFixRotation(yaw),
- getFixRotation(pitch), true);
- PacketPlayOutEntityHeadRotation packetHead = new PacketPlayOutEntityHeadRotation();
- setValue(packetHead, "a", entityID);
- setValue(packetHead, "b", getFixRotation(yaw));
- sendPacket(packet);
- sendPacket(packetHead);
- }
- public void destroy() {
- PacketPlayOutEntityDestroy packet = new PacketPlayOutEntityDestroy(new int[] { entityID });
- rmvFromTablist();
- for (Player ps : players) {
- sendPacket(packet, ps);
- }
- }
- public void addToTablist() {
- PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo();
- PacketPlayOutPlayerInfo.PlayerInfoData data = packet.new PlayerInfoData(gameprofile, 1, EnumGamemode.NOT_SET,
- CraftChatMessage.fromString(gameprofile.getName())[0]);
- @SuppressWarnings("unchecked")
- List<PacketPlayOutPlayerInfo.PlayerInfoData> players = (List<PacketPlayOutPlayerInfo.PlayerInfoData>) getValue(
- packet, "b");
- players.add(data);
- setValue(packet, "a", PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER);
- setValue(packet, "b", players);
- for (Player ps : this.players) {
- sendPacket(packet, ps);
- }
- }
- public void rmvFromTablist() {
- PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo();
- PacketPlayOutPlayerInfo.PlayerInfoData data = packet.new PlayerInfoData(gameprofile, 1, EnumGamemode.NOT_SET,
- CraftChatMessage.fromString(gameprofile.getName())[0]);
- @SuppressWarnings("unchecked")
- List<PacketPlayOutPlayerInfo.PlayerInfoData> players = (List<PacketPlayOutPlayerInfo.PlayerInfoData>) getValue(
- packet, "b");
- players.add(data);
- setValue(packet, "a", PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER);
- setValue(packet, "b", players);
- Bukkit.getScheduler().runTaskLater(Main.main, new Runnable() {
- @Override
- public void run() {
- sendPacket(packet);
- }
- }, 5);
- }
- public int getFixLocation(double pos) {
- return (int) MathHelper.floor(pos * 32.0D);
- }
- public int getEntityID() {
- return entityID;
- }
- public byte getFixRotation(float yawpitch) {
- return (byte) ((int) (yawpitch * 256.0F / 360.0F));
- }
- 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;
- }
- public void sendPacket(Packet<?> packet, Player player) {
- ((CraftPlayer) player).getHandle().playerConnection.sendPacket(packet);
- }
- public void sendPacket(Packet<?> packet) {
- for (Player player : Bukkit.getOnlinePlayers()) {
- sendPacket(packet, player);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement