[CHORE] Code reformat
This commit is contained in:
@@ -38,9 +38,10 @@ public class DiscordAuthor {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal. Use {@link #of(String, String, String)}
|
* Internal. Use {@link #of(String, String, String)}
|
||||||
|
*
|
||||||
* @param displayName The Username of the Author
|
* @param displayName The Username of the Author
|
||||||
* @param avatar The avatar URL of the Author
|
* @param avatar The avatar URL of the Author
|
||||||
* @param isServer Is the Author the Minecraft Server
|
* @param isServer Is the Author the Minecraft Server
|
||||||
*/
|
*/
|
||||||
private DiscordAuthor(String displayName, String avatar, String username, boolean isServer, String uuid) {
|
private DiscordAuthor(String displayName, String avatar, String username, boolean isServer, String uuid) {
|
||||||
this.displayName = displayName;
|
this.displayName = displayName;
|
||||||
@@ -52,8 +53,9 @@ public class DiscordAuthor {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new Discord Author
|
* Create a new Discord Author
|
||||||
|
*
|
||||||
* @param displayName The name/Username of the Author
|
* @param displayName The name/Username of the Author
|
||||||
* @param uuid The Mojang UUID of the Author
|
* @param uuid The Mojang UUID of the Author
|
||||||
* @return A constructed {@link DiscordAuthor}
|
* @return A constructed {@link DiscordAuthor}
|
||||||
*/
|
*/
|
||||||
public static DiscordAuthor of(String displayName, String uuid, String username) {
|
public static DiscordAuthor of(String displayName, String uuid, String username) {
|
||||||
|
@@ -11,16 +11,20 @@ import lombok.Setter;
|
|||||||
@AllArgsConstructor(staticName = "of")
|
@AllArgsConstructor(staticName = "of")
|
||||||
public class DiscordUser {
|
public class DiscordUser {
|
||||||
|
|
||||||
@Getter @Setter
|
@Getter
|
||||||
|
@Setter
|
||||||
private String effectiveName;
|
private String effectiveName;
|
||||||
|
|
||||||
@Getter @Setter
|
@Getter
|
||||||
|
@Setter
|
||||||
private String avatarUrl;
|
private String avatarUrl;
|
||||||
|
|
||||||
@Getter @Setter
|
@Getter
|
||||||
|
@Setter
|
||||||
private long userId;
|
private long userId;
|
||||||
|
|
||||||
@Getter @Setter
|
@Getter
|
||||||
|
@Setter
|
||||||
private String asMention;
|
private String asMention;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -30,12 +30,8 @@ import org.json.JSONException;
|
|||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.json.JSONTokener;
|
import org.json.JSONTokener;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.sql.Time;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@@ -58,10 +54,11 @@ public class MinecraftAccount {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal. Use {@link #of(String)} (String)} or {@link #of(GameProfile)}
|
* Internal. Use {@link #of(String)} (String)} or {@link #of(GameProfile)}
|
||||||
* @param username The Username of the Player
|
*
|
||||||
* @param uuid The UUID of the player
|
* @param username The Username of the Player
|
||||||
|
* @param uuid The UUID of the player
|
||||||
* @param isOffline Is this an OFFLINE/Unauthenticated Account
|
* @param isOffline Is this an OFFLINE/Unauthenticated Account
|
||||||
* @param isValid Is the account valid
|
* @param isValid Is the account valid
|
||||||
*/
|
*/
|
||||||
private MinecraftAccount(String username, UUID uuid, boolean isOffline, boolean isValid) {
|
private MinecraftAccount(String username, UUID uuid, boolean isOffline, boolean isValid) {
|
||||||
this.username = username;
|
this.username = username;
|
||||||
@@ -73,6 +70,7 @@ public class MinecraftAccount {
|
|||||||
/**
|
/**
|
||||||
* Try to fetch a player from the Mojang API.
|
* Try to fetch a player from the Mojang API.
|
||||||
* Will return an offline player if the request fails, or if they don't have a valid account
|
* Will return an offline player if the request fails, or if they don't have a valid account
|
||||||
|
*
|
||||||
* @param username The username of the player
|
* @param username The username of the player
|
||||||
*/
|
*/
|
||||||
public static MinecraftAccount of(String username) {
|
public static MinecraftAccount of(String username) {
|
||||||
@@ -96,6 +94,7 @@ public class MinecraftAccount {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert a GameProfile into a MinecraftAccount for usage inside the mod
|
* Convert a GameProfile into a MinecraftAccount for usage inside the mod
|
||||||
|
*
|
||||||
* @param profile The player GameProfile
|
* @param profile The player GameProfile
|
||||||
*/
|
*/
|
||||||
public static MinecraftAccount of(GameProfile profile) {
|
public static MinecraftAccount of(GameProfile profile) {
|
||||||
@@ -104,6 +103,7 @@ public class MinecraftAccount {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert a username to an offline account
|
* Convert a username to an offline account
|
||||||
|
*
|
||||||
* @param username The Username to search for
|
* @param username The Username to search for
|
||||||
*/
|
*/
|
||||||
private static MinecraftAccount offline(String username) {
|
private static MinecraftAccount offline(String username) {
|
||||||
@@ -121,6 +121,57 @@ public class MinecraftAccount {
|
|||||||
return sdlinkDatabase.findById(uuid, SDLinkAccount.class);
|
return sdlinkDatabase.findById(uuid, SDLinkAccount.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//<editor-fold desc="Helper Methods">
|
||||||
|
private static Pair<String, UUID> fetchPlayer(String name) {
|
||||||
|
OkHttpClient client = new OkHttpClient.Builder()
|
||||||
|
.callTimeout(20, TimeUnit.SECONDS)
|
||||||
|
.readTimeout(20, TimeUnit.SECONDS)
|
||||||
|
.connectTimeout(20, TimeUnit.SECONDS)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
try {
|
||||||
|
Request request = new Request.Builder()
|
||||||
|
.url("https://api.mojang.com/users/profiles/minecraft/" + name)
|
||||||
|
.cacheControl(new CacheControl.Builder().noCache().build())
|
||||||
|
.build();
|
||||||
|
Response response = client.newCall(request).execute();
|
||||||
|
|
||||||
|
if (response.isSuccessful() && response.body() != null) {
|
||||||
|
JSONObject obj = new JSONObject(new JSONTokener(response.body().string()));
|
||||||
|
String uuid = "";
|
||||||
|
String returnname = name;
|
||||||
|
|
||||||
|
if (obj.has("name") && !obj.getString("name").isEmpty()) {
|
||||||
|
returnname = obj.getString("name");
|
||||||
|
}
|
||||||
|
if (obj.has("id") && !obj.getString("id").isEmpty()) {
|
||||||
|
uuid = obj.getString("id");
|
||||||
|
}
|
||||||
|
|
||||||
|
response.close();
|
||||||
|
return Pair.of(returnname, uuid.isEmpty() ? null : mojangIdToUUID(uuid));
|
||||||
|
}
|
||||||
|
} catch (IOException | JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return Pair.of("", null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static UUID mojangIdToUUID(String id) {
|
||||||
|
final List<String> strings = new ArrayList<>();
|
||||||
|
strings.add(id.substring(0, 8));
|
||||||
|
strings.add(id.substring(8, 12));
|
||||||
|
strings.add(id.substring(12, 16));
|
||||||
|
strings.add(id.substring(16, 20));
|
||||||
|
strings.add(id.substring(20, 32));
|
||||||
|
|
||||||
|
return UUID.fromString(String.join("-", strings));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Pair<String, UUID> offlinePlayer(String offlineName) {
|
||||||
|
return Pair.of(offlineName, UUID.nameUUIDFromBytes(("OfflinePlayer:" + offlineName).getBytes(StandardCharsets.UTF_8)));
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAccountVerified() {
|
public boolean isAccountVerified() {
|
||||||
SDLinkAccount account = getStoredAccount();
|
SDLinkAccount account = getStoredAccount();
|
||||||
|
|
||||||
@@ -316,7 +367,7 @@ public class MinecraftAccount {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!SDLinkConfig.INSTANCE.accessControl.requiredRoles.isEmpty() || ! SDLinkConfig.INSTANCE.accessControl.deniedRoles.isEmpty()) {
|
if (!SDLinkConfig.INSTANCE.accessControl.requiredRoles.isEmpty() || !SDLinkConfig.INSTANCE.accessControl.deniedRoles.isEmpty()) {
|
||||||
Profiler profiler = Profiler.getProfiler("checkRequiredRoles");
|
Profiler profiler = Profiler.getProfiler("checkRequiredRoles");
|
||||||
profiler.start("Checking Required Roles");
|
profiler.start("Checking Required Roles");
|
||||||
AtomicBoolean anyFound = new AtomicBoolean(false);
|
AtomicBoolean anyFound = new AtomicBoolean(false);
|
||||||
@@ -381,56 +432,5 @@ public class MinecraftAccount {
|
|||||||
public boolean isOffline() {
|
public boolean isOffline() {
|
||||||
return isOffline;
|
return isOffline;
|
||||||
}
|
}
|
||||||
|
|
||||||
//<editor-fold desc="Helper Methods">
|
|
||||||
private static Pair<String, UUID> fetchPlayer(String name) {
|
|
||||||
OkHttpClient client = new OkHttpClient.Builder()
|
|
||||||
.callTimeout(20, TimeUnit.SECONDS)
|
|
||||||
.readTimeout(20, TimeUnit.SECONDS)
|
|
||||||
.connectTimeout(20, TimeUnit.SECONDS)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
try {
|
|
||||||
Request request = new Request.Builder()
|
|
||||||
.url("https://api.mojang.com/users/profiles/minecraft/" + name)
|
|
||||||
.cacheControl(new CacheControl.Builder().noCache().build())
|
|
||||||
.build();
|
|
||||||
Response response = client.newCall(request).execute();
|
|
||||||
|
|
||||||
if (response.isSuccessful() && response.body() != null) {
|
|
||||||
JSONObject obj = new JSONObject(new JSONTokener(response.body().string()));
|
|
||||||
String uuid = "";
|
|
||||||
String returnname = name;
|
|
||||||
|
|
||||||
if (obj.has("name") && !obj.getString("name").isEmpty()) {
|
|
||||||
returnname = obj.getString("name");
|
|
||||||
}
|
|
||||||
if (obj.has("id") && !obj.getString("id").isEmpty()) {
|
|
||||||
uuid = obj.getString("id");
|
|
||||||
}
|
|
||||||
|
|
||||||
response.close();
|
|
||||||
return Pair.of(returnname, uuid.isEmpty() ? null : mojangIdToUUID(uuid));
|
|
||||||
}
|
|
||||||
} catch (IOException | JSONException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return Pair.of("", null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static UUID mojangIdToUUID(String id) {
|
|
||||||
final List<String> strings = new ArrayList<>();
|
|
||||||
strings.add(id.substring(0, 8));
|
|
||||||
strings.add(id.substring(8, 12));
|
|
||||||
strings.add(id.substring(12, 16));
|
|
||||||
strings.add(id.substring(16, 20));
|
|
||||||
strings.add(id.substring(20, 32));
|
|
||||||
|
|
||||||
return UUID.fromString(String.join("-", strings));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Pair<String, UUID> offlinePlayer(String offlineName) {
|
|
||||||
return Pair.of(offlineName, UUID.nameUUIDFromBytes(("OfflinePlayer:" + offlineName).getBytes(StandardCharsets.UTF_8)));
|
|
||||||
}
|
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
}
|
}
|
||||||
|
@@ -91,7 +91,11 @@ public class ChatSettingsConfig {
|
|||||||
|
|
||||||
@Path("ignoredCommands")
|
@Path("ignoredCommands")
|
||||||
@SpecComment("Commands that should not be broadcast to discord")
|
@SpecComment("Commands that should not be broadcast to discord")
|
||||||
public List<String> ignoredCommands = new ArrayList<String>() {{ add("particle"); add("login"); add("execute"); }};
|
public List<String> ignoredCommands = new ArrayList<String>() {{
|
||||||
|
add("particle");
|
||||||
|
add("login");
|
||||||
|
add("execute");
|
||||||
|
}};
|
||||||
|
|
||||||
@Path("allowMentionsFromChat")
|
@Path("allowMentionsFromChat")
|
||||||
@SpecComment("Allow mentioning discord roles, users and channels from Minecraft Chat")
|
@SpecComment("Allow mentioning discord roles, users and channels from Minecraft Chat")
|
||||||
|
@@ -24,6 +24,17 @@ public class MessageIgnoreConfig {
|
|||||||
@SpecComment("Ignore messages sent from certain threads")
|
@SpecComment("Ignore messages sent from certain threads")
|
||||||
public List<String> ignoredThread = new ArrayList<>();
|
public List<String> ignoredThread = new ArrayList<>();
|
||||||
|
|
||||||
|
public enum FilterMode {
|
||||||
|
STARTS_WITH,
|
||||||
|
MATCHES,
|
||||||
|
CONTAINS
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ActionMode {
|
||||||
|
REPLACE,
|
||||||
|
IGNORE
|
||||||
|
}
|
||||||
|
|
||||||
public static class Ignore {
|
public static class Ignore {
|
||||||
@Path("search")
|
@Path("search")
|
||||||
@SpecComment("The text to search for in the message")
|
@SpecComment("The text to search for in the message")
|
||||||
@@ -42,15 +53,4 @@ public class MessageIgnoreConfig {
|
|||||||
public ActionMode action = ActionMode.REPLACE;
|
public ActionMode action = ActionMode.REPLACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum FilterMode {
|
|
||||||
STARTS_WITH,
|
|
||||||
MATCHES,
|
|
||||||
CONTAINS
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum ActionMode {
|
|
||||||
REPLACE,
|
|
||||||
IGNORE
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -13,19 +13,24 @@ import lombok.Setter;
|
|||||||
public class SDLinkAccount {
|
public class SDLinkAccount {
|
||||||
|
|
||||||
@Id
|
@Id
|
||||||
@Getter @Setter
|
@Getter
|
||||||
|
@Setter
|
||||||
private String uuid;
|
private String uuid;
|
||||||
|
|
||||||
@Getter @Setter
|
@Getter
|
||||||
|
@Setter
|
||||||
private String username;
|
private String username;
|
||||||
|
|
||||||
@Getter @Setter
|
@Getter
|
||||||
|
@Setter
|
||||||
private String discordID;
|
private String discordID;
|
||||||
|
|
||||||
@Getter @Setter
|
@Getter
|
||||||
|
@Setter
|
||||||
private String verifyCode;
|
private String verifyCode;
|
||||||
|
|
||||||
@Getter @Setter
|
@Getter
|
||||||
|
@Setter
|
||||||
private boolean isOffline;
|
private boolean isOffline;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -35,30 +35,18 @@ import java.util.concurrent.TimeUnit;
|
|||||||
*/
|
*/
|
||||||
public class BotController {
|
public class BotController {
|
||||||
|
|
||||||
// Public instance of this class that can be called anywhere
|
|
||||||
public static BotController INSTANCE;
|
|
||||||
|
|
||||||
// Thread Execution Manager
|
// Thread Execution Manager
|
||||||
public static final ScheduledExecutorService taskManager = Executors.newScheduledThreadPool(Runtime.getRuntime().availableProcessors());
|
public static final ScheduledExecutorService taskManager = Executors.newScheduledThreadPool(Runtime.getRuntime().availableProcessors());
|
||||||
|
// Public instance of this class that can be called anywhere
|
||||||
// Required Variables
|
public static BotController INSTANCE;
|
||||||
private JDA _jda;
|
|
||||||
private final EventWaiter eventWaiter = new EventWaiter();
|
private final EventWaiter eventWaiter = new EventWaiter();
|
||||||
private final Logger logger;
|
private final Logger logger;
|
||||||
|
// Required Variables
|
||||||
/**
|
private JDA _jda;
|
||||||
* Construct a new instance of this class
|
|
||||||
* @param logger A constructed {@link Logger} that the bot will use
|
|
||||||
*/
|
|
||||||
public static void newInstance(Logger logger) {
|
|
||||||
if (INSTANCE != null) {
|
|
||||||
INSTANCE.shutdownBot(false);
|
|
||||||
}
|
|
||||||
new BotController(logger);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* INTERNAL
|
* INTERNAL
|
||||||
|
*
|
||||||
* @param logger A constructed {@link Logger} that the bot will use
|
* @param logger A constructed {@link Logger} that the bot will use
|
||||||
*/
|
*/
|
||||||
private BotController(Logger logger) {
|
private BotController(Logger logger) {
|
||||||
@@ -91,6 +79,18 @@ public class BotController {
|
|||||||
EmbedManager.init();
|
EmbedManager.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a new instance of this class
|
||||||
|
*
|
||||||
|
* @param logger A constructed {@link Logger} that the bot will use
|
||||||
|
*/
|
||||||
|
public static void newInstance(Logger logger) {
|
||||||
|
if (INSTANCE != null) {
|
||||||
|
INSTANCE.shutdownBot(false);
|
||||||
|
}
|
||||||
|
new BotController(logger);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Start the bot and handle all the startup work
|
* Start the bot and handle all the startup work
|
||||||
*/
|
*/
|
||||||
@@ -171,6 +171,7 @@ public class BotController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Shutdown the Bot, optionally forcing a shutdown
|
* Shutdown the Bot, optionally forcing a shutdown
|
||||||
|
*
|
||||||
* @param forced Should the shutdown be forced
|
* @param forced Should the shutdown be forced
|
||||||
*/
|
*/
|
||||||
public void shutdownBot(boolean forced) {
|
public void shutdownBot(boolean forced) {
|
||||||
|
@@ -52,6 +52,7 @@ public class CommandManager {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* INTERNAL. Used to register slash commands
|
* INTERNAL. Used to register slash commands
|
||||||
|
*
|
||||||
* @param client The Discord Command Client instance
|
* @param client The Discord Command Client instance
|
||||||
*/
|
*/
|
||||||
public void register(CommandClient client) {
|
public void register(CommandClient client) {
|
||||||
|
@@ -17,7 +17,7 @@ public abstract class SDLinkSlashCommand extends SlashCommand {
|
|||||||
this.guildOnly = true;
|
this.guildOnly = true;
|
||||||
|
|
||||||
if (requiresPerms) {
|
if (requiresPerms) {
|
||||||
this.userPermissions = new Permission[] { Permission.MANAGE_SERVER };
|
this.userPermissions = new Permission[]{Permission.MANAGE_SERVER};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -61,7 +61,7 @@ public class PlayerListSlashCommand extends SDLinkSlashCommand {
|
|||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
count.getAndIncrement();
|
count.getAndIncrement();
|
||||||
builder.clear();
|
builder.clear();
|
||||||
builder.setTitle("Online Players - Page " + count.get() + "/" + (int)Math.ceil(((float)players.size() / 10)));
|
builder.setTitle("Online Players - Page " + count.get() + "/" + (int) Math.ceil(((float) players.size() / 10)));
|
||||||
builder.setColor(Color.GREEN);
|
builder.setColor(Color.GREEN);
|
||||||
|
|
||||||
p.forEach(account -> {
|
p.forEach(account -> {
|
||||||
|
@@ -30,13 +30,6 @@ public class ServerStatusSlashCommand extends SDLinkSlashCommand {
|
|||||||
this.guildOnly = true;
|
this.guildOnly = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void execute(SlashCommandEvent event) {
|
|
||||||
event.deferReply(true).queue();
|
|
||||||
Button refreshBtn = Button.danger("sdrefreshbtn", "Refresh");
|
|
||||||
event.getHook().sendMessageEmbeds(runStatusCommand()).addActionRow(refreshBtn).queue();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MessageEmbed runStatusCommand() {
|
public static MessageEmbed runStatusCommand() {
|
||||||
SystemInfo systemInfo = new SystemInfo();
|
SystemInfo systemInfo = new SystemInfo();
|
||||||
HardwareAbstractionLayer hal = systemInfo.getHardware();
|
HardwareAbstractionLayer hal = systemInfo.getHardware();
|
||||||
@@ -107,4 +100,11 @@ public class ServerStatusSlashCommand extends SDLinkSlashCommand {
|
|||||||
|
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(SlashCommandEvent event) {
|
||||||
|
event.deferReply(true).queue();
|
||||||
|
Button refreshBtn = Button.danger("sdrefreshbtn", "Refresh");
|
||||||
|
event.getHook().sendMessageEmbeds(runStatusCommand()).addActionRow(refreshBtn).queue();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -55,7 +55,7 @@ public class ViewVerifiedAccounts extends SDLinkSlashCommand {
|
|||||||
MessageUtil.listBatches(accounts, 10).forEach(itm -> {
|
MessageUtil.listBatches(accounts, 10).forEach(itm -> {
|
||||||
count.getAndIncrement();
|
count.getAndIncrement();
|
||||||
builder.clear();
|
builder.clear();
|
||||||
builder.setTitle("Verified Accounts - Page " + count + "/" + (int)Math.ceil(((float)accounts.size() / 10)));
|
builder.setTitle("Verified Accounts - Page " + count + "/" + (int) Math.ceil(((float) accounts.size() / 10)));
|
||||||
builder.setColor(Color.GREEN);
|
builder.setColor(Color.GREEN);
|
||||||
StringBuilder sBuilder = new StringBuilder();
|
StringBuilder sBuilder = new StringBuilder();
|
||||||
|
|
||||||
|
@@ -25,6 +25,7 @@ public class BotReadyHooks {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the bot activity
|
* Update the bot activity
|
||||||
|
*
|
||||||
* @param event The {@link ReadyEvent}
|
* @param event The {@link ReadyEvent}
|
||||||
*/
|
*/
|
||||||
public static void startActivityUpdates(ReadyEvent event) {
|
public static void startActivityUpdates(ReadyEvent event) {
|
||||||
|
@@ -19,9 +19,8 @@ import java.util.HashMap;
|
|||||||
*/
|
*/
|
||||||
public class ChannelManager {
|
public class ChannelManager {
|
||||||
|
|
||||||
private static StandardGuildMessageChannel consoleChannel;
|
|
||||||
|
|
||||||
private static final HashMap<MessageDestination, Pair<StandardGuildMessageChannel, Boolean>> channelMap = new HashMap<>();
|
private static final HashMap<MessageDestination, Pair<StandardGuildMessageChannel, Boolean>> channelMap = new HashMap<>();
|
||||||
|
private static StandardGuildMessageChannel consoleChannel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load configured channel, while always defaulting back to ChatChannel for channels that aren't configured
|
* Load configured channel, while always defaulting back to ChatChannel for channels that aren't configured
|
||||||
|
@@ -27,22 +27,22 @@ public class PermissionChecker {
|
|||||||
|
|
||||||
// Base Permissions required by the bot to operate
|
// Base Permissions required by the bot to operate
|
||||||
private static final List<Permission> BOT_PERMS = new ArrayList<>() {{
|
private static final List<Permission> BOT_PERMS = new ArrayList<>() {{
|
||||||
add(Permission.NICKNAME_CHANGE);
|
add(Permission.NICKNAME_CHANGE);
|
||||||
add(Permission.MANAGE_WEBHOOKS);
|
add(Permission.MANAGE_WEBHOOKS);
|
||||||
add(Permission.MESSAGE_SEND);
|
add(Permission.MESSAGE_SEND);
|
||||||
add(Permission.MESSAGE_EMBED_LINKS);
|
add(Permission.MESSAGE_EMBED_LINKS);
|
||||||
add(Permission.MESSAGE_HISTORY);
|
add(Permission.MESSAGE_HISTORY);
|
||||||
add(Permission.MESSAGE_EXT_EMOJI);
|
add(Permission.MESSAGE_EXT_EMOJI);
|
||||||
add(Permission.MANAGE_ROLES);
|
add(Permission.MANAGE_ROLES);
|
||||||
add(Permission.MESSAGE_MANAGE);
|
add(Permission.MESSAGE_MANAGE);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
// Basic channel permissions required by all channels
|
// Basic channel permissions required by all channels
|
||||||
private static final List<Permission> BASE_CHANNEL_PERMS = new ArrayList<>() {{
|
private static final List<Permission> BASE_CHANNEL_PERMS = new ArrayList<>() {{
|
||||||
add(Permission.VIEW_CHANNEL);
|
add(Permission.VIEW_CHANNEL);
|
||||||
add(Permission.MESSAGE_SEND);
|
add(Permission.MESSAGE_SEND);
|
||||||
add(Permission.MESSAGE_EMBED_LINKS);
|
add(Permission.MESSAGE_EMBED_LINKS);
|
||||||
add(Permission.MANAGE_WEBHOOKS);
|
add(Permission.MANAGE_WEBHOOKS);
|
||||||
}};
|
}};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -28,6 +28,7 @@ public class RoleManager {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Check and load the roles required by the bot
|
* Check and load the roles required by the bot
|
||||||
|
*
|
||||||
* @param errCount
|
* @param errCount
|
||||||
* @param builder
|
* @param builder
|
||||||
*/
|
*/
|
||||||
@@ -55,10 +56,11 @@ public class RoleManager {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Load a role from either a Name or ID
|
* Load a role from either a Name or ID
|
||||||
* @param errCount Counter holding the current error count
|
*
|
||||||
* @param builder String builder that is used to build the error messages
|
* @param errCount Counter holding the current error count
|
||||||
|
* @param builder String builder that is used to build the error messages
|
||||||
* @param roleIdentifier Log identifier for the role being loaded
|
* @param roleIdentifier Log identifier for the role being loaded
|
||||||
* @param roleID The ID or Name of the role to load
|
* @param roleID The ID or Name of the role to load
|
||||||
* @return The role that matched or NULL
|
* @return The role that matched or NULL
|
||||||
*/
|
*/
|
||||||
private static Role getRole(AtomicInteger errCount, StringBuilder builder, String roleIdentifier, String roleID) {
|
private static Role getRole(AtomicInteger errCount, StringBuilder builder, String roleIdentifier, String roleID) {
|
||||||
|
@@ -19,8 +19,8 @@ import java.util.HashMap;
|
|||||||
*/
|
*/
|
||||||
public class WebhookManager {
|
public class WebhookManager {
|
||||||
|
|
||||||
private static WebhookClient chatWebhookClient, eventWebhookClient, consoleWebhookClient;
|
|
||||||
private static final HashMap<MessageDestination, WebhookClient> clientMap = new HashMap<>();
|
private static final HashMap<MessageDestination, WebhookClient> clientMap = new HashMap<>();
|
||||||
|
private static WebhookClient chatWebhookClient, eventWebhookClient, consoleWebhookClient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load configured webhook clients
|
* Load configured webhook clients
|
||||||
|
@@ -10,14 +10,8 @@ package com.hypherionmc.sdlink.core.messaging;
|
|||||||
*/
|
*/
|
||||||
public class Result {
|
public class Result {
|
||||||
|
|
||||||
enum Type {
|
|
||||||
ERROR,
|
|
||||||
SUCCESS
|
|
||||||
}
|
|
||||||
|
|
||||||
private final Type type;
|
private final Type type;
|
||||||
private final String message;
|
private final String message;
|
||||||
|
|
||||||
private Result(Type type, String message) {
|
private Result(Type type, String message) {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.message = message;
|
this.message = message;
|
||||||
@@ -39,4 +33,9 @@ public class Result {
|
|||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum Type {
|
||||||
|
ERROR,
|
||||||
|
SUCCESS
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -148,6 +148,7 @@ public final class DiscordMessage {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Build an embed with the supplied information
|
* Build an embed with the supplied information
|
||||||
|
*
|
||||||
* @param withAuthor Should the author be appended to the embed. Not used for Webhooks
|
* @param withAuthor Should the author be appended to the embed. Not used for Webhooks
|
||||||
*/
|
*/
|
||||||
private EmbedBuilder buildEmbed(boolean withAuthor, String key) {
|
private EmbedBuilder buildEmbed(boolean withAuthor, String key) {
|
||||||
|
@@ -24,6 +24,7 @@ public final class DiscordMessageBuilder {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a discord message
|
* Construct a discord message
|
||||||
|
*
|
||||||
* @param messageType The type of message being sent
|
* @param messageType The type of message being sent
|
||||||
*/
|
*/
|
||||||
public DiscordMessageBuilder(MessageType messageType) {
|
public DiscordMessageBuilder(MessageType messageType) {
|
||||||
|
@@ -21,13 +21,20 @@ import java.util.List;
|
|||||||
public interface IMinecraftHelper {
|
public interface IMinecraftHelper {
|
||||||
|
|
||||||
void discordMessageReceived(Member member, String message);
|
void discordMessageReceived(Member member, String message);
|
||||||
|
|
||||||
Result checkWhitelisting();
|
Result checkWhitelisting();
|
||||||
|
|
||||||
Pair<Integer, Integer> getPlayerCounts();
|
Pair<Integer, Integer> getPlayerCounts();
|
||||||
|
|
||||||
List<MinecraftAccount> getOnlinePlayers();
|
List<MinecraftAccount> getOnlinePlayers();
|
||||||
|
|
||||||
long getServerUptime();
|
long getServerUptime();
|
||||||
|
|
||||||
String getServerVersion();
|
String getServerVersion();
|
||||||
|
|
||||||
Result executeMinecraftCommand(String command, int permLevel, MessageReceivedEvent event, @Nullable SDLinkAccount account);
|
Result executeMinecraftCommand(String command, int permLevel, MessageReceivedEvent event, @Nullable SDLinkAccount account);
|
||||||
|
|
||||||
boolean isOnlineMode();
|
boolean isOnlineMode();
|
||||||
|
|
||||||
void banPlayer(MinecraftAccount acc);
|
void banPlayer(MinecraftAccount acc);
|
||||||
}
|
}
|
||||||
|
@@ -22,19 +22,10 @@ import java.util.Random;
|
|||||||
*/
|
*/
|
||||||
public final class EncryptionUtil {
|
public final class EncryptionUtil {
|
||||||
|
|
||||||
public static EncryptionUtil INSTANCE = getInstance();
|
private final boolean canRun; public static EncryptionUtil INSTANCE = getInstance();
|
||||||
private final boolean canRun;
|
|
||||||
|
|
||||||
// Instance of the Encryptor Used
|
// Instance of the Encryptor Used
|
||||||
private final StandardPBEStringEncryptor encryptor;
|
private final StandardPBEStringEncryptor encryptor;
|
||||||
|
|
||||||
private static EncryptionUtil getInstance() {
|
|
||||||
if (INSTANCE == null) {
|
|
||||||
INSTANCE = new EncryptionUtil();
|
|
||||||
}
|
|
||||||
return INSTANCE;
|
|
||||||
}
|
|
||||||
|
|
||||||
private EncryptionUtil() {
|
private EncryptionUtil() {
|
||||||
String encCode = "";
|
String encCode = "";
|
||||||
|
|
||||||
@@ -63,8 +54,16 @@ public final class EncryptionUtil {
|
|||||||
BotController.INSTANCE.getLogger().error("Failed to initialize encryption system. Your config values will not be encrypted!");
|
BotController.INSTANCE.getLogger().error("Failed to initialize encryption system. Your config values will not be encrypted!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static EncryptionUtil getInstance() {
|
||||||
|
if (INSTANCE == null) {
|
||||||
|
INSTANCE = new EncryptionUtil();
|
||||||
|
}
|
||||||
|
return INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Will Encrypt the string passed into it, if it's not already encrypted
|
* Will Encrypt the string passed into it, if it's not already encrypted
|
||||||
|
*
|
||||||
* @param input The string to be encrypted
|
* @param input The string to be encrypted
|
||||||
* @return The encrypted string
|
* @return The encrypted string
|
||||||
*/
|
*/
|
||||||
@@ -82,6 +81,7 @@ public final class EncryptionUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Decrypts an encrypted string
|
* Decrypts an encrypted string
|
||||||
|
*
|
||||||
* @param input The encrypted String
|
* @param input The encrypted String
|
||||||
* @return The Plain Text String
|
* @return The Plain Text String
|
||||||
*/
|
*/
|
||||||
@@ -120,4 +120,6 @@ public final class EncryptionUtil {
|
|||||||
return RandomStringUtils.random(new Random().nextInt(40), true, true);
|
return RandomStringUtils.random(new Random().nextInt(40), true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -35,9 +35,9 @@ import java.util.Date;
|
|||||||
public class LogReader extends AbstractAppender {
|
public class LogReader extends AbstractAppender {
|
||||||
|
|
||||||
public static String logs = "";
|
public static String logs = "";
|
||||||
|
private static boolean isDevEnv = false;
|
||||||
private long time;
|
private long time;
|
||||||
private Thread messageScheduler;
|
private Thread messageScheduler;
|
||||||
private static boolean isDevEnv = false;
|
|
||||||
|
|
||||||
protected LogReader(String name, Filter filter) {
|
protected LogReader(String name, Filter filter) {
|
||||||
super(name, filter, null, true, new Property[0]);
|
super(name, filter, null, true, new Property[0]);
|
||||||
|
@@ -35,6 +35,7 @@ public class MessageUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Split a large list of items into smaller sublists. This is to help with Discord limits on pagination
|
* Split a large list of items into smaller sublists. This is to help with Discord limits on pagination
|
||||||
|
*
|
||||||
* @param source The list of objects to split
|
* @param source The list of objects to split
|
||||||
* @param length How many entries are allowed per sub-list
|
* @param length How many entries are allowed per sub-list
|
||||||
*/
|
*/
|
||||||
|
@@ -15,8 +15,8 @@ import com.hypherionmc.sdlink.core.discord.BotController;
|
|||||||
//TODO Remove this on release
|
//TODO Remove this on release
|
||||||
public class Profiler {
|
public class Profiler {
|
||||||
|
|
||||||
private long startTime;
|
|
||||||
private final String profilerName;
|
private final String profilerName;
|
||||||
|
private long startTime;
|
||||||
private boolean hasStarted = false;
|
private boolean hasStarted = false;
|
||||||
private String message = "";
|
private String message = "";
|
||||||
|
|
||||||
|
@@ -12,6 +12,7 @@ public class SystemUtils {
|
|||||||
/**
|
/**
|
||||||
* Convert Bytes into a human-readable format, like 1GB
|
* Convert Bytes into a human-readable format, like 1GB
|
||||||
* From https://stackoverflow.com/a/3758880
|
* From https://stackoverflow.com/a/3758880
|
||||||
|
*
|
||||||
* @param bytes The Size in Bytes
|
* @param bytes The Size in Bytes
|
||||||
* @return The size formatted in KB, MB, GB, TB, PB etc
|
* @return The size formatted in KB, MB, GB, TB, PB etc
|
||||||
*/
|
*/
|
||||||
@@ -34,6 +35,7 @@ public class SystemUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert Seconds into a Timestamp
|
* Convert Seconds into a Timestamp
|
||||||
|
*
|
||||||
* @param sec Input in seconds
|
* @param sec Input in seconds
|
||||||
*/
|
*/
|
||||||
public static String secondsToTimestamp(long sec) {
|
public static String secondsToTimestamp(long sec) {
|
||||||
@@ -55,7 +57,8 @@ public class SystemUtils {
|
|||||||
try {
|
try {
|
||||||
Long.parseLong(input);
|
Long.parseLong(input);
|
||||||
return true;
|
return true;
|
||||||
} catch (NumberFormatException ignored){}
|
} catch (NumberFormatException ignored) {
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user