diff --git a/pom.xml b/pom.xml index 1ab6a11..dc7a1e9 100644 --- a/pom.xml +++ b/pom.xml @@ -61,7 +61,7 @@ org.spigotmc spigot - 1.14 + 1.14.1 com.songoda diff --git a/src/main/java/com/songoda/ultimaterepairing/UltimateRepairing.java b/src/main/java/com/songoda/ultimaterepairing/UltimateRepairing.java index 45e7f11..67cc0ef 100644 --- a/src/main/java/com/songoda/ultimaterepairing/UltimateRepairing.java +++ b/src/main/java/com/songoda/ultimaterepairing/UltimateRepairing.java @@ -12,13 +12,11 @@ import com.songoda.ultimaterepairing.handlers.ParticleHandler; import com.songoda.ultimaterepairing.handlers.RepairHandler; import com.songoda.ultimaterepairing.hologram.Hologram; import com.songoda.ultimaterepairing.hologram.HologramHolographicDisplays; -import com.songoda.ultimaterepairing.utils.ConfigWrapper; -import com.songoda.ultimaterepairing.utils.Debugger; -import com.songoda.ultimaterepairing.utils.Methods; -import com.songoda.ultimaterepairing.utils.SettingsManager; +import com.songoda.ultimaterepairing.utils.*; import com.songoda.ultimaterepairing.utils.updateModules.LocaleModule; import com.songoda.update.Plugin; import com.songoda.update.SongodaUpdate; +import org.apache.commons.lang.ArrayUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -36,6 +34,8 @@ public final class UltimateRepairing extends JavaPlugin implements Listener { public References references = null; + private ServerVersion serverVersion = ServerVersion.fromPackageName(Bukkit.getServer().getClass().getPackage().getName()); + private Locale locale; private RepairHandler repairHandler; @@ -51,29 +51,10 @@ public final class UltimateRepairing extends JavaPlugin implements Listener { return INSTANCE; } - private boolean checkVersion() { - int workingVersion = 13; - int currentVersion = Integer.parseInt(Bukkit.getServer().getClass() - .getPackage().getName().split("\\.")[3].split("_")[1]); - - if (currentVersion < workingVersion) { - Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> { - Bukkit.getConsoleSender().sendMessage(""); - Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "You installed the 1." + workingVersion + "+ only version of " + this.getDescription().getName() + " on a 1." + currentVersion + " server. Since you are on the wrong version we disabled the plugin for you. Please install correct version to continue using " + this.getDescription().getName() + "."); - Bukkit.getConsoleSender().sendMessage(""); - }, 20L); - return false; - } - return true; - } - @Override public void onEnable() { INSTANCE = this; - // Check to make sure the Bukkit version is compatible. - if (!checkVersion()) return; - console.sendMessage(Methods.formatText("&a=============================")); console.sendMessage(Methods.formatText("&7UltimateRepairing " + this.getDescription().getVersion() + " by &5Brianna <3!")); console.sendMessage(Methods.formatText("&7Action: &aEnabling&7...")); @@ -140,6 +121,22 @@ public final class UltimateRepairing extends JavaPlugin implements Listener { saveToFile(); } + + public ServerVersion getServerVersion() { + return serverVersion; + } + + public boolean isServerVersion(ServerVersion version) { + return serverVersion == version; + } + public boolean isServerVersion(ServerVersion... versions) { + return ArrayUtils.contains(versions, serverVersion); + } + + public boolean isServerVersionAtLeast(ServerVersion version) { + return serverVersion.ordinal() >= version.ordinal(); + } + /* * Saves registered kits to file. */ diff --git a/src/main/java/com/songoda/ultimaterepairing/anvil/editor/Editor.java b/src/main/java/com/songoda/ultimaterepairing/anvil/editor/Editor.java index 44180ba..bb7a2d0 100644 --- a/src/main/java/com/songoda/ultimaterepairing/anvil/editor/Editor.java +++ b/src/main/java/com/songoda/ultimaterepairing/anvil/editor/Editor.java @@ -3,6 +3,7 @@ package com.songoda.ultimaterepairing.anvil.editor; import com.songoda.ultimaterepairing.UltimateRepairing; import com.songoda.ultimaterepairing.anvil.UAnvil; import com.songoda.ultimaterepairing.utils.Methods; +import com.songoda.ultimaterepairing.utils.ServerVersion; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.Block; @@ -58,7 +59,7 @@ public class Editor { inventory.setItem(13, Methods.createButton(Material.BEACON, "&5&lToggle Infinity", anvil.isInfinity() ? "&7Currently: &aEnabled&7." : "&7Currently &cDisabled&7.")); - inventory.setItem(15, Methods.createButton(Material.FIREWORK_ROCKET, "&9&lToggle Particles", anvil.isParticles() ? "&7Currently: &aEnabled&7." : "&7Currently &cDisabled&7.")); + inventory.setItem(15, Methods.createButton(instance.isServerVersionAtLeast(ServerVersion.V1_13) ? Material.FIREWORK_ROCKET : Material.valueOf("FIREWORK"), "&9&lToggle Particles", anvil.isParticles() ? "&7Currently: &aEnabled&7." : "&7Currently &cDisabled&7.")); player.openInventory(inventory); editing.put(player.getUniqueId(), anvil); } diff --git a/src/main/java/com/songoda/ultimaterepairing/events/InventoryListeners.java b/src/main/java/com/songoda/ultimaterepairing/events/InventoryListeners.java index 60e2bc5..4f2d890 100644 --- a/src/main/java/com/songoda/ultimaterepairing/events/InventoryListeners.java +++ b/src/main/java/com/songoda/ultimaterepairing/events/InventoryListeners.java @@ -3,6 +3,7 @@ package com.songoda.ultimaterepairing.events; import com.songoda.ultimaterepairing.UltimateRepairing; import com.songoda.ultimaterepairing.anvil.PlayerAnvilData.RepairType; import com.songoda.ultimaterepairing.utils.Debugger; +import com.songoda.ultimaterepairing.utils.Methods; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -52,7 +53,7 @@ public class InventoryListeners implements Listener { instance.getRepairHandler().finish(false, p); p.closeInventory(); } - } else if (event.getView().getTitle().equals(instance.getLocale().getMessage("interface.repair.title"))) { + } else if (event.getView().getTitle().equals(Methods.formatTitle(instance.getLocale().getMessage("interface.repair.title")))) { event.setCancelled(true); Location loc = instance.getRepairHandler().getDataFor(p).getLocation(); if (event.getSlot() == 11) { diff --git a/src/main/java/com/songoda/ultimaterepairing/handlers/ParticleHandler.java b/src/main/java/com/songoda/ultimaterepairing/handlers/ParticleHandler.java index 1d94a86..571f643 100644 --- a/src/main/java/com/songoda/ultimaterepairing/handlers/ParticleHandler.java +++ b/src/main/java/com/songoda/ultimaterepairing/handlers/ParticleHandler.java @@ -3,7 +3,9 @@ package com.songoda.ultimaterepairing.handlers; import com.songoda.ultimaterepairing.UltimateRepairing; import com.songoda.ultimaterepairing.anvil.UAnvil; import com.songoda.ultimaterepairing.utils.Debugger; +import com.songoda.ultimaterepairing.utils.ServerVersion; import org.bukkit.Bukkit; +import org.bukkit.Effect; import org.bukkit.Location; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.event.Listener; @@ -35,7 +37,11 @@ public class ParticleHandler implements Listener { } Location location = anvil.getLocation(); location.add(.5, 0, .5); - anvil.getWorld().spawnParticle(org.bukkit.Particle.valueOf(type), location, amt, 0.25, 0.25, 0.25); + if (instance.isServerVersionAtLeast(ServerVersion.V1_9)) + anvil.getWorld().spawnParticle(org.bukkit.Particle.valueOf(type), location, amt, 0.25, 0.25, 0.25); + else + anvil.getWorld().playEffect(location, Effect.valueOf(type == "SPELL_WITCH" ? "WITCH_MAGIC" : type), 1, 0); + } } catch (Exception ex) { Debugger.runReport(ex); diff --git a/src/main/java/com/songoda/ultimaterepairing/handlers/RepairHandler.java b/src/main/java/com/songoda/ultimaterepairing/handlers/RepairHandler.java index fc95df7..5f2b3ff 100644 --- a/src/main/java/com/songoda/ultimaterepairing/handlers/RepairHandler.java +++ b/src/main/java/com/songoda/ultimaterepairing/handlers/RepairHandler.java @@ -5,6 +5,7 @@ import com.songoda.ultimaterepairing.anvil.PlayerAnvilData; import com.songoda.ultimaterepairing.anvil.PlayerAnvilData.RepairType; import com.songoda.ultimaterepairing.utils.Debugger; import com.songoda.ultimaterepairing.utils.Methods; +import com.songoda.ultimaterepairing.utils.ServerVersion; import net.milkbowl.vault.economy.Economy; import org.bukkit.*; import org.bukkit.entity.Item; @@ -40,7 +41,7 @@ public class RepairHandler { yesNo(p, getDataFor(p).getType(), getDataFor(p).getToBeRepaired()); return; } - Inventory i = Bukkit.createInventory(null, 27, instance.getLocale().getMessage("interface.repair.title")); + Inventory i = Bukkit.createInventory(null, 27, Methods.formatText(instance.getLocale().getMessage("interface.repair.title"))); int nu = 0; while (nu != 27) { @@ -202,7 +203,7 @@ public class RepairHandler { else if (type == RepairType.ITEM) cost = price + " " + name; - Inventory i = Bukkit.createInventory(null, 27, instance.getLocale().getMessage("interface.yesno.title", cost)); + Inventory i = Bukkit.createInventory(null, 27, Methods.formatTitle(instance.getLocale().getMessage("interface.yesno.title", cost))); int nu = 0; while (nu != 27) { @@ -303,7 +304,7 @@ public class RepairHandler { } else if (typeStr.contains("STONE")) { blockType = Material.STONE; } else if (typeStr.contains("WOOD")) { - blockType = Material.OAK_PLANKS; + blockType = instance.isServerVersionAtLeast(ServerVersion.V1_13) ? Material.OAK_PLANKS : Material.valueOf("WOOD"); } final Material blockTypeFinal = blockType; diff --git a/src/main/java/com/songoda/ultimaterepairing/utils/Methods.java b/src/main/java/com/songoda/ultimaterepairing/utils/Methods.java index e866133..c7926e4 100644 --- a/src/main/java/com/songoda/ultimaterepairing/utils/Methods.java +++ b/src/main/java/com/songoda/ultimaterepairing/utils/Methods.java @@ -19,35 +19,27 @@ import java.util.*; public class Methods { public static ItemStack getGlass() { - try { - UltimateRepairing instance = UltimateRepairing.getInstance(); - return Methods.getGlass(instance.getConfig().getBoolean("Interfaces.Replace Glass Type 1 With Rainbow Glass"), instance.getConfig().getInt("Interfaces.Glass Type 1")); - } catch (Exception e) { - Debugger.runReport(e); - } - return null; + UltimateRepairing instance = UltimateRepairing.getInstance(); + return Methods.getGlass(instance.getConfig().getBoolean("Interfaces.Replace Glass Type 1 With Rainbow Glass"), instance.getConfig().getInt("Interfaces.Glass Type 1")); } public static ItemStack getBackgroundGlass(boolean type) { - try { - UltimateRepairing instance = UltimateRepairing.getInstance(); - if (type) - return getGlass(false, instance.getConfig().getInt("Interfaces.Glass Type 2")); - else - return getGlass(false, instance.getConfig().getInt("Interfaces.Glass Type 3")); - } catch (Exception e) { - Debugger.runReport(e); - } - return null; + UltimateRepairing instance = UltimateRepairing.getInstance(); + if (type) + return getGlass(false, instance.getConfig().getInt("Interfaces.Glass Type 2")); + else + return getGlass(false, instance.getConfig().getInt("Interfaces.Glass Type 3")); } private static ItemStack getGlass(Boolean rainbow, int type) { int randomNum = 1 + (int) (Math.random() * 6); ItemStack glass; if (rainbow) { - glass = new ItemStack(Material.LEGACY_STAINED_GLASS_PANE, 1, (short) randomNum); + glass = new ItemStack(UltimateRepairing.getInstance().isServerVersionAtLeast(ServerVersion.V1_13) ? + Material.LEGACY_STAINED_GLASS_PANE : Material.valueOf("STAINED_GLASS_PANE"), 1, (short) randomNum); } else { - glass = new ItemStack(Material.LEGACY_STAINED_GLASS_PANE, 1, (short) type); + glass = new ItemStack(UltimateRepairing.getInstance().isServerVersionAtLeast(ServerVersion.V1_13) ? + Material.LEGACY_STAINED_GLASS_PANE : Material.valueOf("STAINED_GLASS_PANE"), 1, (short) type); } ItemMeta glassmeta = glass.getItemMeta(); glassmeta.setDisplayName("§l"); @@ -244,6 +236,19 @@ public class Methods { return location; } + + + public static String formatTitle(String text) { + if (text == null || text.equals("")) + return ""; + if (!UltimateRepairing.getInstance().isServerVersionAtLeast(ServerVersion.V1_9)) { + if (text.length() > 31) + text = text.substring(0, 29) + "..."; + } + text = formatText(text); + return text; + } + public static String formatText(String text) { if (text == null || text.equals("")) return ""; diff --git a/src/main/java/com/songoda/ultimaterepairing/utils/ServerVersion.java b/src/main/java/com/songoda/ultimaterepairing/utils/ServerVersion.java new file mode 100644 index 0000000..595b306 --- /dev/null +++ b/src/main/java/com/songoda/ultimaterepairing/utils/ServerVersion.java @@ -0,0 +1,27 @@ +package com.songoda.ultimaterepairing.utils; + +public enum ServerVersion { + + UNKNOWN("unknown_server_version"), + V1_7("org.bukkit.craftbukkit.v1_7"), + V1_8("org.bukkit.craftbukkit.v1_8"), + V1_9("org.bukkit.craftbukkit.v1_9"), + V1_10("org.bukkit.craftbukkit.v1_10"), + V1_11("org.bukkit.craftbukkit.v1_11"), + V1_12("org.bukkit.craftbukkit.v1_12"), + V1_13("org.bukkit.craftbukkit.v1_13"), + V1_14("org.bukkit.craftbukkit.v1_14"); + + + private final String packagePrefix; + + private ServerVersion(String packagePrefix) { + this.packagePrefix = packagePrefix; + } + + public static ServerVersion fromPackageName(String packageName) { + for (ServerVersion version : values()) + if (packageName.startsWith(version.packagePrefix)) return version; + return ServerVersion.UNKNOWN; + } +} \ No newline at end of file diff --git a/src/main/java/com/songoda/ultimaterepairing/utils/SettingsManager.java b/src/main/java/com/songoda/ultimaterepairing/utils/SettingsManager.java index fd2a184..3e50e04 100644 --- a/src/main/java/com/songoda/ultimaterepairing/utils/SettingsManager.java +++ b/src/main/java/com/songoda/ultimaterepairing/utils/SettingsManager.java @@ -23,8 +23,8 @@ import java.util.regex.Pattern; */ public class SettingsManager implements Listener { + private static final Pattern SETTINGS_PATTERN = Pattern.compile("(.{1,28}(?:\\s|$))|(.{0,28})", Pattern.DOTALL); - private static ConfigWrapper defs; private final UltimateRepairing instance; private String pluginName = "UltimateRepairing"; private Map cat = new HashMap<>(); @@ -32,10 +32,6 @@ public class SettingsManager implements Listener { public SettingsManager(UltimateRepairing plugin) { this.instance = plugin; - - plugin.saveResource("SettingDefinitions.yml", true); - defs = new ConfigWrapper(plugin, "", "SettingDefinitions.yml"); - defs.createNewFile("Loading data file", pluginName + " SettingDefinitions file"); Bukkit.getPluginManager().registerEvents(this, plugin); } @@ -49,14 +45,14 @@ public class SettingsManager implements Listener { return; } - if (event.getView().getTitle().equals(pluginName + " Settings Manager")) { + if (event.getView().getTitle().equals(Methods.formatTitle(pluginName + " Settings Manager"))) { event.setCancelled(true); if (clickedItem.getType().name().contains("STAINED_GLASS")) return; String type = ChatColor.stripColor(clickedItem.getItemMeta().getDisplayName()); this.cat.put((Player) event.getWhoClicked(), type); this.openEditor((Player) event.getWhoClicked()); - } else if (event.getView().getTitle().equals(pluginName + " Settings Editor")) { + } else if (event.getView().getTitle().equals(Methods.formatTitle(pluginName + " Settings Editor"))) { event.setCancelled(true); if (clickedItem.getType().name().contains("STAINED_GLASS")) return; @@ -88,20 +84,19 @@ public class SettingsManager implements Listener { config.set(value, event.getMessage()); } - Bukkit.getScheduler().scheduleSyncDelayedTask(UltimateRepairing.getInstance(), () -> + Bukkit.getScheduler().scheduleSyncDelayedTask(instance, () -> this.finishEditing(player), 0L); event.setCancelled(true); } - public void finishEditing(Player player) { + private void finishEditing(Player player) { this.current.remove(player); this.instance.saveConfig(); this.openEditor(player); } - - public void editObject(Player player, String current) { + private void editObject(Player player, String current) { this.current.put(player, ChatColor.stripColor(current)); player.closeInventory(); @@ -114,7 +109,7 @@ public class SettingsManager implements Listener { } public void openSettingsManager(Player player) { - Inventory inventory = Bukkit.createInventory(null, 27, pluginName + " Settings Manager"); + Inventory inventory = Bukkit.createInventory(null, 27, Methods.formatTitle(pluginName + " Settings Manager")); ItemStack glass = Methods.getGlass(); for (int i = 0; i < inventory.getSize(); i++) { inventory.setItem(i, glass); @@ -122,7 +117,7 @@ public class SettingsManager implements Listener { int slot = 10; for (String key : instance.getConfig().getDefaultSection().getKeys(false)) { - ItemStack item = new ItemStack(Material.WHITE_WOOL, 1, (byte) (slot - 9)); //ToDo: Make this function as it was meant to. + ItemStack item = new ItemStack(instance.isServerVersionAtLeast(ServerVersion.V1_13) ? Material.WHITE_WOOL : Material.valueOf("WOOL"), 1, (byte) (slot - 9)); //ToDo: Make this function as it was meant to. ItemMeta meta = item.getItemMeta(); meta.setLore(Collections.singletonList(Methods.formatText("&6Click To Edit This Category."))); meta.setDisplayName(Methods.formatText("&f&l" + key)); @@ -134,8 +129,8 @@ public class SettingsManager implements Listener { player.openInventory(inventory); } - public void openEditor(Player player) { - Inventory inventory = Bukkit.createInventory(null, 54, pluginName + " Settings Editor"); + private void openEditor(Player player) { + Inventory inventory = Bukkit.createInventory(null, 54, Methods.formatTitle(pluginName + " Settings Editor")); FileConfiguration config = instance.getConfig(); int slot = 0; @@ -153,20 +148,10 @@ public class SettingsManager implements Listener { item.setType(Material.PAPER); lore.add(Methods.formatText("&9" + config.getString(fKey))); } else if (config.isInt(fKey)) { - item.setType(Material.CLOCK); + item.setType(instance.isServerVersionAtLeast(ServerVersion.V1_13) ? Material.CLOCK : Material.valueOf("WATCH")); lore.add(Methods.formatText("&5" + config.getInt(fKey))); } - if (defs.getConfig().contains(fKey)) { - String text = defs.getConfig().getString(key); - - Matcher m = SETTINGS_PATTERN.matcher(text); - while (m.find()) { - if (m.end() != text.length() || m.group().length() != 0) - lore.add(Methods.formatText("&7" + m.group())); - } - } - meta.setLore(lore); item.setItemMeta(meta); @@ -181,12 +166,7 @@ public class SettingsManager implements Listener { FileConfiguration config = instance.getConfig(); for (Setting setting : Setting.values()) { - if (config.contains("settings." + setting.oldSetting)) { - config.addDefault(setting.setting, instance.getConfig().get("settings." + setting.oldSetting)); - config.set("settings." + setting.oldSetting, null); - } else { - config.addDefault(setting.setting, setting.option); - } + config.addDefault(setting.setting, setting.option); } }