3
0
Fork 0
This repository has been archived on 2024-11-14. You can view files and clone it, but cannot push or open issues or pull requests.
ThemePark/src/main/java/nl/iobyte/themepark/ThemePark.java
thomas 584b2e738c Added custom command to syntax messages
Added different total types for ridecount
Implemented update manager
2021-08-09 12:32:11 +02:00

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;
}
}