Skip to content

Commit

Permalink
Discord Chat Bridge version 2.0.0
Browse files Browse the repository at this point in the history
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
RhysB committed Jul 19, 2020
1 parent 2d56490 commit d29cb4b
Show file tree
Hide file tree
Showing 9 changed files with 295 additions and 502 deletions.
75 changes: 75 additions & 0 deletions src/com/johnymuffin/beta/discordchatbridge/DCBConfig.java
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 src/com/johnymuffin/beta/discordchatbridge/DCBDiscordListener.java
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 src/com/johnymuffin/beta/discordchatbridge/DCBGameListener.java
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 src/com/johnymuffin/beta/discordchatbridge/DiscordChatBridge.java
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 src/com/johnymuffin/discordGameBridge/Cmd_DiscordBridge.java

This file was deleted.

Loading

0 comments on commit d29cb4b

Please sign in to comment.