update to 2.0.0
This commit is contained in:
@@ -1,32 +1,40 @@
|
||||
package xanadu.enderdragon;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.configuration.InvalidConfigurationException;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import xanadu.enderdragon.commands.MainCommand;
|
||||
import xanadu.enderdragon.commands.TabCompleter;
|
||||
import xanadu.enderdragon.events.*;
|
||||
import xanadu.enderdragon.lang.Message;
|
||||
import xanadu.enderdragon.listeners.InventoryClick;
|
||||
import xanadu.enderdragon.config.Config;
|
||||
import xanadu.enderdragon.gui.GUIHolder;
|
||||
import xanadu.enderdragon.config.Lang;
|
||||
import xanadu.enderdragon.listeners.*;
|
||||
import xanadu.enderdragon.listeners.mmoitems.MMOPlayerAttackListener;
|
||||
import xanadu.enderdragon.listeners.mythiclib.PlayerAttackListener;
|
||||
import xanadu.enderdragon.manager.DragonManager;
|
||||
import xanadu.enderdragon.manager.GuiManager;
|
||||
import xanadu.enderdragon.manager.TaskManager;
|
||||
import xanadu.enderdragon.metrics.Metrics;
|
||||
import xanadu.enderdragon.task.RespawnDragonRunnable;
|
||||
import xanadu.enderdragon.utils.Version;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.Objects;
|
||||
|
||||
import static xanadu.enderdragon.config.Lang.*;
|
||||
import static xanadu.enderdragon.manager.GuiManager.loadGui;
|
||||
import static xanadu.enderdragon.utils.Updater.checkUpdate;
|
||||
|
||||
public final class EnderDragon extends JavaPlugin {
|
||||
|
||||
public static String prefix = "";
|
||||
public static String language = "";
|
||||
public static String langPath = "";
|
||||
private static EnderDragon instance;
|
||||
public static Plugin plugin;
|
||||
public static Server server;
|
||||
public static PluginManager pm;
|
||||
@@ -36,127 +44,149 @@ public final class EnderDragon extends JavaPlugin {
|
||||
public static FileConfiguration lang;
|
||||
public static int mcMainVersion;
|
||||
public static int mcPatchVersion;
|
||||
|
||||
private DragonManager dragonManager;
|
||||
private static boolean finish;
|
||||
@Override
|
||||
public void onEnable() {
|
||||
finish = false;
|
||||
info("Enabling plugin...");
|
||||
info("Author: Xanadu13");
|
||||
plugin = this;
|
||||
instance = this;
|
||||
dragonManager = new DragonManager();
|
||||
server = plugin.getServer();
|
||||
pm = Bukkit.getPluginManager();
|
||||
mcMainVersion = getMinecraftVersion();
|
||||
boolean configNotFound = false;
|
||||
boolean dataNotFound = false;
|
||||
if (!new File(getDataFolder(), "config.yml").exists()) {
|
||||
saveDefaultConfig();
|
||||
configNotFound = true;
|
||||
registerEvents();
|
||||
registerCommands();
|
||||
Metrics metrics = new Metrics(this,14850);
|
||||
reloadAll();
|
||||
Version.init();
|
||||
checkUpdate();
|
||||
if(!Lang.version.equals("2.0.0")){
|
||||
warn(Lang.plugin_wrong_file_version.replace("{file_name}",Config.lang + ".yml"));
|
||||
}
|
||||
if(!Config.version.equals("2.0.0")){
|
||||
warn(Lang.plugin_wrong_file_version.replace("{file_name}","config.yml"));
|
||||
}
|
||||
if(!"2.0.0".equals(data.getString("version"))){
|
||||
warn(Lang.plugin_wrong_file_version.replace("{file_name}","data.yml"));
|
||||
}
|
||||
finish = true;
|
||||
}
|
||||
public static void reloadAll(){
|
||||
EnderDragon.getInstance().loadFiles();
|
||||
BukkitRunnable runnable = new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if(!TaskManager.getCurrentTimeWithSpecialFormat().endsWith("0")) return;
|
||||
this.cancel();
|
||||
RespawnDragonRunnable.reload();
|
||||
}
|
||||
};
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!finish) return;
|
||||
this.cancel();
|
||||
DragonManager.reload();
|
||||
loadGui();
|
||||
if(Config.auto_respawn_enable){
|
||||
TaskManager.reload();
|
||||
runnable.runTaskTimer(plugin,0,1);
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(plugin, 1, 5);
|
||||
}
|
||||
public static void disableAll(){
|
||||
closeAllInventory();
|
||||
Bukkit.getScheduler().cancelTasks(plugin);
|
||||
DragonManager.disable();
|
||||
GuiManager.disable();
|
||||
instance.unregisterCommands();
|
||||
HandlerList.unregisterAll(plugin);
|
||||
server.getScheduler().cancelTasks(plugin);
|
||||
server.getServicesManager().unregisterAll(plugin);
|
||||
warn(Lang.plugin_disable);
|
||||
System.gc();
|
||||
}
|
||||
private void registerEvents(){
|
||||
pm.registerEvents(new CreatureSpawnListener(),this);
|
||||
pm.registerEvents(new DragonDamageByPlayerListener(),this);
|
||||
pm.registerEvents(new DragonDeathListener(),this);
|
||||
pm.registerEvents(new DragonHealListener(),this);
|
||||
pm.registerEvents(new EntityDamageByEntityListener(),this);
|
||||
pm.registerEvents(new InventoryListener(),this);
|
||||
pm.registerEvents(new PluginDisableListener(),this);
|
||||
if(pm.getPlugin("MythicLib") != null){
|
||||
info("Hooking to MythicLib...");
|
||||
pm.registerEvents(new PlayerAttackListener(),this);
|
||||
}
|
||||
else{
|
||||
pm.registerEvents(new DragonBaseHurtListener(),this);
|
||||
}
|
||||
if(pm.getPlugin("MMOItems") != null){
|
||||
info("Hooking to MMOItems...");
|
||||
pm.registerEvents(new MMOPlayerAttackListener(),this);
|
||||
}
|
||||
}
|
||||
private void registerCommands(){
|
||||
Objects.requireNonNull(getCommand("enderdragon")).setExecutor(new MainCommand());
|
||||
Objects.requireNonNull(getCommand("enderdragon")).setTabCompleter(new TabCompleter());
|
||||
}
|
||||
private void unregisterCommands(){
|
||||
Objects.requireNonNull(getCommand("enderdragon")).setExecutor(null);
|
||||
Objects.requireNonNull(getCommand("enderdragon")).setTabCompleter(null);
|
||||
}
|
||||
private void loadFiles(){
|
||||
saveDefaultConfig();
|
||||
reloadConfig();
|
||||
Config.reload(getConfig());
|
||||
if (!new File(getDataFolder(), "data.yml").exists()) {
|
||||
this.saveResource("data.yml",false);
|
||||
dataNotFound = true;
|
||||
}
|
||||
language = plugin.getConfig().getString("lang","English");
|
||||
langPath = "lang/" + language + ".yml";
|
||||
dataF = new File(getDataFolder(),"data.yml");
|
||||
data = YamlConfiguration.loadConfiguration(dataF);
|
||||
if(Config.lang.equals("")) {
|
||||
error("Key \"lang\" in config is missing, please check your config.yml.");
|
||||
Config.lang = "English";
|
||||
}
|
||||
String langPath = "lang/" + Config.lang + ".yml";
|
||||
if (!new File(getDataFolder(), langPath).exists()) {
|
||||
this.saveResource(langPath, false);
|
||||
}
|
||||
sendMessage("§a[EnderDragon] Language: §6" + language);
|
||||
dataF = new File(plugin.getDataFolder(),"data.yml");
|
||||
langF = new File(getDataFolder(), langPath);
|
||||
lang = YamlConfiguration.loadConfiguration(langF);
|
||||
data = YamlConfiguration.loadConfiguration(dataF);
|
||||
Message.loadLanguage();
|
||||
prefix = lang.getString("prefix","§7[§eEnderDragon§7]§r ");
|
||||
if(configNotFound){sendMessage(Message.configNotFound);}
|
||||
if(dataNotFound){sendMessage(Message.dataNotFound);}
|
||||
if(!getConfig().getString("version").equals("1.8.3") ){
|
||||
sendMessage(Message.configWrongVersion);
|
||||
}
|
||||
if(!data.getString("version").equals("1.8.4") ){
|
||||
sendMessage(Message.dataWrongVersion);
|
||||
}
|
||||
if(!lang.getString("version").equals("1.8.3") ){
|
||||
sendMessage(Message.langWrongVersion);
|
||||
}
|
||||
sendMessage(Message.loaded);
|
||||
sendMessage("§a[EnderDragon] Author: Xanadu13");
|
||||
pm.registerEvents(new CreatureHurt(),this);
|
||||
pm.registerEvents(new DragonAttack(),this);
|
||||
pm.registerEvents(new DragonDeath(),this);
|
||||
pm.registerEvents(new DragonHeal(),this);
|
||||
pm.registerEvents(new DragonSpawn(),this);
|
||||
pm.registerEvents(new InventoryClick(),this);
|
||||
getCommand("enderdragon").setExecutor(new MainCommand());
|
||||
getCommand("enderdragon").setTabCompleter(new TabCompleter());
|
||||
Metrics metrics = new Metrics(this,14850);
|
||||
sendMessage(Message.checkingUpdate);
|
||||
try {
|
||||
URLConnection conn = new URL("https://api.github.com/repos/iXanadu13/EnderDragon/releases/latest").openConnection();
|
||||
conn.setConnectTimeout(20000);
|
||||
conn.setReadTimeout(60000);
|
||||
InputStream is = conn.getInputStream();
|
||||
String line = new BufferedReader(new InputStreamReader(is)).readLine();
|
||||
is.close();
|
||||
String newVer = line.substring(line.indexOf("\"tag_name\"") + 13, line.indexOf("\"target_commitish\"") - 2);
|
||||
String localVer = plugin.getDescription().getVersion();
|
||||
if (!localVer.equals(newVer)) {
|
||||
sendMessage(Message.OutOfDate1.replace("{0}",localVer));
|
||||
sendMessage(Message.OutOfDate2.replace("{1}",newVer));
|
||||
sendMessage(Message.OutOfDate3);
|
||||
}
|
||||
else{
|
||||
sendMessage(Message.UpToDate.replace("{1}",newVer));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
info("Language: §6" + Config.lang);
|
||||
Lang.reload(lang);
|
||||
if (!new File(plugin.getDataFolder(), "gui/view.yml").exists()) {
|
||||
plugin.saveResource("gui/view.yml",false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisable()
|
||||
{
|
||||
sendMessage(Message.onDisable);
|
||||
}
|
||||
|
||||
|
||||
public void sendMessage(String msg) {
|
||||
Bukkit.getConsoleSender().sendMessage(msg);
|
||||
}
|
||||
|
||||
|
||||
public static String itemStackToString(ItemStack itemStack) {
|
||||
YamlConfiguration yml = new YamlConfiguration();
|
||||
yml.set("item", itemStack);
|
||||
return yml.saveToString();
|
||||
}
|
||||
public static ItemStack StringToItemStack(String str) {
|
||||
YamlConfiguration yml = new YamlConfiguration();
|
||||
ItemStack item;
|
||||
try {
|
||||
yml.loadFromString(str);
|
||||
item = yml.getItemStack("item");
|
||||
} catch (InvalidConfigurationException ex) {
|
||||
item = new ItemStack(Material.AIR, 1);
|
||||
}
|
||||
return item;
|
||||
}
|
||||
public static EnderDragon getInstance() {return instance;}
|
||||
private int getMinecraftVersion() {
|
||||
String[] version = getServer().getBukkitVersion().replace('-', '.').split("\\.");
|
||||
try {
|
||||
mcPatchVersion = Integer.parseInt(version[2]);
|
||||
} catch (NumberFormatException ignored) {
|
||||
}
|
||||
} catch (NumberFormatException ignored) {}
|
||||
return Integer.parseInt(version[1]);
|
||||
}
|
||||
public static boolean isSpecial(Entity e){
|
||||
if(mcMainVersion >= 11){
|
||||
return e.getScoreboardTags().contains("special");
|
||||
}
|
||||
else{
|
||||
String uuid = e.getUniqueId().toString();
|
||||
return data.getStringList("special").contains(uuid);
|
||||
public static void closeAllInventory() {
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
try {
|
||||
Inventory inventory = player.getOpenInventory().getTopInventory();
|
||||
if (!(inventory.getHolder() instanceof GUIHolder)) continue;
|
||||
player.closeInventory();
|
||||
}
|
||||
catch (Exception ignored) {}
|
||||
}
|
||||
}
|
||||
|
||||
public DragonManager getDragonManager(){
|
||||
return dragonManager;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user