From e760d9dabf96e58b9a75be582d047f08e4e75399 Mon Sep 17 00:00:00 2001 From: Ashleyz4 Date: Wed, 30 Oct 2019 02:36:49 -0500 Subject: [PATCH 1/3] 1.4.1 --- .../discordGameBridge/ConfigReader.java | 206 +++++++++--------- .../discordGameBridge/DiscordBot.java | 59 ++--- 2 files changed, 124 insertions(+), 141 deletions(-) diff --git a/src/com/johnymuffin/discordGameBridge/ConfigReader.java b/src/com/johnymuffin/discordGameBridge/ConfigReader.java index f143c6d..e2b58f5 100644 --- a/src/com/johnymuffin/discordGameBridge/ConfigReader.java +++ b/src/com/johnymuffin/discordGameBridge/ConfigReader.java @@ -1,103 +1,103 @@ -package com.johnymuffin.discordGameBridge; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.Properties; - -class ConfigReader { - // New Config - - //discord.Discord().DiscordSendToChannel(gameBridge, - //"**" + ((PlayerJoinEvent) event).getPlayer().getName() + "** Has Joined The Game [" - //+ Bukkit.getServer().getOnlinePlayers().length + "/" - //+ Bukkit.getServer().getMaxPlayers() + "]"); - - private static String discordChatMessage = "&f[&6Discord&f]&7 %messageAuthor%: %message%"; - private static String gameChatMessage = "**%messageAuthor%**: %message%"; - private static String joinMessage = "**%username%** Has Joined THe Game [%onlineCount%/%maxCount%]"; - private static String quitMessage = "**%username%** Has Quit THe Game [%onlineCount%/%maxCount%]"; - - private static String serverName = ""; - private static String channelID = ""; - private static Boolean PrensencePlayercount = Boolean.TRUE; - private static Boolean OnlineCommand = Boolean.TRUE; - - ConfigReader(DiscordBot instance) { - Properties prop = new Properties(); - - try { - prop.load(new FileInputStream(instance.config)); - } catch (FileNotFoundException var4) { - instance.logger.warning("[RetroBot] No properties found! Making new file..."); - var4.printStackTrace(); - } catch (IOException var5) { - var5.printStackTrace(); - } - // New Config - serverName = prop.getProperty("serverName", serverName); - channelID = prop.getProperty("channelID", channelID); - PrensencePlayercount = Boolean.valueOf(Boolean.parseBoolean(prop.getProperty("PrensencePlayercount", "" + PrensencePlayercount))); - OnlineCommand = Boolean.valueOf(Boolean.parseBoolean(prop.getProperty("OnlineCommand", "" + OnlineCommand))); - //Join Custom Message - joinMessage = prop.getProperty("joinMessage", joinMessage); - prop.setProperty("joinMessage", joinMessage); - //Quit Custom Message - quitMessage = prop.getProperty("quitMessage", quitMessage); - prop.setProperty("quitMessage", quitMessage); - //Discord Chat Message - discordChatMessage = prop.getProperty("discordChatMessage", discordChatMessage); - prop.setProperty("discordChatMessage", discordChatMessage); - //Game Chat Message - gameChatMessage = prop.getProperty("gameChatMessage", gameChatMessage); - prop.setProperty("gameChatMessage", gameChatMessage); - - prop.setProperty("OnlineCommand", "" + OnlineCommand); - prop.setProperty("PrensencePlayercount", "" + PrensencePlayercount); - prop.setProperty("channelID", channelID); - prop.setProperty("serverName", serverName); - - try { - prop.store(new FileOutputStream(instance.config), "Properties for DiscordBot"); - } catch (Exception var3) { - instance.logger.severe("Failed to save properties for RetroBot!"); - var3.printStackTrace(); - } - } - - String getServerName() { - return serverName; - } - - String getChannel() { - return channelID; - } - - String getJoinMessage() { - return joinMessage; - } - String getQuitMessage() { - return quitMessage; - } - String getDiscordChatMessage() { - return discordChatMessage; - } - String getGameChatMessage() { - return gameChatMessage; - } - - Boolean getPrensencePlayercount() { - return PrensencePlayercount; - - } - Boolean getOnlineCommand() { - return OnlineCommand; - - } - - void onDisable() { - channelID = null; - serverName = null; - } -} +package com.johnymuffin.discordGameBridge; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Properties; + +class ConfigReader { + // New Config + + //discord.Discord().DiscordSendToChannel(gameBridge, + //"**" + ((PlayerJoinEvent) event).getPlayer().getName() + "** Has Joined The Game [" + //+ Bukkit.getServer().getOnlinePlayers().length + "/" + //+ Bukkit.getServer().getMaxPlayers() + "]"); + + private String discordChatMessage = "&f[&6Discord&f]&7 %messageAuthor%: %message%"; + private String gameChatMessage = "**%messageAuthor%**: %message%"; + private String joinMessage = "**%username%** Has Joined THe Game [%onlineCount%/%maxCount%]"; + private String quitMessage = "**%username%** Has Quit THe Game [%onlineCount%/%maxCount%]"; + + private String serverName = ""; + private String channelID = ""; + private Boolean PrensencePlayercount = true; + private Boolean OnlineCommand = true; + private boolean announceStartStop = true; + + ConfigReader(DiscordBot instance) { + Properties prop = new Properties(); + + try { + prop.load(new FileInputStream(instance.config)); + } catch (IOException var4) { + instance.logger.warning("[RetroBot] No properties found! Making new file..."); + var4.printStackTrace(); + } + // New Config + serverName = prop.getProperty("serverName", serverName); + channelID = prop.getProperty("channelID", channelID); + PrensencePlayercount = Boolean.parseBoolean(prop.getProperty("PrensencePlayercount", "" + PrensencePlayercount)); + OnlineCommand = Boolean.parseBoolean(prop.getProperty("OnlineCommand", "" + OnlineCommand)); + announceStartStop = Boolean.parseBoolean(prop.getProperty("announceStartStop", "" + announceStartStop)); + //Join Custom Message + joinMessage = prop.getProperty("joinMessage", joinMessage); + prop.setProperty("joinMessage", joinMessage); + //Quit Custom Message + quitMessage = prop.getProperty("quitMessage", quitMessage); + prop.setProperty("quitMessage", quitMessage); + //Discord Chat Message + discordChatMessage = prop.getProperty("discordChatMessage", discordChatMessage); + prop.setProperty("discordChatMessage", discordChatMessage); + //Game Chat Message + gameChatMessage = prop.getProperty("gameChatMessage", gameChatMessage); + prop.setProperty("gameChatMessage", gameChatMessage); + //Announce Server Start/Stop + + prop.setProperty("OnlineCommand", "" + OnlineCommand); + prop.setProperty("PrensencePlayercount", "" + PrensencePlayercount); + prop.setProperty("channelID", channelID); + prop.setProperty("serverName", serverName); + prop.setProperty("announceStartStop", ""+announceStartStop); + + try { + prop.store(new FileOutputStream(instance.config), "Properties for DiscordBot"); + } catch (Exception var3) { + instance.logger.severe("Failed to save properties for RetroBot!"); + var3.printStackTrace(); + } + } + + String getServerName() { + return this.serverName; + } + + String getChannel() { + return this.channelID; + } + + String getJoinMessage() { + return this.joinMessage; + } + String getQuitMessage() { + return this.quitMessage; + } + String getDiscordChatMessage() { + return this.discordChatMessage; + } + String getGameChatMessage() { + return this.gameChatMessage; + } + + Boolean getPrensencePlayercount() { + return this.PrensencePlayercount; + + } + Boolean getOnlineCommand() { + return this.OnlineCommand; + } + + boolean canAnnounceStartStop() { + return announceStartStop; + } +} \ No newline at end of file diff --git a/src/com/johnymuffin/discordGameBridge/DiscordBot.java b/src/com/johnymuffin/discordGameBridge/DiscordBot.java index 1689202..d35b377 100644 --- a/src/com/johnymuffin/discordGameBridge/DiscordBot.java +++ b/src/com/johnymuffin/discordGameBridge/DiscordBot.java @@ -33,7 +33,6 @@ public class DiscordBot extends JavaPlugin implements Listener, EventListener { Boolean botEnabled = false; private ConfigReader configReader; private int taskId = 0; - private DiscordBot plugin; public static final String PLUGIN_FOLDER = "./plugins/DiscordBot"; private File pluginFolder = new File("./plugins/DiscordBot"); @@ -55,34 +54,41 @@ public void onLoad() { } } + private void quickSend(String s) { + discord.Discord().DiscordSendToChannel(gameBridge, s); + } + public void onEnable() { this.configReader = new ConfigReader(this); this.logger = this.getServer().getLogger(); this.logger.info("[DiscordBot] Enabling DiscordBot..."); discord = (DiscordCore) getServer().getPluginManager().getPlugin("DiscordCore"); + JDA jda = discord.Discord().jda; gameBridge = this.configReader.getChannel(); serverName = this.configReader.getServerName(); // Custom Messages discordChatMessage = this.configReader.getDiscordChatMessage(); - if (!gameBridge.isEmpty() && !serverName.isEmpty()) { - botEnabled = true; - discord.Discord().DiscordSendToChannel(gameBridge, "**SERVER HAS STARTED** :yes:"); - discord.Discord().jda.addEventListener(this); - } else { + // Since this didn't work properly, the server start status has been moved down + if (gameBridge.isEmpty() || serverName.isEmpty()) { this.logger.info("---------------------------[DiscordBot]---------------------------"); - this.logger.info("Please provide a Servername and Channel for the Link"); + this.logger.info("Please provide a ServerName and Channel for the Link"); this.logger.info("------------------------------------------------------------------"); } - if (configReader.getPrensencePlayercount() == true) { + if (configReader.getPrensencePlayercount()) { System.out.println("[DiscordBot] Discord Player Timer Has Started"); Bukkit.getServer().broadcastMessage("Discord Player Timer Has Started"); taskId = this.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() { public void run() { - if (discord.Discord().jda.getStatus() == JDA.Status.CONNECTED) { - discord.Discord().jda.getPresence().setGame(Game.playing( - serverName + " With " + Bukkit.getServer().getOnlinePlayers().length + " Players")); + if (jda.getStatus() == JDA.Status.CONNECTED) { + // There's no good way to announce the server was stopped as of now. + if(configReader.canAnnounceStartStop() && !botEnabled) { + quickSend("**SERVER HAS STARTED**"); + jda.addEventListener(this); + botEnabled = true; + } + jda.getPresence().setGame(Game.playing(serverName + " With " + Bukkit.getServer().getOnlinePlayers().length + " Players")); } } }, 0L, 20*60); @@ -90,16 +96,16 @@ public void run() { //Player Events - final GamePlayerEvents GamePlayerEvents = new GamePlayerEvents(plugin, discord, configReader); + final GamePlayerEvents GamePlayerEvents = new GamePlayerEvents(this, discord, configReader); getServer().getPluginManager().registerEvent(Event.Type.PLAYER_JOIN, GamePlayerEvents, Priority.Lowest, this); getServer().getPluginManager().registerEvent(Event.Type.PLAYER_QUIT, GamePlayerEvents, Priority.Lowest, this); getServer().getPluginManager().registerEvent(Type.PLAYER_CHAT, GamePlayerEvents, Priority.Lowest, this); } public void onDisable() { - discord.Discord().DiscordSendToChannel(gameBridge, "**SERVER HAS STOPPED** :no:"); + quickSend("**SERVER HAS STOPPED** :no:"); this.logger.info("[DiscordBot] Successfully stopped!"); - // if (configReader.getPrensencePlayercount() == true) { + // if (configReader.getPrensencePlayercount()) { Bukkit.getServer().getScheduler().cancelTask(taskId); // } } @@ -153,27 +159,4 @@ public void onEvent(net.dv8tion.jda.core.events.Event event) { } } - -// public boolean onCommand(CommandSender cs, Command cmdObj, String label, String[] args) { -// String cmd = cmdObj.getName(); -// if (cmd.equalsIgnoreCase("discordchatreload")) { -// if (cs.hasPermission("retro.discordchatreload")) { -// this.configReader = new ConfigReader(this); -// gameBridge = this.configReader.getChannel(); -// serverName = this.configReader.getServerName(); -// // Custom Messages -// discordChatMessage = this.configReader.getDiscordChatMessage(); -// gameChatMessage = this.configReader.getGameChatMessage(); -// joinMessage = this.configReader.getJoinMessage(); -// quitMessage = this.configReader.getQuitMessage(); -// cs.sendMessage("Discord Chat Bridge has been reloaded, please do restart tho when you are done testing"); -// return true; -// } else { -// cs.sendMessage(ChatColor.RED + "GG mate, no perms tho :("); -// return true; -// } -// } else { -// return false; -// } -// } -} \ No newline at end of file +} From 8b706fccdbaac1974aa50c9daad2ba5fb7955477 Mon Sep 17 00:00:00 2001 From: Ashleyz4 Date: Wed, 30 Oct 2019 02:40:18 -0500 Subject: [PATCH 2/3] 1.4.1 fix --- src/com/johnymuffin/discordGameBridge/DiscordBot.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/com/johnymuffin/discordGameBridge/DiscordBot.java b/src/com/johnymuffin/discordGameBridge/DiscordBot.java index d35b377..6044883 100644 --- a/src/com/johnymuffin/discordGameBridge/DiscordBot.java +++ b/src/com/johnymuffin/discordGameBridge/DiscordBot.java @@ -83,8 +83,9 @@ public void onEnable() { public void run() { if (jda.getStatus() == JDA.Status.CONNECTED) { // There's no good way to announce the server was stopped as of now. - if(configReader.canAnnounceStartStop() && !botEnabled) { - quickSend("**SERVER HAS STARTED**"); + if(!botEnabled) { + if(configReader.canAnnounceStartStop()) + quickSend("**SERVER HAS STARTED**"); jda.addEventListener(this); botEnabled = true; } From b019d3b61e47def6d787f095d63c517504949c9f Mon Sep 17 00:00:00 2001 From: Ashleyz4 Date: Wed, 30 Oct 2019 20:31:35 -0500 Subject: [PATCH 3/3] 1.4.2 Fixed "SERVER HAS STARTED" bug Updated chatmessage config variable viable with %GROUP% --- .../discordGameBridge/DiscordBot.java | 25 +++- .../discordGameBridge/GamePlayerEvents.java | 139 ++++++++++-------- 2 files changed, 97 insertions(+), 67 deletions(-) diff --git a/src/com/johnymuffin/discordGameBridge/DiscordBot.java b/src/com/johnymuffin/discordGameBridge/DiscordBot.java index 6044883..dcf9096 100644 --- a/src/com/johnymuffin/discordGameBridge/DiscordBot.java +++ b/src/com/johnymuffin/discordGameBridge/DiscordBot.java @@ -30,7 +30,7 @@ public class DiscordBot extends JavaPlugin implements Listener, EventListener { // Custom Messages private String discordChatMessage = ""; - Boolean botEnabled = false; + private static Boolean botEnabled = false; private ConfigReader configReader; private int taskId = 0; @@ -38,7 +38,13 @@ public class DiscordBot extends JavaPlugin implements Listener, EventListener { private File pluginFolder = new File("./plugins/DiscordBot"); File config; + private static DiscordBot instance; + public static DiscordBot getInstance() { + return instance; + } + public void onLoad() { + instance = this; this.config = new File(this.pluginFolder, "config.properties"); this.logger = getServer().getLogger(); if (!this.pluginFolder.exists() || !this.pluginFolder.exists()) { @@ -58,6 +64,7 @@ private void quickSend(String s) { discord.Discord().DiscordSendToChannel(gameBridge, s); } + private GamePlayerEvents events; public void onEnable() { this.configReader = new ConfigReader(this); this.logger = this.getServer().getLogger(); @@ -76,6 +83,7 @@ public void onEnable() { this.logger.info("------------------------------------------------------------------"); } + if (configReader.getPrensencePlayercount()) { System.out.println("[DiscordBot] Discord Player Timer Has Started"); Bukkit.getServer().broadcastMessage("Discord Player Timer Has Started"); @@ -84,10 +92,10 @@ public void run() { if (jda.getStatus() == JDA.Status.CONNECTED) { // There's no good way to announce the server was stopped as of now. if(!botEnabled) { + botEnabled = true; if(configReader.canAnnounceStartStop()) quickSend("**SERVER HAS STARTED**"); - jda.addEventListener(this); - botEnabled = true; + jda.addEventListener(instance); } jda.getPresence().setGame(Game.playing(serverName + " With " + Bukkit.getServer().getOnlinePlayers().length + " Players")); } @@ -97,17 +105,18 @@ public void run() { //Player Events - final GamePlayerEvents GamePlayerEvents = new GamePlayerEvents(this, discord, configReader); - getServer().getPluginManager().registerEvent(Event.Type.PLAYER_JOIN, GamePlayerEvents, Priority.Lowest, this); - getServer().getPluginManager().registerEvent(Event.Type.PLAYER_QUIT, GamePlayerEvents, Priority.Lowest, this); - getServer().getPluginManager().registerEvent(Type.PLAYER_CHAT, GamePlayerEvents, Priority.Lowest, this); + this.events = new GamePlayerEvents(this, discord, configReader); + getServer().getPluginManager().registerEvent(Event.Type.PLAYER_JOIN, events, Priority.Lowest, this); + getServer().getPluginManager().registerEvent(Event.Type.PLAYER_QUIT, events, Priority.Lowest, this); + getServer().getPluginManager().registerEvent(Type.PLAYER_CHAT, events, Priority.Lowest, this); } public void onDisable() { - quickSend("**SERVER HAS STOPPED** :no:"); + quickSend("**SERVER HAS STOPPED**"); this.logger.info("[DiscordBot] Successfully stopped!"); // if (configReader.getPrensencePlayercount()) { Bukkit.getServer().getScheduler().cancelTask(taskId); + discord.Discord().jda.removeEventListener(this); // } } diff --git a/src/com/johnymuffin/discordGameBridge/GamePlayerEvents.java b/src/com/johnymuffin/discordGameBridge/GamePlayerEvents.java index 2975add..fa71071 100644 --- a/src/com/johnymuffin/discordGameBridge/GamePlayerEvents.java +++ b/src/com/johnymuffin/discordGameBridge/GamePlayerEvents.java @@ -1,59 +1,80 @@ -package com.johnymuffin.discordGameBridge; - -import com.johnymuffin.discordcore.DiscordCore; -import org.bukkit.Bukkit; -import org.bukkit.event.player.PlayerChatEvent; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerListener; -import org.bukkit.event.player.PlayerQuitEvent; - -import java.util.regex.Pattern; - -public class GamePlayerEvents extends PlayerListener { - private DiscordBot plugin; - private DiscordCore dbc; - private ConfigReader config; - - public GamePlayerEvents(DiscordBot instance, DiscordCore plugin, ConfigReader configReader) { - - this.plugin = instance; - this.dbc = plugin; - this.config = configReader; - } - - @Override - public void onPlayerJoin(PlayerJoinEvent event) { - String message = config.getJoinMessage(); - message = message.replaceAll("%username%", event.getPlayer().getName()); - message = message.replaceAll("%onlineCount%", - Integer.toString(Bukkit.getServer().getOnlinePlayers().length)); - message = message.replaceAll("%maxCount%", Integer.toString(Bukkit.getServer().getMaxPlayers())); - dbc.Discord().DiscordSendToChannel(config.getChannel(), message); - - } - - @Override - public void onPlayerQuit(PlayerQuitEvent event) { - String message = config.getQuitMessage(); - message = message.replaceAll("%username%", event.getPlayer().getName()); - message = message.replaceAll("%onlineCount%", - Integer.toString(Bukkit.getServer().getOnlinePlayers().length - 1)); - message = message.replaceAll("%maxCount%", Integer.toString(Bukkit.getServer().getMaxPlayers())); - dbc.Discord().DiscordSendToChannel(config.getChannel(), message); - } - - @Override - public void onPlayerChat(PlayerChatEvent event) { - String message = config.getGameChatMessage(); - if(!event.isCancelled()) { - message = message.replaceAll("%messageAuthor%", event.getPlayer().getName()); - message = message.replaceAll("%message%", event.getMessage()); - message = message.replaceAll(Pattern.quote("@"), " "); - message = message.replaceAll(Pattern.quote("@everyone"), " "); - message = message.replaceAll(Pattern.quote("@here"), " "); - dbc.Discord().DiscordSendToChannel(config.getChannel(), message); - } - } - - -} +package com.johnymuffin.discordGameBridge; + +import com.johnymuffin.discordcore.DiscordCore; +import org.bukkit.Bukkit; +import org.bukkit.event.player.PlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerListener; +import org.bukkit.event.player.PlayerQuitEvent; +import ru.tehkode.permissions.PermissionManager; +import ru.tehkode.permissions.bukkit.PermissionsEx; + +import java.util.regex.Pattern; + +public class GamePlayerEvents extends PlayerListener { + private PermissionManager pex; + private DiscordBot plugin; + private DiscordCore dbc; + private ConfigReader config; + + public GamePlayerEvents(DiscordBot instance, DiscordCore plugin, ConfigReader configReader) { + this.plugin = instance; + this.dbc = plugin; + this.config = configReader; + //PluginManager manager = plugin.getServer().getPluginManager(); + pex = PermissionsEx.getPermissionManager(); + } + + @Override + public void onPlayerJoin(PlayerJoinEvent event) { + String message = config.getJoinMessage(); + message = message.replaceAll("%username%", event.getPlayer().getName()); + message = message.replaceAll("%onlineCount%", + Integer.toString(Bukkit.getServer().getOnlinePlayers().length)); + message = message.replaceAll("%maxCount%", Integer.toString(Bukkit.getServer().getMaxPlayers())); + dbc.Discord().DiscordSendToChannel(config.getChannel(), message); + + } + + @Override + public void onPlayerQuit(PlayerQuitEvent event) { + String message = config.getQuitMessage(); + message = message.replaceAll("%username%", event.getPlayer().getName()); + message = message.replaceAll("%onlineCount%", + Integer.toString(Bukkit.getServer().getOnlinePlayers().length - 1)); + message = message.replaceAll("%maxCount%", Integer.toString(Bukkit.getServer().getMaxPlayers())); + dbc.Discord().DiscordSendToChannel(config.getChannel(), message); + } + + private String replaceMsg(String trueMsg) { + trueMsg = trueMsg.replaceAll(Pattern.quote("@"), " "); + trueMsg = trueMsg.replaceAll(Pattern.quote("@everyone"), " "); + trueMsg = trueMsg.replaceAll(Pattern.quote("@here"), " "); + trueMsg = trueMsg.replaceAll(Pattern.quote("*"), "\\*"); + trueMsg = trueMsg.replaceAll(Pattern.quote("_"), "\\_"); + trueMsg = trueMsg.replaceAll(Pattern.quote("|"), "\\|"); + trueMsg = trueMsg.replaceAll(Pattern.quote("~"), "\\~"); + return trueMsg; + } + + @Override + public void onPlayerChat(PlayerChatEvent event) { + if(!event.isCancelled()) { + String message = config.getGameChatMessage(); + String trueMsg = replaceMsg(event.getMessage()); + String groupName = "MISSINGPEX"; + if(pex != null) { + String pName = event.getPlayer().getName(); + groupName = pex.getUser(pName).getGroups()[0].getName(); + // [0] is always the top hierarchy group that the player has + } + + message = message.replaceAll("%group%", groupName); + message = message.replaceAll("%messageAuthor%", event.getPlayer().getName()); + message = message.replaceAll("%message%", trueMsg); + dbc.Discord().DiscordSendToChannel(config.getChannel(), message); + } + } + + +} \ No newline at end of file