From bb513183d89b52d8fab21d9d55aca4c2a37443f2 Mon Sep 17 00:00:00 2001 From: Minenash Date: Thu, 31 Jan 2019 16:32:03 -0500 Subject: Added load message for BlockPlaceMods to startup --- src/main/java/com/redstoner/modules/blockplacemods/BlockPlaceMods.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 mods = new HashMap<>(); private static final List 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!"); } -- cgit v1.2.3 From de5de16ffbebcd674d54f4e2c1280f91592129ff Mon Sep 17 00:00:00 2001 From: Minenash Date: Thu, 31 Jan 2019 16:32:27 -0500 Subject: Fixed Warnings for Mail Module --- src/main/java/com/redstoner/modules/mail/Mail.java | 3 --- src/main/java/com/redstoner/modules/mail/Msg.java | 24 +++++++++++----------- 2 files changed, 12 insertions(+), 15 deletions(-) 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() { -- cgit v1.2.3 From ea7236738c6962206981c49ab6074864f27f3978 Mon Sep 17 00:00:00 2001 From: Minenash Date: Thu, 31 Jan 2019 16:33:03 -0500 Subject: Made Friends Module work again (but better). --- .../java/com/redstoner/modules/friends/Friends.cmd | 22 +- .../com/redstoner/modules/friends/Friends.java | 233 +++++++++++++-------- 2 files changed, 163 insertions(+), 92 deletions(-) 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..b38238b 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,46 @@ 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 = 0, 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); } @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 +82,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 +99,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 +134,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 +171,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 +193,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 +228,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 +266,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 +297,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; } -- cgit v1.2.3 From 83abc117a75c4dab7dcfc9c23e2ad9ad8af6e692 Mon Sep 17 00:00:00 2001 From: Minenash Date: Thu, 31 Jan 2019 19:01:38 -0500 Subject: Fixed ntoification not being deleted after being viewed --- src/main/java/com/redstoner/modules/friends/Friends.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/redstoner/modules/friends/Friends.java b/src/main/java/com/redstoner/modules/friends/Friends.java index b38238b..16ca023 100644 --- a/src/main/java/com/redstoner/modules/friends/Friends.java +++ b/src/main/java/com/redstoner/modules/friends/Friends.java @@ -32,7 +32,7 @@ import net.nemez.chatapi.click.Message; @AutoRegisterListener @Commands(CommandHolderType.File) -@Version(major = 5, minor = 1, revision = 0, compatible = 4) +@Version(major = 5, minor = 1, revision = 1, compatible = 4) public class Friends implements CoreModule, Listener { private static int GROUP_PREFIX_LENGETH = 6; @@ -55,6 +55,8 @@ public class Friends implements CoreModule, Listener { 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) -- cgit v1.2.3 From a725f1376b18fe04c050281765c3978859099761 Mon Sep 17 00:00:00 2001 From: Minenash Date: Thu, 31 Jan 2019 19:01:53 -0500 Subject: Changed the cost for /name and /lore --- .../java/com/redstoner/modules/naming/Naming.java | 51 ++++++++++++++-------- 1 file changed, 32 insertions(+), 19 deletions(-) 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 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; + } } -- cgit v1.2.3 From 0061411a575862256b51f0cf6fffa0bae9fa5d08 Mon Sep 17 00:00:00 2001 From: Minenash Date: Sun, 3 Feb 2019 17:20:59 -0500 Subject: LoginSecurity: Censored passwords from logs --- .../java/com/redstoner/modules/loginsecurity/LoginSecurity.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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 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; } -- cgit v1.2.3 From 0855c20394a12fc601952f1b31dac87b0f6da762 Mon Sep 17 00:00:00 2001 From: Logan Fick Date: Thu, 7 Feb 2019 16:10:12 -0500 Subject: Added Gradle wrapper. --- gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 56172 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 172 +++++++++++++++++++++++++++++++ gradlew.bat | 84 +++++++++++++++ 4 files changed, 261 insertions(+) create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..28861d2 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..115e6ac --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..cccdd3d --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..e95643d --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega -- cgit v1.2.3 From ff315a1b512b450706028d3aed20a10cb08e872b Mon Sep 17 00:00:00 2001 From: Logan Fick Date: Fri, 8 Feb 2019 19:16:58 -0500 Subject: Updated dependencies. --- build.gradle | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 1227eac..e35eee1 100644 --- a/build.gradle +++ b/build.gradle @@ -14,10 +14,9 @@ repositories { } dependencies { - implementation "com.github.RedstonerServer:ModuleLoader:gradle-SNAPSHOT" - implementation "com.github.RedstonerServer:CommandManager:master-SNAPSHOT" - implementation "com.github.RedstonerServer:ChatAPI:master-SNAPSHOT" - implementation "com.github.RedstonerServer:ChestAPI:master-SNAPSHOT" + implementation "com.github.RedstonerServer:ModuleLoader:v5.2.1" + implementation "com.github.RedstonerServer:CommandManager:v1" + implementation "com.github.RedstonerServer:ChatAPI:v1" compileOnly 'org.spigotmc:spigot-api:1.13.2-R0.1-SNAPSHOT' } -- cgit v1.2.3 From bb18b838c6093a1c93c21b7c86ff2d894464c662 Mon Sep 17 00:00:00 2001 From: Minenash Date: Sun, 17 Feb 2019 23:34:19 -0500 Subject: Added paging to /lol search and /lol match. This also fixed a bug where if there was too many results, then the server would refuse to send the message. --- .../java/com/redstoner/modules/saylol/Saylol.cmd | 5 + .../java/com/redstoner/modules/saylol/Saylol.java | 133 +++++++++++++++++---- 2 files changed, 112 insertions(+), 26 deletions(-) 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 . 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> 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 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 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 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 to look at other pages."); + m.send(); + + return true; + } + + @Command(hook = "page") + public boolean page(CommandSender sender, int page) { + List 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); -- cgit v1.2.3 From 3bf818e496badb6c53eacde33a183b6fef00d6ef Mon Sep 17 00:00:00 2001 From: Minenash Date: Fri, 1 Mar 2019 21:25:29 -0500 Subject: Changed the word used for players with the Trusted Rank in /list --- src/main/java/com/redstoner/modules/list/List.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); -- cgit v1.2.3 From 815ebf08ac0645e694a4e6471c78b832cc57d2db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Pani=C4=87?= Date: Sat, 9 Mar 2019 21:58:23 +0100 Subject: Fixed players being able to teleport other players. --- .../com/redstoner/modules/teleport/Teleport.java | 168 +++++++++++---------- 1 file changed, 87 insertions(+), 81 deletions(-) diff --git a/src/main/java/com/redstoner/modules/teleport/Teleport.java b/src/main/java/com/redstoner/modules/teleport/Teleport.java index 73f03bd..859d188 100644 --- a/src/main/java/com/redstoner/modules/teleport/Teleport.java +++ b/src/main/java/com/redstoner/modules/teleport/Teleport.java @@ -30,24 +30,24 @@ import net.nemez.chatapi.ChatAPI; 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> pending_requests = new HashMap<>(); private Map> last_request = new HashMap<>(); private Map> 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 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 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 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 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 m = pending_requests.getOrDefault(to, new HashMap<>()); m.put(from, type); pending_requests.put(to, m); - + Stack s1 = last_request.getOrDefault(from, new Stack<>()); s1.push(to); last_request.put(from, s1); - + Stack 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 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 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 s1 = last_request.get(from); Stack s2 = last_request_got.get(to); Map 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 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 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 lrg_iterator = last_request_got.keySet().iterator(); while (lrg_iterator.hasNext()) { Player fl = lrg_iterator.next(); -- cgit v1.2.3 From 7f6ebc61c3e15e88826ec1f71d226fb017b42af3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Pani=C4=87?= Date: Sat, 9 Mar 2019 22:06:40 +0100 Subject: Incremented version revision to 3 --- src/main/java/com/redstoner/modules/teleport/Teleport.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/redstoner/modules/teleport/Teleport.java b/src/main/java/com/redstoner/modules/teleport/Teleport.java index 859d188..5313427 100644 --- a/src/main/java/com/redstoner/modules/teleport/Teleport.java +++ b/src/main/java/com/redstoner/modules/teleport/Teleport.java @@ -26,7 +26,7 @@ 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"; -- cgit v1.2.3