Late loading/unloading of conflicting/depended plugins now disables the related modules
The opposite (if dependency are fixed again) is not implemented. A full server reload is required to re-enable the modules. (A reload with PluginManager works to, but is not recommended)
This commit is contained in:
parent
467653891f
commit
7be648f552
2 changed files with 53 additions and 0 deletions
|
@ -0,0 +1,51 @@
|
|||
package de.jaschastarke.minecraft.limitedcreative;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.server.PluginDisableEvent;
|
||||
import org.bukkit.event.server.PluginEnableEvent;
|
||||
|
||||
import de.jaschastarke.modularize.ModuleEntry.ModuleState;
|
||||
|
||||
/**
|
||||
* @Todo may be abstract to some per-module-definitions that are checked onEnabled and here automaticly
|
||||
*/
|
||||
public class DependencyListener implements Listener {
|
||||
private LimitedCreative plugin;
|
||||
|
||||
public DependencyListener(LimitedCreative plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPluginLoaded(PluginEnableEvent event) {
|
||||
ModInventories mod = plugin.getModule(ModInventories.class);
|
||||
if (mod != null && mod.getModuleEntry().getState() == ModuleState.ENABLED) {
|
||||
String incomp = Hooks.InventoryIncompatible.test();
|
||||
if (incomp != null) {
|
||||
mod.getLog().warn(plugin.getLocale().trans("inventory.warning.conflict", incomp, mod.getName()));
|
||||
mod.getModuleEntry().initialState = ModuleState.NOT_INITIALIZED;
|
||||
mod.getModuleEntry().disable();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPluginUnloaded(PluginDisableEvent event) {
|
||||
if (event.getPlugin().getName().equals("Vault")) {
|
||||
ModGameModePerm mod = plugin.getModule(ModGameModePerm.class);
|
||||
if (mod != null && mod.getModuleEntry().getState() == ModuleState.ENABLED) {
|
||||
mod.getLog().warn(plugin.getLocale().trans("gmperm.warning.vault_not_found", mod.getName()));
|
||||
mod.getModuleEntry().initialState = ModuleState.NOT_INITIALIZED;
|
||||
mod.getModuleEntry().disable();
|
||||
}
|
||||
} else if (event.getPlugin().getName().equals("WorldGuard")) {
|
||||
ModRegions mod = plugin.getModule(ModRegions.class);
|
||||
if (mod != null && mod.getModuleEntry().getState() == ModuleState.ENABLED) {
|
||||
mod.getLog().warn(plugin.getLocale().trans("region.warning.worldguard_not_found", mod.getName()));
|
||||
mod.getModuleEntry().initialState = ModuleState.NOT_INITIALIZED;
|
||||
mod.getModuleEntry().disable();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -32,6 +32,8 @@ public class LimitedCreative extends Core {
|
|||
addModule(new ModGameModePerm(this));
|
||||
addModule(new FeatureMetrics(this));
|
||||
|
||||
listeners.addListener(new DependencyListener(this));
|
||||
|
||||
config.setModuleStates();
|
||||
config.saveDefault();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue