summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinenash <minenash@protonmail.com>2019-01-31 16:33:03 -0500
committerMinenash <minenash@protonmail.com>2019-01-31 16:33:03 -0500
commitea7236738c6962206981c49ab6074864f27f3978 (patch)
treedb0ce2a35aab772c1cc7e6cb6e678e18fafd4a86
parentde5de16ffbebcd674d54f4e2c1280f91592129ff (diff)
Made Friends Module work again (but better).
-rw-r--r--src/main/java/com/redstoner/modules/friends/Friends.cmd22
-rw-r--r--src/main/java/com/redstoner/modules/friends/Friends.java233
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;
}