mirror of
https://github.com/EpicEricEE/ShopChest.git
synced 2024-11-28 21:45:47 +01:00
Unregister command on disable
This commit is contained in:
parent
b55e9f2c4f
commit
7c0da7c212
@ -5,12 +5,15 @@ import java.io.InputStreamReader;
|
||||
import java.lang.reflect.Field;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandMap;
|
||||
import org.bukkit.command.SimpleCommandMap;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||
|
||||
@ -47,7 +50,7 @@ public class ShopChestImpl extends ShopChest {
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
if (!loadConfig()) {
|
||||
if (!loadConfigData()) {
|
||||
getServer().getPluginManager().disablePlugin(this);
|
||||
return;
|
||||
}
|
||||
@ -69,26 +72,14 @@ public class ShopChestImpl extends ShopChest {
|
||||
|
||||
@Override
|
||||
public void onDisable() {
|
||||
if (configManager != null) {
|
||||
try {
|
||||
configManager.save();
|
||||
} catch (IOException e) {
|
||||
Logger.severe("Failed to save configuration file. Config may have been lost");
|
||||
Logger.severe(e);
|
||||
}
|
||||
}
|
||||
|
||||
if (database != null) {
|
||||
if (database instanceof SQLite) {
|
||||
((SQLite) database).vacuum();
|
||||
}
|
||||
database.disconnect();
|
||||
}
|
||||
unregisterCommand();
|
||||
saveConfigData();
|
||||
unloadDatabase();
|
||||
|
||||
getShopManager().getShops().forEach(shop -> ((ShopImpl) shop).destroy());
|
||||
}
|
||||
|
||||
private boolean loadConfig() {
|
||||
private boolean loadConfigData() {
|
||||
configManager = ConfigManager.get(this);
|
||||
|
||||
try {
|
||||
@ -102,6 +93,17 @@ public class ShopChestImpl extends ShopChest {
|
||||
return true;
|
||||
}
|
||||
|
||||
private void saveConfigData() {
|
||||
if (configManager != null) {
|
||||
try {
|
||||
configManager.save();
|
||||
} catch (IOException e) {
|
||||
Logger.severe("Failed to save configuration file. Config may have been lost");
|
||||
Logger.severe(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean loadEconomy() {
|
||||
RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
|
||||
if (rsp == null) {
|
||||
@ -138,6 +140,29 @@ public class ShopChestImpl extends ShopChest {
|
||||
}
|
||||
}
|
||||
|
||||
private void unregisterCommand() {
|
||||
try {
|
||||
Command pluginCommand = ((ShopCommandImpl) command).getPluginCommand();
|
||||
Field fieldCommandMap = getServer() .getClass().getDeclaredField("commandMap");
|
||||
fieldCommandMap.setAccessible(true);
|
||||
|
||||
CommandMap commandMap = (CommandMap) fieldCommandMap.get(getServer());
|
||||
pluginCommand.unregister(commandMap);
|
||||
|
||||
Field fieldKnownCommands = SimpleCommandMap.class.getDeclaredField("knownCommands");
|
||||
fieldKnownCommands.setAccessible(true);
|
||||
|
||||
Map<?, ?> knownCommands = (Map<?, ?>) fieldKnownCommands.get(commandMap);
|
||||
knownCommands.remove("shopchest:" + command.getName());
|
||||
if (pluginCommand.equals(knownCommands.get(command.getName()))) {
|
||||
knownCommands.remove(command.getName());
|
||||
}
|
||||
} catch (ReflectiveOperationException e) {
|
||||
Logger.severe("Failed to unregister shop command");
|
||||
Logger.severe(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void loadDatabase() {
|
||||
if (Config.DATABASE_TYPE.get() == DatabaseType.SQLITE) {
|
||||
database = new SQLite(this);
|
||||
@ -157,6 +182,15 @@ public class ShopChestImpl extends ShopChest {
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
private void unloadDatabase() {
|
||||
if (database != null) {
|
||||
if (database instanceof SQLite) {
|
||||
((SQLite) database).vacuum();
|
||||
}
|
||||
database.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
private void checkForUpdates() {
|
||||
if (!Config.CORE_ENABLE_UPDATE_CHECKER.get()) {
|
||||
|
@ -2,6 +2,7 @@ package de.epiceric.shopchest.command;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
@ -29,7 +30,7 @@ public class ShopCommandImpl extends ShopCommand {
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return Config.CORE_MAIN_COMMAND_NAME.get();
|
||||
return Config.CORE_MAIN_COMMAND_NAME.get().toLowerCase(Locale.ENGLISH).trim();
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user