Make plugin disable hack more conservative

This commit is contained in:
fullwall 2021-07-21 18:51:04 +08:00
parent cfa4b5fc59
commit 9904e034fd
2 changed files with 9 additions and 3 deletions

View File

@ -80,6 +80,7 @@ public class Citizens extends JavaPlugin implements CitizensPlugin {
private Settings config;
private boolean enabled;
private CitizensNPCRegistry npcRegistry;
private boolean saveOnDisable = true;
private NPCDataStore saves;
private NPCSelector selector;
private final SkullMetaProvider skullMetaProvider = new SkullMetaProvider() {
@ -99,7 +100,6 @@ public class Citizens extends JavaPlugin implements CitizensPlugin {
};
private CitizensSpeechFactory speechFactory;
private final Map<String, NPCRegistry> storedRegistries = Maps.newHashMap();
private CitizensTraitFactory traitFactory;
@Override
@ -283,11 +283,12 @@ public class Citizens extends JavaPlugin implements CitizensPlugin {
return;
Bukkit.getPluginManager().callEvent(new CitizensDisableEvent());
Editor.leaveAll();
despawnNPCs(true);
despawnNPCs(saveOnDisable);
HandlerList.unregisterAll(this);
npcRegistry = null;
NMS.shutdown();
enabled = false;
saveOnDisable = true;
CitizensAPI.shutdown();
}
@ -350,6 +351,11 @@ public class Citizens extends JavaPlugin implements CitizensPlugin {
Bukkit.getPluginManager().disablePlugin(this);
}
public void onDependentPluginDisable() {
storeNPCs();
saveOnDisable = false;
}
public void registerCommandClass(Class<?> clazz) {
try {
commands.register(clazz);

View File

@ -570,7 +570,7 @@ public class EventListen implements Listener {
PluginDescriptionFile file = event.getPlugin().getDescription();
for (String plugin : Iterables.concat(file.getDepend(), file.getSoftDepend())) {
if (plugin.equalsIgnoreCase("citizens") && CitizensAPI.hasImplementation()) {
CitizensAPI.getPlugin().onDisable();
((Citizens) CitizensAPI.getPlugin()).onDependentPluginDisable();
break;
}
}