2021-05-02 18:14:20 +02:00

115 lines
3.1 KiB
Java

package dev.w1zzrd.invtweaks;
import dev.w1zzrd.invtweaks.command.MagnetCommandExecutor;
import dev.w1zzrd.invtweaks.command.SortCommandExecutor;
import dev.w1zzrd.invtweaks.config.MagnetConfig;
import dev.w1zzrd.invtweaks.listener.SortListener;
import dev.w1zzrd.invtweaks.listener.StackReplaceListener;
import org.bukkit.Bukkit;
import org.bukkit.configuration.serialization.ConfigurationSerialization;
import org.bukkit.event.HandlerList;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.Objects;
import java.util.logging.Logger;
/**
* Main plugin class
*/
public final class InvTweaksPlugin extends JavaPlugin {
/**
* Plugin logging tag. This should be prepended to any log messages sent by this plugin
*/
public static final String LOG_PLUGIN_NAME = "[InventoryTweaks]";
private final Logger logger = Bukkit.getLogger();
// Command executor references in case I need them or something idk
private SortCommandExecutor sortCommandExecutor;
private MagnetCommandExecutor magnetCommandExecutor;
@Override
public void onEnable() {
logger.fine(LOG_PLUGIN_NAME + " Plugin enabled");
registerSerializers();
getConfig().options().copyDefaults(true);
saveConfig();
initCommands();
initEvents();
}
@Override
public void onDisable() {
logger.fine(LOG_PLUGIN_NAME + " Plugin disabled");
disableEvents();
disableCommands();
saveConfig();
unregisterSerializers();
}
@Override
public void reloadConfig() {
super.reloadConfig();
getConfig().options().copyDefaults(true);
if (magnetCommandExecutor != null)
magnetCommandExecutor.reloadConfig();
}
/**
* Initialize commands registered by this plugin
*/
private void initCommands() {
sortCommandExecutor = new SortCommandExecutor();
magnetCommandExecutor = new MagnetCommandExecutor(this);
// TODO: Bind command by annotation
Objects.requireNonNull(getCommand("sort")).setExecutor(sortCommandExecutor);
Objects.requireNonNull(getCommand("magnet")).setExecutor(magnetCommandExecutor);
}
/**
* Initialize event listeners for this plugin
*/
private void initEvents() {
final PluginManager pluginManager = getServer().getPluginManager();
pluginManager.registerEvents(new StackReplaceListener(), this);
pluginManager.registerEvents(new SortListener(), this);
}
/**
* Do whatever is necessary to disable commands and their execution
*/
private void disableCommands() {
sortCommandExecutor = null;
magnetCommandExecutor = null;
}
/**
* Do whatever is necessary to disable event listeners
*/
private void disableEvents() {
// Un-register all listeners
HandlerList.unregisterAll(this);
}
private void registerSerializers() {
ConfigurationSerialization.registerClass(MagnetConfig.class);
}
private void unregisterSerializers() {
ConfigurationSerialization.unregisterClass(MagnetConfig.class);
}
}