summaryrefslogtreecommitdiff
path: root/src/main/java/com/redstoner/modules/Module.java
blob: 1c89e157da2df2a4224bca48cc8289050fd17f4a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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);
	}
}