diff options
author | David <david@panic.tk> | 2018-11-07 23:50:06 +0100 |
---|---|---|
committer | David <david@panic.tk> | 2018-11-07 23:50:06 +0100 |
commit | 604cf01967ede98bf5024e4926bb0777fc4e8eee (patch) | |
tree | e2fa63d7e683769ee3bf3eddc75280648e92eb04 /src/main/java/com/redstoner/modules/discord | |
parent | e86c52ef7c0e1e33c6af0e8674b038976bec11cc (diff) |
Converted Modules to gradle
Diffstat (limited to 'src/main/java/com/redstoner/modules/discord')
-rw-r--r-- | src/main/java/com/redstoner/modules/discord/Discord.cmd | 8 | ||||
-rw-r--r-- | src/main/java/com/redstoner/modules/discord/Discord.java | 118 |
2 files changed, 126 insertions, 0 deletions
diff --git a/src/main/java/com/redstoner/modules/discord/Discord.cmd b/src/main/java/com/redstoner/modules/discord/Discord.cmd new file mode 100644 index 0000000..a3e1af5 --- /dev/null +++ b/src/main/java/com/redstoner/modules/discord/Discord.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; + } +} diff --git a/src/main/java/com/redstoner/modules/discord/Discord.java b/src/main/java/com/redstoner/modules/discord/Discord.java new file mode 100644 index 0000000..9d87bc0 --- /dev/null +++ b/src/main/java/com/redstoner/modules/discord/Discord.java @@ -0,0 +1,118 @@ +package com.redstoner.modules.discord; + +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 Discord implements Module { + + 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 final String tokenCharacters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; + private SecureRandom rnd = new SecureRandom(); + + @SuppressWarnings("unchecked") + @Override + public boolean onEnable() { + savefile = new File(Main.plugin.getDataFolder(), FILENAME); + + discordTables = JsonManager.getObject(savefile); + + if (discordTables == null) { + discordTables = new JSONObject(); + discordTables.put("joinLink", DNE_LINK); + save(); + } + + 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") + @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("\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.\n") + .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 |