-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Redo entire plugin as code was messy. Remove some buggy group prefix functionality, will readd at a later date, and fully compatibility for Discord Core 1.1.0
- Loading branch information
Showing
9 changed files
with
295 additions
and
502 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
package com.johnymuffin.beta.discordchatbridge; | ||
|
||
import org.bukkit.plugin.Plugin; | ||
import org.bukkit.util.config.Configuration; | ||
|
||
import java.io.File; | ||
|
||
public class DCBConfig extends Configuration { | ||
|
||
|
||
public DCBConfig(Plugin plugin) { | ||
super(new File(plugin.getDataFolder(), "config.yml")); | ||
this.reload(); | ||
} | ||
|
||
private void write() { | ||
//Main | ||
generateConfigOption("config-version", 1); | ||
//Setting | ||
generateConfigOption("server-name", "BetaServer"); | ||
generateConfigOption("channel-id", "id"); | ||
generateConfigOption("presence-player-count", true); | ||
generateConfigOption("online-command-enabled", true); | ||
generateConfigOption("message.discord-chat-message", "&f[&6Discord&f]&7 %messageAuthor%: %message%"); | ||
generateConfigOption("message.game-chat-message", "**%messageAuthor%**: %message%"); | ||
generateConfigOption("message.join-message", "**%username%** Has Joined THe Game [%onlineCount%/%maxCount%]"); | ||
generateConfigOption("message.quit-message", "**%username%** Has Quit THe Game [%onlineCount%/%maxCount%]"); | ||
|
||
|
||
} | ||
|
||
private void generateConfigOption(String key, Object defaultValue) { | ||
if (this.getProperty(key) == null) { | ||
this.setProperty(key, defaultValue); | ||
} | ||
final Object value = this.getProperty(key); | ||
this.removeProperty(key); | ||
this.setProperty(key, value); | ||
} | ||
|
||
//Getters Start | ||
public Object getConfigOption(String key) { | ||
return this.getProperty(key); | ||
} | ||
|
||
public String getConfigString(String key) { | ||
return String.valueOf(getConfigOption(key)); | ||
} | ||
|
||
public Integer getConfigInteger(String key) { | ||
return Integer.valueOf(getConfigString(key)); | ||
} | ||
|
||
public Long getConfigLong(String key) { | ||
return Long.valueOf(getConfigString(key)); | ||
} | ||
|
||
public Double getConfigDouble(String key) { | ||
return Double.valueOf(getConfigString(key)); | ||
} | ||
|
||
public Boolean getConfigBoolean(String key) { | ||
return Boolean.valueOf(getConfigString(key)); | ||
} | ||
|
||
|
||
//Getters End | ||
|
||
|
||
private void reload() { | ||
this.load(); | ||
this.write(); | ||
this.save(); | ||
} | ||
} |
75 changes: 75 additions & 0 deletions
75
src/com/johnymuffin/beta/discordchatbridge/DCBDiscordListener.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
package com.johnymuffin.beta.discordchatbridge; | ||
|
||
import net.dv8tion.jda.api.EmbedBuilder; | ||
import net.dv8tion.jda.api.events.message.MessageReceivedEvent; | ||
import net.dv8tion.jda.api.hooks.ListenerAdapter; | ||
import org.bukkit.Bukkit; | ||
import org.bukkit.entity.Player; | ||
|
||
import java.awt.*; | ||
import java.util.Random; | ||
|
||
public class DCBDiscordListener extends ListenerAdapter { | ||
private DiscordChatBridge plugin; | ||
|
||
public DCBDiscordListener(DiscordChatBridge plugin) { | ||
this.plugin = plugin; | ||
} | ||
|
||
|
||
@Override | ||
public void onMessageReceived(MessageReceivedEvent event) { | ||
//Don't respond to bots | ||
if (event.getAuthor().isBot() || event.getAuthor().isFake()) { | ||
return; | ||
} | ||
//Don't respond to funky messages | ||
if (event.getMessage().getContentRaw().isEmpty()) { | ||
return; | ||
} | ||
|
||
String gameBridgeChannelID = plugin.getConfig().getConfigString("channel-id"); | ||
String[] messageCMD = event.getMessage().getContentRaw().split(" "); | ||
//Is the message in the game bridge channel | ||
if (event.getChannel().getId().equalsIgnoreCase(gameBridgeChannelID)) { | ||
String displayName; | ||
if (event.getMember().getNickname() != null) { | ||
displayName = event.getMember().getNickname(); | ||
} else { | ||
displayName = event.getAuthor().getName(); | ||
} | ||
|
||
String chatMessage = plugin.getConfig().getConfigString("message.discord-chat-message"); | ||
chatMessage = chatMessage.replace("%messageAuthor%", displayName); | ||
chatMessage = chatMessage.replace("%message%", event.getMessage().getContentDisplay()); | ||
chatMessage = chatMessage.replaceAll("(&([a-f0-9]))", "\u00A7$2"); | ||
Bukkit.broadcastMessage(chatMessage); | ||
return; | ||
} | ||
if(messageCMD[0].equalsIgnoreCase("!online") && plugin.getConfig().getConfigBoolean("online-command-enabled")) { | ||
String onlineMessage = "**The online players are:** "; | ||
for (Player p : Bukkit.getServer().getOnlinePlayers()) { | ||
onlineMessage += p.getName() + ", "; | ||
} | ||
EmbedBuilder eb = new EmbedBuilder(); | ||
eb.setTitle(plugin.getConfig().getConfigString("server-name") + " Online Players", null); | ||
if (Bukkit.getServer().getOnlinePlayers().length > 0) { | ||
int rnd = new Random().nextInt(Bukkit.getServer().getOnlinePlayers().length); | ||
Player player = Bukkit.getServer().getOnlinePlayers()[rnd]; | ||
eb.setThumbnail("http://minotar.net/helm/" + player.getName() + "/100.png"); | ||
} | ||
eb.setColor(Color.red); | ||
eb.setDescription("There are currently **" + Bukkit.getServer().getOnlinePlayers().length | ||
+ "** players online\n" + onlineMessage); | ||
eb.setFooter("https://github.com/RhysB/Discord-Bot-Chatbridge", | ||
"https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png"); | ||
|
||
event.getChannel().sendMessage(eb.build()).queue(); | ||
|
||
} | ||
|
||
|
||
} | ||
|
||
|
||
} |
50 changes: 50 additions & 0 deletions
50
src/com/johnymuffin/beta/discordchatbridge/DCBGameListener.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
package com.johnymuffin.beta.discordchatbridge; | ||
|
||
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 DCBGameListener extends PlayerListener { | ||
private DiscordChatBridge plugin; | ||
|
||
public DCBGameListener(DiscordChatBridge plugin) { | ||
this.plugin = plugin; | ||
} | ||
|
||
@Override | ||
public void onPlayerJoin(PlayerJoinEvent event) { | ||
String chatMessage = plugin.getConfig().getConfigString("message.join-message"); | ||
chatMessage.replace("%username%", event.getPlayer().getName()); | ||
chatMessage.replace("%onlineCount%", String.valueOf(Bukkit.getServer().getOnlinePlayers().length)); | ||
chatMessage.replace("%maxCount%", String.valueOf(Bukkit.getServer().getMaxPlayers())); | ||
plugin.getDiscordCore().getDiscordBot().discordSendToChannel(plugin.getConfig().getConfigString("channel-id"), chatMessage); | ||
} | ||
|
||
@Override | ||
public void onPlayerQuit(PlayerQuitEvent event) { | ||
String chatMessage = plugin.getConfig().getConfigString("message.quit-message"); | ||
chatMessage.replace("%username%", event.getPlayer().getName()); | ||
chatMessage.replace("%onlineCount%", String.valueOf(Bukkit.getServer().getOnlinePlayers().length - 1)); | ||
chatMessage.replace("%maxCount%", String.valueOf(Bukkit.getServer().getMaxPlayers())); | ||
plugin.getDiscordCore().getDiscordBot().discordSendToChannel(plugin.getConfig().getConfigString("channel-id"), chatMessage); | ||
} | ||
|
||
@Override | ||
public void onPlayerChat(PlayerChatEvent event) { | ||
if (event.isCancelled()) { | ||
return; | ||
} | ||
String chatMessage = plugin.getConfig().getConfigString("message.game-chat-message"); | ||
chatMessage = chatMessage.replace("%messageAuthor%", event.getPlayer().getName()); | ||
chatMessage = chatMessage.replace("%message%", event.getMessage()); | ||
chatMessage = chatMessage.replaceAll(Pattern.quote("@"), " "); | ||
chatMessage = chatMessage.replaceAll(Pattern.quote("@everyone"), " "); | ||
chatMessage = chatMessage.replaceAll(Pattern.quote("@here"), " "); | ||
plugin.getDiscordCore().getDiscordBot().discordSendToChannel(plugin.getConfig().getConfigString("channel-id"), chatMessage); | ||
} | ||
|
||
} |
88 changes: 88 additions & 0 deletions
88
src/com/johnymuffin/beta/discordchatbridge/DiscordChatBridge.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
package com.johnymuffin.beta.discordchatbridge; | ||
|
||
import com.johnymuffin.discordcore.DiscordCore; | ||
import org.bukkit.Bukkit; | ||
import org.bukkit.event.Event; | ||
import org.bukkit.plugin.PluginDescriptionFile; | ||
import org.bukkit.plugin.java.JavaPlugin; | ||
|
||
import java.util.logging.Level; | ||
import java.util.logging.Logger; | ||
|
||
public class DiscordChatBridge extends JavaPlugin { | ||
//Basic Plugin Info | ||
private static DiscordChatBridge plugin; | ||
private Logger log; | ||
private String pluginName; | ||
private PluginDescriptionFile pdf; | ||
private DiscordCore discordCore; | ||
private DCBConfig dcbConfig; | ||
//Other plugin stuff | ||
private DCBDiscordListener discordListener; //Discord Listener | ||
private boolean enabled = false; | ||
|
||
@Override | ||
public void onEnable() { | ||
plugin = this; | ||
log = this.getServer().getLogger(); | ||
pdf = this.getDescription(); | ||
pluginName = pdf.getName(); | ||
log.info("[" + pluginName + "] Is Loading, Version: " + pdf.getVersion()); | ||
|
||
if (!Bukkit.getServer().getPluginManager().isPluginEnabled("DiscordCore")) { | ||
log.info("}---------------ERROR---------------{"); | ||
log.info("Discord Chat Bridge Requires Discord Core"); | ||
log.info("Download it at: https://github.com/RhysB/Discord-Bot-Core"); | ||
log.info("}---------------ERROR---------------{"); | ||
Bukkit.getServer().getPluginManager().disablePlugin(plugin); | ||
return; | ||
} | ||
dcbConfig = new DCBConfig(plugin); | ||
if (dcbConfig.getConfigString("channel-id").isEmpty() || dcbConfig.getConfigString("channel-id").equalsIgnoreCase("id")) { | ||
log.info("}----------------------------ERROR----------------------------{"); | ||
this.log.info("Please provide a Servername and Channel for the Link"); | ||
log.info("}----------------------------ERROR----------------------------{"); | ||
Bukkit.getServer().getPluginManager().disablePlugin(plugin); | ||
return; | ||
} | ||
|
||
//Discord Core | ||
discordCore = (DiscordCore) Bukkit.getServer().getPluginManager().getPlugin("DiscordCore"); | ||
//Discord Listener | ||
final DCBDiscordListener discordListener = new DCBDiscordListener(plugin); | ||
discordCore.getDiscordBot().jda.addEventListener(discordListener); | ||
//Discord Game Bridge | ||
final DCBGameListener gameListener = new DCBGameListener(plugin); | ||
getServer().getPluginManager().registerEvent(Event.Type.PLAYER_JOIN, gameListener, Event.Priority.Monitor, this); | ||
getServer().getPluginManager().registerEvent(Event.Type.PLAYER_QUIT, gameListener, Event.Priority.Monitor, this); | ||
getServer().getPluginManager().registerEvent(Event.Type.PLAYER_CHAT, gameListener, Event.Priority.Monitor, this); | ||
|
||
|
||
|
||
enabled = true; | ||
|
||
|
||
} | ||
|
||
@Override | ||
public void onDisable() { | ||
if (enabled) { | ||
logger(Level.INFO, "Disabling."); | ||
discordCore.getDiscordBot().jda.removeEventListener(discordListener); | ||
} | ||
logger(Level.INFO, "Has been disabled."); | ||
} | ||
|
||
|
||
public void logger(Level level, String message) { | ||
Bukkit.getLogger().log(level, "[" + pluginName + "] " + message); | ||
} | ||
|
||
public DCBConfig getConfig() { | ||
return dcbConfig; | ||
} | ||
|
||
public DiscordCore getDiscordCore() { | ||
return discordCore; | ||
} | ||
} |
19 changes: 0 additions & 19 deletions
19
src/com/johnymuffin/discordGameBridge/Cmd_DiscordBridge.java
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.