diff options
author | David Panić <david@panic.tk> | 2019-03-09 22:20:33 +0100 |
---|---|---|
committer | David Panić <david@panic.tk> | 2019-03-09 22:20:33 +0100 |
commit | fbe50b9c710aedfa9d2bc1304181e658f919ce9c (patch) | |
tree | 6a3d95a1e63e3dfcccc840a925aab30c911e26c7 /src | |
parent | e0714e77b7bceacaba61ed9dc0808ab78df42402 (diff) | |
parent | 7f6ebc61c3e15e88826ec1f71d226fb017b42af3 (diff) |
Merge branch 'dev'
Diffstat (limited to 'src')
11 files changed, 420 insertions, 237 deletions
diff --git a/src/main/java/com/redstoner/modules/blockplacemods/BlockPlaceMods.java b/src/main/java/com/redstoner/modules/blockplacemods/BlockPlaceMods.java index 1301792..0f4cb34 100644 --- a/src/main/java/com/redstoner/modules/blockplacemods/BlockPlaceMods.java +++ b/src/main/java/com/redstoner/modules/blockplacemods/BlockPlaceMods.java @@ -28,7 +28,7 @@ import java.util.Map; @Commands (CommandHolderType.File) @AutoRegisterListener -@Version (major = 5, minor = 2, revision = 0, compatible = 4) +@Version (major = 5, minor = 2, revision = 1, compatible = 4) public class BlockPlaceMods implements Module, Listener { private static final Map<String, BlockPlaceMod> mods = new HashMap<>(); private static final List<BlockPlaceMod> enabledMods = new ArrayList<>(); @@ -54,6 +54,7 @@ public class BlockPlaceMods implements Module, Listener { if (mod.onEnable()) { enabledMods.add(mod); Bukkit.getPluginManager().registerEvents(mod, Main.plugin); + getLogger().info("Loaded mod, &e" + mod.name + "&7."); } else { getLogger().warn("Failed to enable the mod, &e" + mod.name + "&7!"); } diff --git a/src/main/java/com/redstoner/modules/friends/Friends.cmd b/src/main/java/com/redstoner/modules/friends/Friends.cmd index ea205c9..336a769 100644 --- a/src/main/java/com/redstoner/modules/friends/Friends.cmd +++ b/src/main/java/com/redstoner/modules/friends/Friends.cmd @@ -1,8 +1,11 @@ command friends { + alias friend; + perm utils.friends; + type player; + add [string:name] { run add name; - help Adds a friend to your friendlist.; - perm utils.friends; + help Adds a friend to your friend list.; } add [string:name] [string:group] { run add_grouped name group; @@ -11,8 +14,7 @@ command friends { } remove [string:name] { run del name; - help Removes a friend from your friendlist.; - perm utils.friends; + help Removes a friend from your friend list.; } remove [string:name] [string:group] { run del_grouped name group; @@ -22,7 +24,6 @@ command friends { list { run list; help Shows a list of all your friends.; - perm utils.friends; } list [string:group] { run list_group group; @@ -34,5 +35,14 @@ command friends { help Shows all your friend groups that have at least one person in them.; perm utils.friends.groups; } - type player; + group { + [string:groupName] { + run list_group groupName; + help Shows a list of all friends in that group.; + perm utils.friends.groups; + } + run list_groups; + help Shows all your friend groups that have at least one person in them.; + perm utils.friends.groups; + } }
\ No newline at end of file diff --git a/src/main/java/com/redstoner/modules/friends/Friends.java b/src/main/java/com/redstoner/modules/friends/Friends.java index 9e06a3f..16ca023 100644 --- a/src/main/java/com/redstoner/modules/friends/Friends.java +++ b/src/main/java/com/redstoner/modules/friends/Friends.java @@ -11,6 +11,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.json.simple.JSONArray; @@ -27,41 +28,48 @@ import com.redstoner.modules.CoreModule; import com.redstoner.modules.Module; import com.redstoner.modules.datamanager.DataManager; +import net.nemez.chatapi.click.Message; + @AutoRegisterListener @Commands(CommandHolderType.File) -@Version(major = 5, minor = 0, revision = 0, compatible = 4) -public class Friends implements CoreModule { +@Version(major = 5, minor = 1, revision = 1, compatible = 4) +public class Friends implements CoreModule, Listener { + + private static int GROUP_PREFIX_LENGETH = 6; + @EventHandler(priority = EventPriority.MONITOR) public void onPlayerJoin(PlayerJoinEvent e) { - JSONArray friended_by = (JSONArray) DataManager.getOrDefault(e.getPlayer(), "friended_by", new JSONArray()); + Player player = e.getPlayer(); + JSONArray friended_by = (JSONArray) DataManager.getOrDefault(player, "friended_by", new JSONArray()); for (Object obj : friended_by) { UUID uuid = UUID.fromString((String) obj); Player p = Bukkit.getPlayer(uuid); - if (p != null && p.canSee(e.getPlayer())) { - getLogger().message(p, "Your friend &e" + e.getPlayer().getDisplayName() + "&7 just joined!"); + if (p != null && p.canSee(player)) { + getLogger().message(p, "Your friend &e" + player.getDisplayName() + "&7 just joined!"); p.playSound(p.getLocation(), Sound.ENTITY_CHICKEN_EGG, 1, 1); } } - JSONArray notifications = (JSONArray) DataManager.getOrDefault(e.getPlayer(), "scheduled_notifications", new JSONArray()); - - for (Object obj : notifications) { - getLogger().message(e.getPlayer(), (String) obj); - } + JSONArray notifications = (JSONArray) DataManager.getOrDefault(player, "scheduled_notifications", new JSONArray()); + for (Object obj : notifications) + getLogger().message(player, (String) obj); + DataManager.setData(player, "scheduled_notifications", new JSONArray()); + DataManager.save(player); } @EventHandler(priority = EventPriority.MONITOR) public void onPlayerLeave(PlayerQuitEvent e) { - JSONArray friended_by = (JSONArray) DataManager.getOrDefault(e.getPlayer(), "friended_by", new JSONArray()); + Player player = e.getPlayer(); + JSONArray friended_by = (JSONArray) DataManager.getOrDefault(player, "friended_by", new JSONArray()); for (Object obj : friended_by) { UUID uuid = UUID.fromString((String) obj); Player p = Bukkit.getPlayer(uuid); - if (p != null && p.canSee(e.getPlayer())) { - getLogger().message(p, "Your friend &e" + e.getPlayer().getDisplayName() + "&7 just left!"); + if (p != null && p.canSee(player)) { + getLogger().message(p, "Your friend &e" + player.getDisplayName() + "&7 just left!"); p.playSound(p.getLocation(), Sound.ENTITY_CHICKEN_EGG, 1, 1); } } @@ -76,10 +84,10 @@ public class Friends implements CoreModule { } OfflinePlayer p = Bukkit.getPlayer(target); - - if (p == null) p = Bukkit.getOfflinePlayer(target); - if (p == null) { - getLogger().message(sender, true, "That player couldn't be found!"); + + if (p == null) p = Bukkit.getOfflinePlayer(target); + if (p == null || !p.hasPlayedBefore()) { + getLogger().message(sender, true, "That player has never joined the server!"); return true; } @@ -93,24 +101,25 @@ public class Friends implements CoreModule { friends.add(p.getUniqueId().toString()); DataManager.setData(sender, "friends", friends); DataManager.save(sender); - + JSONArray friended_by = ((JSONArray) DataManager.getOrDefault(p.getUniqueId().toString(), "friended_by", new JSONArray())); friended_by.add(getID(sender)); - DataManager.setData(p.getUniqueId().toString(), "friended_by", friended_by); + DataManager.setData(p.getUniqueId().toString(), "friended_by", friended_by); DataManager.save(p.getUniqueId().toString()); - + getLogger().message(sender, "You are now friends with &e" + p.getName() + "&7!"); - if (p instanceof Player) { + if (p instanceof Player) getLogger().message((Player) p, "&e" + Utils.getName(sender) + "&7 added you as a friend!"); - } else { + else { JSONArray notifications = (JSONArray) DataManager.getOrDefault(p.getUniqueId().toString(), "scheduled_notifications", new JSONArray()); notifications.add("&e" + Utils.getName(sender) + "&7 added you as a friend!"); notifications.remove("&e" + Utils.getName(sender) + "&7 removed you as a friend!"); DataManager.setData(p.getUniqueId().toString(), "scheduled_notifications", notifications); + DataManager.save(p.getUniqueId().toString()); } return true; @@ -127,33 +136,34 @@ public class Friends implements CoreModule { OfflinePlayer p = Bukkit.getPlayer(target); if (p == null) p = Bukkit.getOfflinePlayer(target); - if (p == null) { - getLogger().message(sender, true, "That player couldn't be found!"); + if (p == null || !p.hasPlayedBefore()) { + getLogger().message(sender, true, "That player has neevr joined the server!"); return true; } - JSONArray friends = ((JSONArray) DataManager.getOrDefault(sender, "groups." + group, new JSONArray())); + JSONArray friends = ((JSONArray) DataManager.getOrDefault(sender, "group." + group, new JSONArray())); if (friends.contains(p.getUniqueId().toString())) { - getLogger().message(sender, true, "This person already is part of that friendsgroup!"); + getLogger().message(sender, true, "This person already is part of that friendgroup!"); return true; } friends.add(p.getUniqueId().toString()); - DataManager.setData(sender, "groups." + group, friends); + DataManager.setData(sender, "group." + group, friends); DataManager.save(sender); getLogger().message(sender, "&e" + p.getName() + "&7 is now part of the group &e" + group + "&7!"); - if (p instanceof Player) { - getLogger().message((Player) p, "&e" + Utils.getName(sender) + " &7added you to their friendsgroup &e" + group + "&7!"); - } else { + if (p instanceof Player) + getLogger().message((Player) p, "&e" + Utils.getName(sender) + " &7added you to their friendgroup &e" + group + "&7!"); + else { JSONArray notifications = (JSONArray) DataManager.getOrDefault(p.getUniqueId().toString(), "scheduled_notifications", new JSONArray()); - notifications.add("&e" + Utils.getName(sender) + " &7added you to their friendsgroup &e" + group + "&7!"); - notifications.remove("&e" + Utils.getName(sender) + " &7removed you from their friendsgroup &e" + group + "&7!"); + notifications.add("&e" + Utils.getName(sender) + " &7added you to their friendgroup &e" + group + "&7!"); + notifications.remove("&e" + Utils.getName(sender) + " &7removed you from their friendgroup &e" + group + "&7!"); DataManager.setData(p.getUniqueId().toString(), "scheduled_notifications", notifications); + DataManager.save(p.getUniqueId().toString()); } return true; @@ -163,14 +173,14 @@ public class Friends implements CoreModule { @Command(hook = "del") public boolean del(CommandSender sender, String target) { if (target.equalsIgnoreCase("CONSOLE")) { - getLogger().message(sender, true, "You can't add console to your friends!"); + getLogger().message(sender, true, "You can't have console as your friends!"); return true; } OfflinePlayer p = Bukkit.getPlayer(target); if (p == null) p = Bukkit.getOfflinePlayer(target); - if (p == null) { + if (p == null || !p.hasPlayedBefore()) { getLogger().message(sender, true, "That player couldn't be found!"); return true; } @@ -185,24 +195,25 @@ public class Friends implements CoreModule { friends.remove(p.getUniqueId().toString()); DataManager.setData(sender, "friends", friends); DataManager.save(sender); - + JSONArray friended_by = ((JSONArray) DataManager.getOrDefault(p.getUniqueId().toString(), "friended_by", new JSONArray())); - DataManager.setData(p.getUniqueId().toString(), "friended_by", friended_by); friended_by.remove(getID(sender)); - + + DataManager.setData(p.getUniqueId().toString(), "friended_by", friended_by); DataManager.save(p.getUniqueId().toString()); getLogger().message(sender, "You are no longer friends with &e" + p.getName() + "&7!"); - if (p instanceof Player) { + if (p instanceof Player) getLogger().message((Player) p, "&e" + Utils.getName(sender) + "&7 removed you as a friend!"); - } else { + else { JSONArray notifications = (JSONArray) DataManager.getOrDefault(p.getUniqueId().toString(), "scheduled_notifications", new JSONArray()); notifications.add("&e" + Utils.getName(sender) + "&7 removed you as a friend!"); notifications.remove("&e" + Utils.getName(sender) + "&7 added you as a friend!"); DataManager.setData(p.getUniqueId().toString(), "scheduled_notifications", notifications); + DataManager.save(p.getUniqueId().toString()); } return true; @@ -219,33 +230,34 @@ public class Friends implements CoreModule { OfflinePlayer p = Bukkit.getPlayer(target); if (p == null) p = Bukkit.getOfflinePlayer(target); - if (p == null) { + if (p == null || !p.hasPlayedBefore()) { getLogger().message(sender, true, "That player couldn't be found!"); return true; } - JSONArray friends = ((JSONArray) DataManager.getOrDefault(sender, "groups." + group, new JSONArray())); + JSONArray friends = ((JSONArray) DataManager.getOrDefault(sender, "group." + group, new JSONArray())); if (!friends.contains(p.getUniqueId().toString())) { - getLogger().message(sender, true, "This person isn't a part of that friendsgroup!"); + getLogger().message(sender, true, "This person isn't a part of that friendgroup!"); return true; } friends.add(p.getUniqueId().toString()); - DataManager.setData(sender, "groups." + group, friends); + DataManager.setData(sender, "group." + group, friends); DataManager.save(sender); - + getLogger().message(sender, "&e" + p.getName() + "&7 is no longer a part of the group &e" + group + "&7!"); - if (p instanceof Player) { - getLogger().message((Player) p, "&e" + Utils.getName(sender) + " &7removed you from their friendsgroup &e" + group + "&7!"); - } else { + if (p instanceof Player) + getLogger().message((Player) p, "&e" + Utils.getName(sender) + " &7removed you from their friendgroup &e" + group + "&7!"); + else { JSONArray notifications = (JSONArray) DataManager.getOrDefault(p.getUniqueId().toString(), "scheduled_notifications", new JSONArray()); - notifications.add("&e" + Utils.getName(sender) + " &7removed you from their friendsgroup &e" + group + "&7!"); - notifications.remove("&e" + Utils.getName(sender) + " &7added you to their friendsgroup &e" + group + "&7!"); + notifications.add("&e" + Utils.getName(sender) + " &7removed you from their friendgroup &e" + group + "&7!"); + notifications.remove("&e" + Utils.getName(sender) + " &7added you to their friendgroup &e" + group + "&7!"); DataManager.setData(p.getUniqueId().toString(), "scheduled_notifications", notifications); + DataManager.save(p.getUniqueId().toString()); } return true; @@ -256,21 +268,27 @@ public class Friends implements CoreModule { JSONArray friends = (JSONArray) DataManager.getOrDefault(sender, "friends", new JSONArray()); if (friends.size() == 0) { - getLogger().message(sender, true, "You didn't add anyone to your friends list yet."); - } else { - StringBuilder sb = new StringBuilder(); - - for (Object o : friends.toArray()) { - UUID id = UUID.fromString((String) o); - Player p = Bukkit.getPlayer(id); - - if (p != null) sb.append(p.getDisplayName() + "&7, "); - else sb.append("&9" + Bukkit.getOfflinePlayer(id).getName() + "&7, "); + getLogger().message(sender, true, "You haven't added anyone to your friends list yet."); + return true; + } + + Message msg = new Message(sender, null) + .appendText(getLogger().getHeader() + "&7You have a total of &e" + friends.size() + "&7 friends:\n"); + + for (int i = 0; i < friends.size(); i++) { + UUID id = UUID.fromString((String) friends.get(i)); + Player p = Bukkit.getPlayer(id); + if (p != null) + msg.appendSuggestHover("&a" + p.getName(), "/msg " + p.getName() + " ", "&aONLINE\n&9" + + p.getDisplayName() + "\n&7" + id.toString() + "\n\n&oClick to send a message."); + else { + String op = Bukkit.getOfflinePlayer(id).getName(); + msg.appendSuggestHover("&c" + op, "/mail send " + op + " ", "&cOFFLINE\n&7" + id.toString() + "\n\n&oClick to send a message."); } - - String out = sb.toString().replaceAll(", $", ""); - getLogger().message(sender, "You have a total of &e" + friends.size() + "&7 friends:", out); + if (i != friends.size() - 1) + msg.appendText("&7, "); } + msg.send(); return true; } @@ -281,43 +299,88 @@ public class Friends implements CoreModule { if (friends.size() == 0) { getLogger().message(sender, true, "You didn't add anyone to this group yet."); - } else { - StringBuilder sb = new StringBuilder(); - - for (Object o : friends.toArray()) { - UUID id = UUID.fromString((String) o); - Player p = Bukkit.getPlayer(id); - - if (p != null) sb.append(p.getDisplayName() + "&7, "); - else sb.append("&9" + Bukkit.getOfflinePlayer(id).getName() + "&7, "); + return true; + } + + Message msg = new Message(sender, null) + .appendText(getLogger().getHeader() + "&7You have a total of &e" + friends.size() + "&7 friends added to this group[&e" + group + "&7]:"); + + for (int i = 0; i < friends.size(); i++) { + UUID id = UUID.fromString((String) friends.get(i)); + Player p = Bukkit.getPlayer(id); + if (p != null) + msg.appendSuggestHover("&a" + p.getName(), "/msg " + p.getName() + " ", "&aONLINE\n&9" + + p.getDisplayName() + "\n&7" + id.toString() + "\n\n&oClick to send a message."); + else { + String op = Bukkit.getOfflinePlayer(id).getName(); + msg.appendSuggestHover("&c" + op, "/mail send " + op + " ", "&cOFFLINE\n&7" + id.toString() + "\n\n&oClick to send a message."); } - - String out = sb.toString().replaceAll(", $", ""); - getLogger().message(sender, "You have a total of &e" + friends.size() + "&7 friends added to this group:", out); + if (i != friends.size() - 1) + msg.appendText("&7, "); } + msg.send(); - return true; + return true; } + private String getFriendsInGroup(CommandSender sender, String group) { + JSONArray friends = (JSONArray) DataManager.getOrDefault(sender, group == null? "friends" : "group." + group, new JSONArray()); + + if (friends.size() == 0) + return "This group is Empty"; + + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < friends.size(); i++) { + UUID id = UUID.fromString((String) friends.get(i)); + Player p = Bukkit.getPlayer(id); + if (p != null) + sb.append("&a" + p.getName()); + else + sb.append("&c" + Bukkit.getOfflinePlayer(id).getName()); + + if (i != friends.size() - 1) + sb.append("&7, "); + } + + return sb.toString(); + } + + private int getSizeOfGroup(CommandSender sender, String group) { + return ((JSONArray) DataManager.getOrDefault(sender, group == null? "friends" : "group." + group, new JSONArray())).size(); + } + @Command(hook = "list_groups") public boolean list_groups(CommandSender sender) { JSONObject raw = (JSONObject) DataManager.getOrDefault(sender, null, new JSONObject()); Set<?> keys = raw.keySet(); if (keys.size() == 0 || (keys.contains("friends") && keys.size() == 1)) { - getLogger().message(sender, true, "You don't have any custom groups made yet."); + getLogger().message(sender, true, "You don't haven't created any friendgroups yet."); return true; - } else { - StringBuilder sb = new StringBuilder(); - - for (Object o : keys) { - sb.append("&e" + ((String) o).substring(6) + "&7, "); - } - - String out = sb.toString().replaceAll(", $", ""); - getLogger().message(sender, "", out); } - + + Message msg = new Message(sender, null) + .appendText(getLogger().getHeader() + "&7You have a total of &e" + keys.size() + "&7 friendgroups:\n"); + + if (keys.contains("friends")) { + msg.appendSendChatHover("&6friends", "/friends list", + "&7Size: " + getSizeOfGroup(sender, null) + "\n\n" + getFriendsInGroup(sender, null)) + .appendText("&7, "); + keys.remove("friends"); + } + + Object[] keysArray= keys.toArray(); + for (int i = 0; i < keysArray.length; i++) { + String group = ((String) keysArray[i]).substring(GROUP_PREFIX_LENGETH); + msg.appendSendChatHover("&e" + group, "/friends list " + group, + "&7Size: " + getSizeOfGroup(sender, group) + "\n\n" + getFriendsInGroup(sender, group)); + + if (i != keysArray.length - 1) + msg.appendText("&7, "); + } + + msg.send(); return true; } diff --git a/src/main/java/com/redstoner/modules/list/List.java b/src/main/java/com/redstoner/modules/list/List.java index 6fa0a64..78a35a9 100644 --- a/src/main/java/com/redstoner/modules/list/List.java +++ b/src/main/java/com/redstoner/modules/list/List.java @@ -86,7 +86,7 @@ public class List implements Module if (rank.contains("builder") || all) shownAnything |= show(sender, "&aBuilders", getPlayers(sender, "group.builder", "group.trusted"), all); if (rank.contains("trusted") || all) - shownAnything |= show(sender, "&3Trusteds", getPlayers(sender, "group.trusted", "group.trainingmod"), all); + shownAnything |= show(sender, "&3Trusted", getPlayers(sender, "group.trusted", "group.trainingmod"), all); if (rank.contains("trainingmod") || rank.contains("mit") || all) shownAnything |= show(sender, "&cTrainingmod &e•", getPlayers(sender, "group.trainingmod", "group.mod"), all); diff --git a/src/main/java/com/redstoner/modules/loginsecurity/LoginSecurity.java b/src/main/java/com/redstoner/modules/loginsecurity/LoginSecurity.java index d32e29c..e7eb9d4 100644 --- a/src/main/java/com/redstoner/modules/loginsecurity/LoginSecurity.java +++ b/src/main/java/com/redstoner/modules/loginsecurity/LoginSecurity.java @@ -22,6 +22,7 @@ import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; +import com.redstoner.logging.PrivateLogManager; import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Main; import com.redstoner.misc.mysql.JSONManager; @@ -36,7 +37,7 @@ import com.redstoner.modules.Module; @Commands(CommandHolderType.File) @AutoRegisterListener -@Version(major = 5, minor = 0, revision = 0, compatible = 4) +@Version(major = 5, minor = 1, revision = 0, compatible = 5) public class LoginSecurity implements Module, Listener { protected static Map<UUID, Location> loggingIn; @@ -67,6 +68,12 @@ public class LoginSecurity implements Module, Listener } loggingIn = new HashMap<>(); Bukkit.getServer().getPluginManager().registerEvents(new CancelledEventsHandler(this), Main.plugin); + + PrivateLogManager.register(this, "login", "$s issued LoginSecurity's login command"); + PrivateLogManager.register(this, "register", "$s issued LoginSecurity's register command"); + PrivateLogManager.register(this, "cgpass", "$s issued LoginSecurity's cgpass command"); + PrivateLogManager.register(this, "rmpass", "$s issued LoginSecurity's rmpass command"); + return true; } diff --git a/src/main/java/com/redstoner/modules/mail/Mail.java b/src/main/java/com/redstoner/modules/mail/Mail.java index 339b381..8f56792 100644 --- a/src/main/java/com/redstoner/modules/mail/Mail.java +++ b/src/main/java/com/redstoner/modules/mail/Mail.java @@ -24,14 +24,11 @@ import com.nemez.cmdmgr.Command; import com.redstoner.annotations.AutoRegisterListener; import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; -import com.redstoner.coremods.moduleLoader.ModuleLoader; import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.JsonManager; import com.redstoner.misc.Main; -import com.redstoner.misc.Utils; import com.redstoner.modules.Module; import com.redstoner.modules.datamanager.DataManager; -import com.redstoner.modules.ignore.Ignore; import net.nemez.chatapi.ChatAPI; diff --git a/src/main/java/com/redstoner/modules/mail/Msg.java b/src/main/java/com/redstoner/modules/mail/Msg.java index bdab5af..3db812c 100644 --- a/src/main/java/com/redstoner/modules/mail/Msg.java +++ b/src/main/java/com/redstoner/modules/mail/Msg.java @@ -5,7 +5,7 @@ import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; +//import org.bukkit.entity.Player; import org.json.simple.JSONObject; import net.nemez.chatapi.ChatAPI; @@ -162,17 +162,17 @@ public class Msg { } - private String getPrefix(Player player) - { - String[] teams = new String[] {"admin", "mod", "trainingmod", "helper", "trusted", "builder", "member", "visitor"}; - String[] prefixes = new String[] {"&4", "&c", "&c", "&9", "&3", "&a", "&f", "&7"}; - - for (int i = 0; i < teams.length; i++) - if (player.hasPermission("group." + teams[i])) - return prefixes[i]; - return "&7"; - - } +// private String getPrefix(Player player) +// { +// String[] teams = new String[] {"admin", "mod", "trainingmod", "helper", "trusted", "builder", "member", "visitor"}; +// String[] prefixes = new String[] {"&4", "&c", "&c", "&9", "&3", "&a", "&f", "&7"}; +// +// for (int i = 0; i < teams.length; i++) +// if (player.hasPermission("group." + teams[i])) +// return prefixes[i]; +// return "&7"; +// +// } @SuppressWarnings("unchecked") public JSONObject toJSONObject() { diff --git a/src/main/java/com/redstoner/modules/naming/Naming.java b/src/main/java/com/redstoner/modules/naming/Naming.java index c1d136c..1bfd0c6 100644 --- a/src/main/java/com/redstoner/modules/naming/Naming.java +++ b/src/main/java/com/redstoner/modules/naming/Naming.java @@ -1,9 +1,12 @@ package com.redstoner.modules.naming; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.regex.Pattern; import org.bukkit.GameMode; +import org.bukkit.Material; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -18,23 +21,19 @@ import com.redstoner.modules.Module; import net.md_5.bungee.api.ChatColor; @Commands(CommandHolderType.File) -@Version(major = 5, minor = 2, revision = 0, compatible = 4) +@Version(major = 5, minor = 3, revision = 0, compatible = 4) public class Naming implements Module { + private final Pattern COLOR_CHECK = Pattern.compile(".*&[\\da-fk-or].*"); + private final ItemStack[] COST = new ItemStack[] {new ItemStack(Material.IRON_INGOT, 1)}; + @Command(hook = "name") public void name(CommandSender sender, String name) { Player player = (Player) sender; - if (player.getGameMode() == GameMode.SURVIVAL) { - int level = player.getLevel(); - if (level < 1) { - getLogger().message(sender, true, "You don't have enough levels to rename the item."); - return; - } - else - player.setLevel(level-1); - } + if (player.getGameMode() == GameMode.SURVIVAL && !processSurvivalPlayer(player, name, "rename the item")) + return; name = ChatColor.translateAlternateColorCodes('&', name); ItemStack item = player.getInventory().getItemInMainHand(); @@ -55,15 +54,8 @@ public class Naming implements Module { Player player = (Player) sender; - if (player.getGameMode() == GameMode.SURVIVAL) { - int level = player.getLevel(); - if (level < 1) { - getLogger().message(sender, true, "You don't have enough levels to rename the item."); - return; - } - else - player.setLevel(level-1); - } + if (player.getGameMode() == GameMode.SURVIVAL && !processSurvivalPlayer(player, lore, append? "append to the lore" : "add lore to the item")) + return; ItemStack item = player.getInventory().getItemInMainHand(); ItemMeta meta = item.getItemMeta(); @@ -89,4 +81,25 @@ public class Naming implements Module getLogger().message(sender, "Lore set to &5&o" + lore + "&7."); player.updateInventory(); } + + private boolean processSurvivalPlayer(Player player, String str, String operation) { + + int levelsNeeded = COLOR_CHECK.matcher(str).matches()? 2 : 1; + int levels = player.getLevel(); + + if (levels < levelsNeeded) { + getLogger().message(player, true, "You don't have enough levels. " + (levelsNeeded == 1? + "You need &e1&7 level to " + operation + "." : + "You need &e2&7 levels to " + operation + " with color/formatting.")); + return false; + } + + HashMap<Integer, ItemStack> result = player.getInventory().removeItem(COST); + if (result.size() > 0) { + getLogger().message(player, true, "You don't have enough resources. You need &e1&7 iron ingot to " + operation + "."); + return false; + } + player.setLevel(levels - levelsNeeded); + return true; + } } diff --git a/src/main/java/com/redstoner/modules/saylol/Saylol.cmd b/src/main/java/com/redstoner/modules/saylol/Saylol.cmd index b81605a..f8512c1 100644 --- a/src/main/java/com/redstoner/modules/saylol/Saylol.cmd +++ b/src/main/java/com/redstoner/modules/saylol/Saylol.cmd @@ -41,6 +41,11 @@ command lol { run matchlol -i regex; perm utils.lol.match; } + page [int:num] { + help Shows you page <num>. Used in /lol search, /lol match, and /lol list.; + run page num; + perm utils.lol.page; + } [empty] { help Lols.; run saylol; diff --git a/src/main/java/com/redstoner/modules/saylol/Saylol.java b/src/main/java/com/redstoner/modules/saylol/Saylol.java index cd33f97..4f30342 100644 --- a/src/main/java/com/redstoner/modules/saylol/Saylol.java +++ b/src/main/java/com/redstoner/modules/saylol/Saylol.java @@ -1,14 +1,22 @@ package com.redstoner.modules.saylol; import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.Random; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerQuitEvent; import org.json.simple.JSONArray; import com.nemez.cmdmgr.Command; +import com.redstoner.annotations.AutoRegisterListener; import com.redstoner.annotations.Commands; import com.redstoner.annotations.Version; import com.redstoner.coremods.moduleLoader.ModuleLoader; @@ -24,14 +32,17 @@ import net.nemez.chatapi.ChatAPI; import net.nemez.chatapi.click.ClickCallback; import net.nemez.chatapi.click.Message; +@AutoRegisterListener @Commands(CommandHolderType.File) -@Version(major = 5, minor = 0, revision = 1, compatible = 4) +@Version(major = 5, minor = 1, revision = 0, compatible = 4) public class Saylol implements Module { private long lastLol = 0; private File lolLocation = new File(Main.plugin.getDataFolder(), "lol.json"); private JSONArray lols, handlers; private final String LOL_PREFIX = "§8[§blol§8] "; + private Map<CommandSender, List<Integer>> searchCache = new HashMap<>(); + private final int PAGE_SIZE = 10; @SuppressWarnings("unchecked") @Override @@ -84,6 +95,7 @@ public class Saylol implements Module } }); saveLols(); + searchCache.clear(); } return true; } @@ -104,6 +116,7 @@ public class Saylol implements Module getLogger().message(sender, "Successfully deleted the lol: " + lols.remove(id)); handlers.remove(id); saveLols(); + searchCache.clear(); return true; } @@ -124,6 +137,7 @@ public class Saylol implements Module getLogger().message(sender, "Successfully changed the lol: &e" + lols.get(id) + " &7to: &e" + text); lols.set(id, text); saveLols(); + searchCache.clear(); return true; } @@ -195,18 +209,20 @@ public class Saylol implements Module @Command(hook = "listlols") public boolean listLols(CommandSender sender, int page) { + searchCache.put(sender, Arrays.asList(-1)); + if (lols.size() == 0) { getLogger().message(sender, true, "There are no lols yet!"); return true; } page = page - 1; - int start = page * 10; - int end = start + 10; - int pages = (int) Math.ceil(lols.size() / 10d); + int start = page * PAGE_SIZE; + int end = start + PAGE_SIZE; + int pages = getMaxPage(lols.size()); if (start < 0) { - getLogger().message(sender, true, "Page number too small, must be at least 0!"); + getLogger().message(sender, true, "Page number too small, must be at least 1!"); return true; } if (start > lols.size()) @@ -216,7 +232,7 @@ public class Saylol implements Module } Message m = new Message(sender, null); m.appendText(getLogger().getHeader().replace("\n", "")); - m.appendText("&ePage " + (page + 1) + "/" + pages + ":"); + m.appendText(" &ePage " + (page + 1) + "/" + pages + ":"); for (int i = start; i < end && i < lols.size(); i++) m.appendCallback("\n&a" + i + "&8: &e" + lols.get(i), getCallback(i)); m.send(); @@ -231,52 +247,117 @@ public class Saylol implements Module @Command(hook = "searchlol") public boolean search(CommandSender sender, boolean sensitive, String text) - { - Message m = new Message(sender, null); - m.appendText(getLogger().getHeader().replace("\n", "")); - boolean found = false; + { + searchCache.remove(sender); + + List<Integer> results = new ArrayList<>(); + if (!sensitive) text = text.toLowerCase(); for (int i = 0; i < lols.size(); i++) { String lol = (String) lols.get(i); if ((sensitive ? lol : lol.toLowerCase()).contains(text)) - { - m.appendCallback("\n&a" + i + "&8: &e" + lol, getCallback(i)); - found = true; - } + results.add(i); } - if (!found) + if (results.isEmpty()) { getLogger().message(sender, "&cCouldn't find any matching lols."); - else - m.send(); + return true; + } + + searchCache.put(sender, results); + + Message m = new Message(sender, null); + m.appendText(getLogger().getHeader().replace("\n", "")); + + int size = results.size(); + if (size > PAGE_SIZE) + m.appendText(" &ePage 1/" + getMaxPage(size) + ":"); + + for (int i = 0; i < size && i < PAGE_SIZE; i++) + m.appendCallback("\n&a" + i + "&8: &e" + lols.get(results.get(i)), getCallback(i)); + + m.appendText("\n&7Use /lol page <number> to look at other pages."); + m.send(); return true; } @Command(hook = "matchlol") public boolean match(CommandSender sender, boolean sensitive, String regex) { - Message m = new Message(sender, null); - m.appendText(getLogger().getHeader().replace("\n", "")); - boolean found = false; + + searchCache.remove(sender); + + List<Integer> results = new ArrayList<>(); + if (!sensitive) regex = regex.toLowerCase(); for (int i = 0; i < lols.size(); i++) { String lol = (String) lols.get(i); if ((sensitive ? lol : lol.toLowerCase()).matches(regex)) - { - m.appendCallback("\n&a" + i + "&8: &e" + lol, getCallback(i)); - found = true; - } + results.add(i); } - if (!found) + if (results.isEmpty()) { getLogger().message(sender, "&cCouldn't find any matching lols."); - else + return true; + } + + searchCache.put(sender, results); + + Message m = new Message(sender, null); + m.appendText(getLogger().getHeader().replace("\n", "")); + + int size = results.size(); + if (size > PAGE_SIZE) + m.appendText(" &ePage 1/" + getMaxPage(size) + ":"); + + for (int i = 0; i < size && i < PAGE_SIZE; i++) + m.appendCallback("\n&a" + i + "&8: &e" + lols.get(i), getCallback(i)); + + m.appendText("\n&7Use /lol page <number> to look at other pages."); + m.send(); + + return true; + } + + @Command(hook = "page") + public boolean page(CommandSender sender, int page) { + List<Integer> results = searchCache.get(sender); + + if (results == null || results.size() == 0) { + getLogger().message(sender, true, "There's nothing to page through. Either you haven't" + + " done a relivent command, or the lols have changed since you have."); + return true; + } + + int pages = getMaxPage(results.size()); + + if (results.get(0) == -1) + listLols(sender, page); + else if (page < 1 || page > pages) + getLogger().message(sender, true, "Page number not on range. Must be between &e1&7 and &e" + pages + "&7."); + else { + Message m = new Message(sender, null); + m.appendText(getLogger().getHeader().replace("\n", " &ePage " + page + "/" + pages + ":")); + + for (int i = page*PAGE_SIZE-PAGE_SIZE; i < page*PAGE_SIZE; i++) + m.appendCallback("\n&a" + i + "&8: &e" + lols.get(i), getCallback(i)); + m.send(); + } return true; } + @EventHandler + public void onLeave(PlayerQuitEvent e) { + searchCache.remove(e.getPlayer()); + } + + public int getMaxPage(int size) { + return (int) Math.ceil(size / (double) PAGE_SIZE); + } + public void saveLols() { JsonManager.save(lols, lolLocation); diff --git a/src/main/java/com/redstoner/modules/teleport/Teleport.java b/src/main/java/com/redstoner/modules/teleport/Teleport.java index 73f03bd..5313427 100644 --- a/src/main/java/com/redstoner/modules/teleport/Teleport.java +++ b/src/main/java/com/redstoner/modules/teleport/Teleport.java @@ -26,28 +26,28 @@ import net.nemez.chatapi.ChatAPI; @Commands(CommandHolderType.File) @AutoRegisterListener -@Version(major = 5, minor = 0, revision = 2, compatible = 4) +@Version(major = 5, minor = 0, revision = 3, compatible = 4) public class Teleport implements Module, Listener { public static final String PERMISSION_TELEPORT = "utils.teleport.tp"; - public static final String PERMISSION_TELEPORT_OTHER = "utils.teleport.tp.other"; - + public static final String PERMISSION_TELEPORT_OTHER = "utils.teleport.tp.other"; + private Map<Player, Map<Player, TPAType>> pending_requests = new HashMap<>(); private Map<Player, Stack<Player>> last_request = new HashMap<>(); private Map<Player, Stack<Player>> last_request_got = new HashMap<>(); - + @Command(hook = "tploc") public void tploc(CommandSender sender, int x, int y, int z) { Player p = (Player) sender; - + p.teleport(new Location(p.getWorld(), x, y, z), TeleportCause.COMMAND); getLogger().message(sender, "Teleported to &e(" + x + "," + y + "," + z + ")&7."); } - + @Command(hook = "tploc2") public void tploc2(CommandSender sender, String player, int x, int y, int z) { Player p = Bukkit.getPlayer(player); - + if (p == null) playerDoesNotExistError(sender, player); else { @@ -59,14 +59,14 @@ public class Teleport implements Module, Listener : sender.getName()) + "&7."); } } - + @Command(hook = "tp") public void teleport(CommandSender sender, String player) { if (!sender.hasPermission(PERMISSION_TELEPORT)) { tpa(sender, player); return; } - + Player p = Bukkit.getPlayer(player); if (p == null) playerDoesNotExistError(sender, player); @@ -77,18 +77,24 @@ public class Teleport implements Module, Listener getLogger().message(sender, "Teleported to &e" + p.getDisplayName() + "&7."); } } - + @Command(hook = "tp2") public void teleport(CommandSender sender, String player, String player2) { - if (!sender.hasPermission(PERMISSION_TELEPORT) - && sender.getName().equalsIgnoreCase(player2)) { - tpahere(sender, player); + if (!sender.hasPermission(PERMISSION_TELEPORT)) { + if (sender.getName().equalsIgnoreCase(player)) { + tpa(sender, player); + } else if (sender.getName().equalsIgnoreCase(player2)) { + tpahere(sender, player); + } else { + getLogger().message(sender, true, "You do not have the permission to teleport other players."); + } + return; } - + Player p1 = Bukkit.getPlayer(player); Player p2 = Bukkit.getPlayer(player2); - + if (p1 == null) playerDoesNotExistError(sender, player); else if (p2 == null) @@ -104,7 +110,7 @@ public class Teleport implements Module, Listener ((Player)sender).getDisplayName(): sender.getName())); } } - + @Command(hook = "tphere") public void tphere(CommandSender sender, String player) { Player p = Bukkit.getPlayer(player); @@ -118,40 +124,40 @@ public class Teleport implements Module, Listener getLogger().message(p, "&e" + ((Player)sender).getDisplayName() + "&7 has teleported you to them."); } } - + @Command(hook = "tpa") public void tpa(CommandSender sender, String player) { Player p = Bukkit.getPlayer(player); if (p == null) - playerDoesNotExistError(sender, player); - + playerDoesNotExistError(sender, player); + else if (sender.getName().equals(p.getName())) cannotTpToYourself(sender); - + else if ( (Boolean) DataManager.getOrDefault(p, "allow-tpa", true) == false ) getLogger().message(sender, true, "&e" + p.getDisplayName() + "&7 doesn't accept TPA requests."); - + else { Player s = (Player) sender; insertIntoMaps(s, p, TPAType.TPA); getLogger().message(sender, "TPA request sent to &e" + p.getDisplayName() + "&7."); notifyAskie(p, s, TPAType.TPA); } - + } - + @Command(hook = "tpahere") public void tpahere(CommandSender sender, String player) { Player p = Bukkit.getPlayer(player); if (p == null) - playerDoesNotExistError(sender, player); - + playerDoesNotExistError(sender, player); + else if (sender.getName().equals(p.getName())) cannotTpToYourself(sender); - + else if ( (Boolean) DataManager.getOrDefault(p, "allow-tpahere", true) == false ) getLogger().message(sender, true, "&e" + p.getDisplayName() + "&7 doesn't accept TPA Here requests."); - + else { Player s = (Player) sender; insertIntoMaps(s, p, TPAType.TPAHERE); @@ -159,7 +165,7 @@ public class Teleport implements Module, Listener notifyAskie(p, s, TPAType.TPAHERE); } } - + @Command(hook = "tpall") public void tpall(CommandSender sender) { Player to = (Player) sender; @@ -171,7 +177,7 @@ public class Teleport implements Module, Listener } getLogger().message(sender, "Everyone has sucessfully teleported to you."); } - + @Command(hook = "tpall2") public void tpall2(CommandSender sender, String player) { Player to = Bukkit.getPlayer(player); @@ -179,7 +185,7 @@ public class Teleport implements Module, Listener playerDoesNotExistError(sender, player); return; } - + String s = (sender instanceof Player? ((Player)sender).getDisplayName() :sender.getName()); for (Player p : Bukkit.getOnlinePlayers()) { p.teleport(to, TeleportCause.COMMAND); @@ -187,35 +193,35 @@ public class Teleport implements Module, Listener } getLogger().message(sender, "Everyone was sucessfully teleported to &e" + to.getDisplayName() + "&7."); } - + @Command(hook = "tpaccept") public void tpaccept(CommandSender sender) { Player to = (Player) sender; Player from = getLastRequestGot(to); - + if (from == null) getLogger().message(sender, true, "You have no incoming TPA requests."); else - teleport(to, from, pending_requests.get(to).get(from)); + teleport(to, from, pending_requests.get(to).get(from)); } - + @Command(hook = "tpaccept2") public void tpaccept2(CommandSender sender, String player) { Player to = (Player) sender; Player from = Bukkit.getPlayer(player); - + if (from == null) { playerDoesNotExistError(sender, player); return; } - + if (from.getName().equals(sender.getName())) { cannotTpToYourself(sender); return; } - + Map<Player, TPAType> m = pending_requests.get(to); - + if (m == null) getLogger().message(sender, true, "You have no incoming TPA requests."); else if (!m.containsKey(from)) @@ -223,117 +229,117 @@ public class Teleport implements Module, Listener else teleport(to, from, m.get(from)); } - - + + private void teleport(Player to, Player from, TPAType type) { switch (pending_requests.get(to).get(from)) { case TPA: from.teleport(to, TeleportCause.COMMAND); break; case TPAHERE: to.teleport(from, TeleportCause.COMMAND); break; } clearRequest(to, from); - + getLogger().message(from, "&e" + to.getDisplayName() + "&7 has &aaccepted&7 your TPA request."); getLogger().message(to, "You've &aaccepted&7 &e" + from.getDisplayName() + "&7's TPA request."); } - + @Command(hook = "tpdeny") public void tpdeny(CommandSender sender) { Player to = (Player) sender; Player from = getLastRequestGot(to); - + if (from == null) { getLogger().message(sender, true, "You have no incoming TPA requests."); return; } - + clearRequest(to, from); - + getLogger().message(from, "&e" + to.getDisplayName() + "&7 has &cdenied&7 your TPA request."); getLogger().message(to, "You've &cdenied&7 &e" + from.getDisplayName() + "&7's TPA request."); } - + @Command(hook = "tpdeny2") public void tpdeny2(CommandSender sender, String player) { Player to = (Player) sender; Player from = Bukkit.getPlayer(player); - + if (from == null) { playerDoesNotExistError(sender, player); return; } - + if (from.getName().equals(sender.getName())) { cannotTpToYourself(sender); return; } - + Map<Player, TPAType> m = pending_requests.get(to); - + if (m == null) getLogger().message(sender, true, "You have no incoming TPA requests."); - + else if (!m.containsKey(from)) getLogger().message(sender, true, "&e" + from.getDisplayName() + "&7 doesn't have an active TPA request with you."); - + else { clearRequest(to, from); getLogger().message(from, "&e" + to.getDisplayName() + "&7 has &cdenied&7 your TPA request."); getLogger().message(to, "You've &cdenied&7 &e" + from.getDisplayName() + "&7's TPA request."); } } - + @Command(hook = "tpacancel") public void tpacancel(CommandSender sender) { Player from = (Player) sender; Player to = getLastRequest(from); - + if (to == null) getLogger().message(sender, true, "You don't have outgoing TPA requests."); else cancel(to, from); } - + @Command(hook = "tpacancel2") public void tpacancel2(CommandSender sender, String player) { Player from = (Player) sender; Player to = Bukkit.getPlayer(player); - + if (to == null) playerDoesNotExistError(sender, player); else cancel(to, from); } - + private void cancel(Player to, Player from) { Stack<Player> s = last_request.get(from); - + if (s == null) getLogger().message(from, true, "You have no outgoing TPA requests."); - + else if (!s.contains(to)) getLogger().message(from, true, "You didn't send a TPA request to &e" + to.getDisplayName() + "&7."); - + else { clearRequest(to, from); getLogger().message(to, "&e" + from.getDisplayName() + "&7 has &ccanceled&7 their request."); getLogger().message(from, "You &ccanceled&7 your request to &e" + to.getDisplayName() + "&7."); } } - + @Command(hook = "tplist") public void tplist(CommandSender sender) { Player to = (Player) sender; - + Map<Player,TPAType> m = pending_requests.get(to); - + if (m == null) { getLogger().message(sender, true, "You don't have any incoming TPA requests."); return; } ChatAPI.send(sender, getLogger().getHeader()); ChatAPI.send(sender, ""); - + for (Player from : m.keySet()) { ChatAPI.createMessage(sender) .appendText("&e" + from.getDisplayName() + "&7: ") @@ -343,10 +349,10 @@ public class Teleport implements Module, Listener .send(); } } - + @Command(hook = "tptoggle") public void tptoggle(CommandSender sender, String status) { - + switch (status.toLowerCase()) { case "all": DataManager.setData(sender, "allow-tpa", true); @@ -371,28 +377,28 @@ public class Teleport implements Module, Listener } getLogger().message(sender, "Status set to &e" + status + "&7."); } - + private void playerDoesNotExistError(CommandSender sender, String player) { getLogger().message(sender, true, "The player, &e" + player + "&7, is not online."); } private void cannotTpToYourself(CommandSender sender) { getLogger().message(sender, true, "You can't teleport to yourself."); } - + private void insertIntoMaps(Player from, Player to, TPAType type) { Map<Player, TPAType> m = pending_requests.getOrDefault(to, new HashMap<>()); m.put(from, type); pending_requests.put(to, m); - + Stack<Player> s1 = last_request.getOrDefault(from, new Stack<>()); s1.push(to); last_request.put(from, s1); - + Stack<Player> s2 = last_request_got.getOrDefault(to, new Stack<>()); s2.push(from); last_request_got.put(to, s2); } - + private void notifyAskie(Player to, Player from, TPAType type) { ChatAPI.createMessage(to) .appendText(getLogger().getPrefix() + "&e" + from.getDisplayName() @@ -404,7 +410,7 @@ public class Teleport implements Module, Listener .appendSendChatHover("&cDeny", "/tpdeny " + from.getName(), "&eClick to &cDeny") .send(); } - + private Player getLastRequest(Player from) { Stack<Player> stack = last_request.get(from); if (stack == null) @@ -416,7 +422,7 @@ public class Teleport implements Module, Listener last_request.put(from, stack); return toReturn; } - + private Player getLastRequestGot(Player to) { Stack<Player> stack = last_request_got.get(to); if (stack == null) @@ -428,16 +434,16 @@ public class Teleport implements Module, Listener last_request_got.put(to, stack); return toReturn; } - + private void clearRequest(Player to, Player from) { Stack<Player> s1 = last_request.get(from); Stack<Player> s2 = last_request_got.get(to); Map<Player, TPAType> m = pending_requests.get(to); - + s1.remove(to); s2.remove(from); m.remove(from); - + if (s1.isEmpty()) last_request.remove(from); else @@ -449,17 +455,17 @@ public class Teleport implements Module, Listener if (m.isEmpty()) pending_requests.remove(from); else - pending_requests.put(from, m); + pending_requests.put(from, m); } - + @EventHandler public void onPlayerQuit(PlayerQuitEvent event) { Player p = event.getPlayer(); - + pending_requests.remove(p); last_request.remove(p); last_request_got.remove(p); - + Iterator<Player> pr_iterator = pending_requests.keySet().iterator(); while (pr_iterator.hasNext()) { Player fl = pr_iterator.next(); @@ -470,7 +476,7 @@ public class Teleport implements Module, Listener else pending_requests.put(fl, m); } - + Iterator<Player> lr_iterator = last_request.keySet().iterator(); while (lr_iterator.hasNext()) { Player fl = lr_iterator.next(); @@ -481,7 +487,7 @@ public class Teleport implements Module, Listener else last_request.put(fl, s); } - + Iterator<Player> lrg_iterator = last_request_got.keySet().iterator(); while (lrg_iterator.hasNext()) { Player fl = lrg_iterator.next(); |