From e1e7bf784e622bba4d5e41f2ecc95280ea28a413 Mon Sep 17 00:00:00 2001 From: Business Goose Date: Mon, 28 Mar 2022 17:42:22 +0100 Subject: [PATCH] Fix senior admins not being senior while executing commands via Discord --- .../discord/command/DiscordCommand.java | 4 ++-- .../discord/command/DiscordCommandManager.java | 2 +- .../discord/command/ExecutableDiscordCommand.java | 2 +- .../discord/commands/AdminConsoleCommand.java | 7 +++---- .../discord/commands/HelpCommand.java | 3 ++- .../discord/commands/ListCommand.java | 3 ++- .../discord/commands/TPSCommand.java | 2 +- .../discord/commands/UptimeCommand.java | 3 ++- .../discord/sender/DiscordCommandSender.java | 12 +++++++++++- .../TotalFreedomMod/player/PlayerRank.java | 14 ++++++++++++++ 10 files changed, 39 insertions(+), 13 deletions(-) diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/DiscordCommand.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/DiscordCommand.java index 5e301ae..8f8d4d6 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/DiscordCommand.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/DiscordCommand.java @@ -1,6 +1,5 @@ package me.StevenLawson.TotalFreedomMod.discord.command; -import org.javacord.api.entity.message.Message; import org.javacord.api.entity.message.MessageBuilder; import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; @@ -20,7 +19,8 @@ public interface DiscordCommand { * Execute the command, and return the results * @param user The user who executed the command * @param args The arguments they executed it with + * @param guild * @return The results as a MessageBuilder */ - MessageBuilder execute(User user, List args); + MessageBuilder execute(User user, List args, Server guild); } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/DiscordCommandManager.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/DiscordCommandManager.java index 484f24f..4a29574 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/DiscordCommandManager.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/DiscordCommandManager.java @@ -34,7 +34,7 @@ public class DiscordCommandManager { for (ExecutableDiscordCommand command : commands) { if(command.command.equalsIgnoreCase(commandOrAlias) || command.aliases.contains(commandOrAlias.toLowerCase())) { if(command.canExecute(user, server)) { - MessageBuilder messageBuilder = command.execute(user, args); + MessageBuilder messageBuilder = command.execute(user, args, server); messageBuilder.send(channel); } else { EmbedBuilder errorEmbed = new EmbedBuilder(); diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/ExecutableDiscordCommand.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/ExecutableDiscordCommand.java index cacad93..b428edf 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/ExecutableDiscordCommand.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/command/ExecutableDiscordCommand.java @@ -63,7 +63,7 @@ public class ExecutableDiscordCommand implements DiscordCommand { return true; } - public MessageBuilder execute(User user, List args) { + public MessageBuilder execute(User user, List args, Server guild) { return new MessageBuilder().setContent(""); } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/AdminConsoleCommand.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/AdminConsoleCommand.java index 95cc14a..e2867d3 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/AdminConsoleCommand.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/AdminConsoleCommand.java @@ -3,12 +3,11 @@ package me.StevenLawson.TotalFreedomMod.discord.commands; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import me.StevenLawson.TotalFreedomMod.discord.command.ExecutableDiscordCommand; import me.StevenLawson.TotalFreedomMod.discord.sender.DiscordCommandSender; -import me.StevenLawson.TotalFreedomMod.util.SynchronousUtil; import org.bukkit.Bukkit; import org.bukkit.scheduler.BukkitRunnable; import org.javacord.api.entity.message.MessageBuilder; -import org.javacord.api.entity.message.embed.Embed; import org.javacord.api.entity.message.embed.EmbedBuilder; +import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; import java.awt.*; @@ -23,13 +22,13 @@ public class AdminConsoleCommand extends ExecutableDiscordCommand { } @Override - public MessageBuilder execute(User user, List args) { + public MessageBuilder execute(User user, List args, Server guild) { try { new BukkitRunnable() { @Override public void run() { - DiscordCommandSender discordCommandSender = new DiscordCommandSender(user); + DiscordCommandSender discordCommandSender = new DiscordCommandSender(user, guild); String command = String.join(" ", args); Bukkit.dispatchCommand(discordCommandSender, command); } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/HelpCommand.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/HelpCommand.java index d0b454c..71fca60 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/HelpCommand.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/HelpCommand.java @@ -6,6 +6,7 @@ import me.StevenLawson.TotalFreedomMod.discord.bridge.DiscordBridge; import me.StevenLawson.TotalFreedomMod.discord.command.ExecutableDiscordCommand; import org.javacord.api.entity.message.MessageBuilder; import org.javacord.api.entity.message.embed.EmbedBuilder; +import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; import java.awt.*; @@ -18,7 +19,7 @@ public class HelpCommand extends ExecutableDiscordCommand { } @Override - public MessageBuilder execute(User user, List args) { + public MessageBuilder execute(User user, List args, Server guild) { EmbedBuilder embedBuilder = new EmbedBuilder(); embedBuilder.setColor(Color.GREEN); embedBuilder.setTitle("Help Command"); diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/ListCommand.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/ListCommand.java index 4f03fe5..bfdfb6e 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/ListCommand.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/ListCommand.java @@ -9,6 +9,7 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.javacord.api.entity.message.MessageBuilder; import org.javacord.api.entity.message.embed.EmbedBuilder; +import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; import java.util.ArrayList; @@ -21,7 +22,7 @@ public class ListCommand extends ExecutableDiscordCommand { } @Override - public MessageBuilder execute(User user, List args) { + public MessageBuilder execute(User user, List args, Server guild) { EmbedBuilder builder = new EmbedBuilder() .setTitle(String.format("Player List - %s", MainConfig.getString(ConfigurationEntry.SERVER_NAME))) .setDescription(String.format("There are %s / %s online players", Bukkit.getOnlinePlayers().size(), Bukkit.getMaxPlayers())); diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/TPSCommand.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/TPSCommand.java index 028bb2f..31b0694 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/TPSCommand.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/TPSCommand.java @@ -14,7 +14,7 @@ public class TPSCommand extends ExecutableDiscordCommand { } @Override - public MessageBuilder execute(User user, List args) { + public MessageBuilder execute(User user, List args, org.javacord.api.entity.server.Server guild) { EmbedBuilder builder = new EmbedBuilder(); builder.setTitle("Server lag information"); builder.addField("TPS", String.valueOf(Math.round(Server.getTPS()))); diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/UptimeCommand.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/UptimeCommand.java index bf8c708..d25e4b3 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/UptimeCommand.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/commands/UptimeCommand.java @@ -4,6 +4,7 @@ import me.StevenLawson.TotalFreedomMod.discord.command.ExecutableDiscordCommand; import me.StevenLawson.TotalFreedomMod.exception.PenisException; import org.javacord.api.entity.message.MessageBuilder; import org.javacord.api.entity.message.embed.EmbedBuilder; +import org.javacord.api.entity.server.Server; import org.javacord.api.entity.user.User; import java.awt.*; @@ -17,7 +18,7 @@ public class UptimeCommand extends ExecutableDiscordCommand { } @Override - public MessageBuilder execute(User user, List args) { + public MessageBuilder execute(User user, List args, Server guild) { EmbedBuilder builder = new EmbedBuilder(); try { builder.setTitle("VPS Uptime Information") diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/sender/DiscordCommandSender.java b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/sender/DiscordCommandSender.java index adfbb29..24fa839 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/discord/sender/DiscordCommandSender.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/discord/sender/DiscordCommandSender.java @@ -15,10 +15,12 @@ import java.util.Set; public class DiscordCommandSender implements CommandSender { private final User user; + private final org.javacord.api.entity.server.Server server; protected final PermissibleBase perm; - public DiscordCommandSender(User user) { + public DiscordCommandSender(User user, org.javacord.api.entity.server.Server server) { this.user = user; + this.server = server; this.perm = new PermissibleBase(this); } @@ -105,4 +107,12 @@ public class DiscordCommandSender implements CommandSender { @Override public void setOp(boolean b) { } + + public User getUser() { + return user; + } + + public org.javacord.api.entity.server.Server getDiscordServer() { + return server; + } } diff --git a/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerRank.java b/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerRank.java index 1661f4b..a699eac 100644 --- a/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerRank.java +++ b/src/main/java/me/StevenLawson/TotalFreedomMod/player/PlayerRank.java @@ -4,11 +4,13 @@ import com.google.common.collect.ImmutableList; import me.StevenLawson.TotalFreedomMod.admin.Admin; import me.StevenLawson.TotalFreedomMod.admin.AdminList; import me.StevenLawson.TotalFreedomMod.config.ConfigurationEntry; +import me.StevenLawson.TotalFreedomMod.discord.sender.DiscordCommandSender; import me.StevenLawson.TotalFreedomMod.util.Utilities; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.javacord.api.entity.permission.Role; import java.util.ArrayList; import java.util.Comparator; @@ -79,6 +81,18 @@ public enum PlayerRank implements Comparator, Comparable public static PlayerRank fromSender(CommandSender sender) { + if (sender instanceof DiscordCommandSender) { + DiscordCommandSender discordSender = (DiscordCommandSender) sender; + List roles = discordSender.getUser().getRoles(discordSender.getDiscordServer()); + + for (Role role : roles) { + if(role.getName().toLowerCase().contains("senior")) { + return SENIOR; + } + } + + return SUPER; + } if (!(sender instanceof Player)) { return CONSOLE;