diff --git a/.idea/libraries/Maven__com_github_TBMCPlugins_ButtonCore_Towny_master_v1_0_g8d3b6b6_296.xml b/.idea/libraries/Maven__com_github_TBMCPlugins_ButtonCore_Towny_master_v1_0_g8d3b6b6_296.xml
new file mode 100644
index 0000000..8991a67
--- /dev/null
+++ b/.idea/libraries/Maven__com_github_TBMCPlugins_ButtonCore_Towny_master_v1_0_g8d3b6b6_296.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__com_github_milkbowl_VaultAPI_master_8dc0859cba_1.xml b/.idea/libraries/Maven__com_github_milkbowl_VaultAPI_master_c8cb88f27a_1.xml
old mode 100755
new mode 100644
similarity index 55%
rename from .idea/libraries/Maven__com_github_milkbowl_VaultAPI_master_8dc0859cba_1.xml
rename to .idea/libraries/Maven__com_github_milkbowl_VaultAPI_master_c8cb88f27a_1.xml
index 2f453df..b5aaa43
--- a/.idea/libraries/Maven__com_github_milkbowl_VaultAPI_master_8dc0859cba_1.xml
+++ b/.idea/libraries/Maven__com_github_milkbowl_VaultAPI_master_c8cb88f27a_1.xml
@@ -1,13 +1,13 @@
-
+
-
+
-
+
-
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__javax_persistence_persistence_api_1_0.xml b/.idea/libraries/Maven__javax_persistence_persistence_api_1_0.xml
deleted file mode 100755
index e60370e..0000000
--- a/.idea/libraries/Maven__javax_persistence_persistence_api_1_0.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_avaje_ebean_2_8_1.xml b/.idea/libraries/Maven__org_avaje_ebean_2_8_1.xml
deleted file mode 100755
index 91f161a..0000000
--- a/.idea/libraries/Maven__org_avaje_ebean_2_8_1.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_bukkit_bukkit_1_13_1_R0_1_SNAPSHOT.xml b/.idea/libraries/Maven__org_bukkit_bukkit_1_13_1_R0_1_SNAPSHOT.xml
new file mode 100644
index 0000000..4f2c5e4
--- /dev/null
+++ b/.idea/libraries/Maven__org_bukkit_bukkit_1_13_1_R0_1_SNAPSHOT.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Maven__org_bukkit_bukkit_1_9_R0_1_SNAPSHOT.xml b/.idea/libraries/Maven__org_bukkit_bukkit_1_9_R0_1_SNAPSHOT.xml
deleted file mode 100755
index 2fb4911..0000000
--- a/.idea/libraries/Maven__org_bukkit_bukkit_1_9_R0_1_SNAPSHOT.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/markdown-navigator.xml b/.idea/markdown-navigator.xml
new file mode 100644
index 0000000..3e62462
--- /dev/null
+++ b/.idea/markdown-navigator.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/markdown-navigator/profiles_settings.xml b/.idea/markdown-navigator/profiles_settings.xml
new file mode 100644
index 0000000..57927c5
--- /dev/null
+++ b/.idea/markdown-navigator/profiles_settings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..e96534f
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/BuildConfigUpdater/BuildConfigUpdater.iml b/BuildConfigUpdater/BuildConfigUpdater.iml
index 4902d56..73696cd 100644
--- a/BuildConfigUpdater/BuildConfigUpdater.iml
+++ b/BuildConfigUpdater/BuildConfigUpdater.iml
@@ -12,7 +12,6 @@
-
diff --git a/BuildConfigUpdater/src/main/java/BCUMain.java b/BuildConfigUpdater/src/main/java/BCUMain.java
index bca7209..07666d3 100644
--- a/BuildConfigUpdater/src/main/java/BCUMain.java
+++ b/BuildConfigUpdater/src/main/java/BCUMain.java
@@ -1,4 +1,4 @@
-import buttondevteam.lib.PluginUpdater;
+import buttondevteam.component.updater.PluginUpdater;
import java.util.List;
import java.util.stream.Collectors;
diff --git a/ButtonCore/src/main/java/buttondevteam/component/commands/CommandComponent.java b/ButtonCore/src/main/java/buttondevteam/component/commands/CommandComponent.java
new file mode 100644
index 0000000..b3f1059
--- /dev/null
+++ b/ButtonCore/src/main/java/buttondevteam/component/commands/CommandComponent.java
@@ -0,0 +1,16 @@
+package buttondevteam.component.commands;
+
+import buttondevteam.lib.architecture.Component;
+import org.bukkit.plugin.java.JavaPlugin;
+
+public class CommandComponent extends Component { //TODO: Do we just move everything here?
+ @Override
+ public void register(JavaPlugin plugin) {
+
+ }
+
+ @Override
+ public void unregister(JavaPlugin plugin) {
+
+ }
+}
diff --git a/ButtonCore/src/main/java/buttondevteam/component/restart/RestartComponent.java b/ButtonCore/src/main/java/buttondevteam/component/restart/RestartComponent.java
new file mode 100644
index 0000000..3061824
--- /dev/null
+++ b/ButtonCore/src/main/java/buttondevteam/component/restart/RestartComponent.java
@@ -0,0 +1,21 @@
+package buttondevteam.component.restart;
+
+import buttondevteam.core.PrimeRestartCommand;
+import buttondevteam.core.ScheduledRestartCommand;
+import buttondevteam.lib.architecture.Component;
+import buttondevteam.lib.chat.TBMCChatAPI;
+import org.bukkit.plugin.java.JavaPlugin;
+
+public class RestartComponent extends Component {
+ @Override
+ public void register(JavaPlugin plugin) {
+ //TODO: Separately (dis)allow commands
+ TBMCChatAPI.AddCommand(plugin, ScheduledRestartCommand.class);
+ TBMCChatAPI.AddCommand(plugin, PrimeRestartCommand.class);
+ }
+
+ @Override
+ public void unregister(JavaPlugin plugin) {
+
+ }
+}
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/PluginUpdater.java b/ButtonCore/src/main/java/buttondevteam/component/updater/PluginUpdater.java
similarity index 97%
rename from ButtonCore/src/main/java/buttondevteam/lib/PluginUpdater.java
rename to ButtonCore/src/main/java/buttondevteam/component/updater/PluginUpdater.java
index ca758f8..ce2e993 100755
--- a/ButtonCore/src/main/java/buttondevteam/lib/PluginUpdater.java
+++ b/ButtonCore/src/main/java/buttondevteam/component/updater/PluginUpdater.java
@@ -1,5 +1,6 @@
-package buttondevteam.lib;
+package buttondevteam.component.updater;
+import buttondevteam.lib.TBMCCoreAPI;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
@@ -136,7 +137,7 @@ public class PluginUpdater {
public static List GetPluginNames() {
List ret = new ArrayList<>();
try {
- String resp = TBMCCoreAPI.DownloadString("https://api.github.com/orgs/TBMCPlugins/repos");
+ String resp = TBMCCoreAPI.DownloadString("https://api.github.com/orgs/" + "TBMCPlugins" + "/repos"); //TODO: PluginUpdater
JsonArray arr = new JsonParser().parse(resp).getAsJsonArray();
for (JsonElement obj : arr) {
JsonObject jobj = obj.getAsJsonObject();
diff --git a/ButtonCore/src/main/java/buttondevteam/component/updater/PluginUpdaterComponent.java b/ButtonCore/src/main/java/buttondevteam/component/updater/PluginUpdaterComponent.java
new file mode 100644
index 0000000..1427927
--- /dev/null
+++ b/ButtonCore/src/main/java/buttondevteam/component/updater/PluginUpdaterComponent.java
@@ -0,0 +1,17 @@
+package buttondevteam.component.updater;
+
+import buttondevteam.lib.architecture.Component;
+import buttondevteam.lib.chat.TBMCChatAPI;
+import org.bukkit.plugin.java.JavaPlugin;
+
+public class PluginUpdaterComponent extends Component {
+ @Override
+ public void register(JavaPlugin plugin) {
+ TBMCChatAPI.AddCommand(plugin, UpdatePluginCommand.class);
+ }
+
+ @Override
+ public void unregister(JavaPlugin plugin) {
+
+ }
+}
diff --git a/ButtonCore/src/main/java/buttondevteam/core/UpdatePluginCommand.java b/ButtonCore/src/main/java/buttondevteam/component/updater/UpdatePluginCommand.java
similarity index 94%
rename from ButtonCore/src/main/java/buttondevteam/core/UpdatePluginCommand.java
rename to ButtonCore/src/main/java/buttondevteam/component/updater/UpdatePluginCommand.java
index ba5b309..ee006c4 100755
--- a/ButtonCore/src/main/java/buttondevteam/core/UpdatePluginCommand.java
+++ b/ButtonCore/src/main/java/buttondevteam/component/updater/UpdatePluginCommand.java
@@ -1,6 +1,6 @@
-package buttondevteam.core;
+package buttondevteam.component.updater;
-import buttondevteam.lib.PluginUpdater;
+import buttondevteam.core.MainPlugin;
import buttondevteam.lib.TBMCCoreAPI;
import buttondevteam.lib.chat.CommandClass;
import buttondevteam.lib.chat.TBMCCommandBase;
diff --git a/ButtonCore/src/main/java/buttondevteam/core/MainPlugin.java b/ButtonCore/src/main/java/buttondevteam/core/MainPlugin.java
index beb7651..b25ed1f 100755
--- a/ButtonCore/src/main/java/buttondevteam/core/MainPlugin.java
+++ b/ButtonCore/src/main/java/buttondevteam/core/MainPlugin.java
@@ -1,6 +1,6 @@
package buttondevteam.core;
-import buttondevteam.lib.PluginUpdater;
+import buttondevteam.component.updater.PluginUpdater;
import buttondevteam.lib.TBMCCoreAPI;
import buttondevteam.lib.chat.Channel;
import buttondevteam.lib.chat.ChatRoom;
@@ -40,9 +40,6 @@ public class MainPlugin extends JavaPlugin {
setupPermissions();
Test = getConfig().getBoolean("test", true);
saveConfig();
- TBMCChatAPI.AddCommand(this, UpdatePluginCommand.class);
- TBMCChatAPI.AddCommand(this, ScheduledRestartCommand.class);
- TBMCChatAPI.AddCommand(this, PrimeRestartCommand.class);
TBMCCoreAPI.RegisterEventsForExceptions(new PlayerListener(), this);
TBMCCoreAPI.RegisterUserClass(TBMCPlayerBase.class);
TBMCChatAPI.RegisterChatChannel(Channel.GlobalChat = new Channel("§fOOC§f", Color.White, "ooc", null));
diff --git a/ButtonCore/src/main/java/buttondevteam/core/PlayerListener.java b/ButtonCore/src/main/java/buttondevteam/core/PlayerListener.java
index af8220e..be7c10b 100755
--- a/ButtonCore/src/main/java/buttondevteam/core/PlayerListener.java
+++ b/ButtonCore/src/main/java/buttondevteam/core/PlayerListener.java
@@ -1,7 +1,7 @@
package buttondevteam.core;
import buttondevteam.lib.TBMCSystemChatEvent;
-import buttondevteam.lib.chat.IDiscordSender;
+import buttondevteam.lib.chat.IFakePlayer;
import buttondevteam.lib.player.TBMCPlayerBase;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@@ -43,7 +43,7 @@ public class PlayerListener implements Listener {
if (PrimeRestartCommand.isLoud())
Bukkit.broadcastMessage("§cNobody is online anymore. Restarting.");
Bukkit.spigot().restart();
- } else if (!(event.getPlayer() instanceof IDiscordSender) && System.nanoTime() - 10 * 1000000000L - lasttime > 0) { //Ten seconds passed since last reminder
+ } else if (!(event.getPlayer() instanceof IFakePlayer) && System.nanoTime() - 10 * 1000000000L - lasttime > 0) { //Ten seconds passed since last reminder
lasttime = System.nanoTime();
if (PrimeRestartCommand.isLoud())
Bukkit.broadcastMessage(ChatColor.DARK_RED + "The server will restart as soon as nobody is online.");
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/TBMCCoreAPI.java b/ButtonCore/src/main/java/buttondevteam/lib/TBMCCoreAPI.java
index 76498d5..e114196 100755
--- a/ButtonCore/src/main/java/buttondevteam/lib/TBMCCoreAPI.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/TBMCCoreAPI.java
@@ -1,5 +1,6 @@
package buttondevteam.lib;
+import buttondevteam.component.updater.PluginUpdater;
import buttondevteam.core.MainPlugin;
import buttondevteam.lib.player.ChromaGamerBase;
import buttondevteam.lib.potato.DebugPotato;
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/architecture/Component.java b/ButtonCore/src/main/java/buttondevteam/lib/architecture/Component.java
index 5c2824b..33c6788 100644
--- a/ButtonCore/src/main/java/buttondevteam/lib/architecture/Component.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/architecture/Component.java
@@ -75,6 +75,14 @@ public abstract class Component {
*/
public abstract void register(JavaPlugin plugin);
+ /**
+ * Unregisters the module, when called by the JavaPlugin class. Do
+ * any cleanups needed within this method.
+ *
+ * @param plugin Plugin class called to register commands and listeners
+ */
+ public abstract void unregister(JavaPlugin plugin);
+
/**
* Registers a TBMCCommand to the plugin. Make sure to add it to plugin.yml and use {@link buttondevteam.lib.chat.CommandClass}.
*
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/ChatMessage.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/ChatMessage.java
index a6fc3f1..056674a 100644
--- a/ButtonCore/src/main/java/buttondevteam/lib/chat/ChatMessage.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/ChatMessage.java
@@ -9,38 +9,41 @@ import org.bukkit.command.CommandSender;
@Builder
@Getter
public class ChatMessage {
- /**
- * The MC channel to send the message to.
- */
- private final Channel channel;
- /**
- * The sender which sends the message.
- */
- private final CommandSender sender;
- /**
- * The Chroma user which sends the message.
- */
- private final ChromaGamerBase user;
- /**
- * The message to send as the user.
- */
- private final String message;
- /**
- * Indicates whether the message comes from running a command (like /tableflip). Implemented to be used from Discord.
- */
- private boolean fromCommand;
- /**
- * The sender which we should check for permissions. Same as {@link #sender} by default.
- */
- private CommandSender permCheck;
+ /**
+ * The MC channel to send the message to.
+ */
+ private final Channel channel;
+ /**
+ * The sender which sends the message.
+ */
+ private final CommandSender sender;
+ /**
+ * The Chroma user which sends the message.
+ */
+ private final ChromaGamerBase user;
+ /**
+ * The message to send as the user.
+ */
+ private final String message;
+ /**
+ * Indicates whether the message comes from running a command (like /tableflip). Implemented to be used from Discord.
+ */
+ private boolean fromCommand;
+ /**
+ * The sender which we should check for permissions. Same as {@link #sender} by default.
+ */
+ private CommandSender permCheck;
+ /**
+ * The origin of the message, "minecraft" or "discord" for example.
+ */
+ private final String origin;
- private static ChatMessageBuilder builder() {
- return new ChatMessageBuilder();
- }
-
- @NonNull
- public static ChatMessageBuilder builder(Channel channel, CommandSender sender, ChromaGamerBase user, String message) {
- return builder().channel(channel).sender(sender).user(user).message(message);
- }
+ private static ChatMessageBuilder builder() {
+ return new ChatMessageBuilder();
+ }
+ @NonNull
+ public static ChatMessageBuilder builder(Channel channel, CommandSender sender, ChromaGamerBase user, String message) {
+ return builder().channel(channel).sender(sender).user(user).message(message);
+ }
}
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/IDiscordSender.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/IFakePlayer.java
similarity index 71%
rename from ButtonCore/src/main/java/buttondevteam/lib/chat/IDiscordSender.java
rename to ButtonCore/src/main/java/buttondevteam/lib/chat/IFakePlayer.java
index fd41c90..4f9318c 100755
--- a/ButtonCore/src/main/java/buttondevteam/lib/chat/IDiscordSender.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/IFakePlayer.java
@@ -7,6 +7,6 @@ import org.bukkit.command.CommandSender;
* @author Norbi
*
*/
-public interface IDiscordSender extends CommandSender {
+public interface IFakePlayer extends CommandSender {
}
diff --git a/ButtonCore/src/main/java/buttondevteam/lib/chat/TBMCChatAPI.java b/ButtonCore/src/main/java/buttondevteam/lib/chat/TBMCChatAPI.java
index f1fcd98..18b0487 100755
--- a/ButtonCore/src/main/java/buttondevteam/lib/chat/TBMCChatAPI.java
+++ b/ButtonCore/src/main/java/buttondevteam/lib/chat/TBMCChatAPI.java
@@ -35,7 +35,7 @@ public class TBMCChatAPI {
/**
* Returns messages formatted for Minecraft chat listing the subcommands of the command.
- *
+ *
* @param command
* The command which we want the subcommands of
* @param sender
@@ -49,7 +49,7 @@ public class TBMCChatAPI {
/**
* Returns messages formatted for Minecraft chat listing the subcommands of the command.
* Returns a header if subcommands were found, otherwise returns an empty array.
- *
+ *
* @param command
* The command which we want the subcommands of
* @param sender