Grasscutter/src/main/java/emu/grasscutter/plugin/Plugin.java

94 lines
2.4 KiB
Java
Raw Normal View History

2022-04-23 09:45:44 +08:00
package emu.grasscutter.plugin;
import emu.grasscutter.Grasscutter;
2022-04-27 09:24:09 +08:00
import emu.grasscutter.plugin.api.ServerHook;
2022-04-23 09:45:44 +08:00
import emu.grasscutter.server.game.GameServer;
2022-04-27 09:24:09 +08:00
import java.io.InputStream;
import java.net.URLClassLoader;
2022-04-23 09:45:44 +08:00
/**
* The base class for all plugins to extend.
*/
public abstract class Plugin {
2022-04-27 09:24:09 +08:00
private final ServerHook server = ServerHook.getInstance();
2022-04-23 13:17:35 +08:00
private PluginIdentifier identifier;
2022-04-27 09:24:09 +08:00
private URLClassLoader classLoader;
2022-04-23 09:45:44 +08:00
/**
2022-04-23 13:17:35 +08:00
* This method is reflected into.
*
* Set plugin variables.
2022-04-23 09:45:44 +08:00
* @param identifier The plugin's identifier.
*/
2022-04-27 09:24:09 +08:00
private void initializePlugin(PluginIdentifier identifier, URLClassLoader classLoader) {
2022-04-23 13:17:35 +08:00
if(this.identifier == null)
this.identifier = identifier;
2022-04-27 09:24:09 +08:00
if(this.classLoader == null)
this.classLoader = classLoader;
2022-04-23 13:17:35 +08:00
else Grasscutter.getLogger().warn(this.identifier.name + " had a reinitialization attempt.");
2022-04-23 09:45:44 +08:00
}
/**
* The plugin's identifier instance.
* @return An instance of {@link PluginIdentifier}.
*/
public final PluginIdentifier getIdentifier(){
return this.identifier;
}
/**
* Get the plugin's name.
*/
public final String getName() {
return this.identifier.name;
}
/**
* Get the plugin's description.
*/
public final String getDescription() {
return this.identifier.description;
}
/**
* Get the plugin's version.
*/
public final String getVersion() {
return this.identifier.version;
}
/**
* Returns the server that initialized the plugin.
* @return A server instance.
*/
public final GameServer getServer() {
2022-04-27 09:24:09 +08:00
return this.server.getGameServer();
}
/**
* Returns an input stream for a resource in the JAR file.
* @param resourceName The name of the resource.
* @return An input stream.
*/
public final InputStream getResource(String resourceName) {
return this.classLoader.getResourceAsStream(resourceName);
}
/**
* Returns the server hook.
* @return A server hook singleton.
*/
public final ServerHook getHandle() {
return this.server;
2022-04-23 09:45:44 +08:00
}
/* Called when the plugin is first loaded. */
public void onLoad() { }
/* Called after (most of) the server enables. */
public void onEnable() { }
/* Called before the server disables. */
public void onDisable() { }
}