summaryrefslogtreecommitdiff
path: root/src/main/java/com/redstoner/modules
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/redstoner/modules')
-rw-r--r--src/main/java/com/redstoner/modules/CoreModule.java24
-rw-r--r--src/main/java/com/redstoner/modules/Module.java54
-rw-r--r--src/main/java/com/redstoner/modules/ModuleLogger.java77
3 files changed, 155 insertions, 0 deletions
diff --git a/src/main/java/com/redstoner/modules/CoreModule.java b/src/main/java/com/redstoner/modules/CoreModule.java
new file mode 100644
index 0000000..9f71557
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/CoreModule.java
@@ -0,0 +1,24 @@
+package com.redstoner.modules;
+
+import com.redstoner.annotations.Version;
+
+/** This class shall be used for "CoreModules", which are acting on a lower level than modules and are also exempted from being disabled or reloaded on the go.</br>
+ * Please note that CoreModules will not be known to the ModuleLoader itself!</br>
+ * Examples are the ModuleLoader and the Debugger.
+ *
+ * @author Pepich */
+@Version(major = 2, minor = 0, revision = 0, compatible = -1)
+public interface CoreModule extends Module
+{
+ /** Core modules don't need to be enabled. */
+ @Override
+ public default boolean onEnable()
+ {
+ return true;
+ }
+
+ /** Core modules don't need to be disabled. */
+ @Override
+ public default void onDisable()
+ {}
+}
diff --git a/src/main/java/com/redstoner/modules/Module.java b/src/main/java/com/redstoner/modules/Module.java
new file mode 100644
index 0000000..1c89e15
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/Module.java
@@ -0,0 +1,54 @@
+package com.redstoner.modules;
+
+import com.redstoner.annotations.Version;
+import com.redstoner.coremods.moduleLoader.ModuleLoader;
+
+/** Interface for the Module class. Modules must always have an empty constructor to be invoked by the ModuleLoader.
+ *
+ * @author Pepich */
+@Version(major = 4, minor = 0, revision = 0, compatible = 0)
+public interface Module
+{
+ /** Will be called when the module gets enabled. */
+ public default boolean onEnable()
+ {
+ return true;
+ }
+
+ /** This methods gets called after all modules were enabled, please use this method to register commands and similar. <br/>
+ * It will only get called if and only if the module was successfully enabled. */
+ public default void postEnable()
+ {}
+
+ /** Will be called when the module gets disabled. */
+ public default void onDisable()
+ {}
+
+ /** Gets called on registration of the module, when this option is selected for command registration
+ *
+ * @return The String used for the CommandManager to register the commands. */
+ public default String getCommandString()
+ {
+ return null;
+ }
+
+ public default ModuleLogger getLogger()
+ {
+ return ModuleLoader.getModuleLogger(this);
+ }
+
+ /** This method gets run the very first time a module gets loaded. You can use this to set up file structures or background data. */
+ public default void firstLoad()
+ {}
+
+ /** This method gets run every time a module gets loaded and its version has changed.
+ *
+ * @param old The version of the previous module. */
+ public default void migrate(Version old)
+ {}
+
+ default void setPrefix(final String name)
+ {
+ getLogger().setName(name);
+ }
+}
diff --git a/src/main/java/com/redstoner/modules/ModuleLogger.java b/src/main/java/com/redstoner/modules/ModuleLogger.java
new file mode 100644
index 0000000..11d71b6
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/ModuleLogger.java
@@ -0,0 +1,77 @@
+package com.redstoner.modules;
+
+import org.bukkit.Bukkit;
+import org.bukkit.command.CommandSender;
+
+import com.redstoner.annotations.Version;
+
+import net.nemez.chatapi.ChatAPI;
+import net.nemez.chatapi.click.Message;
+
+@Version(major = 4, minor = 0, revision = 0, compatible = -1)
+public class ModuleLogger
+{
+ public static final String PREFIX_WARN = "§8[§eWARN§8]:§7 ";
+ public static final String PREFIX_ERROR = "§8[§cERROR§8]:§7 ";
+ public static final String PREFIX_INFO = "§8[§fINFO§8]:§7 ";
+
+ private String name;
+
+ public ModuleLogger(final String name)
+ {
+ this.name = name;
+ }
+
+ public void info(final String message)
+ {
+ Bukkit.getConsoleSender().sendMessage(PREFIX_INFO + getPrefix() + ChatAPI.colorify(null, message));
+ }
+
+ public void warn(final String message)
+ {
+ Bukkit.getConsoleSender().sendMessage(PREFIX_WARN + getPrefix() + ChatAPI.colorify(null, message));
+ }
+
+ public void error(final String message)
+ {
+ Bukkit.getConsoleSender().sendMessage(PREFIX_ERROR + getPrefix() + ChatAPI.colorify(null, message));
+ }
+
+ public void message(final CommandSender recipient, final String... message)
+ {
+ message(recipient, false, message);
+ }
+
+ public void message(final CommandSender recipient, final boolean error, final String... message)
+ {
+ Message m = new Message(recipient, null);
+ if (message.length == 1)
+ m.appendText(getPrefix(error) + message[0]);
+ else
+ {
+ m.appendText(getHeader());
+ m.appendText("&7" + String.join("\n&7", message));
+ }
+ m.send();
+ }
+
+ public String getPrefix()
+ {
+ return getPrefix(false);
+ }
+
+ public String getPrefix(final boolean error)
+ {
+ return "§8[§" + (error ? 'c' : '2') + name + "§8]§7 ";
+ }
+
+ public String getHeader()
+ {
+ return "§2--=[ " + name + " ]=--\n";
+ }
+
+ protected final void setName(final String name)
+ {
+ this.name = name;
+ }
+}