diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml
index 6b7f5d1..9b9d8c6 100644
--- a/dependency-reduced-pom.xml
+++ b/dependency-reduced-pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.fpghoti
BCraftBot
- 1.1
+ 1.2
@@ -43,22 +43,22 @@
jcenter-bintray
http://jcenter.bintray.com
+
+ spigot-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
- org.bukkit
- bukkit
- 1.13.2-R0.1-SNAPSHOT
+ org.spigotmc
+ spigot-api
+ 1.18.2-R0.1-SNAPSHOT
provided
commons-lang
commons-lang
-
- json-simple
- com.googlecode.json-simple
-
guava
com.google.guava
@@ -67,6 +67,10 @@
gson
com.google.code.gson
+
+ bungeecord-chat
+ net.md-5
+
snakeyaml
org.yaml
diff --git a/pom.xml b/pom.xml
index 4a48daf..37b1769 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,74 +1,80 @@
-
- 4.0.0
- com.fpghoti
- BCraftBot
- 1.1
-
-
- jcenter
- jcenter-bintray
- http://jcenter.bintray.com
-
-
-
-
-
- src/main/resources
- true
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.5.1
-
- 1.8
- 1.8
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
- 3.1.0
-
-
- package
-
- shade
-
-
- true
-
-
-
-
-
-
-
-
- net.dv8tion
- JDA
- 3.5.0_327
-
-
- org.bukkit
- bukkit
- 1.13.2-R0.1-SNAPSHOT
- provided
-
-
- org.apache.commons
- commons-collections4
- 4.1
- pom
-
-
- org.apache.commons
- commons-lang3
- 3.6
- pom
-
-
+
+ 4.0.0
+ com.fpghoti
+ BCraftBot
+ 1.2
+
+
+ jcenter
+ jcenter-bintray
+ http://jcenter.bintray.com
+
+
+ spigot-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+
+
+
+ src/main/resources
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.5.1
+
+ 1.8
+ 1.8
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.1.0
+
+
+ package
+
+ shade
+
+
+ true
+
+
+
+
+
+
+
+
+ net.dv8tion
+ JDA
+ 5.0.0-alpha.9
+
+
+ org.spigotmc
+ spigot-api
+ 1.18.2-R0.1-SNAPSHOT
+ provided
+
+
+ org.apache.commons
+ commons-collections4
+ 4.1
+ pom
+
+
+ org.apache.commons
+ commons-lang3
+ 3.6
+ pom
+
+
\ No newline at end of file
diff --git a/src/main/java/com/fpghoti/bcraftbot/Main.java b/src/main/java/com/fpghoti/bcraftbot/Main.java
index 27a357e..66af251 100644
--- a/src/main/java/com/fpghoti/bcraftbot/Main.java
+++ b/src/main/java/com/fpghoti/bcraftbot/Main.java
@@ -13,11 +13,12 @@ import org.bukkit.scheduler.BukkitRunnable;
import com.fpghoti.bcraftbot.bot.ServerBot;
import com.fpghoti.bcraftbot.command.AddExempt;
+import com.fpghoti.bcraftbot.command.BCWhitelist;
import com.fpghoti.bcraftbot.listener.PlayerListener;
import com.fpghoti.bcraftbot.sql.MySQLConnection;
-import net.dv8tion.jda.core.entities.Guild;
-import net.dv8tion.jda.core.entities.User;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.User;
public class Main extends JavaPlugin {
@@ -65,6 +66,7 @@ public class Main extends JavaPlugin {
bot = new ServerBot(this);
bot.runBot();
getCommand("AddExempt").setExecutor(new AddExempt(this));
+ getCommand("BCWhitelist").setExecutor(new BCWhitelist(this));
}
public void onDisable() {
@@ -183,6 +185,10 @@ public class Main extends JavaPlugin {
config.createSection("MainRecordKeeper");
config.set("MainRecordKeeper", true);
}
+ if (config.get("Whitelist") == null){
+ config.createSection("Whitelist");
+ config.set("Whitelist", true);
+ }
this.saveConfig();
}
@@ -229,6 +235,22 @@ public class Main extends JavaPlugin {
}
setExemptList(updated);
}
+
+ public void setBCWhitelist(Boolean b) {
+ if (config.get("Whitelist") != null){
+ config.set("Whitelist", b);
+ this.saveConfig();
+ }else {
+ log.severe("BCraftBot failed to update the whitelist in the config!");
+ }
+ }
+
+ public boolean getBCWhitelist() {
+ if (config.get("Whitelist") != null){
+ return config.getBoolean("Whitelist");
+ }
+ return false;
+ }
public ServerBot getBot() {
return bot;
diff --git a/src/main/java/com/fpghoti/bcraftbot/bot/BotListener.java b/src/main/java/com/fpghoti/bcraftbot/bot/BotListener.java
index 5a99409..af26ca6 100644
--- a/src/main/java/com/fpghoti/bcraftbot/bot/BotListener.java
+++ b/src/main/java/com/fpghoti/bcraftbot/bot/BotListener.java
@@ -2,12 +2,10 @@ package com.fpghoti.bcraftbot.bot;
import java.util.logging.Level;
-import com.fpghoti.bcraftbot.bot.ServerBot;
-
-import net.dv8tion.jda.core.entities.ChannelType;
-import net.dv8tion.jda.core.events.ReadyEvent;
-import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
-import net.dv8tion.jda.core.hooks.ListenerAdapter;
+import net.dv8tion.jda.api.entities.ChannelType;
+import net.dv8tion.jda.api.events.ReadyEvent;
+import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
+import net.dv8tion.jda.api.hooks.ListenerAdapter;
public class BotListener extends ListenerAdapter{
diff --git a/src/main/java/com/fpghoti/bcraftbot/bot/Command.java b/src/main/java/com/fpghoti/bcraftbot/bot/Command.java
index ec32422..6af14db 100644
--- a/src/main/java/com/fpghoti/bcraftbot/bot/Command.java
+++ b/src/main/java/com/fpghoti/bcraftbot/bot/Command.java
@@ -1,6 +1,6 @@
package com.fpghoti.bcraftbot.bot;
-import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
+import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
public interface Command {
diff --git a/src/main/java/com/fpghoti/bcraftbot/bot/ServerBot.java b/src/main/java/com/fpghoti/bcraftbot/bot/ServerBot.java
index f42b2f1..28da199 100644
--- a/src/main/java/com/fpghoti/bcraftbot/bot/ServerBot.java
+++ b/src/main/java/com/fpghoti/bcraftbot/bot/ServerBot.java
@@ -4,21 +4,23 @@ import java.util.HashMap;
import java.util.logging.Level;
import com.fpghoti.bcraftbot.Main;
-import com.fpghoti.bcraftbot.bot.BotListener;
-import com.fpghoti.bcraftbot.bot.Command;
import com.fpghoti.bcraftbot.bot.command.AddMeCommand;
import com.fpghoti.bcraftbot.bot.util.CommandParser;
import com.fpghoti.bcraftbot.sql.MySQLConnection;
-import net.dv8tion.jda.core.AccountType;
-import net.dv8tion.jda.core.JDA;
-import net.dv8tion.jda.core.JDABuilder;
+import net.dv8tion.jda.api.JDA;
+import net.dv8tion.jda.api.requests.GatewayIntent;
+import net.dv8tion.jda.api.sharding.DefaultShardManagerBuilder;
+import net.dv8tion.jda.api.sharding.ShardManager;
+import net.dv8tion.jda.api.utils.ChunkingFilter;
+import net.dv8tion.jda.api.utils.MemberCachePolicy;
public class ServerBot {
private Main plugin;
private JDA jda;
+ private static ShardManager shardm;
private CommandParser parser;
@@ -34,7 +36,19 @@ public class ServerBot {
String token = plugin.getBotToken();
plugin.log(Level.INFO, "Connecting bot to Discord...");
try{
- jda = new JDABuilder(AccountType.BOT).setToken(token).buildBlocking();
+ shardm = DefaultShardManagerBuilder.createDefault(token)
+ .setChunkingFilter(ChunkingFilter.ALL)
+ .setMemberCachePolicy(MemberCachePolicy.ALL)
+ .enableIntents(GatewayIntent.getIntents(GatewayIntent.DEFAULT))
+ .enableIntents(GatewayIntent.GUILD_MEMBERS)
+ .enableIntents(GatewayIntent.GUILD_MESSAGES)
+ .build();
+ jda = shardm.getShardById(0);
+ try {
+ jda.awaitReady();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
jda.addEventListener(new BotListener(this));
jda.setAutoReconnect(true);
String link = "https://discordapp.com/oauth2/authorize?&client_id=" + jda.getSelfUser().getId();
diff --git a/src/main/java/com/fpghoti/bcraftbot/bot/command/AddMeCommand.java b/src/main/java/com/fpghoti/bcraftbot/bot/command/AddMeCommand.java
index ccd31f5..f1a8f8b 100644
--- a/src/main/java/com/fpghoti/bcraftbot/bot/command/AddMeCommand.java
+++ b/src/main/java/com/fpghoti/bcraftbot/bot/command/AddMeCommand.java
@@ -5,7 +5,7 @@ import java.util.logging.Level;
import com.fpghoti.bcraftbot.bot.Command;
import com.fpghoti.bcraftbot.bot.ServerBot;
-import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
+import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
public class AddMeCommand implements Command{
@@ -19,7 +19,6 @@ public class AddMeCommand implements Command{
@Override
public boolean called(String[] args, MessageReceivedEvent event) {
-
return true;
}
diff --git a/src/main/java/com/fpghoti/bcraftbot/bot/util/CommandParser.java b/src/main/java/com/fpghoti/bcraftbot/bot/util/CommandParser.java
index a3e7266..92cfc28 100644
--- a/src/main/java/com/fpghoti/bcraftbot/bot/util/CommandParser.java
+++ b/src/main/java/com/fpghoti/bcraftbot/bot/util/CommandParser.java
@@ -2,7 +2,7 @@ package com.fpghoti.bcraftbot.bot.util;
import java.util.ArrayList;
-import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
+import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
public class CommandParser {
public CommandContainer parse(String rw, MessageReceivedEvent e){
diff --git a/src/main/java/com/fpghoti/bcraftbot/command/AddExempt.java b/src/main/java/com/fpghoti/bcraftbot/command/AddExempt.java
index 8e84609..7dabaec 100644
--- a/src/main/java/com/fpghoti/bcraftbot/command/AddExempt.java
+++ b/src/main/java/com/fpghoti/bcraftbot/command/AddExempt.java
@@ -32,7 +32,7 @@ public class AddExempt implements CommandExecutor{
}
}else {
if(args.length != 1) {
- plugin.log(Level.INFO, "Usage: addexempt ");
+ plugin.log(Level.INFO, "Usage: /addexempt ");
plugin.log(Level.INFO, "There was an issue with your syntax.");
return true;
}
diff --git a/src/main/java/com/fpghoti/bcraftbot/command/BCWhitelist.java b/src/main/java/com/fpghoti/bcraftbot/command/BCWhitelist.java
new file mode 100644
index 0000000..a6f48a9
--- /dev/null
+++ b/src/main/java/com/fpghoti/bcraftbot/command/BCWhitelist.java
@@ -0,0 +1,75 @@
+package com.fpghoti.bcraftbot.command;
+
+import java.util.logging.Level;
+
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import com.fpghoti.bcraftbot.Main;
+
+public class BCWhitelist implements CommandExecutor{
+
+ private Main plugin;
+
+ public BCWhitelist(Main plugin) {
+ this.plugin = plugin;
+ }
+
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args){
+ if(label.equalsIgnoreCase("bcwhitelist")){
+ if(sender instanceof Player) {
+ if(!((Player)sender).hasPermission("bcraftbot.whitelist")) {
+ ((Player)sender).sendMessage(ChatColor.RED + "[BCraftBot] You do not have permission to do this!");
+ return true;
+ }
+ if(args.length != 1) {
+ ((Player)sender).sendMessage(ChatColor.GOLD + "[BCraftBot] Usage: /bcwhitelist ");
+ ((Player)sender).sendMessage(ChatColor.RED + "[BCraftBot] There was an issue with your syntax.");
+ return true;
+ }
+ }else {
+ if(args.length != 1) {
+ plugin.log(Level.INFO, "Usage: /bcwhitelist ");
+ plugin.log(Level.INFO, "There was an issue with your syntax.");
+ return true;
+ }
+ }
+
+ String arg = args[0].toLowerCase();
+ int status = 0;
+
+ if(arg.equals("on") || arg.equals("true") || arg.equals("enable")) {
+ status = 1;
+ plugin.setBCWhitelist(true);
+ }else if(arg.equals("off") || arg.equals("false") || arg.equals("disable")) {
+ status = 2;
+ plugin.setBCWhitelist(false);
+ }
+
+ if(sender instanceof Player) {
+ if(status == 1) {
+ ((Player)sender).sendMessage(ChatColor.GREEN + "[BCraftBot] Whitelist enabled.");
+ }else if(status == 2) {
+ ((Player)sender).sendMessage(ChatColor.GREEN + "[BCraftBot] Whitelist disabled.");
+ }else {
+ ((Player)sender).sendMessage(ChatColor.GOLD + "[BCraftBot] Usage: /bcwhitelist ");
+ ((Player)sender).sendMessage(ChatColor.RED + "[BCraftBot] There was an issue with your syntax.");
+ }
+ }else {
+ if(status == 1) {
+ plugin.log(Level.INFO, "[BCraftBot] Whitelist enabled.");
+ }else if(status == 2) {
+ plugin.log(Level.INFO, "[BCraftBot] Whitelist disabled.");
+ }else {
+ plugin.log(Level.INFO, "[BCraftBot] Usage: /bcwhitelist ");
+ plugin.log(Level.INFO, "[BCraftBot] There was an issue with your syntax.");
+ }
+ }
+ }
+ return true;
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/fpghoti/bcraftbot/listener/PlayerListener.java b/src/main/java/com/fpghoti/bcraftbot/listener/PlayerListener.java
index 645ace8..e0d9045 100644
--- a/src/main/java/com/fpghoti/bcraftbot/listener/PlayerListener.java
+++ b/src/main/java/com/fpghoti/bcraftbot/listener/PlayerListener.java
@@ -8,10 +8,10 @@ import org.bukkit.event.player.PlayerLoginEvent.Result;
import com.fpghoti.bcraftbot.Main;
-import net.dv8tion.jda.core.entities.Guild;
-import net.dv8tion.jda.core.entities.Member;
-import net.dv8tion.jda.core.entities.Role;
-import net.dv8tion.jda.core.entities.User;
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.Member;
+import net.dv8tion.jda.api.entities.Role;
+import net.dv8tion.jda.api.entities.User;
public class PlayerListener implements Listener {
@@ -28,19 +28,20 @@ public class PlayerListener implements Listener {
if(player.hasPermission("bcraftbot.bypasscheck")) {
return;
}
-
+
if(!plugin.isMember(player) && !plugin.isExempt(player.getName())) {
- event.disallow(Result.KICK_OTHER, plugin.getKickMessage());
+ if(!player.isWhitelisted() && plugin.getBCWhitelist()) {
+ event.disallow(Result.KICK_OTHER, plugin.getKickMessage());
+ }
return;
}
if(plugin.checkRole() && !plugin.isExempt(player.getName())) {
boolean allow = false;
-
+
for(Guild guild : plugin.getBot().getJDA().getGuilds()) {
for(String rolename : plugin.getRequiredRole().split(",")) {
-
Role role = null;
for(Role r : guild.getRoles()) {
if(r.getName().equalsIgnoreCase(rolename)) {
@@ -51,6 +52,12 @@ public class PlayerListener implements Listener {
User user = plugin.getDiscordUser(player);
Member mem = guild.getMember(user);
+ if(!plugin.getBCWhitelist()) {
+ allow = true;
+ }
+ if(player.isWhitelisted()) {
+ allow = true;
+ }
if(user != null && user.getMutualGuilds().contains(guild) && role != null) {
if(mem.getRoles().contains(role)) {
allow = true;
@@ -80,7 +87,7 @@ public class PlayerListener implements Listener {
Member mem = guild.getMember(user);
if(user != null && user.getMutualGuilds().contains(guild) && role != null) {
- guild.getController().addRolesToMember(mem, role).queue();
+ guild.addRoleToMember(mem.getUser().getId(), role).queue();
}
}
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index eccaa81..4d22604 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,5 +1,5 @@
main: com.fpghoti.bcraftbot.Main
-version: 1.1
+version: 1.2
api-version: 1.13
name: BCraftBot
descripion: Discord-based whitelisting system for Minecraft
@@ -7,4 +7,7 @@ author: Ghoti_Mayo
commands:
AddExempt:
description: Add a player to the exempt list. Exempted users are permanently allowed to join, as long as they remain in the exempted list.
- usage: /addexempt
\ No newline at end of file
+ usage: /addexempt
+ BCWhitelist:
+ description: Toggles plugin whitelist.
+ usage: /bcwhitelist
\ No newline at end of file