Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Core extends JavaPlugin implements CommandExecutor {
- @Override
- public void onEnable() {
- getCommand("npc").setExecutor(this);
- }
- @Override
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
- if(args.length != 2) return true;
- String option = args[0];
- String nick = args[1];
- if(option.equals("create")) {
- Player p = (Player) sender;
- createNPC(nick, p.getLocation());
- }else{
- return true;
- }
- return false;
- }
- public void createNPC(String name, Location loc){
- MinecraftServer nmsServer = ((CraftServer) Bukkit.getServer()).getServer();
- WorldServer nmsWorld = ((CraftWorld)Bukkit.getWorld("world")).getHandle();
- GameProfile gameProfile = new GameProfile(UUID.randomUUID(), name);
- String[] skin = getSkin(name);
- gameProfile.getProperties().put("textures", new Property("textures", skin[0], skin[1]));
- EntityPlayer npc = new EntityPlayer(nmsServer, nmsWorld, gameProfile, new PlayerInteractManager(nmsWorld));
- npc.setLocation(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch());
- for(Player p : Bukkit.getOnlinePlayers()) {
- PlayerConnection connection = ((CraftPlayer)p).getHandle().playerConnection;
- connection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, npc));
- connection.sendPacket(new PacketPlayOutNamedEntitySpawn(npc));
- connection.sendPacket(new PacketPlayOutEntityHeadRotation(npc, (byte) (npc.yaw * 256 / 360)));
- connection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER, npc));
- }
- }
- private static String[] getSkin(String name) {
- try {
- URL url = new URL("https://api.mojang.com/users/profiles/minecraft/" + name);
- InputStreamReader reader = new InputStreamReader(url.openStream());
- String uuid = (new JsonParser()).parse(reader).getAsJsonObject().get("id").getAsString();
- URL url2 = new URL("https://sessionserver.mojang.com/session/minecraft/profile/" + uuid + "?unsigned=false");
- InputStreamReader reader2 = new InputStreamReader(url2.openStream());
- JsonObject property = (new JsonParser()).parse(reader2).getAsJsonObject().get("properties").getAsJsonArray().get(0).getAsJsonObject();
- String texture = property.get("value").getAsString();
- String signature = property.get("signature").getAsString();
- return new String[] { texture, signature };
- } catch (Exception e) {
- return null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement