From e01136669249b3ae2afbdcc82c2b77be0a8c2a08 Mon Sep 17 00:00:00 2001 From: Minenash Date: Sun, 28 Oct 2018 16:24:21 -0400 Subject: [PATCH 1/4] Added /discord --- .../redstoner/modules/external/External.cmd | 8 ++ .../redstoner/modules/external/External.java | 96 +++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 src/com/redstoner/modules/external/External.cmd create mode 100644 src/com/redstoner/modules/external/External.java diff --git a/src/com/redstoner/modules/external/External.cmd b/src/com/redstoner/modules/external/External.cmd new file mode 100644 index 0000000..77a962c --- /dev/null +++ b/src/com/redstoner/modules/external/External.cmd @@ -0,0 +1,8 @@ +command discord { + [empty] { + perm utils.external.discord + help Info, Register Instructions and Token for the Discord; + run discord; + type player; + } +} \ No newline at end of file diff --git a/src/com/redstoner/modules/external/External.java b/src/com/redstoner/modules/external/External.java new file mode 100644 index 0000000..ae9a099 --- /dev/null +++ b/src/com/redstoner/modules/external/External.java @@ -0,0 +1,96 @@ +package com.redstoner.modules.external; + +import java.io.File; +import java.security.SecureRandom; + +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.json.simple.JSONObject; + +import net.nemez.chatapi.click.Message; + +import com.nemez.cmdmgr.Command; +import com.redstoner.annotations.Commands; +import com.redstoner.annotations.Version; +import com.redstoner.misc.CommandHolderType; +import com.redstoner.modules.Module; +import com.redstoner.misc.JsonManager; +import com.redstoner.misc.Main; + +@Commands(CommandHolderType.File) +@Version(major = 4, minor = 0, revision = 0, compatible = 4) +public class External implements Module { + + private static final String FILENAME = "discordTokens.json"; + + private JSONObject discordTables; + private JSONObject byToken; + private JSONObject byUUID; + private File savefile; + + private static final String tokenCharacters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + private static SecureRandom rnd = new SecureRandom(); + + @SuppressWarnings("unchecked") + @Override + public void postEnable() { + savefile = new File(Main.plugin.getDataFolder(), FILENAME); + + discordTables = JsonManager.getObject(savefile); + + if (discordTables == null) { + discordTables = new JSONObject(); + discordTables.put("ByToken", new JSONObject()); + discordTables.put("ByUUID", new JSONObject()); + } + + byToken = (JSONObject) discordTables.get("ByToken"); + byUUID = (JSONObject) discordTables.get("ByUUID"); + } + + @SuppressWarnings("unchecked") + @Command(hook = "discord") + public void discord(CommandSender sender) { + Player p = (Player) sender; + String pUUID = p.getUniqueId().toString(); + + Object tokenObject = byUUID.get(pUUID); + String token = tokenObject == null? null : (String) tokenObject; + + if (token == null) { + + token = randomToken(8); + Object UUIDObject = byToken.get(token); + + while (UUIDObject != null) { + token = randomToken(8); + UUIDObject = byToken.get(token); + } + byUUID.put(pUUID, token); + byToken.put(token, pUUID); + save(); + } + + new Message(sender, null).appendText("&cRedstoner&7 has a &2Discord&7 Now! \nClick ") + .appendLinkHover("&ehttps://discord.gg/jma7Y2y", "https://discord.gg/jma7Y2y", "&aClick to Join") + .appendText("&7 to join. \n\nTo sync you rank, copy ") + .appendSuggestHover("&e" + token, token, "&aClick to Copy") + .appendText("&7 into &3#rank-sync&7.") + .send(); + } + + private String randomToken(int length){ + StringBuilder sb = new StringBuilder( length ); + for( int i = 0; i < length; i++ ) + sb.append( tokenCharacters.charAt( rnd.nextInt(tokenCharacters.length()) ) ); + return sb.toString(); + } + + @SuppressWarnings("unchecked") + private void save() { + + discordTables.put("ByToken", byToken); + discordTables.put("ByUUID", byUUID); + JsonManager.save(discordTables, savefile); + } +} \ No newline at end of file From c2781966d0028f2197c8ea754d75a55242694a1d Mon Sep 17 00:00:00 2001 From: Minenash Date: Sun, 28 Oct 2018 16:26:36 -0400 Subject: [PATCH 2/4] Added missing comma --- src/com/redstoner/modules/external/External.cmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/redstoner/modules/external/External.cmd b/src/com/redstoner/modules/external/External.cmd index 77a962c..a3e1af5 100644 --- a/src/com/redstoner/modules/external/External.cmd +++ b/src/com/redstoner/modules/external/External.cmd @@ -1,8 +1,8 @@ command discord { [empty] { perm utils.external.discord - help Info, Register Instructions and Token for the Discord; + help Info, Register Instructions, and Token for the Discord; run discord; type player; } -} \ No newline at end of file +} From 2b7e7222f11df8ba949c35606e2398474eb020f9 Mon Sep 17 00:00:00 2001 From: Minenash Date: Sun, 28 Oct 2018 17:33:53 -0400 Subject: [PATCH 3/4] Added an entry for the Discord Join Link, in the storage file. --- .../redstoner/modules/external/External.java | 48 ++++++++++++++----- 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/src/com/redstoner/modules/external/External.java b/src/com/redstoner/modules/external/External.java index ae9a099..b547a15 100644 --- a/src/com/redstoner/modules/external/External.java +++ b/src/com/redstoner/modules/external/External.java @@ -21,31 +21,53 @@ import com.redstoner.misc.Main; @Version(major = 4, minor = 0, revision = 0, compatible = 4) public class External implements Module { - private static final String FILENAME = "discordTokens.json"; + private final String FILENAME = "discordTokens.json"; + private final String DNE_LINK = "dne://"; private JSONObject discordTables; private JSONObject byToken; private JSONObject byUUID; + + private String joinLink; private File savefile; - private static final String tokenCharacters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - private static SecureRandom rnd = new SecureRandom(); + private final String tokenCharacters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + private SecureRandom rnd = new SecureRandom(); @SuppressWarnings("unchecked") @Override - public void postEnable() { + public boolean onEnable() { savefile = new File(Main.plugin.getDataFolder(), FILENAME); discordTables = JsonManager.getObject(savefile); if (discordTables == null) { discordTables = new JSONObject(); - discordTables.put("ByToken", new JSONObject()); - discordTables.put("ByUUID", new JSONObject()); + discordTables.put("joinLink", DNE_LINK); + save(); } - byToken = (JSONObject) discordTables.get("ByToken"); - byUUID = (JSONObject) discordTables.get("ByUUID"); + Object joinLinkObject = discordTables.get("joinLink"); + + if (joinLinkObject == null || ((String) joinLinkObject).equals(DNE_LINK)) { + getLogger().error("Missing Join Link. Set: \"joinLink\" to \"_joinLink_\" in the discordTokens.json file."); + return false; + } + + joinLink = (String) joinLinkObject; + + Object byTokenObject = discordTables.get("byToken"); + + if (byTokenObject == null) { + discordTables.put("byToken", new JSONObject()); + discordTables.put("byUUID", new JSONObject()); + } + + byToken = (JSONObject) discordTables.get("byToken"); + byUUID = (JSONObject) discordTables.get("byUUID"); + + return true; + } @SuppressWarnings("unchecked") @@ -71,11 +93,11 @@ public class External implements Module { save(); } - new Message(sender, null).appendText("&cRedstoner&7 has a &2Discord&7 Now! \nClick ") - .appendLinkHover("&ehttps://discord.gg/jma7Y2y", "https://discord.gg/jma7Y2y", "&aClick to Join") + new Message(sender, null).appendText("\n&cRedstoner&7 has a &2Discord&7 Now! \nClick ") + .appendLinkHover("&e" + joinLink, joinLink, "&aClick to Join") .appendText("&7 to join. \n\nTo sync you rank, copy ") .appendSuggestHover("&e" + token, token, "&aClick to Copy") - .appendText("&7 into &3#rank-sync&7.") + .appendText("&7 into &3#rank-sync&7.\n") .send(); } @@ -89,8 +111,8 @@ public class External implements Module { @SuppressWarnings("unchecked") private void save() { - discordTables.put("ByToken", byToken); - discordTables.put("ByUUID", byUUID); + discordTables.put("byToken", byToken); + discordTables.put("byUUID", byUUID); JsonManager.save(discordTables, savefile); } } \ No newline at end of file From d1e90627b5fdd6fbcebdeff4f0192fe00241dd7d Mon Sep 17 00:00:00 2001 From: Minenash Date: Sun, 28 Oct 2018 17:47:16 -0400 Subject: [PATCH 4/4] Renamed Module --- .../modules/{external/External.cmd => discord/Discord.cmd} | 0 .../modules/{external/External.java => discord/Discord.java} | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/com/redstoner/modules/{external/External.cmd => discord/Discord.cmd} (100%) rename src/com/redstoner/modules/{external/External.java => discord/Discord.java} (97%) diff --git a/src/com/redstoner/modules/external/External.cmd b/src/com/redstoner/modules/discord/Discord.cmd similarity index 100% rename from src/com/redstoner/modules/external/External.cmd rename to src/com/redstoner/modules/discord/Discord.cmd diff --git a/src/com/redstoner/modules/external/External.java b/src/com/redstoner/modules/discord/Discord.java similarity index 97% rename from src/com/redstoner/modules/external/External.java rename to src/com/redstoner/modules/discord/Discord.java index b547a15..9d87bc0 100644 --- a/src/com/redstoner/modules/external/External.java +++ b/src/com/redstoner/modules/discord/Discord.java @@ -1,4 +1,4 @@ -package com.redstoner.modules.external; +package com.redstoner.modules.discord; import java.io.File; import java.security.SecureRandom; @@ -19,7 +19,7 @@ import com.redstoner.misc.Main; @Commands(CommandHolderType.File) @Version(major = 4, minor = 0, revision = 0, compatible = 4) -public class External implements Module { +public class Discord implements Module { private final String FILENAME = "discordTokens.json"; private final String DNE_LINK = "dne://";