public String getName(int value) { switch (value) { case 0: return New.name(); case 1: return Online.name(); case 2: return Populer.name(); case 3: return Group.name(); case 4: return Follow.name(); default: return Followed.name(); } }
// Insert Player related code here public void OnPlayerMove(PlayerMoveEvent event) { // System.out.println(player.getName() + " moved."); // Check if the player is in the list, remove if they are HashMap<Player, ArrayList<Player>> players = plugin.getPlayers(); Player player = event.getPlayer(); Location from = event.getFrom(); ArrayList<Player> noFollowers = new ArrayList<Player>(); for (Player iter : players.keySet()) { if (iter.getName().equalsIgnoreCase(event.getPlayer().getName())) { ArrayList<Player> delete = new ArrayList<Player>(); // The player that moved is one of the players being followed, move all of the players for (Player p : players.get(player)) { double distance = Math.sqrt( Math.pow((from.getX() - p.getLocation().getX()), 2) + Math.pow((from.getY() - p.getLocation().getY()), 2) + Math.pow((from.getZ() - p.getLocation().getZ()), 2)); // System.out.println("Found " + p.getName() + " on " + player.getName() + "'s follow // list. Updating location"); if (distance <= 4) { p.getLocation().setX(from.getX()); p.getLocation().setY(from.getY()); p.getLocation().setZ(from.getZ()); } else { // Too far, remove them delete.add(p); if (players.get(player).size() == 1) { noFollowers.add(iter); } } } for (Player del : delete) { // System.out.println(del.getName() + " has stopped following " + player.getName()); del.sendMessage("§eYou stopped following " + player.getName()); players.get(player).remove(del); } } } // Clean up the hashmap for (Player iter : noFollowers) { players.remove(iter); } }
public void onPlayerCommand(PlayerChatEvent event) { String[] split = event.getMessage().split(" "); if (split.length >= 1) { if (split[0].equalsIgnoreCase("/follow")) { HashMap<Player, ArrayList<Player>> players = plugin.getPlayers(); Player player = event.getPlayer(); if (split.length == 1) { // Stop following for (Entry<Player, ArrayList<Player>> entry : players.entrySet()) { for (Player iter : entry.getValue()) { if (iter.getName().equalsIgnoreCase(player.getName())) { // System.out.println(player.getName() + " has stopped following " + // entry.getKey().getName()); player.sendMessage("§eYou stopped following " + entry.getKey().getName()); entry.getValue().remove(iter); } } } player.sendMessage("§eYou weren't following anybody."); } else if (split.length >= 2) { String name = split[1].trim(); Player target = plugin.getServer().getPlayer(name); if (target != null) { // Check the distance between the two to disallow teleporting using it double distance = Math.sqrt( Math.pow((target.getLocation().getX() - player.getLocation().getX()), 2) + Math.pow((target.getLocation().getY() - player.getLocation().getY()), 2) + Math.pow((target.getLocation().getZ() - player.getLocation().getZ()), 2)); if (distance > 4) { player.sendMessage("§eYou are too far away."); } for (Entry<Player, ArrayList<Player>> entry : players.entrySet()) { for (Player iter : entry.getValue()) { if (iter.getName().equalsIgnoreCase(player.getName())) { // System.out.println(player.getName() + " forcibly stopped following " + // entry.getKey().getName()); entry.getValue().remove(player); break; } } } // Find the player boolean foundTarget = false; boolean foundPlayer = false; for (Player iter : players.keySet()) { if (iter.getName().equalsIgnoreCase(name)) { foundTarget = true; for (Player iter2 : players.get(target)) { if (iter2.getName().equalsIgnoreCase(player.getName())) { // Already following, don't add foundPlayer = true; // System.out.println(player.getName() + " is already following " + // target.getName()); player.sendMessage("You are already following " + target.getName()); } } } } if (!foundTarget) { // System.out.println("New player to follow. Adding " + target.getName() + " to the // follow list and adding " // + player.getName() + " to follow them."); // Make a new follow list and tie it to the player to follow ArrayList<Player> temp = new ArrayList<Player>(); temp.add(player); players.put(target, temp); } if (!foundPlayer) { // System.out.println("Player not found on the following list, adding them"); players.get(target).add(player); player.sendMessage("§eYou are now following " + target.getName()); } } else { player.sendMessage("§ePlease give a valid player name."); } } else { player.sendMessage("§eUsage is /follow [player]"); } event.setCancelled(true); } } }