@Command( aliases = "npc", usage = "move", desc = "move an NPC", modifiers = "move", min = 1, max = 1) @CommandPermissions("basic.modify.move") public static void move(CommandContext args, Player player, HumanNPC npc) { if (npc.getWorld() != player.getWorld() && !PermissionManager.hasPermission(player, "citizens.basic.modify.move.multiworld")) { player.sendMessage(ChatColor.GRAY + "You don't have permission to move NPCs between worlds."); return; } player.sendMessage(StringUtils.wrap(npc.getName()) + " is en route to your location!"); npc.teleport(player.getLocation()); npc.getNPCData().setLocation(player.getLocation()); }
@Command( aliases = "npc", usage = "moveto [x y z] (world pitch yaw)", desc = "move an NPC to a location", modifiers = "moveto", min = 4, max = 7) @CommandPermissions("basic.modify.moveto") public static void moveTo(CommandContext args, Player player, HumanNPC npc) { double x = 0, y = 0, z = 0; float yaw = npc.getLocation().getYaw(), pitch = npc.getLocation().getPitch(); String world = npc.getWorld().getName(); switch (args.argsLength()) { case 7: yaw = Float.parseFloat(args.getString(6)); case 6: pitch = Float.parseFloat(args.getString(5)); case 5: world = args.getString(4); if (Bukkit.getServer().getWorld(world) == null) { Messaging.sendError(player, "Invalid world."); return; } case 4: x = Double.parseDouble(args.getString(1)); y = Double.parseDouble(args.getString(2)); z = Double.parseDouble(args.getString(3)); } Location loc = new Location(Bukkit.getServer().getWorld(world), x, y, z, pitch, yaw); npc.teleport(loc); npc.getNPCData().setLocation(loc); player.sendMessage( StringUtils.wrap(npc.getName()) + " moved to the coordinates " + StringUtils.wrap(x) + ", " + StringUtils.wrap(y) + ", " + StringUtils.wrap(z) + " in the world " + StringUtils.wrap(world) + "."); }