Advertisement
Guest User

NPC

a guest
Sep 21st, 2015
2,461
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.57 KB | None | 0 0
  1. package me.gervobis.netty;
  2.  
  3. import java.util.List;
  4. import java.util.UUID;
  5.  
  6. import net.minecraft.server.v1_8_R3.DataWatcher;
  7. import net.minecraft.server.v1_8_R3.MathHelper;
  8. import net.minecraft.server.v1_8_R3.PacketPlayOutEntity.PacketPlayOutEntityLook;
  9. import net.minecraft.server.v1_8_R3.PacketPlayOutEntityDestroy;
  10. import net.minecraft.server.v1_8_R3.PacketPlayOutEntityHeadRotation;
  11. import net.minecraft.server.v1_8_R3.PacketPlayOutEntityTeleport;
  12. import net.minecraft.server.v1_8_R3.PacketPlayOutNamedEntitySpawn;
  13. import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo;
  14. import net.minecraft.server.v1_8_R3.WorldSettings.EnumGamemode;
  15.  
  16. import org.bukkit.Location;
  17. import org.bukkit.craftbukkit.v1_8_R3.util.CraftChatMessage;
  18.  
  19. import com.mojang.authlib.GameProfile;
  20. import com.mojang.authlib.properties.Property;
  21.  
  22. public class NPC extends Reflections {
  23.  
  24.    
  25.     private int entityID;
  26.     private Location location;
  27.     private GameProfile gameprofile;
  28.    
  29.    
  30.     public NPC(String name,Location location){
  31.         entityID = (int)Math.ceil(Math.random() * 1000) + 2000;
  32.         gameprofile = new GameProfile(UUID.randomUUID(), name);
  33.         changeSkin();
  34.         this.location = location.clone();
  35.     }
  36.    
  37.     public void changeSkin(){
  38.         String value = "eyJ0aW1lc3RhbXAiOjE0NDI4MzY1MTU1NzksInByb2ZpbGVJZCI6IjkwZWQ3YWY0NmU4YzRkNTQ4MjRkZTc0YzI1MTljNjU1IiwicHJvZmlsZU5hbWUiOiJDb25DcmFmdGVyIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8xMWNlZDMzMjNmYjczMmFjMTc3MTc5Yjg5NWQ5YzJmNjFjNzczZWYxNTVlYmQ1Y2M4YzM5NTZiZjlhMDlkMTIifX19";
  39.         String signature = "tFGNBQNpxNGvD27SN7fqh3LqNinjJJFidcdF8LTRHOdoMNXcE5ezN172BnDlRsExspE9X4z7FPglqh/b9jrLFDfQrdqX3dGm1cKjYbvOXL9BO2WIOEJLTDCgUQJC4/n/3PZHEG2mVADc4v125MFYMfjzkznkA6zbs7w6z8f7pny9eCWNXPOQklstcdc1h/LvflnR+E4TUuxCf0jVsdT5AZsUYIsJa6fvr0+vItUXUdQ3pps0zthObPEnBdLYMtNY3G6ZLGVKcSGa/KRK2D/k69fmu/uTKbjAWtniFB/sdO0VNhLuvyr/PcZVXB78l1SfBR88ZMiW6XSaVqNnSP+MEfRkxgkJWUG+aiRRLE8G5083EQ8vhIle5GxzK68ZR48IrEX/JwFjALslCLXAGR05KrtuTD3xyq2Nut12GCaooBEhb46sipWLq4AXI9IpJORLOW8+GvY+FcDwMqXYN94juDQtbJGCQo8PX670YjbmVx7+IeFjLJJTZotemXu1wiQmDmtAAmug4U5jgMYIJryXMitD7r5pEop/cw42JbCO2u0b5NB7sI/mr4OhBKEesyC5usiARzuk6e/4aJUvwQ9nsiXfeYxZz8L/mh6e8YPJMyhVkFtblbt/4jPe0bs3xSUXO9XrDyhy9INC0jlLT22QjNzrDkD8aiGAopVvfnTTAug=";
  40.         gameprofile.getProperties().put("textures", new Property("textures", value, signature));
  41.     }
  42.    
  43.     public void spawn(){
  44.         PacketPlayOutNamedEntitySpawn packet = new PacketPlayOutNamedEntitySpawn();
  45.        
  46.         setValue(packet, "a", entityID);
  47.         setValue(packet, "b", gameprofile.getId());
  48.         setValue(packet, "c", getFixLocation(location.getX()));
  49.         setValue(packet, "d", getFixLocation(location.getY()));
  50.         setValue(packet, "e", getFixLocation(location.getZ()));
  51.         setValue(packet, "f", getFixRotation(location.getYaw()));
  52.         setValue(packet, "g", getFixRotation(location.getPitch()));
  53.         setValue(packet, "h", 0);
  54.         DataWatcher w = new DataWatcher(null);
  55.         w.a(6,(float)20);
  56.         w.a(10,(byte)127);
  57.         setValue(packet, "i", w);
  58.         addToTablist();
  59.         sendPacket(packet);
  60.     }
  61.    
  62.  
  63.     public void destroy(){
  64.         PacketPlayOutEntityDestroy packet = new PacketPlayOutEntityDestroy(new int[] {entityID});
  65.         rmvFromTablist();
  66.         sendPacket(packet);
  67.     }
  68.    
  69.     public void addToTablist(){
  70.         PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo();
  71.         PacketPlayOutPlayerInfo.PlayerInfoData data = packet.new PlayerInfoData(gameprofile, 1, EnumGamemode.NOT_SET, CraftChatMessage.fromString(gameprofile.getName())[0]);
  72.         @SuppressWarnings("unchecked")
  73.         List<PacketPlayOutPlayerInfo.PlayerInfoData> players = (List<PacketPlayOutPlayerInfo.PlayerInfoData>) getValue(packet, "b");
  74.         players.add(data);
  75.        
  76.         setValue(packet, "a", PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER);
  77.         setValue(packet, "b", players);
  78.        
  79.         sendPacket(packet);
  80.     }
  81.    
  82.     public void rmvFromTablist(){
  83.         PacketPlayOutPlayerInfo packet = new PacketPlayOutPlayerInfo();
  84.         PacketPlayOutPlayerInfo.PlayerInfoData data = packet.new PlayerInfoData(gameprofile, 1, EnumGamemode.NOT_SET, CraftChatMessage.fromString(gameprofile.getName())[0]);
  85.         @SuppressWarnings("unchecked")
  86.         List<PacketPlayOutPlayerInfo.PlayerInfoData> players = (List<PacketPlayOutPlayerInfo.PlayerInfoData>) getValue(packet, "b");
  87.         players.add(data);
  88.        
  89.         setValue(packet, "a", PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER);
  90.         setValue(packet, "b", players);
  91.        
  92.         sendPacket(packet);
  93.     }
  94.    
  95.     public int getFixLocation(double pos){
  96.         return (int)MathHelper.floor(pos * 32.0D);
  97.     }
  98.    
  99.     public byte getFixRotation(float yawpitch){
  100.         return (byte) ((int) (yawpitch * 256.0F / 360.0F));
  101.     }
  102.    
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement