From 56be1046492dc8e7cf9fc448726556e53c5fe121 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Wed, 27 Jan 2021 03:28:58 +0000 Subject: [PATCH 01/59] Rename package --- .../bukkit/HiberniaDiscord.java => conch/bukkit/BukkitConch.java} | 0 .../paradaux/{hiberniadiscord => conch}/bukkit/api/BukkitAPI.java | 0 .../bukkit/api/BukkitConfigurationManager.java | 0 .../{hiberniadiscord => conch}/bukkit/api/PlaceholderWrapper.java | 0 .../{hiberniadiscord => conch}/bukkit/api/VersionChecker.java | 0 .../bukkit/controllers/MetricsController.java | 0 .../bukkit/controllers/TaskController.java | 0 .../bukkit/controllers/VersionNotificationController.java | 0 .../bukkit/listeners/AsyncPlayerChatEventListener.java | 0 .../bukkit/listeners/GenericListener.java | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename Bukkit/src/main/java/io/paradaux/{hiberniadiscord/bukkit/HiberniaDiscord.java => conch/bukkit/BukkitConch.java} (100%) rename Bukkit/src/main/java/io/paradaux/{hiberniadiscord => conch}/bukkit/api/BukkitAPI.java (100%) rename Bukkit/src/main/java/io/paradaux/{hiberniadiscord => conch}/bukkit/api/BukkitConfigurationManager.java (100%) rename Bukkit/src/main/java/io/paradaux/{hiberniadiscord => conch}/bukkit/api/PlaceholderWrapper.java (100%) rename Bukkit/src/main/java/io/paradaux/{hiberniadiscord => conch}/bukkit/api/VersionChecker.java (100%) rename Bukkit/src/main/java/io/paradaux/{hiberniadiscord => conch}/bukkit/controllers/MetricsController.java (100%) rename Bukkit/src/main/java/io/paradaux/{hiberniadiscord => conch}/bukkit/controllers/TaskController.java (100%) rename Bukkit/src/main/java/io/paradaux/{hiberniadiscord => conch}/bukkit/controllers/VersionNotificationController.java (100%) rename Bukkit/src/main/java/io/paradaux/{hiberniadiscord => conch}/bukkit/listeners/AsyncPlayerChatEventListener.java (100%) rename Bukkit/src/main/java/io/paradaux/{hiberniadiscord => conch}/bukkit/listeners/GenericListener.java (100%) diff --git a/Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/HiberniaDiscord.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java similarity index 100% rename from Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/HiberniaDiscord.java rename to Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java diff --git a/Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/api/BukkitAPI.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java similarity index 100% rename from Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/api/BukkitAPI.java rename to Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java diff --git a/Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/api/BukkitConfigurationManager.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java similarity index 100% rename from Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/api/BukkitConfigurationManager.java rename to Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java diff --git a/Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/api/PlaceholderWrapper.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/PlaceholderWrapper.java similarity index 100% rename from Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/api/PlaceholderWrapper.java rename to Bukkit/src/main/java/io/paradaux/conch/bukkit/api/PlaceholderWrapper.java diff --git a/Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/api/VersionChecker.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java similarity index 100% rename from Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/api/VersionChecker.java rename to Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java diff --git a/Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/controllers/MetricsController.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/MetricsController.java similarity index 100% rename from Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/controllers/MetricsController.java rename to Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/MetricsController.java diff --git a/Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/controllers/TaskController.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/TaskController.java similarity index 100% rename from Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/controllers/TaskController.java rename to Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/TaskController.java diff --git a/Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/controllers/VersionNotificationController.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/VersionNotificationController.java similarity index 100% rename from Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/controllers/VersionNotificationController.java rename to Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/VersionNotificationController.java diff --git a/Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/listeners/AsyncPlayerChatEventListener.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java similarity index 100% rename from Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/listeners/AsyncPlayerChatEventListener.java rename to Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java diff --git a/Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/listeners/GenericListener.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java similarity index 100% rename from Bukkit/src/main/java/io/paradaux/hiberniadiscord/bukkit/listeners/GenericListener.java rename to Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java From 77b1ad4dd4029777f496204f34b5e9a2a5537618 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Wed, 27 Jan 2021 03:29:06 +0000 Subject: [PATCH 02/59] Rebranding --- Bukkit/pom.xml | 20 ++++++++++---------- pom.xml | 37 +++++++++++++++++++++++++++++++++---- 2 files changed, 43 insertions(+), 14 deletions(-) diff --git a/Bukkit/pom.xml b/Bukkit/pom.xml index cc3dea0..04d02f9 100644 --- a/Bukkit/pom.xml +++ b/Bukkit/pom.xml @@ -28,17 +28,17 @@ 4.0.0 - hiberniadiscord - io.paradaux.hiberniadiscord + conch + io.paradaux.conch 4.0.0 - hiberniadiscord-bukkit + conch-bukkit 4.0.0 jar Bukkit - HiberniaDiscord's Bukkit Functionality + Conch's Bukkit Implementation @@ -78,11 +78,11 @@ bstats-bukkit - io.paradaux.hiberniadiscord.bstats + io.paradaux.conch.bstats - hiberniadiscord-common - io.paradaux.hiberniadiscord.common + conch-common + io.paradaux.conch.common @@ -126,9 +126,9 @@ - io.paradaux.hiberniadiscord - hiberniadiscord-common - 4.0.0 + io.paradaux.conch + conch-common + 1.0.0 compile diff --git a/pom.xml b/pom.xml index 02121fd..f8cce16 100644 --- a/pom.xml +++ b/pom.xml @@ -4,12 +4,12 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - io.paradaux.hiberniadiscord - hiberniadiscord + io.paradaux.conch + conch 4.0.0 - HiberniaDiscord - https://hiberniadiscord.paradaux.io + Conch + https://conch.rocks pom @@ -90,6 +90,35 @@ + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-artifact + install + + copy + + + + + ${project.groupId} + ${project.artifactId} + ${project.version} + ${project.packaging} + + + ../Main/target/dependencies + + + + + + + From 8e45eb9f81ebf4aa931b0d29824af0010ca03f77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Wed, 27 Jan 2021 03:29:20 +0000 Subject: [PATCH 03/59] private! --- .../common/api/config/EventConfiguration.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/EventConfiguration.java b/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/EventConfiguration.java index 665fb54..df4250f 100644 --- a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/EventConfiguration.java +++ b/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/EventConfiguration.java @@ -29,12 +29,11 @@ public class EventConfiguration { - String eventName; - - boolean enabled; - String webhookUsernameFormat; - String webhookAvatarFormat; - String webhookMessageFormat; + private String eventName; + private boolean enabled; + private String webhookUsernameFormat; + private String webhookAvatarFormat; + private String webhookMessageFormat; private EventConfiguration() { // Use the builder! From e87288db14ff1a13b184fb4acc2d4cca446612e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Wed, 27 Jan 2021 03:29:55 +0000 Subject: [PATCH 04/59] Rename package bukkit --- .../main/java/io/paradaux/conch/bukkit/BukkitConch.java | 8 ++++---- .../main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java | 2 +- .../conch/bukkit/api/BukkitConfigurationManager.java | 2 +- .../io/paradaux/conch/bukkit/api/PlaceholderWrapper.java | 2 +- .../java/io/paradaux/conch/bukkit/api/VersionChecker.java | 4 ++-- .../conch/bukkit/controllers/MetricsController.java | 2 +- .../paradaux/conch/bukkit/controllers/TaskController.java | 2 +- .../bukkit/controllers/VersionNotificationController.java | 2 +- .../bukkit/listeners/AsyncPlayerChatEventListener.java | 7 +++---- .../paradaux/conch/bukkit/listeners/GenericListener.java | 2 +- Bukkit/src/main/resources/plugin.yml | 2 +- 11 files changed, 17 insertions(+), 18 deletions(-) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java index b385d33..35c4a02 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java @@ -21,12 +21,12 @@ * See LICENSE.md for more details. */ -package io.paradaux.hiberniadiscord.bukkit; +package io.paradaux.conch.bukkit; import co.aikar.taskchain.BukkitTaskChainFactory; import co.aikar.taskchain.TaskChainFactory; -import io.paradaux.hiberniadiscord.bukkit.api.BukkitAPI; -import io.paradaux.hiberniadiscord.bukkit.api.BukkitConfigurationManager; +import io.paradaux.conch.bukkit.api.BukkitAPI; +import io.paradaux.conch.bukkit.api.BukkitConfigurationManager; import io.paradaux.hiberniadiscord.common.api.I18NLogger; import io.paradaux.hiberniadiscord.common.api.I18NManager; import org.bukkit.plugin.java.JavaPlugin; @@ -37,7 +37,7 @@ import java.util.Locale; import java.util.ResourceBundle; -public class HiberniaDiscord extends JavaPlugin { +public class BukkitConch extends JavaPlugin { private static BukkitAPI API; diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java index 0ce3c2c..6659214 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java @@ -21,7 +21,7 @@ * See LICENSE.md for more details. */ -package io.paradaux.hiberniadiscord.bukkit.api; +package io.paradaux.conch.bukkit.api; import io.paradaux.hiberniadiscord.common.API; import io.paradaux.hiberniadiscord.common.api.BotManager; diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java index 0314aa0..78eb1ea 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java @@ -21,7 +21,7 @@ * See LICENSE.md for more details. */ -package io.paradaux.hiberniadiscord.bukkit.api; +package io.paradaux.conch.bukkit.api; import io.paradaux.hiberniadiscord.common.api.ConfigurationManager; import io.paradaux.hiberniadiscord.common.api.I18NLogger; diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/PlaceholderWrapper.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/PlaceholderWrapper.java index b0a99de..d1a256f 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/PlaceholderWrapper.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/PlaceholderWrapper.java @@ -21,7 +21,7 @@ * See LICENSE.md for more details. */ -package io.paradaux.hiberniadiscord.bukkit.api; +package io.paradaux.conch.bukkit.api; import me.clip.placeholderapi.PlaceholderAPI; import org.bukkit.OfflinePlayer; diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java index b7cd96d..5da5284 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java @@ -21,9 +21,9 @@ * See LICENSE.md for more details. */ -package io.paradaux.hiberniadiscord.bukkit.api; +package io.paradaux.conch.bukkit.api; -import io.paradaux.hiberniadiscord.bukkit.controllers.TaskController; +import io.paradaux.conch.bukkit.controllers.TaskController; import org.bukkit.util.Consumer; import org.slf4j.Logger; diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/MetricsController.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/MetricsController.java index b65fc8b..9250a31 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/MetricsController.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/MetricsController.java @@ -21,7 +21,7 @@ * See LICENSE.md for more details. */ -package io.paradaux.hiberniadiscord.bukkit.controllers; +package io.paradaux.conch.bukkit.controllers; import org.bstats.bukkit.Metrics; import org.bukkit.plugin.Plugin; diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/TaskController.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/TaskController.java index 0eaac47..2e550df 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/TaskController.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/TaskController.java @@ -21,7 +21,7 @@ * See LICENSE.md for more details. */ -package io.paradaux.hiberniadiscord.bukkit.controllers; +package io.paradaux.conch.bukkit.controllers; import co.aikar.taskchain.BukkitTaskChainFactory; import co.aikar.taskchain.TaskChain; diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/VersionNotificationController.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/VersionNotificationController.java index bc4e5a3..b46ea6b 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/VersionNotificationController.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/VersionNotificationController.java @@ -21,7 +21,7 @@ * See LICENSE.md for more details. */ -package io.paradaux.hiberniadiscord.bukkit.controllers; +package io.paradaux.conch.bukkit.controllers; public class VersionNotificationController { } diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java index 4ac08d8..d4eef2a 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java @@ -21,10 +21,9 @@ * See LICENSE.md for more details. */ -package io.paradaux.hiberniadiscord.bukkit.listeners; +package io.paradaux.conch.bukkit.listeners; -import io.paradaux.hiberniadiscord.bukkit.api.PlaceholderWrapper; -import io.paradaux.hiberniadiscord.common.api.DiscordManager; +import io.paradaux.conch.bukkit.api.PlaceholderWrapper; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -33,7 +32,7 @@ import javax.annotation.Nullable; -import static io.paradaux.hiberniadiscord.bukkit.api.PlaceholderWrapper.withPlaceholders; +import static io.paradaux.conch.bukkit.api.PlaceholderWrapper.withPlaceholders; public class AsyncPlayerChatEventListener extends GenericListener { diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java index a4ddf5c..2ccd6de 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java @@ -21,7 +21,7 @@ * See LICENSE.md for more details. */ -package io.paradaux.hiberniadiscord.bukkit.listeners; +package io.paradaux.conch.bukkit.listeners; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; diff --git a/Bukkit/src/main/resources/plugin.yml b/Bukkit/src/main/resources/plugin.yml index f84b09b..7c35420 100644 --- a/Bukkit/src/main/resources/plugin.yml +++ b/Bukkit/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: HiberniaDiscord version: ${project.version} -main: io.paradaux.hiberniadiscord.bukkit.HiberniaDiscord +main: HiberniaDiscord api-version: 1.16 description: HiberniaDiscord's Bukkit Functioanlity commands: From f26b9901f0922382f1255410c8327eb2f63d32ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Wed, 27 Jan 2021 03:32:56 +0000 Subject: [PATCH 05/59] Update HD references in the bukkit config --- Bukkit/src/main/resources/bot-settings.conf | 8 ++++---- Bukkit/src/main/resources/event-settings.conf | 2 +- Bukkit/src/main/resources/general-settings.conf | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Bukkit/src/main/resources/bot-settings.conf b/Bukkit/src/main/resources/bot-settings.conf index 2ce2d76..4ffce19 100644 --- a/Bukkit/src/main/resources/bot-settings.conf +++ b/Bukkit/src/main/resources/bot-settings.conf @@ -1,6 +1,6 @@ -# HiberniaDiscord v4.0.0 by Rían Errity Licensed under GPLv3 | Bot Configuration. +# BukkitConch 1.0 by Rían Errity Licensed under GPLv3 | Bot Configuration. -// HiberniaDiscord comes bundled with a built-in discord bot. In order to make use of this you must create a discord +// Conch comes bundled with a built-in discord bot. In order to make use of this you must create a discord // token and place it between the double quotes ("") in the token field on line 8. The discord bot permits you to have // discord messages show up in game. @@ -8,7 +8,7 @@ enabled: false -// The Bot Token is your API key so HiberniaDiscord can talk to discord as a bot. You must create the bot account here: +// The Bot Token is your API key so Conch can talk to discord as a bot. You must create the bot account here: // https://discord.com/developers/applications Please see https://hiberniadiscrd.paradaux.io/#/bot-configuration for // more user-friendly instructions. @@ -26,7 +26,7 @@ send-messages-from-bots: false monitored-channels: ["731716903742996531", "736301820351086656", "739708755767329350"] // This configuration option only works on proxies, but allows you to map servers to monitored disocrd channels. -// This is an advanced configuration option https://hiberniadiscord.paradaux.io/#/network-configuration for more +// This is an advanced configuration option {TODO INSERT DOC LINK} for more // information as to how to set this up. // N.B :: Enabling this disables the monitors listed in monitored-channels diff --git a/Bukkit/src/main/resources/event-settings.conf b/Bukkit/src/main/resources/event-settings.conf index 8f752a6..01b32ee 100644 --- a/Bukkit/src/main/resources/event-settings.conf +++ b/Bukkit/src/main/resources/event-settings.conf @@ -1,4 +1,4 @@ -# HiberniaDiscord v4.0.0 by Rían Errity Licensed under GPLv3 | Event Configuration. +# Conch 1.0 by Rían Errity Licensed under GPLv3 | Event Configuration. // This is where you configure how certain events are displayed when they are sent to discord // If you do not wish for them to be sent to discord please set enabled to false. diff --git a/Bukkit/src/main/resources/general-settings.conf b/Bukkit/src/main/resources/general-settings.conf index e40c2ca..6a46d00 100644 --- a/Bukkit/src/main/resources/general-settings.conf +++ b/Bukkit/src/main/resources/general-settings.conf @@ -1,4 +1,4 @@ -# HiberniaDiscord v4.0.0 by Rían Errity Licensed under GPLv3 | General Settings. +# Conch 1.0 by Rían Errity Licensed under GPLv3 | General Settings. // This is where you configure the webhook and some general plugin settings. // If you do not wish for them to be sent to discord please set enabled to false. @@ -9,11 +9,11 @@ debug: false locale: en_US webhook-configuration: { - // See creating a webhook @ https://hiberniadiscord.paradaux.io/#/creating-a-webhook/ - // This is the webhook used by the events system. HiberniaDiscord Addons have the option of using their own webhook. + // See creating a webhook @ {TODO INSERT LINK} + // This is the webhook used by the events system. Conch Addons have the option of using their own webhook. webhook-url: "" - // If you only want to use HiberniaDiscord's Plugin's functionality disable the event listeners here. + // If you only want to use Conch's api functionality disable the event listeners here. events: true } @@ -24,7 +24,7 @@ placeholders: { // Enabling this enables the below proy-webhook-configuration settings which allows you to map servers to webhooks. // This option only exists for Proxies such as Bungeecord and Velocity. -// See https://hiberniadiscord.paradaux.io/#/network-configuration for more information on how to setup a multi-server +// See {TODO NETWORK CONFIG DOCS} for more information on how to setup a multi-server // / proxy setup. // Example: // "lobby": "https://discord.com/api/webhooks/794401363609649203/JY_EjgCw0dqkTckv8uB-kDo0wSovu9a8mFnGGXkyaGISvMTe3_zZKA" From 7cde31664bf1caa38440e93e7b441dd36d595a71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Wed, 27 Jan 2021 03:33:07 +0000 Subject: [PATCH 06/59] Fix main, remove stub commnad --- Bukkit/src/main/resources/plugin.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Bukkit/src/main/resources/plugin.yml b/Bukkit/src/main/resources/plugin.yml index 7c35420..256aa6f 100644 --- a/Bukkit/src/main/resources/plugin.yml +++ b/Bukkit/src/main/resources/plugin.yml @@ -1,8 +1,6 @@ name: HiberniaDiscord version: ${project.version} -main: HiberniaDiscord +main: io.paradaux.conch.bukkit.BukkitConch api-version: 1.16 -description: HiberniaDiscord's Bukkit Functioanlity +description: Conch's Bukkit Implementation commands: - disable: - usage: /disable \ No newline at end of file From 34751ca0dfeb1308a4273c72049fffb14d0d3168 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Wed, 27 Jan 2021 03:34:46 +0000 Subject: [PATCH 07/59] Package renaming --- .../bungeecord/BungeeConch.java} | 32 ++++++++++++++++--- .../listeners/ChatEventListener.java | 3 +- .../bungeecord/listeners/GenericListener.java | 2 +- Bungeecord/src/main/resources/bungee.yml | 2 +- 4 files changed, 30 insertions(+), 9 deletions(-) rename Bungeecord/src/main/java/io/paradaux/{hiberniadiscord/bungeecord/HiberniaDiscord.java => conch/bungeecord/BungeeConch.java} (54%) rename Bungeecord/src/main/java/io/paradaux/{hiberniadiscord => conch}/bungeecord/listeners/ChatEventListener.java (96%) rename Bungeecord/src/main/java/io/paradaux/{hiberniadiscord => conch}/bungeecord/listeners/GenericListener.java (98%) diff --git a/Bungeecord/src/main/java/io/paradaux/hiberniadiscord/bungeecord/HiberniaDiscord.java b/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/BungeeConch.java similarity index 54% rename from Bungeecord/src/main/java/io/paradaux/hiberniadiscord/bungeecord/HiberniaDiscord.java rename to Bungeecord/src/main/java/io/paradaux/conch/bungeecord/BungeeConch.java index 73b1e9e..ed1ae5b 100644 --- a/Bungeecord/src/main/java/io/paradaux/hiberniadiscord/bungeecord/HiberniaDiscord.java +++ b/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/BungeeConch.java @@ -1,7 +1,29 @@ -package io.paradaux.hiberniadiscord.bungeecord; - -import io.paradaux.hiberniadiscord.bungeecord.listeners.ChatEventListener; -import io.paradaux.hiberniadiscord.common.api.DiscordManager; +/* + * Copyright (c) 2020, Rían Errity. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 3 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 3 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Rían Errity or visit https://paradaux.io + * if you need additional information or have any questions. + * See LICENSE.md for more details. + */ + +package io.paradaux.conch.bungeecord; + +import io.paradaux.conch.bungeecord.listeners.ChatEventListener; import net.md_5.bungee.api.plugin.Plugin; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -9,7 +31,7 @@ import java.util.ArrayList; import java.util.List; -public final class HiberniaDiscord extends Plugin { +public final class BungeeConch extends Plugin { private static Logger logger; diff --git a/Bungeecord/src/main/java/io/paradaux/hiberniadiscord/bungeecord/listeners/ChatEventListener.java b/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/listeners/ChatEventListener.java similarity index 96% rename from Bungeecord/src/main/java/io/paradaux/hiberniadiscord/bungeecord/listeners/ChatEventListener.java rename to Bungeecord/src/main/java/io/paradaux/conch/bungeecord/listeners/ChatEventListener.java index 8f20ed4..a05004d 100644 --- a/Bungeecord/src/main/java/io/paradaux/hiberniadiscord/bungeecord/listeners/ChatEventListener.java +++ b/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/listeners/ChatEventListener.java @@ -21,9 +21,8 @@ * See LICENSE.md for more details. */ -package io.paradaux.hiberniadiscord.bungeecord.listeners; +package io.paradaux.conch.bungeecord.listeners; -import io.paradaux.hiberniadiscord.common.api.DiscordManager; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.event.ChatEvent; import net.md_5.bungee.event.EventHandler; diff --git a/Bungeecord/src/main/java/io/paradaux/hiberniadiscord/bungeecord/listeners/GenericListener.java b/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/listeners/GenericListener.java similarity index 98% rename from Bungeecord/src/main/java/io/paradaux/hiberniadiscord/bungeecord/listeners/GenericListener.java rename to Bungeecord/src/main/java/io/paradaux/conch/bungeecord/listeners/GenericListener.java index 8580382..c51e4fa 100644 --- a/Bungeecord/src/main/java/io/paradaux/hiberniadiscord/bungeecord/listeners/GenericListener.java +++ b/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/listeners/GenericListener.java @@ -21,7 +21,7 @@ * See LICENSE.md for more details. */ -package io.paradaux.hiberniadiscord.bungeecord.listeners; +package io.paradaux.conch.bungeecord.listeners; import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.plugin.Listener; diff --git a/Bungeecord/src/main/resources/bungee.yml b/Bungeecord/src/main/resources/bungee.yml index 1b5e905..0078ffe 100644 --- a/Bungeecord/src/main/resources/bungee.yml +++ b/Bungeecord/src/main/resources/bungee.yml @@ -1,4 +1,4 @@ name: HiberniaDiscord version: ${project.version} -main: io.paradaux.hiberniadiscord.bungeecord.HiberniaDiscord +main: HiberniaDiscord description: HiberniaDiscord's Bungee Functionality From f9e033cf7f41562622e954f943a012b135b93f38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Tue, 2 Feb 2021 03:23:47 +0000 Subject: [PATCH 08/59] Moving --- .../java/io/paradaux/{hiberniadiscord => conch}/common/API.java | 0 .../io/paradaux/{hiberniadiscord => conch}/common/Common.java | 0 .../paradaux/{hiberniadiscord => conch}/common/PluginEdition.java | 0 .../{hiberniadiscord => conch}/common/api/BotManager.java | 0 .../common/api/ConfigurationManager.java | 0 .../{hiberniadiscord => conch}/common/api/DiscordEvent.java | 0 .../{hiberniadiscord => conch}/common/api/DiscordManager.java | 0 .../{hiberniadiscord => conch}/common/api/I18NLogger.java | 0 .../{hiberniadiscord => conch}/common/api/I18NManager.java | 0 .../common/api/config/CachedBotSettings.java | 0 .../common/api/config/CachedEventSettings.java | 0 .../common/api/config/CachedSettings.java | 0 .../common/api/config/ConfigurationLoader.java | 0 .../common/api/config/ConfigurationUpdater.java | 0 .../common/api/config/ConfigurationUtil.java | 0 .../common/api/config/EventConfiguration.java | 0 .../common/api/events/DiscordMessageReceivedEvent.java | 0 .../common/api/exceptions/NoSuchEventListenerException.java | 0 .../common/api/exceptions/NoSuchResourceException.java | 0 .../common/bot/DiscordMessageListener.java | 0 .../resources/{HiberniaDiscord.properties => Conch.properties} | 0 .../{HiberniaDiscord_en_US.properties => Conch_en_US.properties} | 0 .../{HiberniaDiscord_fr_FR.properties => Conch_fr_FR.properties} | 0 .../{hiberniadiscord => conch}/sponge/HiberniaDiscord.java | 0 .../sponge/listeners/GenericListener.java | 0 .../sponge/listeners/MessageChannelEventChatListener.java | 0 .../{hiberniadiscord => conch}/velocity/HiberniaDiscord.java | 0 .../velocity/listeners/GenericListener.java | 0 .../velocity/listeners/PlayerChatEventListener.java | 0 29 files changed, 0 insertions(+), 0 deletions(-) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/API.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/Common.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/PluginEdition.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/api/BotManager.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/api/ConfigurationManager.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/api/DiscordEvent.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/api/DiscordManager.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/api/I18NLogger.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/api/I18NManager.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/api/config/CachedBotSettings.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/api/config/CachedEventSettings.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/api/config/CachedSettings.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/api/config/ConfigurationLoader.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/api/config/ConfigurationUpdater.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/api/config/ConfigurationUtil.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/api/config/EventConfiguration.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/api/events/DiscordMessageReceivedEvent.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/api/exceptions/NoSuchEventListenerException.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/api/exceptions/NoSuchResourceException.java (100%) rename Common/src/main/java/io/paradaux/{hiberniadiscord => conch}/common/bot/DiscordMessageListener.java (100%) rename Common/src/main/resources/{HiberniaDiscord.properties => Conch.properties} (100%) rename Common/src/main/resources/{HiberniaDiscord_en_US.properties => Conch_en_US.properties} (100%) rename Common/src/main/resources/{HiberniaDiscord_fr_FR.properties => Conch_fr_FR.properties} (100%) rename Sponge/src/main/java/io/paradaux/{hiberniadiscord => conch}/sponge/HiberniaDiscord.java (100%) rename Sponge/src/main/java/io/paradaux/{hiberniadiscord => conch}/sponge/listeners/GenericListener.java (100%) rename Sponge/src/main/java/io/paradaux/{hiberniadiscord => conch}/sponge/listeners/MessageChannelEventChatListener.java (100%) rename Velocity/src/main/java/io/paradaux/{hiberniadiscord => conch}/velocity/HiberniaDiscord.java (100%) rename Velocity/src/main/java/io/paradaux/{hiberniadiscord => conch}/velocity/listeners/GenericListener.java (100%) rename Velocity/src/main/java/io/paradaux/{hiberniadiscord => conch}/velocity/listeners/PlayerChatEventListener.java (100%) diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/API.java b/Common/src/main/java/io/paradaux/conch/common/API.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/API.java rename to Common/src/main/java/io/paradaux/conch/common/API.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/Common.java b/Common/src/main/java/io/paradaux/conch/common/Common.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/Common.java rename to Common/src/main/java/io/paradaux/conch/common/Common.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/PluginEdition.java b/Common/src/main/java/io/paradaux/conch/common/PluginEdition.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/PluginEdition.java rename to Common/src/main/java/io/paradaux/conch/common/PluginEdition.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/BotManager.java b/Common/src/main/java/io/paradaux/conch/common/api/BotManager.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/api/BotManager.java rename to Common/src/main/java/io/paradaux/conch/common/api/BotManager.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/ConfigurationManager.java b/Common/src/main/java/io/paradaux/conch/common/api/ConfigurationManager.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/api/ConfigurationManager.java rename to Common/src/main/java/io/paradaux/conch/common/api/ConfigurationManager.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/DiscordEvent.java b/Common/src/main/java/io/paradaux/conch/common/api/DiscordEvent.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/api/DiscordEvent.java rename to Common/src/main/java/io/paradaux/conch/common/api/DiscordEvent.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/DiscordManager.java b/Common/src/main/java/io/paradaux/conch/common/api/DiscordManager.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/api/DiscordManager.java rename to Common/src/main/java/io/paradaux/conch/common/api/DiscordManager.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/I18NLogger.java b/Common/src/main/java/io/paradaux/conch/common/api/I18NLogger.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/api/I18NLogger.java rename to Common/src/main/java/io/paradaux/conch/common/api/I18NLogger.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/I18NManager.java b/Common/src/main/java/io/paradaux/conch/common/api/I18NManager.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/api/I18NManager.java rename to Common/src/main/java/io/paradaux/conch/common/api/I18NManager.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/CachedBotSettings.java b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedBotSettings.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/CachedBotSettings.java rename to Common/src/main/java/io/paradaux/conch/common/api/config/CachedBotSettings.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/CachedEventSettings.java b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedEventSettings.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/CachedEventSettings.java rename to Common/src/main/java/io/paradaux/conch/common/api/config/CachedEventSettings.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/CachedSettings.java b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedSettings.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/CachedSettings.java rename to Common/src/main/java/io/paradaux/conch/common/api/config/CachedSettings.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/ConfigurationLoader.java b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/ConfigurationLoader.java rename to Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/ConfigurationUpdater.java b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationUpdater.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/ConfigurationUpdater.java rename to Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationUpdater.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/ConfigurationUtil.java b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationUtil.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/ConfigurationUtil.java rename to Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationUtil.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/EventConfiguration.java b/Common/src/main/java/io/paradaux/conch/common/api/config/EventConfiguration.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/api/config/EventConfiguration.java rename to Common/src/main/java/io/paradaux/conch/common/api/config/EventConfiguration.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/events/DiscordMessageReceivedEvent.java b/Common/src/main/java/io/paradaux/conch/common/api/events/DiscordMessageReceivedEvent.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/api/events/DiscordMessageReceivedEvent.java rename to Common/src/main/java/io/paradaux/conch/common/api/events/DiscordMessageReceivedEvent.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/exceptions/NoSuchEventListenerException.java b/Common/src/main/java/io/paradaux/conch/common/api/exceptions/NoSuchEventListenerException.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/api/exceptions/NoSuchEventListenerException.java rename to Common/src/main/java/io/paradaux/conch/common/api/exceptions/NoSuchEventListenerException.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/api/exceptions/NoSuchResourceException.java b/Common/src/main/java/io/paradaux/conch/common/api/exceptions/NoSuchResourceException.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/api/exceptions/NoSuchResourceException.java rename to Common/src/main/java/io/paradaux/conch/common/api/exceptions/NoSuchResourceException.java diff --git a/Common/src/main/java/io/paradaux/hiberniadiscord/common/bot/DiscordMessageListener.java b/Common/src/main/java/io/paradaux/conch/common/bot/DiscordMessageListener.java similarity index 100% rename from Common/src/main/java/io/paradaux/hiberniadiscord/common/bot/DiscordMessageListener.java rename to Common/src/main/java/io/paradaux/conch/common/bot/DiscordMessageListener.java diff --git a/Common/src/main/resources/HiberniaDiscord.properties b/Common/src/main/resources/Conch.properties similarity index 100% rename from Common/src/main/resources/HiberniaDiscord.properties rename to Common/src/main/resources/Conch.properties diff --git a/Common/src/main/resources/HiberniaDiscord_en_US.properties b/Common/src/main/resources/Conch_en_US.properties similarity index 100% rename from Common/src/main/resources/HiberniaDiscord_en_US.properties rename to Common/src/main/resources/Conch_en_US.properties diff --git a/Common/src/main/resources/HiberniaDiscord_fr_FR.properties b/Common/src/main/resources/Conch_fr_FR.properties similarity index 100% rename from Common/src/main/resources/HiberniaDiscord_fr_FR.properties rename to Common/src/main/resources/Conch_fr_FR.properties diff --git a/Sponge/src/main/java/io/paradaux/hiberniadiscord/sponge/HiberniaDiscord.java b/Sponge/src/main/java/io/paradaux/conch/sponge/HiberniaDiscord.java similarity index 100% rename from Sponge/src/main/java/io/paradaux/hiberniadiscord/sponge/HiberniaDiscord.java rename to Sponge/src/main/java/io/paradaux/conch/sponge/HiberniaDiscord.java diff --git a/Sponge/src/main/java/io/paradaux/hiberniadiscord/sponge/listeners/GenericListener.java b/Sponge/src/main/java/io/paradaux/conch/sponge/listeners/GenericListener.java similarity index 100% rename from Sponge/src/main/java/io/paradaux/hiberniadiscord/sponge/listeners/GenericListener.java rename to Sponge/src/main/java/io/paradaux/conch/sponge/listeners/GenericListener.java diff --git a/Sponge/src/main/java/io/paradaux/hiberniadiscord/sponge/listeners/MessageChannelEventChatListener.java b/Sponge/src/main/java/io/paradaux/conch/sponge/listeners/MessageChannelEventChatListener.java similarity index 100% rename from Sponge/src/main/java/io/paradaux/hiberniadiscord/sponge/listeners/MessageChannelEventChatListener.java rename to Sponge/src/main/java/io/paradaux/conch/sponge/listeners/MessageChannelEventChatListener.java diff --git a/Velocity/src/main/java/io/paradaux/hiberniadiscord/velocity/HiberniaDiscord.java b/Velocity/src/main/java/io/paradaux/conch/velocity/HiberniaDiscord.java similarity index 100% rename from Velocity/src/main/java/io/paradaux/hiberniadiscord/velocity/HiberniaDiscord.java rename to Velocity/src/main/java/io/paradaux/conch/velocity/HiberniaDiscord.java diff --git a/Velocity/src/main/java/io/paradaux/hiberniadiscord/velocity/listeners/GenericListener.java b/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/GenericListener.java similarity index 100% rename from Velocity/src/main/java/io/paradaux/hiberniadiscord/velocity/listeners/GenericListener.java rename to Velocity/src/main/java/io/paradaux/conch/velocity/listeners/GenericListener.java diff --git a/Velocity/src/main/java/io/paradaux/hiberniadiscord/velocity/listeners/PlayerChatEventListener.java b/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/PlayerChatEventListener.java similarity index 100% rename from Velocity/src/main/java/io/paradaux/hiberniadiscord/velocity/listeners/PlayerChatEventListener.java rename to Velocity/src/main/java/io/paradaux/conch/velocity/listeners/PlayerChatEventListener.java From 2b4af98f34eaa8494eeed5fa088d37a541249564 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Tue, 2 Feb 2021 03:24:08 +0000 Subject: [PATCH 09/59] Re-branding maven to conch --- Bukkit/pom.xml | 7 ++----- Bungeecord/pom.xml | 17 ++++++++--------- Common/pom.xml | 10 +++++----- Sponge/pom.xml | 17 ++++++++--------- Velocity/pom.xml | 7 +++---- pom.xml | 2 +- 6 files changed, 27 insertions(+), 33 deletions(-) diff --git a/Bukkit/pom.xml b/Bukkit/pom.xml index 04d02f9..12cb762 100644 --- a/Bukkit/pom.xml +++ b/Bukkit/pom.xml @@ -30,11 +30,11 @@ conch io.paradaux.conch - 4.0.0 + 1.0.0 conch-bukkit - 4.0.0 + 1.0.0 jar Bukkit @@ -122,15 +122,12 @@ org.bstats bstats-bukkit 1.8 - compile io.paradaux.conch conch-common 1.0.0 - compile - diff --git a/Bungeecord/pom.xml b/Bungeecord/pom.xml index 55d4f43..f183aaf 100644 --- a/Bungeecord/pom.xml +++ b/Bungeecord/pom.xml @@ -28,13 +28,13 @@ 4.0.0 - hiberniadiscord - io.paradaux.hiberniadiscord - 4.0.0 + conch + io.paradaux.conch + 1.0.0 - hiberniadiscord-bungeecord - 4.0.0 + conch-bungeecord + 1.0.0 jar Bungeecord @@ -96,10 +96,9 @@ - io.paradaux.hiberniadiscord - hiberniadiscord-common - 4.0.0 - compile + io.paradaux.conch + conch-common + 1.0.0 diff --git a/Common/pom.xml b/Common/pom.xml index 9551fd1..d733c10 100644 --- a/Common/pom.xml +++ b/Common/pom.xml @@ -29,14 +29,14 @@ 4.0.0 - hiberniadiscord - io.paradaux.hiberniadiscord - 4.0.0 + conch + io.paradaux.conch + 1.0.0 - hiberniadiscord-common + conch-common Common - 4.0.0 + 1.0.0 diff --git a/Sponge/pom.xml b/Sponge/pom.xml index e5af352..d277dcf 100644 --- a/Sponge/pom.xml +++ b/Sponge/pom.xml @@ -28,13 +28,13 @@ 4.0.0 - hiberniadiscord - io.paradaux.hiberniadiscord - 4.0.0 + conch + io.paradaux.conch + 1.0.0 - hiberniadiscord-sponge - 4.0.0 + conch-sponge + 1.0.0 jar Sponge @@ -217,10 +217,9 @@ - io.paradaux.hiberniadiscord - hiberniadiscord-common - 4.0.0 - compile + io.paradaux.conch + conch-common + 1.0.0 diff --git a/Velocity/pom.xml b/Velocity/pom.xml index 13ebb50..432e685 100644 --- a/Velocity/pom.xml +++ b/Velocity/pom.xml @@ -220,10 +220,9 @@ - io.paradaux.hiberniadiscord - hiberniadiscord-common - 4.0.0 - compile + io.paradaux.conch + conch-common + 1.0.0 diff --git a/pom.xml b/pom.xml index f8cce16..99ddf17 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ io.paradaux.conch conch - 4.0.0 + 1.0.0 Conch https://conch.rocks From 9e51770181d58775770dc2548a6e71551da58800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Tue, 2 Feb 2021 03:29:01 +0000 Subject: [PATCH 10/59] BukkitConch + 2021 --- .../java/io/paradaux/conch/bukkit/BukkitConch.java | 6 +++--- .../java/io/paradaux/conch/bukkit/api/BukkitAPI.java | 10 +++++----- .../conch/bukkit/api/BukkitConfigurationManager.java | 10 +++++----- .../paradaux/conch/bukkit/api/PlaceholderWrapper.java | 2 +- .../io/paradaux/conch/bukkit/api/VersionChecker.java | 2 +- .../conch/bukkit/controllers/MetricsController.java | 2 +- .../conch/bukkit/controllers/TaskController.java | 2 +- .../controllers/VersionNotificationController.java | 2 +- .../bukkit/listeners/AsyncPlayerChatEventListener.java | 2 +- .../conch/bukkit/listeners/GenericListener.java | 2 +- Bukkit/src/main/resources/bot-settings.conf | 2 +- Bukkit/src/main/resources/plugin.yml | 2 +- 12 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java index 35c4a02..04e0308 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Rían Errity. All rights reserved. + * Copyright (c) 2021, Rían Errity. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,8 +27,8 @@ import co.aikar.taskchain.TaskChainFactory; import io.paradaux.conch.bukkit.api.BukkitAPI; import io.paradaux.conch.bukkit.api.BukkitConfigurationManager; -import io.paradaux.hiberniadiscord.common.api.I18NLogger; -import io.paradaux.hiberniadiscord.common.api.I18NManager; +import io.paradaux.conch.common.api.I18NLogger; +import io.paradaux.conch.common.api.I18NManager; import org.bukkit.plugin.java.JavaPlugin; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java index 6659214..f06d379 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java @@ -23,11 +23,11 @@ package io.paradaux.conch.bukkit.api; -import io.paradaux.hiberniadiscord.common.API; -import io.paradaux.hiberniadiscord.common.api.BotManager; -import io.paradaux.hiberniadiscord.common.api.ConfigurationManager; -import io.paradaux.hiberniadiscord.common.api.DiscordManager; -import io.paradaux.hiberniadiscord.common.api.I18NManager; +import io.paradaux.conch.common.API; +import io.paradaux.conch.common.api.BotManager; +import io.paradaux.conch.common.api.ConfigurationManager; +import io.paradaux.conch.common.api.DiscordManager; +import io.paradaux.conch.common.api.I18NManager; public class BukkitAPI implements API { diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java index 78eb1ea..036feaa 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Rían Errity. All rights reserved. + * Copyright (c) 2021, Rían Errity. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,10 +23,10 @@ package io.paradaux.conch.bukkit.api; -import io.paradaux.hiberniadiscord.common.api.ConfigurationManager; -import io.paradaux.hiberniadiscord.common.api.I18NLogger; -import io.paradaux.hiberniadiscord.common.api.config.*; -import io.paradaux.hiberniadiscord.common.api.exceptions.NoSuchResourceException; +import io.paradaux.conch.common.api.ConfigurationManager; +import io.paradaux.conch.common.api.I18NLogger; +import io.paradaux.conch.common.api.config.*; +import io.paradaux.conch.common.api.exceptions.NoSuchResourceException; import org.bukkit.plugin.Plugin; import org.spongepowered.configurate.ConfigurateException; diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/PlaceholderWrapper.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/PlaceholderWrapper.java index d1a256f..b8cd824 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/PlaceholderWrapper.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/PlaceholderWrapper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Rían Errity. All rights reserved. + * Copyright (c) 2021, Rían Errity. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java index 5da5284..732931b 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Rían Errity. All rights reserved. + * Copyright (c) 2021, Rían Errity. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/MetricsController.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/MetricsController.java index 9250a31..791d032 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/MetricsController.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/MetricsController.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Rían Errity. All rights reserved. + * Copyright (c) 2021, Rían Errity. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/TaskController.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/TaskController.java index 2e550df..414935e 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/TaskController.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/TaskController.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Rían Errity. All rights reserved. + * Copyright (c) 2021, Rían Errity. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/VersionNotificationController.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/VersionNotificationController.java index b46ea6b..c654647 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/VersionNotificationController.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/controllers/VersionNotificationController.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Rían Errity. All rights reserved. + * Copyright (c) 2021, Rían Errity. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java index d4eef2a..ceb96a1 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Rían Errity. All rights reserved. + * Copyright (c) 2021, Rían Errity. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java index 2ccd6de..dd03c96 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Rían Errity. All rights reserved. + * Copyright (c) 2021, Rían Errity. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/Bukkit/src/main/resources/bot-settings.conf b/Bukkit/src/main/resources/bot-settings.conf index 4ffce19..2206d13 100644 --- a/Bukkit/src/main/resources/bot-settings.conf +++ b/Bukkit/src/main/resources/bot-settings.conf @@ -1,4 +1,4 @@ -# BukkitConch 1.0 by Rían Errity Licensed under GPLv3 | Bot Configuration. +# Conch 1.0 by Rían Errity Licensed under GPLv3 | Bot Configuration. // Conch comes bundled with a built-in discord bot. In order to make use of this you must create a discord // token and place it between the double quotes ("") in the token field on line 8. The discord bot permits you to have diff --git a/Bukkit/src/main/resources/plugin.yml b/Bukkit/src/main/resources/plugin.yml index 256aa6f..30262f7 100644 --- a/Bukkit/src/main/resources/plugin.yml +++ b/Bukkit/src/main/resources/plugin.yml @@ -1,4 +1,4 @@ -name: HiberniaDiscord +name: Conch version: ${project.version} main: io.paradaux.conch.bukkit.BukkitConch api-version: 1.16 From f9c69ecdb5fc1077dbe98b247c542edb54a8939e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Tue, 2 Feb 2021 03:31:34 +0000 Subject: [PATCH 11/59] BungeeConch + 2021 --- .../paradaux/conch/bukkit/api/BukkitAPI.java | 2 +- .../conch/bungeecord/BungeeConch.java | 2 +- .../listeners/ChatEventListener.java | 2 +- .../bungeecord/listeners/GenericListener.java | 2 +- Bungeecord/src/main/resources/bungee.yml | 6 ++--- .../src/main/resources/log4j.properties | 26 ------------------- 6 files changed, 7 insertions(+), 33 deletions(-) delete mode 100644 Bungeecord/src/main/resources/log4j.properties diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java index f06d379..400b2d5 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Rían Errity. All rights reserved. + * Copyright (c) 2021, Rían Errity. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/BungeeConch.java b/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/BungeeConch.java index ed1ae5b..276c597 100644 --- a/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/BungeeConch.java +++ b/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/BungeeConch.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Rían Errity. All rights reserved. + * Copyright (c) 2021, Rían Errity. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/listeners/ChatEventListener.java b/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/listeners/ChatEventListener.java index a05004d..733ef8f 100644 --- a/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/listeners/ChatEventListener.java +++ b/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/listeners/ChatEventListener.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Rían Errity. All rights reserved. + * Copyright (c) 2021, Rían Errity. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/listeners/GenericListener.java b/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/listeners/GenericListener.java index c51e4fa..a123f62 100644 --- a/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/listeners/GenericListener.java +++ b/Bungeecord/src/main/java/io/paradaux/conch/bungeecord/listeners/GenericListener.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Rían Errity. All rights reserved. + * Copyright (c) 2021, Rían Errity. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it diff --git a/Bungeecord/src/main/resources/bungee.yml b/Bungeecord/src/main/resources/bungee.yml index 0078ffe..1af8094 100644 --- a/Bungeecord/src/main/resources/bungee.yml +++ b/Bungeecord/src/main/resources/bungee.yml @@ -1,4 +1,4 @@ -name: HiberniaDiscord +name: Conch version: ${project.version} -main: HiberniaDiscord -description: HiberniaDiscord's Bungee Functionality +main: io.paradaux.conch.bungeecord.BungeeConch +description: BungeeConch diff --git a/Bungeecord/src/main/resources/log4j.properties b/Bungeecord/src/main/resources/log4j.properties deleted file mode 100644 index 533678b..0000000 --- a/Bungeecord/src/main/resources/log4j.properties +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2020, Rían Errity. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 3 only, as -# published by the Free Software Foundation. - -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 3 for more details (a copy is included in the LICENSE file that -# accompanied this code). - -# You should have received a copy of the GNU General Public License version -# 3 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - -# Please contact Rían Errity or visit https://paradaux.io -# if you need additional information or have any questions. - -log4j.logger.io.paradaux.hiberniadiscord=debug, HiberniaDiscordAppender -log4j.additivity.io.paradaux.hiberniadiscord=true - -log4j.appender.HiberniaDiscordAppender=org.apache.log4j.ConsoleAppender -log4j.appender.HiberniaDiscordAppender.layout=org.apache.log4j.PatternLayout -log4j.appender.HiberniaDiscordAppender.layout.ConversionPattern=[HiberniaDiscord: %p] %m%n \ No newline at end of file From 86e95258e67421983cdf8fb8cb51b74714490309 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Tue, 2 Feb 2021 03:41:17 +0000 Subject: [PATCH 12/59] More 2021 + branding changes --- Bukkit/pom.xml | 2 +- .../src/main/java/io/paradaux/conch/bukkit/BukkitConch.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Bukkit/pom.xml b/Bukkit/pom.xml index 12cb762..28f0f99 100644 --- a/Bukkit/pom.xml +++ b/Bukkit/pom.xml @@ -1,6 +1,6 @@ Velocity @@ -82,18 +82,16 @@ aikar https://repo.aikar.co/content/groups/aikar/ + bintray-jcenter https://jcenter.bintray.com + placeholderapi http://repo.extendedclip.com/content/repositories/placeholderapi/ - - bungeecord-repo - https://oss.sonatype.org/content/repositories/snapshots - From e38b7752be7bf8d5f69a98b9a723054f4f011b3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Thu, 18 Mar 2021 22:54:35 +0000 Subject: [PATCH 22/59] Deploy script --- dev-move-bukkit.bat | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dev-move-bukkit.bat b/dev-move-bukkit.bat index f828063..07187a3 100644 --- a/dev-move-bukkit.bat +++ b/dev-move-bukkit.bat @@ -1,2 +1,3 @@ -rm server/plugins/hiberniadiscord-bukkit-4.0.0.jar -mv bukkit/target/hiberniadiscord-bukkit-4.0.0.jar server/plugins/ \ No newline at end of file +rm plugins/conch-bukkit-1.0.0.jar +mv ../bukkit/target/conch-bukkit-1.0.0.jar plugins/ +java -jar server.jar -nogui \ No newline at end of file From 2897e56fe4ec9d22ff94afec61c6c7c02bc4fc42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Thu, 18 Mar 2021 22:55:08 +0000 Subject: [PATCH 23/59] Manager renaming --- .../paradaux/conch/bukkit/managers/MetricsManager.java | 9 +++++---- .../io/paradaux/conch/bukkit/managers/TaskManager.java | 8 ++++---- .../{UpdateController.java => UpdateManager.java} | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) rename Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/{UpdateController.java => UpdateManager.java} (92%) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/MetricsManager.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/MetricsManager.java index 791d032..e1b5f9b 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/MetricsManager.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/MetricsManager.java @@ -21,17 +21,17 @@ * See LICENSE.md for more details. */ -package io.paradaux.conch.bukkit.controllers; +package io.paradaux.conch.bukkit.managers; import org.bstats.bukkit.Metrics; import org.bukkit.plugin.Plugin; -public class MetricsController { +public class MetricsManager { private static final int PLUGIN_ID = 8386; - public static MetricsController INSTANCE; + public static MetricsManager INSTANCE; boolean bstatsEnabled; boolean botEnabled; @@ -42,7 +42,8 @@ public class MetricsController { /** * Creates the Metrics Instance which relays to BStats various things about the host server. * */ - public MetricsController(Plugin plugin) { + public MetricsManager(Plugin plugin) { + if (bstatsEnabled) { return; } diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/TaskManager.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/TaskManager.java index 4dc05cd..1122d9d 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/TaskManager.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/TaskManager.java @@ -21,22 +21,22 @@ * See LICENSE.md for more details. */ -package io.paradaux.conch.bukkit.controllers; +package io.paradaux.conch.bukkit.managers; import co.aikar.taskchain.BukkitTaskChainFactory; import co.aikar.taskchain.TaskChain; import co.aikar.taskchain.TaskChainFactory; import org.bukkit.plugin.Plugin; -public class TaskController { +public class TaskManager { - public static TaskController INSTANCE; + public static TaskManager INSTANCE; private static TaskChainFactory taskChainFactory; /** * Initialise the TaskController. * */ - public TaskController(Plugin plugin) { + public TaskManager(Plugin plugin) { taskChainFactory = BukkitTaskChainFactory.create(plugin); INSTANCE = this; } diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/UpdateController.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/UpdateManager.java similarity index 92% rename from Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/UpdateController.java rename to Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/UpdateManager.java index c654647..001af02 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/UpdateController.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/UpdateManager.java @@ -21,7 +21,7 @@ * See LICENSE.md for more details. */ -package io.paradaux.conch.bukkit.controllers; +package io.paradaux.conch.bukkit.managers; -public class VersionNotificationController { +public class UpdateManager { } From 1ce57bc7478b20c2b2d51e0a671f4be53125a563 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Thu, 18 Mar 2021 22:55:37 +0000 Subject: [PATCH 24/59] Clean up old code --- .../conch/bukkit/api/BukkitConfigurationManager.java | 5 ++--- .../java/io/paradaux/conch/bukkit/api/VersionChecker.java | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java index 036feaa..4379bd4 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java @@ -88,12 +88,11 @@ public void loadConfigurationFiles() { eventSettings = loader.loadEventSettings(); botSettings = loader.loadBotSettings(); } catch (ConfigurateException exception) { - I18NLogger.error(""); + I18NLogger.error(""); // TODO add error for failure to load configuration return; } - ConfigurationUtil.loadConfigurationValues(generalSettings, eventSettings, botSettings); - System.out.println("Test: " + eventSettings.getOnChatMessage().getEventName()); + ConfigurationUtil.loadConfigurationValues(generalSettings, eventSettings, botSettings); } @Override diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java index 732931b..d81d55c 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java @@ -23,7 +23,7 @@ package io.paradaux.conch.bukkit.api; -import io.paradaux.conch.bukkit.controllers.TaskController; +import io.paradaux.conch.bukkit.managers.TaskManager; import org.bukkit.util.Consumer; import org.slf4j.Logger; @@ -47,7 +47,7 @@ public VersionChecker(int resourceId) { * */ public void getVersion(final Consumer consumer) { - TaskController.newChain().async(() -> { + TaskManager.newChain().async(() -> { try (InputStream inputStream = new URL("https://api.spigotmc.org/legacy/update.php?resource=" + this.resourceId).openStream(); Scanner scanner = new Scanner(inputStream)) { From d657ea2fb1ffb3d1c033409270b986a253ab922d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 02:46:52 +0000 Subject: [PATCH 25/59] Fix dumb event listener loading typo --- .../api/config/ConfigurationLoader.java | 32 +++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java index 64306df..0e08309 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java @@ -81,7 +81,23 @@ public ConfigurationLoader(String configurationDirectory) { @CheckReturnValue @NotNull public CachedSettings loadGeneralSettings() throws ConfigurateException { - return CachedSettings.builder().build(); + CachedSettings.Builder builder = CachedSettings.builder(); + ConfigurationNode root = generalSettingsLoader.load(); + + TypeToken> type = new TypeToken>() {}; + + + builder.setConfigurationVersion(root.node("configuration-version").getString()) + .setDebug(root.node("debug").getBoolean()) + .setLocaleCode(root.node("locale").getString()) + .setWebhookUrl(root.node("webhook-configuration").node("webhook-url").getString()) + .setEventsEnabled(root.node("webhook-configuration").node("events").getBoolean()) + .setServerName(root.node("placeholders").node("server-name").getString()) + .setAvatarApi(root.node("placeholders").node("avatar-api").getString()) + .setProxyBasedWebhookConfiguration(root.node("proxy-based-webhook-configuration").getBoolean()) + .setProxyWebhookConfiguration(root.node("proxy-webhook-configuration").get(type)); + + return builder.build(); } @CheckReturnValue @@ -96,11 +112,11 @@ public CachedEventSettings loadEventSettings() throws ConfigurateException { ConfigurationNode eventListenerNode = root.node(eventListenerStr); eventBuilder.setEventName(eventListenerStr) - .setEnabled(eventListenerNode.getBoolean()) - .setWebhookUsernameFormat(eventListenerNode.getString()) - .setWebhookAvatarFormat(eventListenerNode.getString()) - .setWebhookMessageFormat(eventListenerNode.getString()); - + .setEnabled(eventListenerNode.node("enabled").getBoolean()) + .setWebhookUsernameFormat(eventListenerNode.node("webhook-username-format").getString()) + .setWebhookAvatarFormat(eventListenerNode.node("webhook-avatar-format").getString()) + .setWebhookMessageFormat(eventListenerNode.node("webhook-message-format").getString()); + try { builder.set(eventBuilder.build()); } catch (NoSuchEventListenerException ok) { @@ -111,6 +127,7 @@ public CachedEventSettings loadEventSettings() throws ConfigurateException { return builder.build(); } + // TODO finish @CheckReturnValue @NotNull public CachedBotSettings loadBotSettings() throws ConfigurateException { @@ -121,9 +138,6 @@ public CachedBotSettings loadBotSettings() throws ConfigurateException { if (mapResult instanceof HashMap) { HashMap proxyMonitoredChannels = (HashMap) mapResult; - - - } return CachedBotSettings.builder() From bbd13ff5dfb649789b735de8a518e9525ccae8f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 02:47:04 +0000 Subject: [PATCH 26/59] Actually registering AsyncChat --- .../io/paradaux/conch/bukkit/BukkitConch.java | 59 ++++++++++++------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java index efefd16..d90411f 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java @@ -23,14 +23,21 @@ package io.paradaux.conch.bukkit; -import co.aikar.taskchain.BukkitTaskChainFactory; -import co.aikar.taskchain.TaskChainFactory; import io.paradaux.conch.bukkit.api.BukkitAPI; import io.paradaux.conch.bukkit.api.BukkitConfigurationManager; +import io.paradaux.conch.bukkit.listeners.AsyncPlayerChatEventListener; +import io.paradaux.conch.bukkit.managers.MetricsManager; +import io.paradaux.conch.bukkit.managers.TaskManager; +import io.paradaux.conch.bukkit.managers.UpdateManager; +import io.paradaux.conch.common.api.DiscordManager; import io.paradaux.conch.common.api.I18NLogger; import io.paradaux.conch.common.api.I18NManager; +import io.paradaux.conch.common.api.config.CachedEventSettings; +import io.paradaux.conch.common.api.config.CachedSettings; +import io.paradaux.conch.common.api.config.ConfigurationUtil; +import io.paradaux.conch.common.api.config.EventConfiguration; +import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; -import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.nio.file.Path; @@ -41,23 +48,29 @@ public class BukkitConch extends JavaPlugin { private static BukkitAPI API; - private static Logger logger; + private MetricsManager metrics; + private TaskManager tasks; + private UpdateManager updates; + private DiscordManager discord; @Override public void onEnable() { getLogger().info("Conch: Initialising locale."); loadLocale(); - I18NLogger.rawInfo("INIT: Taskchain."); - TaskChainFactory taskChainFactory = BukkitTaskChainFactory.create(this); + I18NLogger.rawInfo("Initialising Taskchain"); + tasks = new TaskManager(this); - I18NLogger.rawInfo("INIT: Configuration."); + I18NLogger.rawInfo("Loading Configuration"); loadConfiguration(); - I18NLogger.rawInfo("INIT: Events."); + I18NLogger.rawInfo("Connecting to discord"); + connect(); + + I18NLogger.rawInfo("Registering events"); registerEvents(); - I18NLogger.rawInfo("INIT: API."); + I18NLogger.rawInfo("Registering the API"); registerAPI(); } @@ -80,29 +93,35 @@ public void loadLocale() { public void loadConfiguration() { - Path configDir = this.getDataFolder().toPath(); - BukkitConfigurationManager configurationManager = new BukkitConfigurationManager(configDir, this); + Path pluginData = this.getDataFolder().toPath(); + BukkitConfigurationManager configurationManager = new BukkitConfigurationManager(pluginData, this); configurationManager.deployResource(); configurationManager.loadConfigurationFiles(); } + public void connect() { + CachedSettings config = ConfigurationUtil.getGeneralSettings(); + discord = new DiscordManager(config.getWebhookUrl(), true); + } + public void registerEvents() { - String avatarApiUrl = "https://mc-heads.net/combo/%playeruuid%"; - String userNameFormat = "%playername%"; - String serverName = "Test Server"; + PluginManager pm = this.getServer().getPluginManager(); + CachedEventSettings eventSettings = ConfigurationUtil.getEventSettings(); + + String serverName = ConfigurationUtil.getGeneralSettings().getServerName(); String messagePrefix = null; -// PluginManager pluginManager = getServer().getPluginManager(); -// -// pluginManager.registerEvents(new AsyncPlayerChatEventListener(avatarApiUrl, userNameFormat, serverName, messagePrefix, -// logger, true), this); + boolean debug = ConfigurationUtil.isDebug(); + + EventConfiguration config; + config = eventSettings.getOnChatMessage(); + + pm.registerEvents(new AsyncPlayerChatEventListener(ConfigurationUtil.getGeneralSettings().getAvatarApi(), config.getWebhookUsernameFormat(), serverName, messagePrefix, debug, discord), this); } public void registerAPI() { API = new BukkitAPI(); } - - } From d669a05bcf513a6d97f5258042ce2d6461a410ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 02:47:10 +0000 Subject: [PATCH 27/59] Less static abuse --- .../conch/common/api/DiscordManager.java | 32 +++++-------------- 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/Common/src/main/java/io/paradaux/conch/common/api/DiscordManager.java b/Common/src/main/java/io/paradaux/conch/common/api/DiscordManager.java index 2e9fdc7..d74cbd8 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/DiscordManager.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/DiscordManager.java @@ -39,33 +39,19 @@ public class DiscordManager { .compile("(?:https?://)?(?:\\w+\\.)?discord(?:app)?\\.com/api(?:/v\\d+)?/webhooks/(\\d+)/([\\w-]+)(?:/(?:\\w+)?)?"); private static final String ZERO_WIDTH_SPACE = "\u200B"; - private static volatile DiscordManager instance; - - public static DiscordManager getInstance() { - if (instance == null) { - throw new NullPointerException("getInstance() being called before being instantiated."); - } - - return instance; - } - - private String webhookUrl; - private boolean sanitiseMentions = true; + private final boolean sanitiseMentions; private WebhookClient client; - private Logger logger; /** * Constructor to set fields and construct an instance of {@link WebhookClient}. * */ - public DiscordManager(String webhookUrl, boolean sanitiseMentions, Logger logger) { - this.webhookUrl = webhookUrl; + public DiscordManager(String webhookUrl, boolean sanitiseMentions) { this.sanitiseMentions = sanitiseMentions; - this.logger = logger; - if (!isValidWebhook(webhookUrl)) { - logger.error("Your webhook URL is invalid or not set."); - return; - } +// if (!isValidWebhook(webhookUrl)) { +//// logger.error("Your webhook URL is invalid or not set."); TODO Log +// return; +// } WebhookClientBuilder builder = new WebhookClientBuilder(webhookUrl); builder.setThreadFactory((job) -> { @@ -77,8 +63,6 @@ public DiscordManager(String webhookUrl, boolean sanitiseMentions, Logger logger builder.setWait(true); client = builder.build(); - - instance = this; } /** @@ -88,7 +72,7 @@ public void sendDiscordMessage(WebhookMessage message) { try { client.send(message).get(); } catch (ExecutionException | InterruptedException exception) { - logger.error("An error occurred", exception); +// logger.error("An error occurred", exception); TODO log } } @@ -97,7 +81,7 @@ public void sendDiscordMessage(WebhookMessage message) { * */ public void sendDiscordMessage(String username, String avatarUrl, String message) { if (message.isEmpty()) { - message = String.valueOf(ZERO_WIDTH_SPACE); + message = ZERO_WIDTH_SPACE; } if (sanitiseMentions) { From 39c30228035cf0f86ab437ba4fcfa9b81658dd42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 02:47:23 +0000 Subject: [PATCH 28/59] Changed logging / moved to new discord manager --- .../listeners/AsyncPlayerChatEventListener.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java index ceb96a1..d1be9a7 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java @@ -24,6 +24,8 @@ package io.paradaux.conch.bukkit.listeners; import io.paradaux.conch.bukkit.api.PlaceholderWrapper; +import io.paradaux.conch.common.api.DiscordManager; +import io.paradaux.conch.common.api.I18NLogger; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -36,16 +38,16 @@ public class AsyncPlayerChatEventListener extends GenericListener { - Logger logger; String messagePrefix; boolean debug; + DiscordManager discord; public AsyncPlayerChatEventListener(String avatarApiUrl, String userNameFormat, String serverName, - @Nullable String messagePrefix, Logger logger, boolean debug) { + @Nullable String messagePrefix, boolean debug, DiscordManager discord) { super(avatarApiUrl, userNameFormat, serverName); this.messagePrefix = messagePrefix; - this.logger = logger; this.debug = debug; + this.discord = discord; } @EventHandler(priority = EventPriority.MONITOR) @@ -60,7 +62,8 @@ public void onAsyncPlayerChatEvent(AsyncPlayerChatEvent event) { } if (userName == null || messageContent == null) { - logger.error("Something went wrong. AsyncPlayerChatEvent null."); + I18NLogger.rawInfo("error with the evnet"); + // TODO log return; } @@ -75,11 +78,13 @@ public void onAsyncPlayerChatEvent(AsyncPlayerChatEvent event) { } if (debug) { - logger.info("{} has sent a message in chat which will be relayed to the discord webhook.", player.getName()); + // TODO log +// logger.info("{} has sent a message in chat which will be relayed to the discord webhook.", player.getName()); } -// DiscordManager.sendDiscordMessage(userName, parseAvatarApi(player), messageContent); + I18NLogger.rawInfo(parseAvatarApi(player)); + discord.sendDiscordMessage(userName, parseAvatarApi(player), messageContent); } } From eb9128dede8191263e14275425d3bb6b6fa2af7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 02:47:32 +0000 Subject: [PATCH 29/59] Tidy up --- .../io/paradaux/conch/bukkit/listeners/GenericListener.java | 3 ++- .../io/paradaux/conch/common/api/config/ConfigurationUtil.java | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java index dd03c96..373ddc2 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java @@ -86,8 +86,9 @@ protected String parseAvatarApi(Player player) { @Nullable @CheckReturnValue protected String parseAvatarApi(OfflinePlayer player) { + System.out.println(avatarApiUrl); if (player == null) { - return null; + throw new IllegalStateException("This player is not available."); } return avatarApiUrl.replace("%playeruuid%", player.getUniqueId().toString()); diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationUtil.java b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationUtil.java index 272276f..7b91bb7 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationUtil.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationUtil.java @@ -34,7 +34,6 @@ public class ConfigurationUtil { private static boolean debug; - /* General Settings which */ private static CachedSettings generalSettings = null; private static CachedBotSettings botSettings = null; private static CachedEventSettings eventSettings = null; From 3ece07019d98c4bd067210bcc81f291020b845af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 03:17:38 +0000 Subject: [PATCH 30/59] Changed how placeholders are parsed and events are registered --- .../io/paradaux/conch/bukkit/BukkitConch.java | 6 +- .../AsyncPlayerChatEventListener.java | 48 ++++++++-------- .../bukkit/listeners/GenericListener.java | 55 ++++++++----------- 3 files changed, 50 insertions(+), 59 deletions(-) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java index d90411f..e308427 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java @@ -114,11 +114,7 @@ public void registerEvents() { String messagePrefix = null; boolean debug = ConfigurationUtil.isDebug(); - - EventConfiguration config; - config = eventSettings.getOnChatMessage(); - - pm.registerEvents(new AsyncPlayerChatEventListener(ConfigurationUtil.getGeneralSettings().getAvatarApi(), config.getWebhookUsernameFormat(), serverName, messagePrefix, debug, discord), this); + pm.registerEvents(new AsyncPlayerChatEventListener(discord, debug, serverName, messagePrefix, eventSettings.getOnChatMessage()), this); } public void registerAPI() { diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java index d1be9a7..2b2281c 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java @@ -26,10 +26,12 @@ import io.paradaux.conch.bukkit.api.PlaceholderWrapper; import io.paradaux.conch.common.api.DiscordManager; import io.paradaux.conch.common.api.I18NLogger; +import io.paradaux.conch.common.api.config.EventConfiguration; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import javax.annotation.Nullable; @@ -38,34 +40,34 @@ public class AsyncPlayerChatEventListener extends GenericListener { - String messagePrefix; - boolean debug; - DiscordManager discord; + private final DiscordManager discord; - public AsyncPlayerChatEventListener(String avatarApiUrl, String userNameFormat, String serverName, - @Nullable String messagePrefix, boolean debug, DiscordManager discord) { - super(avatarApiUrl, userNameFormat, serverName); - this.messagePrefix = messagePrefix; - this.debug = debug; + private final boolean debug; + private final String serverName; + private final String messagePrefix; // TODO implement + + private final String avatarApiFormat; + private final String userNameFormat; + private final String messageFormat; + + public AsyncPlayerChatEventListener(DiscordManager discord, boolean debug, String serverName, String messagePrefix, EventConfiguration config) { this.discord = discord; + this.debug = debug; + this.serverName = serverName; + this.messagePrefix = messagePrefix; + this.avatarApiFormat = config.getWebhookAvatarFormat(); + this.userNameFormat = config.getWebhookUsernameFormat(); + this.messageFormat = config.getWebhookMessageFormat(); } - @EventHandler(priority = EventPriority.MONITOR) + @EventHandler(priority = EventPriority.LOWEST) public void onAsyncPlayerChatEvent(AsyncPlayerChatEvent event) { - Player player = event.getPlayer(); - String userName = parsePlaceholders(player, getUserNameFormat()); - String messageContent = parsePlaceholders(player, event.getMessage()); + final Player player = event.getPlayer(); - if (PlaceholderWrapper.isPresent()) { - userName = withPlaceholders(player, userName); - messageContent = withPlaceholders(player, messageContent); - } + String discordAvatarUrl = parsePlaceholders(player, serverName, avatarApiFormat, avatarApiFormat); + String discordUserName = parsePlaceholders(player, serverName, avatarApiFormat,userNameFormat); - if (userName == null || messageContent == null) { - I18NLogger.rawInfo("error with the evnet"); - // TODO log - return; - } + String messageContent = parsePlaceholders(player, serverName, avatarApiFormat, event.getMessage()); // Only send the message if it starts with the configured prefix (if applicable) if (messagePrefix != null) { @@ -82,9 +84,9 @@ public void onAsyncPlayerChatEvent(AsyncPlayerChatEvent event) { // logger.info("{} has sent a message in chat which will be relayed to the discord webhook.", player.getName()); } - I18NLogger.rawInfo(parseAvatarApi(player)); + I18NLogger.rawInfo(parseAvatarApi(player, avatarApiFormat)); - discord.sendDiscordMessage(userName, parseAvatarApi(player), messageContent); + discord.sendDiscordMessage(discordUserName, discordAvatarUrl, messageContent); } } diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java index 373ddc2..49937ef 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java @@ -23,6 +23,7 @@ package io.paradaux.conch.bukkit.listeners; +import io.paradaux.conch.bukkit.api.PlaceholderWrapper; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; import org.bukkit.event.Listener; @@ -33,17 +34,11 @@ public class GenericListener implements Listener { - private final String avatarApiUrl; - private final String serverName; - private final String userNameFormat; - /** * Represents a non-specific bukkit listener with the configuration values required to run. * */ - public GenericListener(String avatarApiUrl, String userNameFormat, String serverName) { - this.avatarApiUrl = avatarApiUrl; - this.userNameFormat = userNameFormat; - this.serverName = serverName; + public GenericListener() { + } /** @@ -51,8 +46,12 @@ public GenericListener(String avatarApiUrl, String userNameFormat, String server * */ @Nullable @CheckReturnValue - protected String parsePlaceholders(Player player, @NotNull String str) { - return parsePlaceholders((OfflinePlayer) player, str); + protected String parsePlaceholders(Player player, @NotNull String serverName, String avatarApi,String str) { + if (PlaceholderWrapper.isPresent()) { + str = PlaceholderWrapper.withPlaceholders(player, str); + } + + return parseCustomPlaceholders(player, serverName, avatarApi, str); } /** @@ -60,32 +59,37 @@ protected String parsePlaceholders(Player player, @NotNull String str) { * */ @Nullable @CheckReturnValue - protected String parsePlaceholders(OfflinePlayer player, @NotNull String str) { - if (player == null || player.getName() == null) { - return null; + protected String parsePlaceholders(OfflinePlayer player, @NotNull String serverName, String avatarApi,String str) { + if (PlaceholderWrapper.isPresent()) { + str = PlaceholderWrapper.withPlaceholders(player, str); } - String avatarUrl = parseAvatarApi(player); + return parseCustomPlaceholders(player, serverName, avatarApi, str); + } - if (avatarUrl == null) { - avatarUrl = ""; + /** + * Parses purely the custom placeholders. + * */ + protected String parseCustomPlaceholders(OfflinePlayer player, String serverName, String avatarApi,String str) { + if (avatarApi == null) { + avatarApi = ""; } return str.replace("%playername%", player.getName()) .replace("%playeruuid%", player.getUniqueId().toString()) .replace("%servername%", serverName) - .replace("%avatarapi%", avatarUrl); + .replace("%avatarapi%", parseAvatarApi(player, avatarApi)); } @Nullable @CheckReturnValue - protected String parseAvatarApi(Player player) { - return parseAvatarApi((OfflinePlayer) player); + protected String parseAvatarApi(Player player, String avatarApiUrl) { + return parseAvatarApi((OfflinePlayer) player, avatarApiUrl); } @Nullable @CheckReturnValue - protected String parseAvatarApi(OfflinePlayer player) { + protected String parseAvatarApi(OfflinePlayer player, String avatarApiUrl) { System.out.println(avatarApiUrl); if (player == null) { throw new IllegalStateException("This player is not available."); @@ -94,15 +98,4 @@ protected String parseAvatarApi(OfflinePlayer player) { return avatarApiUrl.replace("%playeruuid%", player.getUniqueId().toString()); } - public String getAvatarApiUrl() { - return avatarApiUrl; - } - - public String getServerName() { - return serverName; - } - - public String getUserNameFormat() { - return userNameFormat; - } } From b43d246d53cd738e867a5c52c6519d661041335c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 03:17:46 +0000 Subject: [PATCH 31/59] Cleaned up configuration loader --- .../common/api/config/ConfigurationLoader.java | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java index 0e08309..7bf92e9 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java @@ -48,6 +48,8 @@ public class ConfigurationLoader { public static final String EVENT_SETTINGS_FILE_NAME = "event-settings.conf"; public static final String BOT_SETTINGS_FILE_NAME = "bot-settings.conf"; + private static final TypeToken> stringMap = new TypeToken>() {}; + private final Path generalSettingsPath; private final Path eventSettingsPath; private final Path botSettingsPath; @@ -84,9 +86,6 @@ public CachedSettings loadGeneralSettings() throws ConfigurateException { CachedSettings.Builder builder = CachedSettings.builder(); ConfigurationNode root = generalSettingsLoader.load(); - TypeToken> type = new TypeToken>() {}; - - builder.setConfigurationVersion(root.node("configuration-version").getString()) .setDebug(root.node("debug").getBoolean()) .setLocaleCode(root.node("locale").getString()) @@ -95,7 +94,7 @@ public CachedSettings loadGeneralSettings() throws ConfigurateException { .setServerName(root.node("placeholders").node("server-name").getString()) .setAvatarApi(root.node("placeholders").node("avatar-api").getString()) .setProxyBasedWebhookConfiguration(root.node("proxy-based-webhook-configuration").getBoolean()) - .setProxyWebhookConfiguration(root.node("proxy-webhook-configuration").get(type)); + .setProxyWebhookConfiguration(root.node("proxy-webhook-configuration").get(stringMap)); return builder.build(); } @@ -116,7 +115,7 @@ public CachedEventSettings loadEventSettings() throws ConfigurateException { .setWebhookUsernameFormat(eventListenerNode.node("webhook-username-format").getString()) .setWebhookAvatarFormat(eventListenerNode.node("webhook-avatar-format").getString()) .setWebhookMessageFormat(eventListenerNode.node("webhook-message-format").getString()); - + try { builder.set(eventBuilder.build()); } catch (NoSuchEventListenerException ok) { @@ -133,12 +132,7 @@ public CachedEventSettings loadEventSettings() throws ConfigurateException { public CachedBotSettings loadBotSettings() throws ConfigurateException { ConfigurationNode root = eventSettingsLoader.load(); - TypeToken> type = new TypeToken>() {}; - Map mapResult = root.node("proxy-monitored-channels").get(type); - - if (mapResult instanceof HashMap) { - HashMap proxyMonitoredChannels = (HashMap) mapResult; - } + HashMap monitoredChannelMappings = root.node("proxy-monitored-channels").get(stringMap); return CachedBotSettings.builder() .setEnabled(root.node("").getBoolean()) From 2f15f73f4a49512788c76928aa082314fc03b2fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 03:39:28 +0000 Subject: [PATCH 32/59] Add ability to disable/enable UUID hyphen removal --- Bukkit/src/main/resources/general-settings.conf | 3 ++- .../conch/common/api/config/CachedSettings.java | 10 ++++++++++ .../conch/common/api/config/ConfigurationLoader.java | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Bukkit/src/main/resources/general-settings.conf b/Bukkit/src/main/resources/general-settings.conf index 6a46d00..6d15f44 100644 --- a/Bukkit/src/main/resources/general-settings.conf +++ b/Bukkit/src/main/resources/general-settings.conf @@ -19,7 +19,8 @@ webhook-configuration: { placeholders: { server-name: "Server" - avatar-api: "https://crafatar.com/renders/head/%playeruuid%?size=10&overlay" + include-hyphens-in-uuid: false // Whether or not to remove hypens from the UUID (Some APIs are faster with this enabled.) + avatar-api: "https://visage.surgeplay.com/head/512/%playeruuid%" } // Enabling this enables the below proy-webhook-configuration settings which allows you to map servers to webhooks. diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/CachedSettings.java b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedSettings.java index 67d9abe..f2b1e26 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/CachedSettings.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedSettings.java @@ -36,6 +36,7 @@ public class CachedSettings { String webhookUrl; boolean eventsEnabled; String serverName; + boolean avatarApiHyphen; String avatarApi; boolean proxyBasedWebhookConfiguration; Map proxyWebhookConfiguration; @@ -87,6 +88,11 @@ public CachedSettings.Builder setServerName(String serverName) { return this; } + public CachedSettings.Builder setAvatarApiHyphen(boolean avatarApiHyphen) { + settings.avatarApiHyphen = avatarApiHyphen; + return this; + } + public CachedSettings.Builder setAvatarApi(String avatarApi) { settings.avatarApi = avatarApi; return this; @@ -134,6 +140,10 @@ public String getServerName() { return serverName; } + public boolean isAvatarApiHyphen() { + return avatarApiHyphen; + } + public String getAvatarApi() { return avatarApi; } diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java index 7bf92e9..36ebaf4 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java @@ -92,6 +92,7 @@ public CachedSettings loadGeneralSettings() throws ConfigurateException { .setWebhookUrl(root.node("webhook-configuration").node("webhook-url").getString()) .setEventsEnabled(root.node("webhook-configuration").node("events").getBoolean()) .setServerName(root.node("placeholders").node("server-name").getString()) + .setAvatarApiHyphen(root.node("placeholders").node("include-hyphens-in-uuid").getBoolean()) .setAvatarApi(root.node("placeholders").node("avatar-api").getString()) .setProxyBasedWebhookConfiguration(root.node("proxy-based-webhook-configuration").getBoolean()) .setProxyWebhookConfiguration(root.node("proxy-webhook-configuration").get(stringMap)); From ed2f28670473de96bc68744c6cd57d6fd531ecf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 03:47:32 +0000 Subject: [PATCH 33/59] Avatars now work --- .../bukkit/listeners/GenericListener.java | 18 ++++++++++++------ .../src/main/resources/general-settings.conf | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java index 49937ef..72e1e98 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java @@ -24,6 +24,7 @@ package io.paradaux.conch.bukkit.listeners; import io.paradaux.conch.bukkit.api.PlaceholderWrapper; +import io.paradaux.conch.common.api.config.ConfigurationUtil; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; import org.bukkit.event.Listener; @@ -70,15 +71,17 @@ protected String parsePlaceholders(OfflinePlayer player, @NotNull String serverN /** * Parses purely the custom placeholders. * */ - protected String parseCustomPlaceholders(OfflinePlayer player, String serverName, String avatarApi,String str) { + protected String parseCustomPlaceholders(OfflinePlayer player, String serverName, String avatarApi, String str) { if (avatarApi == null) { avatarApi = ""; } - return str.replace("%playername%", player.getName()) - .replace("%playeruuid%", player.getUniqueId().toString()) - .replace("%servername%", serverName) - .replace("%avatarapi%", parseAvatarApi(player, avatarApi)); + return str.replace("%playerUserName%", player.getName()) + .replace("%playerDisplayName%", player.getPlayer() == null ? "" : player.getPlayer().getDisplayName()) + .replace("%playerUUID", player.getUniqueId().toString()) + .replace("%avatarApi%", parseAvatarApi(player, avatarApi)) + .replace("%serverName%", serverName); + } @Nullable @@ -95,7 +98,10 @@ protected String parseAvatarApi(OfflinePlayer player, String avatarApiUrl) { throw new IllegalStateException("This player is not available."); } - return avatarApiUrl.replace("%playeruuid%", player.getUniqueId().toString()); + String uuid = player.getUniqueId().toString(); + + avatarApiUrl = avatarApiUrl.replace("%avatarApi%", ConfigurationUtil.getGeneralSettings().getAvatarApi()); + return avatarApiUrl.replace("%playerUUID%", ConfigurationUtil.getGeneralSettings().isAvatarApiHyphen() ? uuid : uuid.replace("-", "")); } } diff --git a/Bukkit/src/main/resources/general-settings.conf b/Bukkit/src/main/resources/general-settings.conf index 6d15f44..16d4526 100644 --- a/Bukkit/src/main/resources/general-settings.conf +++ b/Bukkit/src/main/resources/general-settings.conf @@ -20,7 +20,7 @@ webhook-configuration: { placeholders: { server-name: "Server" include-hyphens-in-uuid: false // Whether or not to remove hypens from the UUID (Some APIs are faster with this enabled.) - avatar-api: "https://visage.surgeplay.com/head/512/%playeruuid%" + avatar-api: "https://visage.surgeplay.com/head/512/%playerUUID%" } // Enabling this enables the below proy-webhook-configuration settings which allows you to map servers to webhooks. From 180b3324213d10434e1d9c7dfc6ffcef35ffa30a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 03:49:14 +0000 Subject: [PATCH 34/59] update startup banner --- Common/src/main/resources/Conch.properties | 4 ++-- Common/src/main/resources/Conch_en_US.properties | 4 ++-- Common/src/main/resources/Conch_fr_FR.properties | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Common/src/main/resources/Conch.properties b/Common/src/main/resources/Conch.properties index b3700c2..dcaa8e6 100644 --- a/Common/src/main/resources/Conch.properties +++ b/Common/src/main/resources/Conch.properties @@ -22,14 +22,14 @@ # configuration.invalid-event=Conch » Configuration Loader has tried to load an invalid or malconfigured event. startup.loading-message=\n+ ------------------------------------ +\ -\n| Running Conch v4.0.0 |\ +\n| Running Conch v4.0.0 |\ \n| © Rían Errity (Paradaux) |\ \n| https://paradaux.io |\ \n+ ------------------------------------ +\ \n\ \nLICENSED UNDER GNU General Public License v3.0 shutdown.shutdown-message=\n+ ------------------------------------ +\ -\n| Running Conch v4.0.0 |\ +\n| Running Conch v4.0.0 |\ \n| © Rían Errity (Paradaux) |\ \n| https://paradaux.io |\ \n+ ------------------------------------ +\ diff --git a/Common/src/main/resources/Conch_en_US.properties b/Common/src/main/resources/Conch_en_US.properties index b3700c2..dcaa8e6 100644 --- a/Common/src/main/resources/Conch_en_US.properties +++ b/Common/src/main/resources/Conch_en_US.properties @@ -22,14 +22,14 @@ # configuration.invalid-event=Conch » Configuration Loader has tried to load an invalid or malconfigured event. startup.loading-message=\n+ ------------------------------------ +\ -\n| Running Conch v4.0.0 |\ +\n| Running Conch v4.0.0 |\ \n| © Rían Errity (Paradaux) |\ \n| https://paradaux.io |\ \n+ ------------------------------------ +\ \n\ \nLICENSED UNDER GNU General Public License v3.0 shutdown.shutdown-message=\n+ ------------------------------------ +\ -\n| Running Conch v4.0.0 |\ +\n| Running Conch v4.0.0 |\ \n| © Rían Errity (Paradaux) |\ \n| https://paradaux.io |\ \n+ ------------------------------------ +\ diff --git a/Common/src/main/resources/Conch_fr_FR.properties b/Common/src/main/resources/Conch_fr_FR.properties index 2c49c04..fe1b6de 100644 --- a/Common/src/main/resources/Conch_fr_FR.properties +++ b/Common/src/main/resources/Conch_fr_FR.properties @@ -21,14 +21,14 @@ # configuration.invalid-event=TODO startup.loading-message=\n+ ------------------------------------ +\ -\n| En utilisant Conch v4.0.0 |\ +\n| En utilisant Conch v4.0.0 |\ \n| © Rían Errity (Paradaux) |\ \n| https://paradaux.io |\ \n+ ------------------------------------ +\ \n\ \nSOUS LA LICENSE DE GNU General Public License v3.0 shutdown.shutdown-message=\n+ ------------------------------------ +\ -\n| Déchargé Conch v4.0.0 |\ +\n| Déchargé Conch v4.0.0 |\ \n| © Rían Errity (Paradaux) |\ \n| https://paradaux.io |\ \n+ ------------------------------------ +\ From 27299902a8c793a629d7eb9cc290aaf21b7a8f36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 03:49:38 +0000 Subject: [PATCH 35/59] Remove debug output --- .../java/io/paradaux/conch/bukkit/listeners/GenericListener.java | 1 - 1 file changed, 1 deletion(-) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java index 72e1e98..b3d3cfd 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/GenericListener.java @@ -93,7 +93,6 @@ protected String parseAvatarApi(Player player, String avatarApiUrl) { @Nullable @CheckReturnValue protected String parseAvatarApi(OfflinePlayer player, String avatarApiUrl) { - System.out.println(avatarApiUrl); if (player == null) { throw new IllegalStateException("This player is not available."); } From af814787f00b9cbd9fdf1227646a120be505593a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 05:13:42 +0000 Subject: [PATCH 36/59] Discord bot beginnings --- .../io/paradaux/conch/bukkit/BukkitConch.java | 15 ++ .../events/DiscordMessageReceivedEvent.java | 137 ------------------ .../paradaux/conch/common/bot/DiscordBot.java | 52 +++++++ .../DiscordMessageListener.java | 13 +- Common/src/main/resources/Conch.properties | 2 +- 5 files changed, 75 insertions(+), 144 deletions(-) delete mode 100644 Common/src/main/java/io/paradaux/conch/common/api/events/DiscordMessageReceivedEvent.java create mode 100644 Common/src/main/java/io/paradaux/conch/common/bot/DiscordBot.java rename Common/src/main/java/io/paradaux/conch/common/bot/{ => listeners}/DiscordMessageListener.java (90%) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java index e308427..1902ae5 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java @@ -36,10 +36,12 @@ import io.paradaux.conch.common.api.config.CachedSettings; import io.paradaux.conch.common.api.config.ConfigurationUtil; import io.paradaux.conch.common.api.config.EventConfiguration; +import io.paradaux.conch.common.bot.DiscordBot; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import org.slf4j.LoggerFactory; +import javax.security.auth.login.LoginException; import java.nio.file.Path; import java.util.Locale; import java.util.ResourceBundle; @@ -52,6 +54,7 @@ public class BukkitConch extends JavaPlugin { private TaskManager tasks; private UpdateManager updates; private DiscordManager discord; + private DiscordBot discordBot; @Override public void onEnable() { @@ -72,6 +75,9 @@ public void onEnable() { I18NLogger.rawInfo("Registering the API"); registerAPI(); + + I18NLogger.rawInfo("Starting the discord bot"); + startDiscordBot(); } @Override @@ -117,6 +123,15 @@ public void registerEvents() { pm.registerEvents(new AsyncPlayerChatEventListener(discord, debug, serverName, messagePrefix, eventSettings.getOnChatMessage()), this); } + public void startDiscordBot() { + try { + discordBot = new DiscordBot(); + } catch (LoginException ok) { + // TODO log + } + + } + public void registerAPI() { API = new BukkitAPI(); } diff --git a/Common/src/main/java/io/paradaux/conch/common/api/events/DiscordMessageReceivedEvent.java b/Common/src/main/java/io/paradaux/conch/common/api/events/DiscordMessageReceivedEvent.java deleted file mode 100644 index 209fc01..0000000 --- a/Common/src/main/java/io/paradaux/conch/common/api/events/DiscordMessageReceivedEvent.java +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2021, Rían Errity. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 3 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 3 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 3 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Rían Errity or visit https://paradaux.io - * if you need additional information or have any questions. - * See LICENSE.md for more details. - */ - -package io.paradaux.conch.common.api.events; - -/** - * Represents a message which was sent into a monitored discord channel so it can then be - * viewed in game. - * */ -public class DiscordMessageReceivedEvent { - - String username; - String nickname; - String discriminator; - String tag = "%s#%s"; - - String guildName; - String channel; - - String messageContent; - String role; - - /** - * Builder constructor. - * */ - public DiscordMessageReceivedEvent() { - - } - - /** - * Default constructor. - * */ - public DiscordMessageReceivedEvent(String username, String nickname, String discriminator, String guildName, String channel, - String messageContent, String role) { - this.username = username; - this.nickname = nickname; - this.discriminator = discriminator; - this.guildName = guildName; - this.channel = channel; - this.messageContent = messageContent; - this.role = role; - } - - public String getMessageContent() { - return messageContent; - } - - - - public String getUsername() { - return username; - } - - public String getNickname() { - return nickname; - } - - public String getDiscriminator() { - return discriminator; - } - - public String getTag() { - return tag; - } - - public String getGuildName() { - return guildName; - } - - public String getChannel() { - return channel; - } - - public String getRole() { - return role; - } - - public DiscordMessageReceivedEvent setUsername(String username) { - this.username = username; - return this; - } - - public DiscordMessageReceivedEvent setNickname(String nickname) { - this.nickname = nickname; - return this; - } - - public DiscordMessageReceivedEvent setDiscriminator(String discriminator) { - this.discriminator = discriminator; - return this; - } - - public DiscordMessageReceivedEvent setTag(String tag) { - this.tag = tag; - return this; - } - - public DiscordMessageReceivedEvent setGuildName(String guildName) { - this.guildName = guildName; - return this; - } - - public DiscordMessageReceivedEvent setChannel(String channel) { - this.channel = channel; - return this; - } - - public DiscordMessageReceivedEvent setMessageContent(String messageContent) { - this.messageContent = messageContent; - return this; - } - - public DiscordMessageReceivedEvent setRole(String role) { - this.role = role; - return this; - } -} diff --git a/Common/src/main/java/io/paradaux/conch/common/bot/DiscordBot.java b/Common/src/main/java/io/paradaux/conch/common/bot/DiscordBot.java new file mode 100644 index 0000000..4b7bbab --- /dev/null +++ b/Common/src/main/java/io/paradaux/conch/common/bot/DiscordBot.java @@ -0,0 +1,52 @@ +package io.paradaux.conch.common.bot; + +import io.paradaux.conch.common.api.config.CachedBotSettings; +import io.paradaux.conch.common.api.config.ConfigurationUtil; +import net.dv8tion.jda.api.JDA; +import net.dv8tion.jda.api.JDABuilder; +import net.dv8tion.jda.api.requests.GatewayIntent; +import net.dv8tion.jda.api.utils.MemberCachePolicy; + +import javax.security.auth.login.LoginException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class DiscordBot { + + private final List listeners; + private final String token; + private JDA client; + + public DiscordBot() throws LoginException { + CachedBotSettings config = ConfigurationUtil.getBotSettings(); + this.token = config.getToken(); + this.listeners = new ArrayList<>(); + createDefaultListeners(); + reconnect(); + } + + public void addNewListener(Object listener) { + listeners.add(listener); + } + + public void reconnect() throws LoginException { + client = login(token, listeners); + } + + public void createDefaultListeners() { + Collections.addAll(listeners, new MessageEventListener()); + } + + private JDA login(String token, List listeners) throws LoginException { + + JDABuilder builder = JDABuilder.createDefault(token, GatewayIntent.GUILD_MESSAGES, GatewayIntent.GUILD_MEMBERS) + .setMemberCachePolicy(MemberCachePolicy.ALL) + .enableIntents(GatewayIntent.GUILD_MEMBERS) + .setBulkDeleteSplittingEnabled(false) + .addEventListeners(listeners); + + return builder.build(); + } + +} diff --git a/Common/src/main/java/io/paradaux/conch/common/bot/DiscordMessageListener.java b/Common/src/main/java/io/paradaux/conch/common/bot/listeners/DiscordMessageListener.java similarity index 90% rename from Common/src/main/java/io/paradaux/conch/common/bot/DiscordMessageListener.java rename to Common/src/main/java/io/paradaux/conch/common/bot/listeners/DiscordMessageListener.java index 6684334..5f664b0 100644 --- a/Common/src/main/java/io/paradaux/conch/common/bot/DiscordMessageListener.java +++ b/Common/src/main/java/io/paradaux/conch/common/bot/listeners/DiscordMessageListener.java @@ -21,9 +21,10 @@ * See LICENSE.md for more details. */ -package io.paradaux.conch.common.bot; +package io.paradaux.conch.common.bot.listeners; import co.aikar.taskchain.TaskChainFactory; +import io.paradaux.conch.common.api.config.CachedBotSettings; import io.paradaux.conch.common.api.events.DiscordMessageReceivedEvent; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Role; @@ -36,6 +37,9 @@ public class DiscordMessageListener extends ListenerAdapter { + + + TaskChainFactory taskChainFactory; String messageFormat; List monitoredChannels; @@ -44,11 +48,8 @@ public class DiscordMessageListener extends ListenerAdapter { /** * Handles discord messages coming in. * */ - public DiscordMessageListener(List monitoredChannels, TaskChainFactory taskChainFactory, - String messageFormat, boolean ignoreBots) { - this.monitoredChannels = monitoredChannels; - this.taskChainFactory = taskChainFactory; - this.ignoreBots = ignoreBots; + public DiscordMessageListener(CachedBotSettings config) { + } @Override diff --git a/Common/src/main/resources/Conch.properties b/Common/src/main/resources/Conch.properties index dcaa8e6..a27a2ba 100644 --- a/Common/src/main/resources/Conch.properties +++ b/Common/src/main/resources/Conch.properties @@ -40,7 +40,7 @@ configuration.config-doesnt-exist=Conch configuration.backup-failure=Conch » An issue occurred whilst backing up your configuration file. general.no-permission=Conch » &cYou do not have permission. general.reload-sucess=Conch » &cconfig.yml &7& &clocale.yml &c have been &creloaded&7 -general..reload-failure=Conch » &cconfig.yml &7& &clocale.yml &c have not been &creloaded&7 due to an &cerror&7. +general.reload-failure=Conch » &cconfig.yml &7& &clocale.yml &c have not been &creloaded&7 due to an &cerror&7. general.command-default=Conch » &cDeveloped &7and &cMaintained&7 by &cParadaux\ &7This is &copen source &7software, please leave this &cattribution&7.\ &7For support: &chttps://paradaux.io/discord From efbe9d9e4d08e618e4881b06c11a00d5373ee1b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 05:14:21 +0000 Subject: [PATCH 37/59] Bot Settings now being loaded --- .../paradaux/conch/bukkit/api/BukkitAPI.java | 1 - .../java/io/paradaux/conch/common/API.java | 1 - .../paradaux/conch/common/api/BotManager.java | 83 ------------------- .../api/config/ConfigurationLoader.java | 17 ++-- pom.xml | 2 +- 5 files changed, 9 insertions(+), 95 deletions(-) delete mode 100644 Common/src/main/java/io/paradaux/conch/common/api/BotManager.java diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java index 400b2d5..11abc4b 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java @@ -24,7 +24,6 @@ package io.paradaux.conch.bukkit.api; import io.paradaux.conch.common.API; -import io.paradaux.conch.common.api.BotManager; import io.paradaux.conch.common.api.ConfigurationManager; import io.paradaux.conch.common.api.DiscordManager; import io.paradaux.conch.common.api.I18NManager; diff --git a/Common/src/main/java/io/paradaux/conch/common/API.java b/Common/src/main/java/io/paradaux/conch/common/API.java index aab2438..8164e37 100644 --- a/Common/src/main/java/io/paradaux/conch/common/API.java +++ b/Common/src/main/java/io/paradaux/conch/common/API.java @@ -23,7 +23,6 @@ package io.paradaux.conch.common; -import io.paradaux.conch.common.api.BotManager; import io.paradaux.conch.common.api.ConfigurationManager; import io.paradaux.conch.common.api.DiscordManager; import io.paradaux.conch.common.api.I18NManager; diff --git a/Common/src/main/java/io/paradaux/conch/common/api/BotManager.java b/Common/src/main/java/io/paradaux/conch/common/api/BotManager.java deleted file mode 100644 index e9947e0..0000000 --- a/Common/src/main/java/io/paradaux/conch/common/api/BotManager.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (c) 2021, Rían Errity. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 3 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 3 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 3 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Rían Errity or visit https://paradaux.io - * if you need additional information or have any questions. - * See LICENSE.md for more details. - */ - -package io.paradaux.conch.common.api; - -import co.aikar.taskchain.TaskChainFactory; -import io.paradaux.conch.common.api.events.DiscordMessageReceivedEvent; -import io.paradaux.conch.common.bot.DiscordMessageListener; -import net.dv8tion.jda.api.JDA; -import net.dv8tion.jda.api.JDABuilder; -import net.dv8tion.jda.api.utils.Compression; -import net.dv8tion.jda.api.utils.cache.CacheFlag; -import org.slf4j.Logger; - -import javax.security.auth.login.LoginException; -import java.util.ArrayList; -import java.util.List; - -public class BotManager { - - private static JDA client; - private static Logger logger; - private static TaskChainFactory taskChainFactory; - - - /** - * Instances of DiscordMessageReceivedListener which will respond when a disocrd message - * is received from the discord bot. - * */ - private static final List eventListeners = new ArrayList<>(); - - /** - * Sets up the manager. - * */ - public static void initialise(String token, Logger logger, List monitoredChannels, - TaskChainFactory taskChainFactory, String messageFormat, boolean ignoreBots) { - BotManager.logger = logger; - - JDABuilder builder = JDABuilder.createDefault(token); - - builder.disableCache(CacheFlag.MEMBER_OVERRIDES, CacheFlag.VOICE_STATE); - - builder.setBulkDeleteSplittingEnabled(false); - builder.setCompression(Compression.ZLIB); - - builder.addEventListeners(new DiscordMessageListener(monitoredChannels, taskChainFactory, messageFormat, ignoreBots)); - - if (token == null) { - logger.warn("You have not set the token for your discord bot for discord2mc" - + " functionality. This has been disabled."); - return; - } - - try { - client = builder.build(); - } catch(LoginException exception) { - client = null; - logger.warn("FAILED TO LOGIN TO DISCORD USING TOKEN" - + " PROVIDED"); - } - } - -} diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java index 36ebaf4..3ef3514 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java @@ -133,16 +133,15 @@ public CachedEventSettings loadEventSettings() throws ConfigurateException { public CachedBotSettings loadBotSettings() throws ConfigurateException { ConfigurationNode root = eventSettingsLoader.load(); - HashMap monitoredChannelMappings = root.node("proxy-monitored-channels").get(stringMap); - return CachedBotSettings.builder() - .setEnabled(root.node("").getBoolean()) - .setToken(root.node("").getString()) - .setDiscordCommandsEnabled(root.node("").getBoolean()) - .setCommandPrefix(root.node("").getString()) - .setSendBotMessages(root.node("").getBoolean()) - .setMonitoredChannels(root.node("").getList(String.class)) - .setProxyBasedMonitoring(root.node("").getBoolean()) + .setEnabled(root.node("enabled").getBoolean()) + .setToken(root.node("token").getString()) + .setDiscordCommandsEnabled(root.node("discord-commands-enabled").getBoolean()) + .setCommandPrefix(root.node("command-prefix").getString()) + .setSendBotMessages(root.node("send-messages-from-bots").getBoolean()) + .setMonitoredChannels(root.node("monitoredChannels").getList(String.class)) + .setProxyBasedMonitoring(root.node("proxy-based-monitoring").getBoolean()) + .setProxyMonitoredChannels(root.node("proxy-monitored-channels").get(stringMap)) .build(); } diff --git a/pom.xml b/pom.xml index 8e6a6a9..a4ddeeb 100644 --- a/pom.xml +++ b/pom.xml @@ -146,7 +146,7 @@ net.dv8tion JDA - 4.2.0_225 + 4.2.0_228 club.minnced From 3b9e2fa977632be59ca0c1dbd44e7bebcb5e45ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 05:36:32 +0000 Subject: [PATCH 38/59] New listener location, because I was stupid and tried to put them in the API --- .../bukkit/bot/DiscordMessageListener.java | 2 + .../conch/common/api/DiscordEvent.java | 32 ----- .../bot/listeners/DiscordMessageListener.java | 114 ------------------ 3 files changed, 2 insertions(+), 146 deletions(-) create mode 100644 Bukkit/src/main/java/io/paradaux/conch/bukkit/bot/DiscordMessageListener.java delete mode 100644 Common/src/main/java/io/paradaux/conch/common/api/DiscordEvent.java delete mode 100644 Common/src/main/java/io/paradaux/conch/common/bot/listeners/DiscordMessageListener.java diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/bot/DiscordMessageListener.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/bot/DiscordMessageListener.java new file mode 100644 index 0000000..100a51d --- /dev/null +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/bot/DiscordMessageListener.java @@ -0,0 +1,2 @@ +package io.paradaux.conch.bukkit.bot;public class DiscordMessageListener { +} diff --git a/Common/src/main/java/io/paradaux/conch/common/api/DiscordEvent.java b/Common/src/main/java/io/paradaux/conch/common/api/DiscordEvent.java deleted file mode 100644 index f445e08..0000000 --- a/Common/src/main/java/io/paradaux/conch/common/api/DiscordEvent.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (c) 2021, Rían Errity. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 3 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 3 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 3 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Rían Errity or visit https://paradaux.io - * if you need additional information or have any questions. - * See LICENSE.md for more details. - */ - -package io.paradaux.conch.common.api; - -import io.paradaux.conch.common.api.events.DiscordMessageReceivedEvent; - -public interface DiscordEvent { - - void listener(DiscordMessageReceivedEvent event); - -} diff --git a/Common/src/main/java/io/paradaux/conch/common/bot/listeners/DiscordMessageListener.java b/Common/src/main/java/io/paradaux/conch/common/bot/listeners/DiscordMessageListener.java deleted file mode 100644 index 5f664b0..0000000 --- a/Common/src/main/java/io/paradaux/conch/common/bot/listeners/DiscordMessageListener.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2021, Rían Errity. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 3 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 3 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 3 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Rían Errity or visit https://paradaux.io - * if you need additional information or have any questions. - * See LICENSE.md for more details. - */ - -package io.paradaux.conch.common.bot.listeners; - -import co.aikar.taskchain.TaskChainFactory; -import io.paradaux.conch.common.api.config.CachedBotSettings; -import io.paradaux.conch.common.api.events.DiscordMessageReceivedEvent; -import net.dv8tion.jda.api.entities.Member; -import net.dv8tion.jda.api.entities.Role; -import net.dv8tion.jda.api.events.message.MessageReceivedEvent; -import net.dv8tion.jda.api.hooks.ListenerAdapter; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -public class DiscordMessageListener extends ListenerAdapter { - - - - - TaskChainFactory taskChainFactory; - String messageFormat; - List monitoredChannels; - boolean ignoreBots; - - /** - * Handles discord messages coming in. - * */ - public DiscordMessageListener(CachedBotSettings config) { - - } - - @Override - public void onMessageReceived(@NotNull MessageReceivedEvent event) { - Member member = event.getMember(); - - // If the message wasn't in a monitored channel, ignore it. - if (!monitoredChannels.contains(event.getChannel().getId())) { - return; - } - - // If ignore bots is enabled, respect it. - if (event.getAuthor().isBot() && ignoreBots) { - return; - } - - taskChainFactory.newChain().async(() -> { - String message = event.getMessage().getContentStripped(); - - // Member is null when the event is triggered by a webhook rather than a bot/user - if (member == null) { - return; - } - - Role mainRole = getHighestFrom(member); - - DiscordMessageReceivedEvent messageEvent = new DiscordMessageReceivedEvent() - .setUsername(event.getAuthor().getName()) - .setNickname(member.getNickname() == null ? "" : member.getNickname()) - .setGuildName(event.getMessage().getGuild().getName()) - .setRole(mainRole == null ? "" : mainRole.getName()); - - - }).execute(); - } - - /** - * Determines the highest role (i.e the role displayed when the user speaks) of the member provided. - * */ - @Nullable - public Role getHighestFrom(Member member) { - if (member == null) { - return null; - } - - List roles = member.getRoles(); - - if (roles.isEmpty()) { - return null; - } - - return roles.stream().min((first, second) -> { - if (first.getPosition() == second.getPosition()) { - return 0; - } - - return first.getPosition() > second.getPosition() ? -1 : 1; - }).get(); - } - - -} From 8ad2d121fcc3292597025cde7de629551e9c5291 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 05:37:01 +0000 Subject: [PATCH 39/59] Modified how the bot is called upon --- .../main/java/io/paradaux/conch/bukkit/BukkitConch.java | 7 +++++++ .../main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java | 5 ----- .../java/io/paradaux/conch/common/bot/DiscordBot.java | 8 +------- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java index 1902ae5..459e5bd 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java @@ -25,6 +25,7 @@ import io.paradaux.conch.bukkit.api.BukkitAPI; import io.paradaux.conch.bukkit.api.BukkitConfigurationManager; +import io.paradaux.conch.bukkit.bot.DiscordMessageListener; import io.paradaux.conch.bukkit.listeners.AsyncPlayerChatEventListener; import io.paradaux.conch.bukkit.managers.MetricsManager; import io.paradaux.conch.bukkit.managers.TaskManager; @@ -32,6 +33,7 @@ import io.paradaux.conch.common.api.DiscordManager; import io.paradaux.conch.common.api.I18NLogger; import io.paradaux.conch.common.api.I18NManager; +import io.paradaux.conch.common.api.config.CachedBotSettings; import io.paradaux.conch.common.api.config.CachedEventSettings; import io.paradaux.conch.common.api.config.CachedSettings; import io.paradaux.conch.common.api.config.ConfigurationUtil; @@ -124,8 +126,13 @@ public void registerEvents() { } public void startDiscordBot() { + CachedBotSettings config = ConfigurationUtil.getBotSettings(); + + try { discordBot = new DiscordBot(); + discordBot.addNewListener(new DiscordMessageListener(discord, tasks, config)); + discordBot.connect(); } catch (LoginException ok) { // TODO log } diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java index 11abc4b..edf3bb8 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitAPI.java @@ -35,11 +35,6 @@ public DiscordManager getDiscordManager() { return null; } - @Override - public BotManager getBotManager() { - return null; - } - @Override public I18NManager getI18nManager() { return null; diff --git a/Common/src/main/java/io/paradaux/conch/common/bot/DiscordBot.java b/Common/src/main/java/io/paradaux/conch/common/bot/DiscordBot.java index 4b7bbab..0115666 100644 --- a/Common/src/main/java/io/paradaux/conch/common/bot/DiscordBot.java +++ b/Common/src/main/java/io/paradaux/conch/common/bot/DiscordBot.java @@ -22,22 +22,16 @@ public DiscordBot() throws LoginException { CachedBotSettings config = ConfigurationUtil.getBotSettings(); this.token = config.getToken(); this.listeners = new ArrayList<>(); - createDefaultListeners(); - reconnect(); } public void addNewListener(Object listener) { listeners.add(listener); } - public void reconnect() throws LoginException { + public void connect() throws LoginException { client = login(token, listeners); } - public void createDefaultListeners() { - Collections.addAll(listeners, new MessageEventListener()); - } - private JDA login(String token, List listeners) throws LoginException { JDABuilder builder = JDABuilder.createDefault(token, GatewayIntent.GUILD_MESSAGES, GatewayIntent.GUILD_MEMBERS) From 88160037ecacd6afd1d962590ccbdda4b509f70e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 05:37:12 +0000 Subject: [PATCH 40/59] Fixed general config issues pertaining to the bot --- Bukkit/src/main/resources/bot-settings.conf | 13 ++++++++----- .../src/main/java/io/paradaux/conch/common/API.java | 9 --------- .../common/api/config/ConfigurationLoader.java | 2 +- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/Bukkit/src/main/resources/bot-settings.conf b/Bukkit/src/main/resources/bot-settings.conf index 2206d13..e85111e 100644 --- a/Bukkit/src/main/resources/bot-settings.conf +++ b/Bukkit/src/main/resources/bot-settings.conf @@ -43,9 +43,12 @@ proxy-monitored-channels: { // This is how you configure how your messages appear in-game as they are broadcast to your users. // Available Placeholders: -// - %playerUserName% :: The Player's Username. -// - %playerDisplayName% :: The Player's Display name (Used by other plugins for Nicknames, prefixes etc) -// - %playerUUID% :: The Player's Unique ID. -// - %avatarAPI% :: The Player's Head as defined in general-settings.conf -// - %serverName% :: The Name of the server as defined in general-settings.conf +// - %discord_nickname% :: +// - %discord_tag% :: +// - %discord_username% :: +// - %discord_descriminator% :: +// - %discord_message% :: +// - %discord_topRole% :: + +// TODO adventure support message-format: "&7D: &7#%channel%: <&c%mainrole%&7> <&c%username%#%discriminator%&7>: &7%message%" diff --git a/Common/src/main/java/io/paradaux/conch/common/API.java b/Common/src/main/java/io/paradaux/conch/common/API.java index 8164e37..de7a009 100644 --- a/Common/src/main/java/io/paradaux/conch/common/API.java +++ b/Common/src/main/java/io/paradaux/conch/common/API.java @@ -50,15 +50,6 @@ public interface API { * */ DiscordManager getDiscordManager(); - /** - * Gets the {@link BotManager}, which manages Conch's integrated discord bot. - * Using this manager will allow you to register additional JDA Event Listeners or listen - * to Conchs Integrated Event System, send messages as the bot and so on. - * - * @return The JDA 4.X Discord Bot Manager used by Conch. - * */ - BotManager getBotManager(); - /** * Gets the {@link I18NManager}, which allows the developer to access Conch's ResourceBundles and * translate keys from Conch's locale, as well as get the user's locale. diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java index 3ef3514..3054966 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java @@ -131,7 +131,7 @@ public CachedEventSettings loadEventSettings() throws ConfigurateException { @CheckReturnValue @NotNull public CachedBotSettings loadBotSettings() throws ConfigurateException { - ConfigurationNode root = eventSettingsLoader.load(); + ConfigurationNode root = botSettingsLoader.load(); return CachedBotSettings.builder() .setEnabled(root.node("enabled").getBoolean()) From e8e11b6ea19623a0bfe053dbf4b3ae385b13c586 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 06:01:09 +0000 Subject: [PATCH 41/59] Changed how events are registered --- .../conch/common/api/StringUtils.java | 9 ++++ .../paradaux/conch/common/bot/DiscordBot.java | 48 +++++++++++++------ 2 files changed, 42 insertions(+), 15 deletions(-) create mode 100644 Common/src/main/java/io/paradaux/conch/common/api/StringUtils.java diff --git a/Common/src/main/java/io/paradaux/conch/common/api/StringUtils.java b/Common/src/main/java/io/paradaux/conch/common/api/StringUtils.java new file mode 100644 index 0000000..25087cf --- /dev/null +++ b/Common/src/main/java/io/paradaux/conch/common/api/StringUtils.java @@ -0,0 +1,9 @@ +package io.paradaux.conch.common.api; + +public class StringUtils { + + public static String pluralise(int i) { + return (i == 1) ? "" : "s"; + } + +} diff --git a/Common/src/main/java/io/paradaux/conch/common/bot/DiscordBot.java b/Common/src/main/java/io/paradaux/conch/common/bot/DiscordBot.java index 0115666..5138e80 100644 --- a/Common/src/main/java/io/paradaux/conch/common/bot/DiscordBot.java +++ b/Common/src/main/java/io/paradaux/conch/common/bot/DiscordBot.java @@ -1,46 +1,64 @@ package io.paradaux.conch.common.bot; +import io.paradaux.conch.common.api.I18NLogger; +import io.paradaux.conch.common.api.StringUtils; import io.paradaux.conch.common.api.config.CachedBotSettings; import io.paradaux.conch.common.api.config.ConfigurationUtil; import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.JDABuilder; -import net.dv8tion.jda.api.requests.GatewayIntent; -import net.dv8tion.jda.api.utils.MemberCachePolicy; +import net.dv8tion.jda.api.entities.Guild; +import net.dv8tion.jda.api.events.ReadyEvent; +import net.dv8tion.jda.api.hooks.EventListener; +import net.dv8tion.jda.api.hooks.ListenerAdapter; +import org.jetbrains.annotations.NotNull; import javax.security.auth.login.LoginException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; public class DiscordBot { - private final List listeners; private final String token; private JDA client; public DiscordBot() throws LoginException { CachedBotSettings config = ConfigurationUtil.getBotSettings(); this.token = config.getToken(); - this.listeners = new ArrayList<>(); } - public void addNewListener(Object listener) { - listeners.add(listener); + public void addNewListener(EventListener listener) { + I18NLogger.rawInfo("Registered new event listener: " + listener.getClass().getSimpleName()); + client.addEventListener(listener); } public void connect() throws LoginException { - client = login(token, listeners); + client = login(token); } - private JDA login(String token, List listeners) throws LoginException { + private JDA login(String token) throws LoginException { - JDABuilder builder = JDABuilder.createDefault(token, GatewayIntent.GUILD_MESSAGES, GatewayIntent.GUILD_MEMBERS) - .setMemberCachePolicy(MemberCachePolicy.ALL) - .enableIntents(GatewayIntent.GUILD_MEMBERS) + JDABuilder builder = JDABuilder.createDefault(token) .setBulkDeleteSplittingEnabled(false) - .addEventListeners(listeners); + .addEventListeners(new ReadyListener()); return builder.build(); } + private static class ReadyListener extends ListenerAdapter { + + @Override + public void onReady(@NotNull ReadyEvent event) { + + int guildCount = event.getGuildAvailableCount(); + int userCount = 0; + + for (Guild guild : event.getJDA().getGuilds()) { + userCount += guild.getMemberCount(); + } + + I18NLogger.rawInfo("Bot Started: Serving {} user{s} in {} guild{}", String.valueOf(userCount), StringUtils.pluralise(userCount), + String.valueOf(guildCount),StringUtils.pluralise(guildCount)); // TODO ADD TO LOCALE + } + + } + + } From 009d162cd6fca730bb640e00fbbe0cb3880fa67c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 06:01:16 +0000 Subject: [PATCH 42/59] Fix typo --- .../paradaux/conch/common/api/config/ConfigurationLoader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java index 3054966..6e376f2 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java @@ -139,7 +139,7 @@ public CachedBotSettings loadBotSettings() throws ConfigurateException { .setDiscordCommandsEnabled(root.node("discord-commands-enabled").getBoolean()) .setCommandPrefix(root.node("command-prefix").getString()) .setSendBotMessages(root.node("send-messages-from-bots").getBoolean()) - .setMonitoredChannels(root.node("monitoredChannels").getList(String.class)) + .setMonitoredChannels(root.node("monitored-channels").getList(String.class)) .setProxyBasedMonitoring(root.node("proxy-based-monitoring").getBoolean()) .setProxyMonitoredChannels(root.node("proxy-monitored-channels").get(stringMap)) .build(); From 3c28155a2de700d2b22ed5e1d06df9efd415c739 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 06:01:31 +0000 Subject: [PATCH 43/59] Remove debug messages --- .../src/main/java/io/paradaux/conch/bukkit/BukkitConch.java | 5 +---- .../conch/bukkit/listeners/AsyncPlayerChatEventListener.java | 2 -- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java index 459e5bd..c0796e9 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java @@ -99,7 +99,6 @@ public void loadLocale() { I18NLogger.info("startup.loading-message"); } - public void loadConfiguration() { Path pluginData = this.getDataFolder().toPath(); BukkitConfigurationManager configurationManager = new BukkitConfigurationManager(pluginData, this); @@ -113,7 +112,6 @@ public void connect() { discord = new DiscordManager(config.getWebhookUrl(), true); } - public void registerEvents() { PluginManager pm = this.getServer().getPluginManager(); CachedEventSettings eventSettings = ConfigurationUtil.getEventSettings(); @@ -128,11 +126,10 @@ public void registerEvents() { public void startDiscordBot() { CachedBotSettings config = ConfigurationUtil.getBotSettings(); - try { discordBot = new DiscordBot(); - discordBot.addNewListener(new DiscordMessageListener(discord, tasks, config)); discordBot.connect(); + discordBot.addNewListener(new DiscordMessageListener(discord, tasks, config)); } catch (LoginException ok) { // TODO log } diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java index 2b2281c..d24863f 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/listeners/AsyncPlayerChatEventListener.java @@ -84,8 +84,6 @@ public void onAsyncPlayerChatEvent(AsyncPlayerChatEvent event) { // logger.info("{} has sent a message in chat which will be relayed to the discord webhook.", player.getName()); } - I18NLogger.rawInfo(parseAvatarApi(player, avatarApiFormat)); - discord.sendDiscordMessage(discordUserName, discordAvatarUrl, messageContent); } From 43950cb83900f0ed9604b31532ba23512128d70d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 06:12:28 +0000 Subject: [PATCH 44/59] disable for now --- .../conch/bukkit/api/VersionChecker.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java index d81d55c..61c94e3 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/VersionChecker.java @@ -47,19 +47,19 @@ public VersionChecker(int resourceId) { * */ public void getVersion(final Consumer consumer) { - TaskManager.newChain().async(() -> { - try (InputStream inputStream = new URL("https://api.spigotmc.org/legacy/update.php?resource=" - + this.resourceId).openStream(); Scanner scanner = new Scanner(inputStream)) { - - if (scanner.hasNext()) { - consumer.accept(scanner.next()); - } - - } catch (IOException exception) { - // TODO: log - - } - }).execute(); +// TaskManager.newChain().async(() -> { +// try (InputStream inputStream = new URL("https://api.spigotmc.org/legacy/update.php?resource=" +// + this.resourceId).openStream(); Scanner scanner = new Scanner(inputStream)) { +// +// if (scanner.hasNext()) { +// consumer.accept(scanner.next()); +// } +// +// } catch (IOException exception) { +// // TODO: log +// +// } +// }).execute(); } From 5f674e3e7908ed7c7ecc2eff96cf03529e3505a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 06:12:38 +0000 Subject: [PATCH 45/59] Less static abuse --- .../java/io/paradaux/conch/bukkit/managers/TaskManager.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/TaskManager.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/TaskManager.java index 1122d9d..1039f88 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/TaskManager.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/managers/TaskManager.java @@ -30,18 +30,16 @@ public class TaskManager { - public static TaskManager INSTANCE; - private static TaskChainFactory taskChainFactory; + private final TaskChainFactory taskChainFactory; /** * Initialise the TaskController. * */ public TaskManager(Plugin plugin) { taskChainFactory = BukkitTaskChainFactory.create(plugin); - INSTANCE = this; } - public static TaskChain newChain() { + public TaskChain newChain() { return taskChainFactory.newChain(); } } From e59c84bf130201b67c015443f13724917c617ddf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 06:21:01 +0000 Subject: [PATCH 46/59] Fix typo --- .../main/java/io/paradaux/conch/common/bot/DiscordBot.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Common/src/main/java/io/paradaux/conch/common/bot/DiscordBot.java b/Common/src/main/java/io/paradaux/conch/common/bot/DiscordBot.java index 5138e80..938cac9 100644 --- a/Common/src/main/java/io/paradaux/conch/common/bot/DiscordBot.java +++ b/Common/src/main/java/io/paradaux/conch/common/bot/DiscordBot.java @@ -34,7 +34,7 @@ public void connect() throws LoginException { } private JDA login(String token) throws LoginException { - + // TODO Envoirnment varialbe support JDABuilder builder = JDABuilder.createDefault(token) .setBulkDeleteSplittingEnabled(false) .addEventListeners(new ReadyListener()); @@ -54,8 +54,8 @@ public void onReady(@NotNull ReadyEvent event) { userCount += guild.getMemberCount(); } - I18NLogger.rawInfo("Bot Started: Serving {} user{s} in {} guild{}", String.valueOf(userCount), StringUtils.pluralise(userCount), - String.valueOf(guildCount),StringUtils.pluralise(guildCount)); // TODO ADD TO LOCALE + I18NLogger.rawInfo("Bot Started: Serving {} user{} in {} guild{}", String.valueOf(userCount), StringUtils.pluralise(userCount), + String.valueOf(guildCount), StringUtils.pluralise(guildCount)); // TODO ADD TO LOCALE } } From 7aa49beecc90dd4d4c9dd9583eba37dc40c8bf83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 06:21:24 +0000 Subject: [PATCH 47/59] Fix message format and change default. plus new placeholders --- Bukkit/src/main/resources/bot-settings.conf | 6 ++++-- .../conch/common/api/config/ConfigurationLoader.java | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Bukkit/src/main/resources/bot-settings.conf b/Bukkit/src/main/resources/bot-settings.conf index e85111e..83afe1c 100644 --- a/Bukkit/src/main/resources/bot-settings.conf +++ b/Bukkit/src/main/resources/bot-settings.conf @@ -23,7 +23,7 @@ command-prefix: ';' send-messages-from-bots: false // This is an array of discord channel IDs which the discord bot will listen to messages from -monitored-channels: ["731716903742996531", "736301820351086656", "739708755767329350"] +monitored-channels: ["822245879556997122", "736301820351086656", "739708755767329350"] // This configuration option only works on proxies, but allows you to map servers to monitored disocrd channels. // This is an advanced configuration option {TODO INSERT DOC LINK} for more @@ -49,6 +49,8 @@ proxy-monitored-channels: { // - %discord_descriminator% :: // - %discord_message% :: // - %discord_topRole% :: +// - %discord_channel% :: +// - %discord_guild% :: // TODO adventure support -message-format: "&7D: &7#%channel%: <&c%mainrole%&7> <&c%username%#%discriminator%&7>: &7%message%" +message-format: " #%discord_channel% %discord_topRole% » %discord_message%" diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java index 6e376f2..0aa94ed 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java @@ -142,6 +142,7 @@ public CachedBotSettings loadBotSettings() throws ConfigurateException { .setMonitoredChannels(root.node("monitored-channels").getList(String.class)) .setProxyBasedMonitoring(root.node("proxy-based-monitoring").getBoolean()) .setProxyMonitoredChannels(root.node("proxy-monitored-channels").get(stringMap)) + .setMessageFormat(root.node("message-format").getString()) .build(); } From d13c54962c9ab7e21e01f362c6f40fd46fa70312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sat, 20 Mar 2021 06:27:31 +0000 Subject: [PATCH 48/59] Working 2-way communication! --- .../bukkit/bot/DiscordMessageListener.java | 116 +++++++++++++++++- Bukkit/src/main/resources/bot-settings.conf | 18 +-- 2 files changed, 124 insertions(+), 10 deletions(-) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/bot/DiscordMessageListener.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/bot/DiscordMessageListener.java index 100a51d..f56473f 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/bot/DiscordMessageListener.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/bot/DiscordMessageListener.java @@ -1,2 +1,116 @@ -package io.paradaux.conch.bukkit.bot;public class DiscordMessageListener { +/* + * Copyright (c) 2021, Rían Errity. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 3 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 3 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Rían Errity or visit https://paradaux.io + * if you need additional information or have any questions. + * See LICENSE.md for more details. + */ + +package io.paradaux.conch.bukkit.bot; + +import io.paradaux.conch.bukkit.managers.TaskManager; +import io.paradaux.conch.common.api.DiscordManager; +import io.paradaux.conch.common.api.config.CachedBotSettings; +import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.entities.Role; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import net.dv8tion.jda.api.hooks.ListenerAdapter; +import org.bukkit.Bukkit; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public class DiscordMessageListener extends ListenerAdapter { + + private final DiscordManager discord; + private final CachedBotSettings config; + private final TaskManager tasks; + + /** + * Handles discord messages coming in. + * */ + public DiscordMessageListener(DiscordManager discord, TaskManager tasks, CachedBotSettings config) { + this.discord = discord; + this.tasks = tasks; + this.config = config; + } + + @Override + public void onMessageReceived(@NotNull MessageReceivedEvent event) { + Member member = event.getMember(); + + // If the message wasn't in a monitored channel, ignore it. + if (!config.getMonitoredChannels().contains(event.getChannel().getId())) { + return; + } + + // If ignore bots is enabled, respect it. + if (event.getAuthor().isBot() && !config.isSendBotMessages()) { + return; + } + + tasks.newChain().async(() -> { + // Member is null when the event is triggered by a webhook rather than a bot/user + if (member == null) { + return; + } + + Role highestRole = getHighestFrom(member); + + String broadcast = config.getMessageFormat() + .replace("%discord_nickname%", member.getEffectiveName()) + .replace("%discord_tag%", event.getAuthor().getAsTag()) + .replace("%discord_username%", event.getAuthor().getName()) + .replace("%discord_discriminator%", event.getAuthor().getDiscriminator()) + .replace("%discord_message%", event.getMessage().getContentStripped()) + .replace("%discord_topRole%", highestRole == null ? "" : highestRole.getName()) + .replace("%discord_channel%", event.getChannel().getName()) + .replace("%discord_guild%", event.getGuild().getName()); + + Bukkit.getServer().broadcastMessage(broadcast); + }).execute(); + } + + /** + * Determines the highest role (i.e the role displayed when the user speaks) of the member provided. + * */ + @Nullable + public Role getHighestFrom(Member member) { + if (member == null) { + return null; + } + + List roles = member.getRoles(); + + if (roles.isEmpty()) { + return null; + } + + return roles.stream().min((first, second) -> { + if (first.getPosition() == second.getPosition()) { + return 0; + } + + return first.getPosition() > second.getPosition() ? -1 : 1; + }).get(); + } + + } + diff --git a/Bukkit/src/main/resources/bot-settings.conf b/Bukkit/src/main/resources/bot-settings.conf index 83afe1c..df5f70d 100644 --- a/Bukkit/src/main/resources/bot-settings.conf +++ b/Bukkit/src/main/resources/bot-settings.conf @@ -43,14 +43,14 @@ proxy-monitored-channels: { // This is how you configure how your messages appear in-game as they are broadcast to your users. // Available Placeholders: -// - %discord_nickname% :: -// - %discord_tag% :: -// - %discord_username% :: -// - %discord_descriminator% :: -// - %discord_message% :: -// - %discord_topRole% :: -// - %discord_channel% :: -// - %discord_guild% :: +// - %discord_nickname% :: The nickname of discord user who sent a message. +// - %discord_tag% :: The tag (Username#Descriminator) of the user who sent a message. +// - %discord_username% :: The username of that user. +// - %discord_descriminator% :: The descriminator of that user. +// - %discord_message% :: The message sent by that user. +// - %discord_topRole% :: The highest role that user has. +// - %discord_channel% :: The channel in which the message was sent. +// - %discord_guild% :: The guild in which that message was sent. // TODO adventure support -message-format: " #%discord_channel% %discord_topRole% » %discord_message%" +message-format: " #%discord_channel% <%discord_topRole%> %discord_nickname% » %discord_message%" From a6548525d6e9f4388d813da50522513514f99e0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sun, 21 Mar 2021 11:31:42 +0000 Subject: [PATCH 49/59] Dev build one state --- .../java/io/paradaux/conch/bukkit/BukkitConch.java | 2 +- .../conch/bukkit/bot/DiscordMessageListener.java | 14 ++++---------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java index c0796e9..8c5926c 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java @@ -129,7 +129,7 @@ public void startDiscordBot() { try { discordBot = new DiscordBot(); discordBot.connect(); - discordBot.addNewListener(new DiscordMessageListener(discord, tasks, config)); + discordBot.addNewListener(new DiscordMessageListener(tasks, config)); } catch (LoginException ok) { // TODO log } diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/bot/DiscordMessageListener.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/bot/DiscordMessageListener.java index f56473f..198baf8 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/bot/DiscordMessageListener.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/bot/DiscordMessageListener.java @@ -24,7 +24,6 @@ package io.paradaux.conch.bukkit.bot; import io.paradaux.conch.bukkit.managers.TaskManager; -import io.paradaux.conch.common.api.DiscordManager; import io.paradaux.conch.common.api.config.CachedBotSettings; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Role; @@ -38,15 +37,14 @@ public class DiscordMessageListener extends ListenerAdapter { - private final DiscordManager discord; private final CachedBotSettings config; private final TaskManager tasks; /** * Handles discord messages coming in. * */ - public DiscordMessageListener(DiscordManager discord, TaskManager tasks, CachedBotSettings config) { - this.discord = discord; + public DiscordMessageListener(TaskManager tasks, CachedBotSettings config) { + this.tasks = tasks; this.config = config; } @@ -72,8 +70,7 @@ public void onMessageReceived(@NotNull MessageReceivedEvent event) { } Role highestRole = getHighestFrom(member); - - String broadcast = config.getMessageFormat() + Bukkit.getServer().broadcastMessage(config.getMessageFormat() .replace("%discord_nickname%", member.getEffectiveName()) .replace("%discord_tag%", event.getAuthor().getAsTag()) .replace("%discord_username%", event.getAuthor().getName()) @@ -81,9 +78,7 @@ public void onMessageReceived(@NotNull MessageReceivedEvent event) { .replace("%discord_message%", event.getMessage().getContentStripped()) .replace("%discord_topRole%", highestRole == null ? "" : highestRole.getName()) .replace("%discord_channel%", event.getChannel().getName()) - .replace("%discord_guild%", event.getGuild().getName()); - - Bukkit.getServer().broadcastMessage(broadcast); + .replace("%discord_guild%", event.getGuild().getName())); }).execute(); } @@ -111,6 +106,5 @@ public Role getHighestFrom(Member member) { }).get(); } - } From 6cc962e828f1157d7be520ddb25d71d89706c6e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sun, 21 Mar 2021 11:56:34 +0000 Subject: [PATCH 50/59] WIP Configuration Updates, Split General into Proxy/Server --- .../src/main/resources/general-settings.conf | 18 +-------- .../api/config/CachedProxySettings.java | 4 ++ ...ettings.java => CachedServerSettings.java} | 34 ++++++++--------- .../api/config/ConfigurationLoader.java | 5 +-- .../common/api/config/ConfigurationUtil.java | 6 +-- .../src/main/resources/proxy-settings.conf | 37 +++++++++++++++++++ 6 files changed, 65 insertions(+), 39 deletions(-) create mode 100644 Common/src/main/java/io/paradaux/conch/common/api/config/CachedProxySettings.java rename Common/src/main/java/io/paradaux/conch/common/api/config/{CachedSettings.java => CachedServerSettings.java} (74%) create mode 100644 Velocity/src/main/resources/proxy-settings.conf diff --git a/Bukkit/src/main/resources/general-settings.conf b/Bukkit/src/main/resources/general-settings.conf index 16d4526..2373320 100644 --- a/Bukkit/src/main/resources/general-settings.conf +++ b/Bukkit/src/main/resources/general-settings.conf @@ -4,12 +4,12 @@ // If you do not wish for them to be sent to discord please set enabled to false. // We're open to adding more events, if you have any ideas please send them our way via a github issue. -configuration-version: "4.0.0" +configuration-version: "1.0.0" debug: false locale: en_US webhook-configuration: { - // See creating a webhook @ {TODO INSERT LINK} + // See creating a webhook @ https://docs.conch.rocks/discord-guides/creating-a-webhook // This is the webhook used by the events system. Conch Addons have the option of using their own webhook. webhook-url: "" @@ -21,18 +21,4 @@ placeholders: { server-name: "Server" include-hyphens-in-uuid: false // Whether or not to remove hypens from the UUID (Some APIs are faster with this enabled.) avatar-api: "https://visage.surgeplay.com/head/512/%playerUUID%" -} - -// Enabling this enables the below proy-webhook-configuration settings which allows you to map servers to webhooks. -// This option only exists for Proxies such as Bungeecord and Velocity. -// See {TODO NETWORK CONFIG DOCS} for more information on how to setup a multi-server -// / proxy setup. -// Example: -// "lobby": "https://discord.com/api/webhooks/794401363609649203/JY_EjgCw0dqkTckv8uB-kDo0wSovu9a8mFnGGXkyaGISvMTe3_zZKA" -// You can have as many entries as you like! -proxy-based-webhook-configuration: true - -proxy-webhook-configuration: { - "serverName": "webhook1", - "serverName2": "webhook2" } \ No newline at end of file diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/CachedProxySettings.java b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedProxySettings.java new file mode 100644 index 0000000..96d8164 --- /dev/null +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedProxySettings.java @@ -0,0 +1,4 @@ +package io.paradaux.conch.common.api.config; + +public class CachedProxySettings { +} diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/CachedSettings.java b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedServerSettings.java similarity index 74% rename from Common/src/main/java/io/paradaux/conch/common/api/config/CachedSettings.java rename to Common/src/main/java/io/paradaux/conch/common/api/config/CachedServerSettings.java index f2b1e26..a34775a 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/CachedSettings.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedServerSettings.java @@ -28,7 +28,7 @@ import javax.annotation.CheckReturnValue; import java.util.Map; -public class CachedSettings { +public class CachedServerSettings { String configurationVersion; boolean debug; @@ -41,76 +41,76 @@ public class CachedSettings { boolean proxyBasedWebhookConfiguration; Map proxyWebhookConfiguration; - private CachedSettings() { + private CachedServerSettings() { // Using The Builder is the requested method as various fields will differ between platforms. } - public static CachedSettings.Builder builder() { - return new CachedSettings.Builder(); + public static CachedServerSettings.Builder builder() { + return new CachedServerSettings.Builder(); } public static class Builder { - private final CachedSettings settings; + private final CachedServerSettings settings; private Builder() { - settings = new CachedSettings(); + settings = new CachedServerSettings(); // Please use the static method CachedSettings#builder to get an instance of this class. } - public CachedSettings.Builder setConfigurationVersion(String configurationVersion) { + public CachedServerSettings.Builder setConfigurationVersion(String configurationVersion) { settings.configurationVersion = configurationVersion; return this; } - public CachedSettings.Builder setDebug(boolean debug) { + public CachedServerSettings.Builder setDebug(boolean debug) { settings.debug = debug; return this; } - public CachedSettings.Builder setLocaleCode(String localeCode) { + public CachedServerSettings.Builder setLocaleCode(String localeCode) { settings.localeCode = localeCode; return this; } - public CachedSettings.Builder setWebhookUrl(String webhookUrl) { + public CachedServerSettings.Builder setWebhookUrl(String webhookUrl) { settings.webhookUrl = webhookUrl; return this; } - public CachedSettings.Builder setEventsEnabled(boolean eventsEnabled) { + public CachedServerSettings.Builder setEventsEnabled(boolean eventsEnabled) { settings.eventsEnabled = eventsEnabled; return this; } - public CachedSettings.Builder setServerName(String serverName) { + public CachedServerSettings.Builder setServerName(String serverName) { settings.serverName = serverName; return this; } - public CachedSettings.Builder setAvatarApiHyphen(boolean avatarApiHyphen) { + public CachedServerSettings.Builder setAvatarApiHyphen(boolean avatarApiHyphen) { settings.avatarApiHyphen = avatarApiHyphen; return this; } - public CachedSettings.Builder setAvatarApi(String avatarApi) { + public CachedServerSettings.Builder setAvatarApi(String avatarApi) { settings.avatarApi = avatarApi; return this; } - public CachedSettings.Builder setProxyBasedWebhookConfiguration(boolean proxyBasedWebhookConfiguration) { + public CachedServerSettings.Builder setProxyBasedWebhookConfiguration(boolean proxyBasedWebhookConfiguration) { settings.proxyBasedWebhookConfiguration = proxyBasedWebhookConfiguration; return this; } - public CachedSettings.Builder setProxyWebhookConfiguration(Map proxyWebhookConfiguration) { + public CachedServerSettings.Builder setProxyWebhookConfiguration(Map proxyWebhookConfiguration) { settings.proxyWebhookConfiguration = proxyWebhookConfiguration; return this; } @CheckReturnValue @NotNull - public CachedSettings build() { + public CachedServerSettings build() { return settings; } diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java index 0aa94ed..62e2d45 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java @@ -36,7 +36,6 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.HashMap; -import java.util.Map; public class ConfigurationLoader { @@ -82,8 +81,8 @@ public ConfigurationLoader(String configurationDirectory) { @CheckReturnValue @NotNull - public CachedSettings loadGeneralSettings() throws ConfigurateException { - CachedSettings.Builder builder = CachedSettings.builder(); + public CachedServerSettings loadGeneralSettings() throws ConfigurateException { + CachedServerSettings.Builder builder = CachedServerSettings.builder(); ConfigurationNode root = generalSettingsLoader.load(); builder.setConfigurationVersion(root.node("configuration-version").getString()) diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationUtil.java b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationUtil.java index 7b91bb7..d13fafb 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationUtil.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationUtil.java @@ -34,7 +34,7 @@ public class ConfigurationUtil { private static boolean debug; - private static CachedSettings generalSettings = null; + private static CachedServerSettings generalSettings = null; private static CachedBotSettings botSettings = null; private static CachedEventSettings eventSettings = null; @@ -44,7 +44,7 @@ private ConfigurationUtil() { @CheckReturnValue @Nullable - public static CachedSettings getGeneralSettings() { + public static CachedServerSettings getGeneralSettings() { return generalSettings; } @@ -73,7 +73,7 @@ public static boolean isDebug() { * @param botSettings bot-settings.conf cached values. * @param eventSettings event-settings.conf cached values. * */ - public static void loadConfigurationValues(CachedSettings generalSettings, + public static void loadConfigurationValues(CachedServerSettings generalSettings, CachedEventSettings eventSettings, CachedBotSettings botSettings) { ConfigurationUtil.generalSettings = generalSettings; diff --git a/Velocity/src/main/resources/proxy-settings.conf b/Velocity/src/main/resources/proxy-settings.conf new file mode 100644 index 0000000..faf1159 --- /dev/null +++ b/Velocity/src/main/resources/proxy-settings.conf @@ -0,0 +1,37 @@ +# Conch 1.0 by Rían Errity Licensed under GPLv3 | General Settings. + +// This is where you configure the webhook and some general plugin settings. +// If you do not wish for them to be sent to discord please set enabled to false. +// We're open to adding more events, if you have any ideas please send them our way via a github issue. + +configuration-version: "1.0.0" +debug: false +locale: en_US + +webhook-configuration: { + // See creating a webhook: https://docs.conch.rocks/discord-guides/creating-a-webhook + // This is the webhook used by the events system. Conch Addons have the option of using their own webhook. + webhook-url: "" + + // If you only want to use Conch's api functionality disable the event listeners here. + events: true +} + +placeholders: { + network-name: "Network" + include-hyphens-in-uuid: false // Whether or not to remove hypens from the UUID (Some APIs are faster with this enabled.) + avatar-api: "https://visage.surgeplay.com/head/512/%playerUUID%" +} + +// Enabling this enables the below proxy-webhook-configuration settings which allows you to map servers to webhooks. +// See Proxy Configuration: https://docs.conch.rocks/configuration/proxy-configuration for more information on how to setup a multi-server mapping. +// You can have as many entries as you like! + +// By default all messages from all servers go to the one webhook, defined above. If a server does not exist in the mapping, it will fall back +// to the webhook specified above. +per-server-webhook-configuration: true + +proxy-webhook-configuration: { + "serverName": "webhook1", + "serverName2": "webhook2" +} \ No newline at end of file From f64ee0a8146a7d12e88f6d6aea53a9b951fa2e1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sun, 21 Mar 2021 13:35:42 +0000 Subject: [PATCH 51/59] Encapsulation! --- .../common/api/config/CachedBotSettings.java | 6 +- .../api/config/CachedEventSettings.java | 18 +-- .../api/config/CachedProxySettings.java | 132 ++++++++++++++++++ .../api/config/CachedServerSettings.java | 20 +-- 4 files changed, 154 insertions(+), 22 deletions(-) diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/CachedBotSettings.java b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedBotSettings.java index 6246ea6..a88c02c 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/CachedBotSettings.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedBotSettings.java @@ -39,9 +39,9 @@ public class CachedBotSettings { private String commandPrefix; private boolean sendBotMessages; private List monitoredChannels; - boolean proxyBasedMonitoring; - Map proxyMonitoredChannels; - String messageFormat; + private boolean proxyBasedMonitoring; + private Map proxyMonitoredChannels; + private String messageFormat; private CachedBotSettings() { // Using The Builder is the requested method as various fields will differ between platforms. diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/CachedEventSettings.java b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedEventSettings.java index 6db6d4a..5705ba5 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/CachedEventSettings.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedEventSettings.java @@ -32,15 +32,15 @@ public class CachedEventSettings { // Fields in the order they're defined in event-settings.conf - EventConfiguration onChatMessage; - EventConfiguration onPlayerJoin; - EventConfiguration onPlayerLeave; - EventConfiguration onPlayerDeath; - EventConfiguration onPlayerAchievementCompleted; - EventConfiguration onPlayerKick; - EventConfiguration onPlayerRespawn; - EventConfiguration onServerStartup; - EventConfiguration onGracefulShutdown; + private EventConfiguration onChatMessage; + private EventConfiguration onPlayerJoin; + private EventConfiguration onPlayerLeave; + private EventConfiguration onPlayerDeath; + private EventConfiguration onPlayerAchievementCompleted; + private EventConfiguration onPlayerKick; + private EventConfiguration onPlayerRespawn; + private EventConfiguration onServerStartup; + private EventConfiguration onGracefulShutdown; private CachedEventSettings() { // Using The Builder is the requested method as various fields will differ between platforms. diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/CachedProxySettings.java b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedProxySettings.java index 96d8164..3cfe36b 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/CachedProxySettings.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedProxySettings.java @@ -1,4 +1,136 @@ package io.paradaux.conch.common.api.config; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.CheckReturnValue; +import java.util.Map; + public class CachedProxySettings { + + private String configurationVersion; + private boolean debug; + private String localeCode; + private String webhookUrl; + private boolean eventsEnabled; + private String serverName; + private boolean avatarApiHyphen; + private String avatarApi; + private boolean proxyBasedWebhookConfiguration; + private Map proxyWebhookConfiguration; + + private CachedProxySettings() { + // Using The Builder is the requested method as various fields will differ between platforms. + } + + public static CachedProxySettings.Builder builder() { + return new CachedProxySettings.Builder(); + } + + public static class Builder { + + private final CachedProxySettings settings; + + private Builder() { + settings = new CachedProxySettings(); + // Please use the static method CachedSettings#builder to get an instance of this class. + } + + public CachedProxySettings.Builder setConfigurationVersion(String configurationVersion) { + settings.configurationVersion = configurationVersion; + return this; + } + + public CachedProxySettings.Builder setDebug(boolean debug) { + settings.debug = debug; + return this; + } + + public CachedProxySettings.Builder setLocaleCode(String localeCode) { + settings.localeCode = localeCode; + return this; + } + + public CachedProxySettings.Builder setWebhookUrl(String webhookUrl) { + settings.webhookUrl = webhookUrl; + return this; + } + + public CachedProxySettings.Builder setEventsEnabled(boolean eventsEnabled) { + settings.eventsEnabled = eventsEnabled; + return this; + } + + public CachedProxySettings.Builder setServerName(String serverName) { + settings.serverName = serverName; + return this; + } + + public CachedProxySettings.Builder setAvatarApiHyphen(boolean avatarApiHyphen) { + settings.avatarApiHyphen = avatarApiHyphen; + return this; + } + + public CachedProxySettings.Builder setAvatarApi(String avatarApi) { + settings.avatarApi = avatarApi; + return this; + } + + public CachedProxySettings.Builder setProxyBasedWebhookConfiguration(boolean proxyBasedWebhookConfiguration) { + settings.proxyBasedWebhookConfiguration = proxyBasedWebhookConfiguration; + return this; + } + + public CachedProxySettings.Builder setProxyWebhookConfiguration(Map proxyWebhookConfiguration) { + settings.proxyWebhookConfiguration = proxyWebhookConfiguration; + return this; + } + + @CheckReturnValue + @NotNull + public CachedProxySettings build() { + return settings; + } + + } + + public String getConfigurationVersion() { + return configurationVersion; + } + + public boolean isDebug() { + return debug; + } + + public String getLocaleCode() { + return localeCode; + } + + public String getWebhookUrl() { + return webhookUrl; + } + + public boolean isEventsEnabled() { + return eventsEnabled; + } + + public String getServerName() { + return serverName; + } + + public boolean isAvatarApiHyphen() { + return avatarApiHyphen; + } + + public String getAvatarApi() { + return avatarApi; + } + + public boolean isProxyBasedWebhookConfiguration() { + return proxyBasedWebhookConfiguration; + } + + public Map getProxyWebhookConfiguration() { + return proxyWebhookConfiguration; + } + } diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/CachedServerSettings.java b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedServerSettings.java index a34775a..97d775e 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/CachedServerSettings.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedServerSettings.java @@ -30,16 +30,16 @@ public class CachedServerSettings { - String configurationVersion; - boolean debug; - String localeCode; - String webhookUrl; - boolean eventsEnabled; - String serverName; - boolean avatarApiHyphen; - String avatarApi; - boolean proxyBasedWebhookConfiguration; - Map proxyWebhookConfiguration; + private String configurationVersion; + private boolean debug; + private String localeCode; + private String webhookUrl; + private boolean eventsEnabled; + private String serverName; + private boolean avatarApiHyphen; + private String avatarApi; + private boolean proxyBasedWebhookConfiguration; + private Map proxyWebhookConfiguration; private CachedServerSettings() { // Using The Builder is the requested method as various fields will differ between platforms. From b2f93eaff5ec004666185ee955901062ee7dd139 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sun, 21 Mar 2021 14:18:03 +0000 Subject: [PATCH 52/59] Modified server setup message (centered) --- Common/src/main/resources/Conch.properties | 4 ++-- Common/src/main/resources/Conch_en_US.properties | 4 ++-- Common/src/main/resources/Conch_fr_FR.properties | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Common/src/main/resources/Conch.properties b/Common/src/main/resources/Conch.properties index a27a2ba..6f4c448 100644 --- a/Common/src/main/resources/Conch.properties +++ b/Common/src/main/resources/Conch.properties @@ -22,14 +22,14 @@ # configuration.invalid-event=Conch » Configuration Loader has tried to load an invalid or malconfigured event. startup.loading-message=\n+ ------------------------------------ +\ -\n| Running Conch v4.0.0 |\ +\n| Running Conch v1.0.0 |\ \n| © Rían Errity (Paradaux) |\ \n| https://paradaux.io |\ \n+ ------------------------------------ +\ \n\ \nLICENSED UNDER GNU General Public License v3.0 shutdown.shutdown-message=\n+ ------------------------------------ +\ -\n| Running Conch v4.0.0 |\ +\n| Running Conch v1.0.0 |\ \n| © Rían Errity (Paradaux) |\ \n| https://paradaux.io |\ \n+ ------------------------------------ +\ diff --git a/Common/src/main/resources/Conch_en_US.properties b/Common/src/main/resources/Conch_en_US.properties index dcaa8e6..645beb1 100644 --- a/Common/src/main/resources/Conch_en_US.properties +++ b/Common/src/main/resources/Conch_en_US.properties @@ -22,14 +22,14 @@ # configuration.invalid-event=Conch » Configuration Loader has tried to load an invalid or malconfigured event. startup.loading-message=\n+ ------------------------------------ +\ -\n| Running Conch v4.0.0 |\ +\n| Running Conch v1.0.0 |\ \n| © Rían Errity (Paradaux) |\ \n| https://paradaux.io |\ \n+ ------------------------------------ +\ \n\ \nLICENSED UNDER GNU General Public License v3.0 shutdown.shutdown-message=\n+ ------------------------------------ +\ -\n| Running Conch v4.0.0 |\ +\n| Running Conch v1.0.0 |\ \n| © Rían Errity (Paradaux) |\ \n| https://paradaux.io |\ \n+ ------------------------------------ +\ diff --git a/Common/src/main/resources/Conch_fr_FR.properties b/Common/src/main/resources/Conch_fr_FR.properties index fe1b6de..b7a45b1 100644 --- a/Common/src/main/resources/Conch_fr_FR.properties +++ b/Common/src/main/resources/Conch_fr_FR.properties @@ -21,14 +21,14 @@ # configuration.invalid-event=TODO startup.loading-message=\n+ ------------------------------------ +\ -\n| En utilisant Conch v4.0.0 |\ +\n| En utilisant Conch v4.0.0 |\ \n| © Rían Errity (Paradaux) |\ \n| https://paradaux.io |\ \n+ ------------------------------------ +\ \n\ \nSOUS LA LICENSE DE GNU General Public License v3.0 shutdown.shutdown-message=\n+ ------------------------------------ +\ -\n| Déchargé Conch v4.0.0 |\ +\n| Déchargé Conch v4.0.0 |\ \n| © Rían Errity (Paradaux) |\ \n| https://paradaux.io |\ \n+ ------------------------------------ +\ From 608204650448795e1640282c6bbf092d2b55bd19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sun, 21 Mar 2021 20:52:45 +0000 Subject: [PATCH 53/59] Changing local deployment setup, implemented velocity --- dev-move-bukkit.bat | 2 +- dev-move-velocity.bat | 0 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 dev-move-velocity.bat diff --git a/dev-move-bukkit.bat b/dev-move-bukkit.bat index 07187a3..0808f98 100644 --- a/dev-move-bukkit.bat +++ b/dev-move-bukkit.bat @@ -1,3 +1,3 @@ rm plugins/conch-bukkit-1.0.0.jar -mv ../bukkit/target/conch-bukkit-1.0.0.jar plugins/ +mv ../../Bukkit/target/conch-bukkit-1.0.0.jar plugins/ java -jar server.jar -nogui \ No newline at end of file diff --git a/dev-move-velocity.bat b/dev-move-velocity.bat new file mode 100644 index 0000000..e69de29 From 3b1284240b80e66c56dfb0faa0f8916de68d41a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sun, 21 Mar 2021 20:53:04 +0000 Subject: [PATCH 54/59] Support for proxy configuration, modified startup --- .../common/api/ConfigurationManager.java | 8 +++- .../api/config/CachedProxySettings.java | 10 ++--- .../api/config/ConfigurationLoader.java | 39 ++++++++++++++++++- .../common/api/config/ConfigurationUtil.java | 26 ++++++++++++- Common/src/main/resources/Conch.properties | 24 ++++++------ .../src/main/resources/Conch_en_US.properties | 24 ++++++------ .../src/main/resources/Conch_fr_FR.properties | 24 ++++++------ 7 files changed, 110 insertions(+), 45 deletions(-) diff --git a/Common/src/main/java/io/paradaux/conch/common/api/ConfigurationManager.java b/Common/src/main/java/io/paradaux/conch/common/api/ConfigurationManager.java index e6c8c6e..2d8542a 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/ConfigurationManager.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/ConfigurationManager.java @@ -33,12 +33,14 @@ public abstract class ConfigurationManager { private ConfigurationLoader configurationLoader; + private Path configurationDirectory; /** * Constructor which allows the use of String paths rather than the direct Paths themselves. Internally calls the correct constructor. * @see ConfigurationManager(Path, Path, Path, Path) * */ public ConfigurationManager(Path configurationDirectory) { + this.configurationDirectory = configurationDirectory; configurationLoader = new ConfigurationLoader(configurationDirectory); } @@ -48,7 +50,7 @@ public ConfigurationManager(Path configurationDirectory) { * @implSpec How we have to get a JAR Resource varies by platform, getResourceAsStream should be * a last resort. * */ - public abstract void deployResource(); + public abstract void deployResources(); /** * Load the configuration file's values into the Singleton Holders in {@link ConfigurationUtil} @@ -98,4 +100,8 @@ public static void exportResource(String resourceName, String outputPath) throws throw new NoSuchResourceException("Failed to deploy resource : " + exception.getMessage()); } } + + public Path getConfigurationDirectory() { + return configurationDirectory; + } } diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/CachedProxySettings.java b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedProxySettings.java index 3cfe36b..9a0631d 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/CachedProxySettings.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/CachedProxySettings.java @@ -12,7 +12,7 @@ public class CachedProxySettings { private String localeCode; private String webhookUrl; private boolean eventsEnabled; - private String serverName; + private String networkName; private boolean avatarApiHyphen; private String avatarApi; private boolean proxyBasedWebhookConfiguration; @@ -60,8 +60,8 @@ public CachedProxySettings.Builder setEventsEnabled(boolean eventsEnabled) { return this; } - public CachedProxySettings.Builder setServerName(String serverName) { - settings.serverName = serverName; + public CachedProxySettings.Builder setNetworkName(String networkName) { + settings.networkName = networkName; return this; } @@ -113,8 +113,8 @@ public boolean isEventsEnabled() { return eventsEnabled; } - public String getServerName() { - return serverName; + public String getNetworkName() { + return networkName; } public boolean isAvatarApiHyphen() { diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java index 62e2d45..7ac83a2 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationLoader.java @@ -46,16 +46,19 @@ public class ConfigurationLoader { public static final String SETTINGS_FILE_NAME = "general-settings.conf"; public static final String EVENT_SETTINGS_FILE_NAME = "event-settings.conf"; public static final String BOT_SETTINGS_FILE_NAME = "bot-settings.conf"; + public static final String PROXY_SETTINGS_FILE_NAME = "proxy-settings.conf"; private static final TypeToken> stringMap = new TypeToken>() {}; private final Path generalSettingsPath; private final Path eventSettingsPath; private final Path botSettingsPath; + private final Path proxySettingsPath; private final HoconConfigurationLoader generalSettingsLoader; private final HoconConfigurationLoader eventSettingsLoader; private final HoconConfigurationLoader botSettingsLoader; + private final HoconConfigurationLoader proxySettingsLoader; public ConfigurationLoader(Path configurationDirectory) { this(configurationDirectory.toString()); @@ -65,6 +68,7 @@ public ConfigurationLoader(String configurationDirectory) { generalSettingsPath = Paths.get(configurationDirectory, SETTINGS_FILE_NAME); eventSettingsPath = Paths.get(configurationDirectory, EVENT_SETTINGS_FILE_NAME); botSettingsPath = Paths.get(configurationDirectory, BOT_SETTINGS_FILE_NAME); + proxySettingsPath = Paths.get(configurationDirectory, PROXY_SETTINGS_FILE_NAME); generalSettingsLoader = HoconConfigurationLoader.builder() .path(generalSettingsPath) @@ -77,6 +81,10 @@ public ConfigurationLoader(String configurationDirectory) { botSettingsLoader = HoconConfigurationLoader.builder() .path(botSettingsPath) .build(); + + proxySettingsLoader = HoconConfigurationLoader.builder() + .path(proxySettingsPath) + .build(); } @CheckReturnValue @@ -126,10 +134,9 @@ public CachedEventSettings loadEventSettings() throws ConfigurateException { return builder.build(); } - // TODO finish @CheckReturnValue @NotNull - public CachedBotSettings loadBotSettings() throws ConfigurateException { + public CachedBotSettings loadBotSettings() throws ConfigurateException { ConfigurationNode root = botSettingsLoader.load(); return CachedBotSettings.builder() @@ -145,6 +152,24 @@ public CachedBotSettings loadBotSettings() throws ConfigurateException { .build(); } + public CachedProxySettings loadProxySettings() throws ConfigurateException { + ConfigurationNode root = proxySettingsLoader.load(); + + return CachedProxySettings.builder() + .setConfigurationVersion(root.node("configuration-version").getString()) + .setDebug(root.node("debug").getBoolean()) + .setLocaleCode(root.node("locale").getString()) + .setWebhookUrl(root.node("webhook-configuration").node("webhook-url").getString()) + .setEventsEnabled(root.node("webhook-configuration").node("events").getBoolean()) + .setNetworkName(root.node("placeholders").node("network-name").getString()) + .setAvatarApiHyphen(root.node("placeholders").node("include-hyphens-in-uuid").getBoolean()) + .setAvatarApi(root.node("placeholders").node("avatar-api").getString()) + .setProxyBasedWebhookConfiguration(root.node("per-server-webhook-configuration").getBoolean()) + .setProxyWebhookConfiguration(root.node("proxy-webhook-configuration").get(stringMap)) + .build(); + } + + @CheckReturnValue public boolean doesEventSettingsExist() { return Files.exists(eventSettingsPath); @@ -160,6 +185,11 @@ public boolean doesGeneralSettingsExist() { return Files.exists(eventSettingsPath); } + @CheckReturnValue + public boolean doesProxySettingsExist() { + return Files.exists(proxySettingsPath); + } + @CheckReturnValue public Path getGeneralSettingsPath() { return generalSettingsPath; @@ -174,4 +204,9 @@ public Path getEventSettingsPath() { public Path getBotSettingsPath() { return botSettingsPath; } + + @CheckReturnValue + public Path getProxySettingsPath() { + return proxySettingsPath; + } } diff --git a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationUtil.java b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationUtil.java index d13fafb..1296723 100644 --- a/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationUtil.java +++ b/Common/src/main/java/io/paradaux/conch/common/api/config/ConfigurationUtil.java @@ -37,6 +37,7 @@ public class ConfigurationUtil { private static CachedServerSettings generalSettings = null; private static CachedBotSettings botSettings = null; private static CachedEventSettings eventSettings = null; + private static CachedProxySettings proxySettings = null; private ConfigurationUtil() { // No instantiation of utility classes, dang it! @@ -60,6 +61,12 @@ public static CachedEventSettings getEventSettings() { return eventSettings; } + @CheckReturnValue + @Nullable + public static CachedProxySettings getProxySettings() { + return proxySettings; + } + @CheckReturnValue public static boolean isDebug() { return debug; @@ -69,7 +76,7 @@ public static boolean isDebug() { *

(Re)Sets the configuration file singletons.

* *

In the event of a reload we want to be able to re-set the instances.

> - * @param generalSettings settings.conf cached values. + * @param generalSettings server-settings.conf cached values. * @param botSettings bot-settings.conf cached values. * @param eventSettings event-settings.conf cached values. * */ @@ -82,4 +89,21 @@ public static void loadConfigurationValues(CachedServerSettings generalSettings, ConfigurationUtil.debug = generalSettings.isDebug(); } + /** + *

(Re)Sets the configuration file singletons.

+ * + *

In the event of a reload we want to be able to re-set the instances.

> + * @param proxySettings proxy-settings.conf cached values. + * @param botSettings bot-settings.conf cached values. + * @param eventSettings event-settings.conf cached values. + * */ + public static void loadConfigurationValues(CachedProxySettings proxySettings, + CachedEventSettings eventSettings, + CachedBotSettings botSettings) { + ConfigurationUtil.proxySettings = proxySettings; + ConfigurationUtil.botSettings = botSettings; + ConfigurationUtil.eventSettings = eventSettings; + ConfigurationUtil.debug = proxySettings.isDebug(); + } + } diff --git a/Common/src/main/resources/Conch.properties b/Common/src/main/resources/Conch.properties index 6f4c448..1fcb399 100644 --- a/Common/src/main/resources/Conch.properties +++ b/Common/src/main/resources/Conch.properties @@ -21,20 +21,20 @@ # See LICENSE.md for more details. # configuration.invalid-event=Conch » Configuration Loader has tried to load an invalid or malconfigured event. -startup.loading-message=\n+ ------------------------------------ +\ -\n| Running Conch v1.0.0 |\ -\n| © Rían Errity (Paradaux) |\ -\n| https://paradaux.io |\ -\n+ ------------------------------------ +\ +startup.loading-message=\n + ------------------------------------ +\ +\n | Running Conch v1.0.0 |\ +\n | © Rían Errity (Paradaux) |\ +\n | https://paradaux.io |\ +\n + ------------------------------------ +\ \n\ -\nLICENSED UNDER GNU General Public License v3.0 -shutdown.shutdown-message=\n+ ------------------------------------ +\ -\n| Running Conch v1.0.0 |\ -\n| © Rían Errity (Paradaux) |\ -\n| https://paradaux.io |\ -\n+ ------------------------------------ +\ +\n LICENSED UNDER GNU General Public License v3.0 +shutdown.shutdown-message=\n + ------------------------------------ +\ +\n | Running Conch v1.0.0 |\ +\n | © Rían Errity (Paradaux) |\ +\n | https://paradaux.io |\ +\n + ------------------------------------ +\ \n\ -\nLICENSED UNDER GNU General Public License v3.0 +\n LICENSED UNDER GNU General Public License v3.0 configuration.old-config-version=Conch » There was an error creating the plugin directory. configuration.config-doesnt-exist=Conch » Your configuration file doesn't seem to exist, is it invalid? a new version has been deployed. If this is your first run, this isn't cause for concern. configuration.backup-failure=Conch » An issue occurred whilst backing up your configuration file. diff --git a/Common/src/main/resources/Conch_en_US.properties b/Common/src/main/resources/Conch_en_US.properties index 645beb1..c87c791 100644 --- a/Common/src/main/resources/Conch_en_US.properties +++ b/Common/src/main/resources/Conch_en_US.properties @@ -21,20 +21,20 @@ # See LICENSE.md for more details. # configuration.invalid-event=Conch » Configuration Loader has tried to load an invalid or malconfigured event. -startup.loading-message=\n+ ------------------------------------ +\ -\n| Running Conch v1.0.0 |\ -\n| © Rían Errity (Paradaux) |\ -\n| https://paradaux.io |\ -\n+ ------------------------------------ +\ +startup.loading-message=\n + ------------------------------------ +\ +\n | Running Conch v1.0.0 |\ +\n | © Rían Errity (Paradaux) |\ +\n | https://paradaux.io |\ +\n + ------------------------------------ +\ \n\ -\nLICENSED UNDER GNU General Public License v3.0 -shutdown.shutdown-message=\n+ ------------------------------------ +\ -\n| Running Conch v1.0.0 |\ -\n| © Rían Errity (Paradaux) |\ -\n| https://paradaux.io |\ -\n+ ------------------------------------ +\ +\n LICENSED UNDER GNU General Public License v3.0 +shutdown.shutdown-message=\n + ------------------------------------ +\ +\n | Running Conch v1.0.0 |\ +\n | © Rían Errity (Paradaux) |\ +\n | https://paradaux.io |\ +\n + ------------------------------------ +\ \n\ -\nLICENSED UNDER GNU General Public License v3.0 +\n LICENSED UNDER GNU General Public License v3.0 configuration.old-config-version=Conch » There was an error creating the plugin directory. configuration.config-doesnt-exist=Conch » Your configuration file doesn't seem to exist, is it invalid? a new version has been deployed. If this is your first run, this isn't cause for concern. configuration.backup-failure=Conch » An issue occurred whilst backing up your configuration file. diff --git a/Common/src/main/resources/Conch_fr_FR.properties b/Common/src/main/resources/Conch_fr_FR.properties index b7a45b1..4849f45 100644 --- a/Common/src/main/resources/Conch_fr_FR.properties +++ b/Common/src/main/resources/Conch_fr_FR.properties @@ -20,20 +20,20 @@ # See LICENSE.md for more details. # configuration.invalid-event=TODO -startup.loading-message=\n+ ------------------------------------ +\ -\n| En utilisant Conch v4.0.0 |\ -\n| © Rían Errity (Paradaux) |\ -\n| https://paradaux.io |\ -\n+ ------------------------------------ +\ +startup.loading-message=\n + ------------------------------------ +\ +\n | En utilisant Conch v4.0.0 |\ +\n | © Rían Errity (Paradaux) |\ +\n | https://paradaux.io |\ +\n + ------------------------------------ +\ \n\ -\nSOUS LA LICENSE DE GNU General Public License v3.0 -shutdown.shutdown-message=\n+ ------------------------------------ +\ -\n| Déchargé Conch v4.0.0 |\ -\n| © Rían Errity (Paradaux) |\ -\n| https://paradaux.io |\ -\n+ ------------------------------------ +\ +\n SOUS LA LICENSE DE GNU General Public License v3.0 +shutdown.shutdown-message=\n + ------------------------------------ +\ +\n | Déchargé Conch v4.0.0 |\ +\n | © Rían Errity (Paradaux) |\ +\n | https://paradaux.io |\ +\n + ------------------------------------ +\ \n\ -\nSOUS LA LICENSE DE GNU General Public License v3.0 +\n SOUS LA LICENSE DE GNU General Public License v3.0 configuration.old-config-version=TODO configuration.config-doesnt-exist=TODO configuration.backup-failure=TODO From d46be51df8e6ee5cea1489daa31fdc563e0814f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sun, 21 Mar 2021 20:53:27 +0000 Subject: [PATCH 55/59] Velocity configuration support --- .../api/BukkitConfigurationManager.java | 33 ++-- .../conch/velocity/HiberniaDiscord.java | 81 ---------- .../conch/velocity/VelocityConch.java | 143 ++++++++++++++++++ .../api/VelocityConfigurationManager.java | 81 ++++++++++ Velocity/src/main/resources/bot-settings.conf | 57 +++++++ .../src/main/resources/event-settings.conf | 71 +++++++++ dev-move-velocity.bat | 3 + 7 files changed, 368 insertions(+), 101 deletions(-) delete mode 100644 Velocity/src/main/java/io/paradaux/conch/velocity/HiberniaDiscord.java create mode 100644 Velocity/src/main/java/io/paradaux/conch/velocity/VelocityConch.java create mode 100644 Velocity/src/main/java/io/paradaux/conch/velocity/api/VelocityConfigurationManager.java create mode 100644 Velocity/src/main/resources/bot-settings.conf create mode 100644 Velocity/src/main/resources/event-settings.conf diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java index 4379bd4..52e0062 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/api/BukkitConfigurationManager.java @@ -25,44 +25,37 @@ import io.paradaux.conch.common.api.ConfigurationManager; import io.paradaux.conch.common.api.I18NLogger; -import io.paradaux.conch.common.api.config.*; +import io.paradaux.conch.common.api.config.CachedBotSettings; +import io.paradaux.conch.common.api.config.CachedEventSettings; +import io.paradaux.conch.common.api.config.CachedServerSettings; +import io.paradaux.conch.common.api.config.ConfigurationLoader; +import io.paradaux.conch.common.api.config.ConfigurationUtil; import io.paradaux.conch.common.api.exceptions.NoSuchResourceException; -import org.bukkit.plugin.Plugin; import org.spongepowered.configurate.ConfigurateException; -import java.io.File; import java.nio.file.Path; public class BukkitConfigurationManager extends ConfigurationManager { - CachedSettings generalSettings; - CachedEventSettings eventSettings; - CachedBotSettings botSettings; + private CachedServerSettings generalSettings; + private CachedEventSettings eventSettings; + private CachedBotSettings botSettings; - ConfigurationLoader loader = getConfigurationLoader(); - Plugin plugin; + private ConfigurationLoader loader = getConfigurationLoader(); + private Path configurationDirectory; /** * BukkitConfigurationLoader uses Sponge's Configurate to load the HOCON values in the three settings files. * * @param configurationDirectory The directory in which the configuration files are being saved to. */ - public BukkitConfigurationManager(Path configurationDirectory, Plugin plugin) { + public BukkitConfigurationManager(Path configurationDirectory) { super(configurationDirectory); - this.plugin = plugin; + this.configurationDirectory = configurationDirectory; } @Override - public void deployResource() { - File configurationDir = plugin.getDataFolder(); - if (!plugin.getDataFolder().exists()) { - boolean result = configurationDir.mkdir(); - - if (!result) { - I18NLogger.error("configuration.make-plugin-directory-failure"); - } - } - + public void deployResources() { try { if (!loader.doesBotSettingsExist()) { exportResource(ConfigurationLoader.BOT_SETTINGS_FILE_NAME, loader.getBotSettingsPath().toString()); diff --git a/Velocity/src/main/java/io/paradaux/conch/velocity/HiberniaDiscord.java b/Velocity/src/main/java/io/paradaux/conch/velocity/HiberniaDiscord.java deleted file mode 100644 index 1deb00e..0000000 --- a/Velocity/src/main/java/io/paradaux/conch/velocity/HiberniaDiscord.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (c) 2021, Rían Errity. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 3 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 3 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 3 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Rían Errity or visit https://paradaux.io - * if you need additional information or have any questions. - * See LICENSE.md for more details. - */ - -package io.paradaux.conch.velocity; - -import com.google.inject.Inject; -import com.velocitypowered.api.event.Subscribe; -import com.velocitypowered.api.event.proxy.ProxyInitializeEvent; -import com.velocitypowered.api.plugin.Plugin; -import com.velocitypowered.api.plugin.annotation.DataDirectory; -import com.velocitypowered.api.proxy.ProxyServer; -import io.paradaux.conch.velocity.listeners.PlayerChatEventListener; -import org.slf4j.Logger; - -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.List; - -@Plugin(id = "hiberniadiscord", name = "HiberniaDiscord", version = "4.0.0", - url = "https://hiberniadiscord.paradaux.io", description = "Discord to chat Bridge", authors = {"Paradaux"}) -public class HiberniaDiscord { - - - private final ProxyServer server; - private final Logger logger; - private final Path dataDirectory; - - List monitoredChannels = new ArrayList<>(); - - String webhookUrl = "https://discord.com/api/webhooks/763065395833602048/xUUX016wrPYPGWRJyfsGaDtwtxHJFrbWHrEfj4XMa5PvFT0jSc-kgcA9qF3ZP9cpH5Mv"; - - String iconUrl = "https://cdn.paradaux.io/static/plugin-branding/hiberniadiscord/hibernia-discord.png"; - String token = ""; - String messageFormat = ""; - - @Inject - public HiberniaDiscord(ProxyServer server, Logger logger, @DataDirectory Path dataDirectory) { - this.server = server; - this.logger = logger; - this.dataDirectory = dataDirectory; - } - - @Subscribe - public void onProxyInitialization(ProxyInitializeEvent event) { - -// DiscordManager.initialise(webhookUrl, true, logger); -// DiscordManager.sendDiscordMessage("Test", iconUrl, "hello world"); - - registerEvents(); - } - - public void registerEvents() { - String avatarApiUrl = "https://mc-heads.net/combo/%playeruuid%"; - String userNameFormat = "%playername%"; - String serverName = "Test Server"; - String messagePrefix = null; - - server.getEventManager().register(this, new PlayerChatEventListener(avatarApiUrl, userNameFormat, serverName, messagePrefix, - logger, true)); - } -} diff --git a/Velocity/src/main/java/io/paradaux/conch/velocity/VelocityConch.java b/Velocity/src/main/java/io/paradaux/conch/velocity/VelocityConch.java new file mode 100644 index 0000000..ac70c10 --- /dev/null +++ b/Velocity/src/main/java/io/paradaux/conch/velocity/VelocityConch.java @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2021, Rían Errity. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 3 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 3 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Rían Errity or visit https://paradaux.io + * if you need additional information or have any questions. + * See LICENSE.md for more details. + */ + +package io.paradaux.conch.velocity; + +import com.google.inject.Inject; +import com.velocitypowered.api.event.Subscribe; +import com.velocitypowered.api.event.proxy.ProxyInitializeEvent; +import com.velocitypowered.api.plugin.Plugin; +import com.velocitypowered.api.plugin.annotation.DataDirectory; +import com.velocitypowered.api.proxy.ProxyServer; +import io.paradaux.conch.common.api.DiscordManager; +import io.paradaux.conch.common.api.I18NLogger; +import io.paradaux.conch.common.api.I18NManager; +import io.paradaux.conch.common.api.config.CachedBotSettings; +import io.paradaux.conch.common.api.config.CachedProxySettings; +import io.paradaux.conch.common.api.config.CachedServerSettings; +import io.paradaux.conch.common.api.config.ConfigurationUtil; +import io.paradaux.conch.common.bot.DiscordBot; +import io.paradaux.conch.velocity.api.VelocityConfigurationManager; +import io.paradaux.conch.velocity.listeners.PlayerChatEventListener; +import io.paradaux.conch.velocity.managers.TaskManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.security.auth.login.LoginException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.ResourceBundle; + +@Plugin(id = "conch", name = "Conch", version = "1.0.0", + url = "https://conch.rocks", description = "Discord to chat Bridge", authors = {"Paradaux"}) +public class VelocityConch { + + private final ProxyServer server; + private final Logger logger; + private final Path pluginData; + private final TaskManager tasks; + private DiscordManager discord; + private DiscordBot discordBot; + + @Inject + public VelocityConch(ProxyServer server, Logger logger, @DataDirectory Path pluginData) { + this.server = server; + this.logger = logger; + this.pluginData = pluginData; + + logger.info("Conch: Initialising locale."); + loadLocale(logger); + + I18NLogger.rawInfo("Initialising Scheduler"); + this.tasks = new TaskManager(this, server.getScheduler()); + + } + + @Subscribe + public void onProxyInitialization(ProxyInitializeEvent event) { + + I18NLogger.rawInfo("Loading Configuration"); + loadConfiguration(); + + I18NLogger.rawInfo("Connecting to discord"); + connect(); + + I18NLogger.rawInfo("Registering events"); + registerEvents(); + + I18NLogger.rawInfo("Starting the discord bot"); + } + + public void loadLocale(Logger logger) { + Locale locale = new Locale("en_US"); + + I18NManager i18NManager = new I18NManager(ResourceBundle.getBundle(I18NManager.RESOURCES_PATH, locale)); + + I18NLogger.setLogger(logger); + I18NLogger.setI18nManager(i18NManager); + + I18NLogger.info("startup.loading-message"); + } + + public void loadConfiguration() { + VelocityConfigurationManager configurationManager = new VelocityConfigurationManager(pluginData); + + configurationManager.deployResources(); + configurationManager.loadConfigurationFiles(); + + } + + + public void connect() { + CachedProxySettings config = ConfigurationUtil.getProxySettings(); + try { + discord = new DiscordManager(config.getWebhookUrl(), true); + } catch(IllegalArgumentException exception) { + I18NLogger.rawInfo("You have not configured a webhook"); // TODO locale + } + } + + public void registerEvents() { + String avatarApiUrl = "https://mc-heads.net/combo/%playeruuid%"; + String userNameFormat = "%playername%"; + String serverName = "Test Server"; + String messagePrefix = null; + + server.getEventManager().register(this, new PlayerChatEventListener(logger)); + } + + public void startDiscordBot() { + CachedBotSettings config = ConfigurationUtil.getBotSettings(); + +// try { +//// discordBot = new DiscordBot(); +//// discordBot.connect(); +//// discordBot.addNewListener(new DiscordMessageListener(tasks, config)); +// } catch (LoginException ok) { +// // TODO log +// } + + } +} diff --git a/Velocity/src/main/java/io/paradaux/conch/velocity/api/VelocityConfigurationManager.java b/Velocity/src/main/java/io/paradaux/conch/velocity/api/VelocityConfigurationManager.java new file mode 100644 index 0000000..a370f31 --- /dev/null +++ b/Velocity/src/main/java/io/paradaux/conch/velocity/api/VelocityConfigurationManager.java @@ -0,0 +1,81 @@ +package io.paradaux.conch.velocity.api; + +import io.paradaux.conch.common.api.ConfigurationManager; +import io.paradaux.conch.common.api.I18NLogger; +import io.paradaux.conch.common.api.config.CachedBotSettings; +import io.paradaux.conch.common.api.config.CachedEventSettings; +import io.paradaux.conch.common.api.config.CachedProxySettings; +import io.paradaux.conch.common.api.config.ConfigurationLoader; +import io.paradaux.conch.common.api.config.ConfigurationUtil; +import io.paradaux.conch.common.api.exceptions.NoSuchResourceException; +import org.spongepowered.configurate.ConfigurateException; + +import java.nio.file.Files; +import java.nio.file.Path; + +public class VelocityConfigurationManager extends ConfigurationManager { + + private CachedProxySettings proxySettings; + private CachedEventSettings eventSettings; + private CachedBotSettings botSettings; + + private ConfigurationLoader loader = getConfigurationLoader(); + + /** + * BukkitConfigurationLoader uses Sponge's Configurate to load the HOCON values in the three settings files. + * + * @param configurationDirectory The directory in which the configuration files are being saved to. + */ + public VelocityConfigurationManager(Path configurationDirectory) { + super(configurationDirectory); + } + + @Override + public void deployResources() { + + if (!Files.exists(getConfigurationDirectory())) { + if (getConfigurationDirectory().toFile().mkdir()) { + I18NLogger.rawInfo("Created the plugin directory"); // TODO locale + } else { + I18NLogger.rawInfo("Failed to create the plugin directory"); + } + } + + try { + if (!loader.doesBotSettingsExist()) { + exportResource(ConfigurationLoader.BOT_SETTINGS_FILE_NAME, loader.getBotSettingsPath().toString()); + } + + if (!loader.doesProxySettingsExist()) { + exportResource(ConfigurationLoader.PROXY_SETTINGS_FILE_NAME, loader.getProxySettingsPath().toString()); + } + + if (!loader.doesEventSettingsExist()) { + exportResource(ConfigurationLoader.EVENT_SETTINGS_FILE_NAME, loader.getEventSettingsPath().toString()); + } + } catch (NoSuchResourceException exception) { + I18NLogger.error("configuration.deploy-failure", exception.getMessage()); + } + + } + + @Override + public void loadConfigurationFiles() { + try { + proxySettings = loader.loadProxySettings(); + eventSettings = loader.loadEventSettings(); + botSettings = loader.loadBotSettings(); + } catch (ConfigurateException exception) { + I18NLogger.error(""); // TODO add error for failure to load configuration + return; + } + + ConfigurationUtil.loadConfigurationValues(proxySettings, eventSettings, botSettings); + } + + @Override + public void checkConfigurationVersions() { + + } + +} diff --git a/Velocity/src/main/resources/bot-settings.conf b/Velocity/src/main/resources/bot-settings.conf new file mode 100644 index 0000000..0e59d8c --- /dev/null +++ b/Velocity/src/main/resources/bot-settings.conf @@ -0,0 +1,57 @@ +# Conch 1.0 by Rían Errity Licensed under GPLv3 | Bot Configuration. + +// Conch comes bundled with a built-in discord bot. In order to make use of this you must create a discord +// token and place it between the double quotes ("") in the token field on line 8. The discord bot permits you to have +// discord messages show up in game. + +// Set this to true to enable the built-in discord bot. + +enabled: false + +// The Bot Token is your API key so Conch can talk to discord as a bot. You must create the bot account here: +// https://discord.com/developers/applications Please see https://hiberniadiscrd.paradaux.io/#/bot-configuration for +// more user-friendly instructions. + +// In order for your discord bot to see the messages in your discord server you must also invite the discord bot to your +// discord server. Please see https://hiberniadiscrd.paradaux.io/#/bot-configuration for more explicit instructions as +// to how to do this. +token: "" + +discord-commands-enabled: true +command-prefix: ';' + +send-messages-from-bots: false + +// This is an array of discord channel IDs which the discord bot will listen to messages from +monitored-channels: ["822245879556997122", "736301820351086656", "739708755767329350"] + +// This configuration option only works on proxies, but allows you to map servers to monitored disocrd channels. +// This configuration option only works on proxies, but allows you to map servers to monitored disocrd channels. +// This is an advanced configuration option {TODO INSERT DOC LINK} for more +// information as to how to set this up. + +// N.B :: Enabling this disables the monitors listed in monitored-channels +proxy-based-monitoring: true + +// Example: +// "lobby": "736301820351086656" +// Entries must be comma seperated as shown below, the last entry does not require a comma. +proxy-monitored-channels: { + "serverNamw": "ChannelID", + "serverName2": "ChannelID2" +} + +// This is how you configure how your messages appear in-game as they are broadcast to your users. + +// Available Placeholders: +// - %discord_nickname% :: The nickname of discord user who sent a message. +// - %discord_tag% :: The tag (Username#Descriminator) of the user who sent a message. +// - %discord_username% :: The username of that user. +// - %discord_descriminator% :: The descriminator of that user. +// - %discord_message% :: The message sent by that user. +// - %discord_topRole% :: The highest role that user has. +// - %discord_channel% :: The channel in which the message was sent. +// - %discord_guild% :: The guild in which that message was sent. + +// TODO adventure support +message-format: " #%discord_channel% <%discord_topRole%> %discord_nickname% » %discord_message%" diff --git a/Velocity/src/main/resources/event-settings.conf b/Velocity/src/main/resources/event-settings.conf new file mode 100644 index 0000000..b61f616 --- /dev/null +++ b/Velocity/src/main/resources/event-settings.conf @@ -0,0 +1,71 @@ +# Conch 1.0 by Rían Errity Licensed under GPLv3 | Event Configuration. + +// This is where you configure how certain events are displayed when they are sent to discord +// If you do not wish for them to be sent to discord please set enabled to false. +// We're open to adding more events, if you have any ideas please send them our way via a github issue. + +// Available Placeholders: +// - %playerUserName% :: The Player's Username. +// - %playerDisplayName% :: The Player's Display name (Used by other plugins for Nicknames, prefixes etc) +// - %playerUUID% :: The Player's Unique ID. +// - %avatarAPI% :: The Player's Head as defined in general-settings.conf +// - %networkName% :: The Name of the network as defined in general-settings.conf +// - %serverName% :: The Name of the server the user is connected to + +// Certain events have event-specific placeholders which will be defined before the configuration node for that event. +// "" referred to as an empty string denotes no message, which will be converted to a zero-width space, so it can be +// sent to discord without error. + +// AsyncPlayerChatEvent Custom Placeholders: +// - %messageContent% :: The message which was sent. + +// DEVELOPMENT BUILD NOTICE. +// ONLY THE EVENTS LISTED ARE IMPLEMENTED. +// CONFIGURATION FILES ARE SUBJECT TO BREAKING CHANGES, WITH NO AUTOMATIC UPGRADES. + +onChatMessage: { + enabled: true + webhook-username-format: "%playerUserName%" + webhook-avatar-format: "%avatarApi%" + webhook-message-format: "%messageContent%" +} + +// PlayerJoinEvent Custom Placeholders: +// - %joinMessage% :: The join mesage as set by other plugins or by the minecraft server itself. +onPlayerJoin: { + enabled: true + webhook-username-format: "%playerUserName% has joined the game." + webhook-avatar-format: "%avatarApi%" + webhook-message-format: "" +} + +// PlayerJoinEvent Custom Placeholders: +// - %leaveMessage% :: The leave mesage as set by other plugins or by the minecraft server itself. +onPlayerLeave: { + enabled: true + webhook-username-format: "%playerUserName% has left the game." + webhook-avatar-format: "%avatarApi%" + webhook-message-format: "%messageContent%" +} + +onPlayerKick: { + enabled: false + webhook-username-format: "" + webhook-avatar-format: "%avatarApi%" + webhook-message-format: "%messageContent%" +} + +onServerStartup: { + enabled: true + webhook-username-format: "" + webhook-avatar-format: "%avatarApi%" + webhook-message-format: "%messageContent%" +} + +onGracefulShutdown: { + enabled: true + webhook-username-format: "" + webhook-avatar-format: "%avatarApi%" + webhook-message-format: "%messageContent%" +} + diff --git a/dev-move-velocity.bat b/dev-move-velocity.bat index e69de29..45a2f2b 100644 --- a/dev-move-velocity.bat +++ b/dev-move-velocity.bat @@ -0,0 +1,3 @@ +rm plugins/conch-velocity-1.0.0.jar +mv ../../Velocity/target/conch-velocity-1.0.0.jar plugins/ +java -jar velocity.jar \ No newline at end of file From 2b698bf7953dd78a6cb7c51265aa4a98ec6a568b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sun, 21 Mar 2021 20:53:55 +0000 Subject: [PATCH 56/59] TaskChain emulator for velocity --- .../conch/velocity/managers/TaskManager.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Velocity/src/main/java/io/paradaux/conch/velocity/managers/TaskManager.java diff --git a/Velocity/src/main/java/io/paradaux/conch/velocity/managers/TaskManager.java b/Velocity/src/main/java/io/paradaux/conch/velocity/managers/TaskManager.java new file mode 100644 index 0000000..13b3f90 --- /dev/null +++ b/Velocity/src/main/java/io/paradaux/conch/velocity/managers/TaskManager.java @@ -0,0 +1,19 @@ +package io.paradaux.conch.velocity.managers; + +import com.velocitypowered.api.scheduler.Scheduler; + +public class TaskManager { + + private final Object plugin; + private final Scheduler scheduler; + + public TaskManager(Object plugin, Scheduler scheduler) { + this.plugin = plugin; + this.scheduler = scheduler; + } + + public Scheduler.TaskBuilder newTask(Runnable task) { + return scheduler.buildTask(plugin, task); + } + +} From 2a92b58247bfa858205f9c079b082025424e3ad0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sun, 21 Mar 2021 20:54:06 +0000 Subject: [PATCH 57/59] Preparing 1 way support for velocity --- .../io/paradaux/conch/bukkit/BukkitConch.java | 9 ++- .../velocity/listeners/GenericListener.java | 54 +++++----------- .../listeners/PlayerChatEventListener.java | 62 ++++++++++--------- 3 files changed, 54 insertions(+), 71 deletions(-) diff --git a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java index 8c5926c..1b11306 100644 --- a/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java +++ b/Bukkit/src/main/java/io/paradaux/conch/bukkit/BukkitConch.java @@ -35,9 +35,8 @@ import io.paradaux.conch.common.api.I18NManager; import io.paradaux.conch.common.api.config.CachedBotSettings; import io.paradaux.conch.common.api.config.CachedEventSettings; -import io.paradaux.conch.common.api.config.CachedSettings; +import io.paradaux.conch.common.api.config.CachedServerSettings; import io.paradaux.conch.common.api.config.ConfigurationUtil; -import io.paradaux.conch.common.api.config.EventConfiguration; import io.paradaux.conch.common.bot.DiscordBot; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; @@ -101,14 +100,14 @@ public void loadLocale() { public void loadConfiguration() { Path pluginData = this.getDataFolder().toPath(); - BukkitConfigurationManager configurationManager = new BukkitConfigurationManager(pluginData, this); + BukkitConfigurationManager configurationManager = new BukkitConfigurationManager(pluginData); - configurationManager.deployResource(); + configurationManager.deployResources(); configurationManager.loadConfigurationFiles(); } public void connect() { - CachedSettings config = ConfigurationUtil.getGeneralSettings(); + CachedServerSettings config = ConfigurationUtil.getGeneralSettings(); discord = new DiscordManager(config.getWebhookUrl(), true); } diff --git a/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/GenericListener.java b/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/GenericListener.java index cb03dfe..f341681 100644 --- a/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/GenericListener.java +++ b/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/GenericListener.java @@ -24,6 +24,7 @@ package io.paradaux.conch.velocity.listeners; import com.velocitypowered.api.proxy.Player; +import io.paradaux.conch.common.api.config.ConfigurationUtil; import org.jetbrains.annotations.NotNull; import javax.annotation.CheckReturnValue; @@ -31,61 +32,40 @@ public class GenericListener { - private final String avatarApiUrl; - private final String serverName; - private final String userNameFormat; - /** * Represents a non-specific bukkit listener with the configuration values required to run. * */ - public GenericListener(String avatarApiUrl, String serverName, String userNameFormat) { - this.avatarApiUrl = avatarApiUrl; - this.serverName = serverName; - this.userNameFormat = userNameFormat; + public GenericListener() { + } /** - * Formats the string provided accounting for the various placeholders, which are injected into from the provided OfflinePlayer Object. + * Parses purely the custom placeholders. * */ - @Nullable - @CheckReturnValue - protected String parsePlaceholders(Player player, @NotNull String str) { - if (player == null || player.getUsername() == null) { - return null; + protected String parseCustomPlaceholders(Player player, String serverName, String avatarApi, String str) { + if (avatarApi == null) { + avatarApi = ""; } - String avatarUrl = parseAvatarApi(player); - - if (avatarUrl == null) { - avatarUrl = ""; - } + // The proxy has no idea of what the display name is. + return str.replace("%playerUserName%", player.getUsername()) + .replace("%playerUUID", player.getUniqueId().toString()) + .replace("%avatarApi%", parseAvatarApi(player, avatarApi)) + .replace("%serverName%", serverName); - return str.replace("%playername%", player.getUsername()) - .replace("%playeruuid%", player.getUniqueId().toString()) - .replace("%servername%", serverName) - .replace("%avatarapi%", avatarUrl); } @Nullable @CheckReturnValue - protected String parseAvatarApi(Player player) { + protected String parseAvatarApi(Player player, String avatarApiUrl) { if (player == null) { - return null; + throw new IllegalStateException("This player is not available."); } - return avatarApiUrl.replace("%playeruuid%", player.getUniqueId().toString()); - } - - public String getAvatarApiUrl() { - return avatarApiUrl; - } - - public String getServerName() { - return serverName; - } + String uuid = player.getUniqueId().toString(); - public String getUserNameFormat() { - return userNameFormat; + avatarApiUrl = avatarApiUrl.replace("%avatarApi%", ConfigurationUtil.getGeneralSettings().getAvatarApi()); + return avatarApiUrl.replace("%playerUUID%", ConfigurationUtil.getGeneralSettings().isAvatarApiHyphen() ? uuid : uuid.replace("-", "")); } diff --git a/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/PlayerChatEventListener.java b/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/PlayerChatEventListener.java index 9bb70ae..236a16f 100644 --- a/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/PlayerChatEventListener.java +++ b/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/PlayerChatEventListener.java @@ -27,48 +27,52 @@ import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.event.player.PlayerChatEvent; import com.velocitypowered.api.proxy.Player; +import com.velocitypowered.api.proxy.ServerConnection; import org.slf4j.Logger; import javax.annotation.Nullable; +import java.util.Optional; public class PlayerChatEventListener extends GenericListener { Logger logger; - String messagePrefix; - boolean debug; - public PlayerChatEventListener(String avatarApiUrl, String userNameFormat, String serverName, - @Nullable String messagePrefix, Logger logger, boolean debug) { - super(avatarApiUrl, serverName, userNameFormat); + public PlayerChatEventListener(Logger logger) { this.logger = logger; - this.messagePrefix = messagePrefix; - this.debug = debug; } @Subscribe(order = PostOrder.NORMAL) public void onPlayerChat(PlayerChatEvent event) { - Player player = event.getPlayer(); - String userName = parsePlaceholders(player, getUserNameFormat()); - String messageContent = parsePlaceholders(player, event.getMessage()); - - if (userName == null || messageContent == null) { - logger.error("Something went wrong. AsyncPlayerChatEvent null."); - return; - } - - // Only send the message if it starts with the configured prefix (if applicable) - if (messagePrefix != null) { - if (!messageContent.startsWith(messagePrefix)) { - return; - } - - // Remove the prefix from the message. - messageContent = messagePrefix.replace(messagePrefix, ""); - } - - if (debug) { - logger.info("{} has sent a message in chat which will be relayed to the discord webhook.", player.getUsername()); - } +// Player player = event.getPlayer(); +// +// String userName = parsePlaceholders(player, getUserNameFormat()); +// String messageContent = parsePlaceholders(player, event.getMessage()); +// Optional server = event.getPlayer().getCurrentServer(); +// String serverName = ""; +// +// if (server.isPresent()) { +// serverName = getServerName(); +// +// } +// +// if (userName == null || messageContent == null) { +// logger.error("Something went wrong. AsyncPlayerChatEvent null."); +// return; +// } +// +// // Only send the message if it starts with the configured prefix (if applicable) +// if (messagePrefix != null) { +// if (!messageContent.startsWith(messagePrefix)) { +// return; +// } +// +// // Remove the prefix from the message. +// messageContent = messagePrefix.replace(messagePrefix, ""); +// } +// +// if (debug) { +// logger.info("{} has sent a message in chat which will be relayed to the discord webhook.", player.getUsername()); +// } // DiscordManager.sendDiscordMessage(userName, parseAvatarApi(player), messageContent); From ed20643755fdf3a73b27ad13dbff871d15d52c8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sun, 21 Mar 2021 21:36:16 +0000 Subject: [PATCH 58/59] One-way velocity communication working --- .../conch/velocity/VelocityConch.java | 19 ++-- .../velocity/listeners/GenericListener.java | 7 +- .../listeners/PlayerChatEventListener.java | 91 ++++++++++++------- 3 files changed, 66 insertions(+), 51 deletions(-) diff --git a/Velocity/src/main/java/io/paradaux/conch/velocity/VelocityConch.java b/Velocity/src/main/java/io/paradaux/conch/velocity/VelocityConch.java index ac70c10..fce4be0 100644 --- a/Velocity/src/main/java/io/paradaux/conch/velocity/VelocityConch.java +++ b/Velocity/src/main/java/io/paradaux/conch/velocity/VelocityConch.java @@ -34,19 +34,14 @@ import io.paradaux.conch.common.api.I18NManager; import io.paradaux.conch.common.api.config.CachedBotSettings; import io.paradaux.conch.common.api.config.CachedProxySettings; -import io.paradaux.conch.common.api.config.CachedServerSettings; import io.paradaux.conch.common.api.config.ConfigurationUtil; import io.paradaux.conch.common.bot.DiscordBot; import io.paradaux.conch.velocity.api.VelocityConfigurationManager; import io.paradaux.conch.velocity.listeners.PlayerChatEventListener; import io.paradaux.conch.velocity.managers.TaskManager; import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import javax.security.auth.login.LoginException; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.List; import java.util.Locale; import java.util.ResourceBundle; @@ -120,24 +115,22 @@ public void connect() { } public void registerEvents() { - String avatarApiUrl = "https://mc-heads.net/combo/%playeruuid%"; - String userNameFormat = "%playername%"; - String serverName = "Test Server"; + String networkName = ConfigurationUtil.getProxySettings().getNetworkName(); + String avatarApi = ConfigurationUtil.getProxySettings().getAvatarApi(); String messagePrefix = null; - server.getEventManager().register(this, new PlayerChatEventListener(logger)); + server.getEventManager().register(this, new PlayerChatEventListener(discord, tasks, networkName, avatarApi, messagePrefix, ConfigurationUtil.getEventSettings().getOnChatMessage(), ConfigurationUtil.isDebug())); } public void startDiscordBot() { CachedBotSettings config = ConfigurationUtil.getBotSettings(); // try { -//// discordBot = new DiscordBot(); -//// discordBot.connect(); -//// discordBot.addNewListener(new DiscordMessageListener(tasks, config)); +// discordBot = new DiscordBot(); +// discordBot.connect(); +// discordBot.addNewListener(new DiscordMessageListener(tasks, config)); // } catch (LoginException ok) { // // TODO log // } - } } diff --git a/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/GenericListener.java b/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/GenericListener.java index f341681..2129cdf 100644 --- a/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/GenericListener.java +++ b/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/GenericListener.java @@ -42,7 +42,7 @@ public GenericListener() { /** * Parses purely the custom placeholders. * */ - protected String parseCustomPlaceholders(Player player, String serverName, String avatarApi, String str) { + protected String parseCustomPlaceholders(Player player, String networkName, String serverName, String avatarApi, String str) { if (avatarApi == null) { avatarApi = ""; } @@ -51,6 +51,7 @@ protected String parseCustomPlaceholders(Player player, String serverName, Strin return str.replace("%playerUserName%", player.getUsername()) .replace("%playerUUID", player.getUniqueId().toString()) .replace("%avatarApi%", parseAvatarApi(player, avatarApi)) + .replace("%networkName", networkName) .replace("%serverName%", serverName); } @@ -64,8 +65,8 @@ protected String parseAvatarApi(Player player, String avatarApiUrl) { String uuid = player.getUniqueId().toString(); - avatarApiUrl = avatarApiUrl.replace("%avatarApi%", ConfigurationUtil.getGeneralSettings().getAvatarApi()); - return avatarApiUrl.replace("%playerUUID%", ConfigurationUtil.getGeneralSettings().isAvatarApiHyphen() ? uuid : uuid.replace("-", "")); + avatarApiUrl = avatarApiUrl.replace("%avatarApi%", avatarApiUrl); + return avatarApiUrl.replace("%playerUUID%", ConfigurationUtil.getProxySettings().isAvatarApiHyphen() ? uuid : uuid.replace("-", "")); } diff --git a/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/PlayerChatEventListener.java b/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/PlayerChatEventListener.java index 236a16f..5bf6bb6 100644 --- a/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/PlayerChatEventListener.java +++ b/Velocity/src/main/java/io/paradaux/conch/velocity/listeners/PlayerChatEventListener.java @@ -28,6 +28,10 @@ import com.velocitypowered.api.event.player.PlayerChatEvent; import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.ServerConnection; +import io.paradaux.conch.common.api.DiscordManager; +import io.paradaux.conch.common.api.I18NLogger; +import io.paradaux.conch.common.api.config.EventConfiguration; +import io.paradaux.conch.velocity.managers.TaskManager; import org.slf4j.Logger; import javax.annotation.Nullable; @@ -35,47 +39,64 @@ public class PlayerChatEventListener extends GenericListener { - Logger logger; + private final DiscordManager discord; + private final TaskManager tasks; + private final String networkName; + private final String avatarApi; + private final String messagePrefix; + private final EventConfiguration config; - public PlayerChatEventListener(Logger logger) { - this.logger = logger; + private final boolean debug; + public PlayerChatEventListener(DiscordManager discord, TaskManager tasks, String networkName, String avatarApi, String messagePrefix, + EventConfiguration config, boolean debug) { + this.discord = discord; + this.tasks = tasks; + this.networkName = networkName; + this.avatarApi = avatarApi; + this.messagePrefix = messagePrefix; + this.config = config; + this.debug = debug; } @Subscribe(order = PostOrder.NORMAL) public void onPlayerChat(PlayerChatEvent event) { -// Player player = event.getPlayer(); -// -// String userName = parsePlaceholders(player, getUserNameFormat()); -// String messageContent = parsePlaceholders(player, event.getMessage()); -// Optional server = event.getPlayer().getCurrentServer(); -// String serverName = ""; -// -// if (server.isPresent()) { -// serverName = getServerName(); -// -// } -// -// if (userName == null || messageContent == null) { -// logger.error("Something went wrong. AsyncPlayerChatEvent null."); -// return; -// } -// -// // Only send the message if it starts with the configured prefix (if applicable) -// if (messagePrefix != null) { -// if (!messageContent.startsWith(messagePrefix)) { -// return; -// } -// -// // Remove the prefix from the message. -// messageContent = messagePrefix.replace(messagePrefix, ""); -// } -// -// if (debug) { -// logger.info("{} has sent a message in chat which will be relayed to the discord webhook.", player.getUsername()); -// } - -// DiscordManager.sendDiscordMessage(userName, parseAvatarApi(player), messageContent); + Player player = event.getPlayer(); + + Optional server = event.getPlayer().getCurrentServer(); + String serverName = ""; + + if (server.isPresent()) { + serverName = server.get().getServer().getServerInfo().getName(); + } + + String userName = parseCustomPlaceholders(player, networkName, serverName, avatarApi, config.getWebhookUsernameFormat()); + String messageContent = parseCustomPlaceholders(player, networkName, serverName, avatarApi, event.getMessage()); + + + if (userName == null || messageContent == null) { + I18NLogger.error("Something went wrong. AsyncPlayerChatEvent null."); + return; + } + + // Only send the message if it starts with the configured prefix (if applicable) + if (messagePrefix != null) { + if (!messageContent.startsWith(messagePrefix)) { + return; + } + + // Remove the prefix from the message. + messageContent = messagePrefix.replace(messagePrefix, ""); + } + + if (debug) { + I18NLogger.rawInfo("{} has sent a message in chat which will be relayed to the discord webhook.", player.getUsername()); + } + + final String msg = messageContent; + tasks.newTask(() -> { + discord.sendDiscordMessage(userName, parseAvatarApi(player, avatarApi), msg); + }).schedule(); } } From 9e16efd4973266124bc5c3d5409df336c495ff00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=ADan=20Errity?= Date: Sun, 21 Mar 2021 23:00:23 +0000 Subject: [PATCH 59/59] Beginning to work on discord/minecraft --- .../velocity/bot/DiscordMessageListener.java | 93 +++++++++++++++++++ Velocity/src/main/resources/bot-settings.conf | 2 +- 2 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 Velocity/src/main/java/io/paradaux/conch/velocity/bot/DiscordMessageListener.java diff --git a/Velocity/src/main/java/io/paradaux/conch/velocity/bot/DiscordMessageListener.java b/Velocity/src/main/java/io/paradaux/conch/velocity/bot/DiscordMessageListener.java new file mode 100644 index 0000000..c12d353 --- /dev/null +++ b/Velocity/src/main/java/io/paradaux/conch/velocity/bot/DiscordMessageListener.java @@ -0,0 +1,93 @@ +package io.paradaux.conch.velocity.bot; + +import io.paradaux.conch.common.api.config.CachedBotSettings; +import io.paradaux.conch.velocity.managers.TaskManager; +import net.dv8tion.jda.api.entities.Member; +import net.dv8tion.jda.api.entities.Role; +import net.dv8tion.jda.api.events.message.MessageReceivedEvent; +import net.dv8tion.jda.api.hooks.ListenerAdapter; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public class DiscordMessageListener extends ListenerAdapter { + + private final CachedBotSettings config; + private final TaskManager tasks; + + /** + * Handles discord messages coming in. + * */ + public DiscordMessageListener(TaskManager tasks, CachedBotSettings config) { + + this.tasks = tasks; + this.config = config; + } + + @Override + public void onMessageReceived(@NotNull MessageReceivedEvent event) { + Member member = event.getMember(); + + // If the message wasn't in a monitored channel, ignore it. + if (!config.getMonitoredChannels().contains(event.getChannel().getId())) { + return; + } + + // If ignore bots is enabled, respect it. + if (event.getAuthor().isBot() && !config.isSendBotMessages()) { + return; + } + + tasks.newTask(() -> { + // Member is null when the event is triggered by a webhook rather than a bot/user + if (member == null) { + return; + } + + Role highestRole = getHighestFrom(member); + + + + + + + + + Bukkit.getServer().broadcastMessage(config.getMessageFormat() + .replace("%discord_nickname%", member.getEffectiveName()) + .replace("%discord_tag%", event.getAuthor().getAsTag()) + .replace("%discord_username%", event.getAuthor().getName()) + .replace("%discord_discriminator%", event.getAuthor().getDiscriminator()) + .replace("%discord_message%", event.getMessage().getContentStripped()) + .replace("%discord_topRole%", highestRole == null ? "" : highestRole.getName()) + .replace("%discord_channel%", event.getChannel().getName()) + .replace("%discord_guild%", event.getGuild().getName())); + }).schedule(); + } + + /** + * Determines the highest role (i.e the role displayed when the user speaks) of the member provided. + * */ + @Nullable + public Role getHighestFrom(Member member) { + if (member == null) { + return null; + } + + List roles = member.getRoles(); + + if (roles.isEmpty()) { + return null; + } + + return roles.stream().min((first, second) -> { + if (first.getPosition() == second.getPosition()) { + return 0; + } + + return first.getPosition() > second.getPosition() ? -1 : 1; + }).get(); + } + +} diff --git a/Velocity/src/main/resources/bot-settings.conf b/Velocity/src/main/resources/bot-settings.conf index 0e59d8c..55087fb 100644 --- a/Velocity/src/main/resources/bot-settings.conf +++ b/Velocity/src/main/resources/bot-settings.conf @@ -37,7 +37,7 @@ proxy-based-monitoring: true // "lobby": "736301820351086656" // Entries must be comma seperated as shown below, the last entry does not require a comma. proxy-monitored-channels: { - "serverNamw": "ChannelID", + "serverName": "ChannelID", "serverName2": "ChannelID2" }