117 lines
4.2 KiB
Java
117 lines
4.2 KiB
Java
package nl.iobyte.themepark;
|
|
|
|
import nl.iobyte.menuapi.MenuAPI;
|
|
import nl.iobyte.themepark.api.ThemeParkAPI;
|
|
import nl.iobyte.themepark.api.config.enums.StorageKey;
|
|
import nl.iobyte.themepark.commands.ThemeParkCommand;
|
|
import nl.iobyte.themepark.listeners.*;
|
|
import nl.iobyte.themepark.logger.ThemeParkLogger;
|
|
import nl.iobyte.themepark.utils.UpdateManager;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.plugin.Plugin;
|
|
import org.bukkit.plugin.PluginManager;
|
|
import org.bukkit.plugin.java.JavaPlugin;
|
|
import java.lang.reflect.Method;
|
|
|
|
public class ThemePark extends JavaPlugin {
|
|
|
|
private static ThemePark instance;
|
|
private final ThemeParkAPI api = new ThemeParkAPI();
|
|
private boolean disabling = false;
|
|
|
|
public void onEnable() {
|
|
instance = this;
|
|
api.enable();
|
|
loadCommands();
|
|
loadListeners();
|
|
loadTrainCarts();
|
|
loadUpdateManager();
|
|
}
|
|
|
|
private void loadCommands() {
|
|
new ThemeParkCommand();
|
|
}
|
|
|
|
private void loadListeners() {
|
|
PluginManager pm = Bukkit.getPluginManager();
|
|
pm.registerEvents(new PlayerListener(), this);
|
|
pm.registerEvents(new RegionListener(), this);
|
|
pm.registerEvents(new AttractionListener(), this);
|
|
pm.registerEvents(new StatusListener(), this);
|
|
pm.registerEvents(new RideCountListener(), this);
|
|
pm.registerEvents(new StatusSignListener(), this);
|
|
pm.registerEvents(new GeneralListener(), this);
|
|
MenuAPI.register(this);
|
|
}
|
|
|
|
private void loadTrainCarts() {
|
|
try {
|
|
Plugin plugin = Bukkit.getPluginManager().getPlugin("Train_Carts");
|
|
if (plugin != null && plugin.isEnabled()) {
|
|
Class<?> clazz = Class.forName("com.bergerkiller.bukkit.tc.signactions.SignAction");
|
|
Class<?> sign = Class.forName("nl.iobyte.themepark.traincarts.RideCountSign");
|
|
Method method = clazz.getMethod("register", clazz);
|
|
method.invoke(clazz, sign.getDeclaredConstructor().newInstance());
|
|
}
|
|
} catch (Exception e) {
|
|
System.out.println("["+getName()+"] Unable to hook into TrainCarts");
|
|
}
|
|
}
|
|
|
|
private void loadUpdateManager() {
|
|
if(!api.getConfigurationManager().getBoolean(StorageKey.UPDATE_CHECK_ENABLED))
|
|
return;
|
|
|
|
UpdateManager manager = new UpdateManager(this, 48648);
|
|
manager.handleResponse((response, version) -> {
|
|
switch (response) {
|
|
case LATEST:
|
|
getLogger().info("You're running the latest version("+version.get()+")");
|
|
break;
|
|
case THIS_NEWER:
|
|
getLogger().info("You're running a newer version("+version.get()+")");
|
|
break;
|
|
case UNAVAILABLE:
|
|
getLogger().info("Unable to check for updates");
|
|
break;
|
|
case FOUND_NEW:
|
|
getLogger().info("Found newer version("+version.get()+")");
|
|
if(!api.getConfigurationManager().getBoolean(StorageKey.UPDATE_DOWNLOAD_ENABLED))
|
|
return;
|
|
|
|
manager.handleDownloadResponse((downloadResponse, fileName) -> {
|
|
switch (downloadResponse) {
|
|
case DONE:
|
|
getLogger().info("Update downloaded! If you restart your server, it will be loaded. Filename: " + fileName);
|
|
break;
|
|
case ERROR:
|
|
getLogger().severe("Something went wrong when trying downloading the latest version.");
|
|
break;
|
|
case UNAVAILABLE:
|
|
getLogger().warning("Unable to download the latest version.");
|
|
break;
|
|
}
|
|
}).runUpdate();
|
|
}
|
|
}).check();
|
|
}
|
|
|
|
public void onDisable() {
|
|
disabling = true;
|
|
api.disable();
|
|
|
|
instance = null;
|
|
}
|
|
|
|
public static ThemePark getInstance() {
|
|
return instance;
|
|
}
|
|
|
|
public ThemeParkAPI getAPI() {
|
|
return api;
|
|
}
|
|
|
|
public boolean isDisabling() {
|
|
return disabling;
|
|
}
|
|
}
|