diff --git a/.gitignore b/.gitignore index 78f093c..11b2ff8 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,6 @@ gradle-app.setting # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) !gradle-wrapper.jar -out/ \ No newline at end of file +out/ + +spigot/ \ No newline at end of file diff --git a/build.gradle b/build.gradle index d5f9d0e..17121fe 100644 --- a/build.gradle +++ b/build.gradle @@ -1,11 +1,10 @@ plugins { id 'java' id "io.freefair.lombok" version "4.1.6" - id 'maven' } group 'sh.okx' -version '3.6' +version '3.6.2' repositories { mavenCentral() @@ -22,40 +21,51 @@ repositories { maven { url 'https://raw.github.com/PyvesB/AdvancedAchievements/mvn-repo/' } + // for plugins without repos, namely mcmmo, votingplugin, and towny maven { url 'https://jitpack.io' } } dependencies { - testCompile group: 'junit', name: 'junit', version: '4.12' - compile 'org.spigotmc:spigot-api:1.15.1-R0.1-SNAPSHOT' - compile('com.github.Realizedd:TokenManager:3.2.4') { + testImplementation group: 'junit', name: 'junit', version: '4.12' + compileOnly 'org.jetbrains:annotations:16.0.2' + implementation 'org.spigotmc:spigot:1.12.2-R0.1-SNAPSHOT' + implementation('com.github.Realizedd:TokenManager:3.2.4') { transitive = false } - compile('net.milkbowl.vault:VaultAPI:1.7') { + implementation('net.milkbowl.vault:VaultAPI:1.7') { exclude group: 'org.bukkit' } - compile 'me.clip:placeholderapi:2.9.2' - compile 'com.hm.achievement:advanced-achievements-api:1.1.0' - compile ('com.github.mcMMO-Dev:mcMMO:601297') { + implementation 'me.clip:placeholderapi:2.9.2' + implementation 'com.hm.achievement:advanced-achievements-api:1.1.0' + implementation('com.github.mcMMO-Dev:mcMMO:601297') { exclude group: 'com.sk89q.worldguard' } - compile 'com.github.Ben12345rocks:VotingPlugin:5.18.2' - compile 'com.github.LlmDl:Towny:25fc18a' + implementation 'com.github.Ben12345rocks:VotingPlugin:5.18.2' + implementation 'com.github.LlmDl:Towny:25fc18a' } // automatically copy the version to plugin.yml processResources { + // do this again whenever version changes inputs.property 'version', project.version + // copy plugin.yml and replace version from(sourceSets.main.resources.srcDirs) { include 'plugin.yml' - expand 'version':project.version + expand 'version': project.version } + // copy everything else from(sourceSets.main.resources.srcDirs) { exclude 'plugin.yml' } +} + +task spigot(type: Jar) { + from sourceSets.main.runtimeClasspath + destinationDirectory = file("./spigot/plugins/") + archiveFileName = "Rankup.jar" } \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f6b961f..5c2d1cf 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index edeaf9e..820c074 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu Apr 11 23:41:41 GMT+01:00 2019 +#Sun Apr 05 14:05:23 BST 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.3.1-all.zip +zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index cccdd3d..b0d6d0a 100755 --- a/gradlew +++ b/gradlew @@ -1,5 +1,21 @@ #!/usr/bin/env sh +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + ############################################################################## ## ## Gradle start up script for UN*X @@ -28,7 +44,7 @@ APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" diff --git a/gradlew.bat b/gradlew.bat index f955316..9991c50 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,3 +1,19 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem http://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + @if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @@ -14,7 +30,7 @@ set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome diff --git a/src/main/java/sh/okx/rankup/AutoRankup.java b/src/main/java/sh/okx/rankup/AutoRankup.java index ab48433..1c7e7fe 100644 --- a/src/main/java/sh/okx/rankup/AutoRankup.java +++ b/src/main/java/sh/okx/rankup/AutoRankup.java @@ -7,7 +7,7 @@ import org.bukkit.scheduler.BukkitRunnable; @RequiredArgsConstructor public class AutoRankup extends BukkitRunnable { - private final Rankup rankup; + private final RankupPlugin rankup; @Override public void run() { diff --git a/src/main/java/sh/okx/rankup/JoinUpdateNotifier.java b/src/main/java/sh/okx/rankup/JoinUpdateNotifier.java index e512801..73c1c0d 100644 --- a/src/main/java/sh/okx/rankup/JoinUpdateNotifier.java +++ b/src/main/java/sh/okx/rankup/JoinUpdateNotifier.java @@ -10,18 +10,20 @@ import sh.okx.rankup.util.UpdateNotifier; public class JoinUpdateNotifier implements Listener { private final UpdateNotifier notifier; private final Supplier enabledSupplier; + private final String permission; public JoinUpdateNotifier(UpdateNotifier notifier, - Supplier enabledSupplier) { + Supplier enabledSupplier, String permission) { this.notifier = notifier; this.enabledSupplier = enabledSupplier; + this.permission = permission; } @EventHandler public void on(PlayerJoinEvent e) { if (enabledSupplier.get()) { Player player = e.getPlayer(); - if (player.hasPermission("rankup.notify")) { + if (player.hasPermission(permission)) { notifier.notify(player, true); } } diff --git a/src/main/java/sh/okx/rankup/RankList.java b/src/main/java/sh/okx/rankup/RankList.java index 995cf48..9372ee9 100644 --- a/src/main/java/sh/okx/rankup/RankList.java +++ b/src/main/java/sh/okx/rankup/RankList.java @@ -25,8 +25,15 @@ public class RankList { for (Map.Entry entry : config.getValues(false).entrySet()) { ConfigurationSection rankSection = (ConfigurationSection) entry.getValue(); validateSection(rankSection); - ranks.add(deserializer.apply(rankSection)); + T apply = deserializer.apply(rankSection); + if (apply != null) { + ranks.add(apply); + } } + List ordered = getOrderedList(); + Set provisionalRanks = new HashSet<>(ordered); + this.ranks.clear(); + this.ranks.addAll(provisionalRanks); } protected void validateSection(ConfigurationSection section) { diff --git a/src/main/java/sh/okx/rankup/RankupHelper.java b/src/main/java/sh/okx/rankup/RankupHelper.java index dd5f9dd..79caf88 100644 --- a/src/main/java/sh/okx/rankup/RankupHelper.java +++ b/src/main/java/sh/okx/rankup/RankupHelper.java @@ -19,7 +19,7 @@ import java.util.Map; */ public class RankupHelper { - private final Rankup plugin; + private final RankupPlugin plugin; private final ConfigurationSection config; private final Permission permissions; /** @@ -27,7 +27,7 @@ public class RankupHelper { */ private Map cooldowns = new HashMap<>(); - public RankupHelper(Rankup plugin) { + public RankupHelper(RankupPlugin plugin) { this.plugin = plugin; this.config = plugin.getConfig(); this.permissions = plugin.getPermissions(); @@ -136,8 +136,7 @@ public class RankupHelper { Rank rank = rankups.getByPlayer(player); if (rankups.isLast(permissions, player)) { Prestiges prestiges = plugin.getPrestiges(); - plugin.getMessage(prestiges == null ? Message.NO_RANKUP - : prestiges.isLast(permissions, player) ? Message.NO_RANKUP : Message.MUST_PRESTIGE) + plugin.getMessage(prestiges == null || prestiges.isLast(permissions, player) ? Message.NO_RANKUP : Message.MUST_PRESTIGE) .failIf(!message) .replaceRanks(player, rankups.getLast()) .send(player); diff --git a/src/main/java/sh/okx/rankup/Rankup.java b/src/main/java/sh/okx/rankup/RankupPlugin.java similarity index 93% rename from src/main/java/sh/okx/rankup/Rankup.java rename to src/main/java/sh/okx/rankup/RankupPlugin.java index 347b1b9..0fc251a 100644 --- a/src/main/java/sh/okx/rankup/Rankup.java +++ b/src/main/java/sh/okx/rankup/RankupPlugin.java @@ -1,11 +1,5 @@ package sh.okx.rankup; -import java.io.File; -import java.text.DecimalFormat; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Supplier; import lombok.Getter; import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.permission.Permission; @@ -73,7 +67,14 @@ import sh.okx.rankup.requirements.requirement.votingplugin.VotingPluginVotesRequ import sh.okx.rankup.util.UpdateNotifier; import sh.okx.rankup.util.VersionChecker; -public class Rankup extends JavaPlugin { +import java.io.File; +import java.text.DecimalFormat; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Supplier; + +public class RankupPlugin extends JavaPlugin { @Getter private Permission permissions; @@ -108,7 +109,7 @@ public class Rankup extends JavaPlugin { Metrics metrics = new Metrics(this); metrics.addCustomChart(new Metrics.SimplePie("confirmation", - () -> config.getString("confirmation.type"))); + () -> config.getString("confirmation-type", "unknown"))); metrics.addCustomChart(new Metrics.AdvancedPie("requirements", () -> { Map map = new HashMap<>(); addAll(map, rankups); @@ -117,6 +118,8 @@ public class Rankup extends JavaPlugin { } return map; })); + metrics.addCustomChart(new Metrics.SimplePie("prestige", + () -> config.getBoolean("prestige") ? "enabled" : "disabled")); if (config.getBoolean("ranks")) { getCommand("ranks").setExecutor(new RanksCommand(this)); @@ -135,7 +138,7 @@ public class Rankup extends JavaPlugin { getCommand("rankup3").setExecutor(new InfoCommand(this, notifier)); getServer().getPluginManager().registerEvents(new GuiListener(this), this); getServer().getPluginManager().registerEvents( - new JoinUpdateNotifier(notifier, () -> getConfig().getBoolean("notify-update")), this); + new JoinUpdateNotifier(notifier, () -> getConfig().getBoolean("notify-update"), "rankup.notify"), this); placeholders = new Placeholders(this); placeholders.register(); @@ -169,15 +172,15 @@ public class Rankup extends JavaPlugin { autoRankup.runTaskTimer(this, time, time); } - if (config.getInt("version") < 5) { + if (config.getInt("version") < 6) { getLogger().severe("You are using an outdated config!"); getLogger().severe("This means that some things might not work!"); - getLogger() - .severe("To update, please rename ALL your config files (or the folder they are in),"); - getLogger().severe("and run /rankup3 reload to generate a new config file."); + getLogger().severe("To update, please rename ALL your config files (or the folder they are in),"); + getLogger().severe("and run /pru reload to generate a new config file."); getLogger().severe("If that does not work, restart your server."); - getLogger().severe("You may then copy in your config values from the old config."); + getLogger().severe("You may then copy in your config values manually from the old config."); getLogger().severe("Check the changelog on the Rankup spigot page to see the changes."); + getLogger().severe("https://www.spigotmc.org/resources/rankup.17933/updates"); } helper = new RankupHelper(this); @@ -206,6 +209,7 @@ public class Rankup extends JavaPlugin { for (String line : errorMessage.split("\n")) { getLogger().severe(line); } + getLogger().severe("More information can be found in the console log at startup"); return true; } @@ -257,26 +261,26 @@ public class Rankup extends JavaPlugin { rankups = new Rankups(this, loadConfig("rankups.yml")); // check rankups are not in an infinite loop - rankups.getOrderedList(); +// rankups.getOrderedList(); if (config.getBoolean("prestige")) { prestiges = new Prestiges(this, loadConfig("prestiges.yml")); - prestiges.getOrderedList(); +// prestiges.getOrderedList(); } else { prestiges = null; } } catch (Exception e) { - this.errorMessage = e.getMessage(); + this.errorMessage = e.getClass().getName() + ": " + e.getMessage(); e.printStackTrace(); } } private void saveLocales() { saveLocale("en"); - saveLocale("pt-br"); + saveLocale("pt_br"); saveLocale("ru"); - saveLocale("zh_CN"); + saveLocale("zh_cn"); saveLocale("fr"); } @@ -387,6 +391,14 @@ public class Rankup extends JavaPlugin { return placeholders.getMoneyFormat().format(money) + suffix; } + public ConfigurationSection getSection(Rank rank, String path) { + ConfigurationSection messages = rank.getSection(); + if (messages == null || !messages.isConfigurationSection(path)) { + return this.messages.getConfigurationSection(path); + } + return messages.getConfigurationSection(path); + } + public MessageBuilder getMessage(Rank rank, Message message) { ConfigurationSection messages = rank.getSection(); if (messages == null || !messages.isSet(message.getName())) { diff --git a/src/main/java/sh/okx/rankup/RankupRegisterEvent.java b/src/main/java/sh/okx/rankup/RankupRegisterEvent.java index b19151a..383b616 100644 --- a/src/main/java/sh/okx/rankup/RankupRegisterEvent.java +++ b/src/main/java/sh/okx/rankup/RankupRegisterEvent.java @@ -17,7 +17,7 @@ import sh.okx.rankup.requirements.RequirementRegistry; public class RankupRegisterEvent extends Event { private static final HandlerList handlers = new HandlerList(); @Getter - private final Rankup plugin; + private final RankupPlugin plugin; public static HandlerList getHandlerList() { return handlers; diff --git a/src/main/java/sh/okx/rankup/commands/InfoCommand.java b/src/main/java/sh/okx/rankup/commands/InfoCommand.java index accc358..a9e47c0 100644 --- a/src/main/java/sh/okx/rankup/commands/InfoCommand.java +++ b/src/main/java/sh/okx/rankup/commands/InfoCommand.java @@ -7,7 +7,7 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.PluginDescriptionFile; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.prestige.Prestige; import sh.okx.rankup.prestige.Prestiges; @@ -16,11 +16,11 @@ import sh.okx.rankup.ranks.Rankups; import sh.okx.rankup.util.UpdateNotifier; public class InfoCommand implements CommandExecutor { - private final Rankup plugin; + private final RankupPlugin plugin; private final UpdateNotifier notifier; - public InfoCommand(Rankup plugin, UpdateNotifier notifier) { + public InfoCommand(RankupPlugin plugin, UpdateNotifier notifier) { this.plugin = plugin; this.notifier = notifier; } diff --git a/src/main/java/sh/okx/rankup/commands/MaxRankupCommand.java b/src/main/java/sh/okx/rankup/commands/MaxRankupCommand.java index f67ecc1..f989d26 100644 --- a/src/main/java/sh/okx/rankup/commands/MaxRankupCommand.java +++ b/src/main/java/sh/okx/rankup/commands/MaxRankupCommand.java @@ -5,13 +5,13 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.RankupHelper; import sh.okx.rankup.ranks.Rank; @RequiredArgsConstructor public class MaxRankupCommand implements CommandExecutor { - private final Rankup plugin; + private final RankupPlugin plugin; @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { diff --git a/src/main/java/sh/okx/rankup/commands/PrestigeCommand.java b/src/main/java/sh/okx/rankup/commands/PrestigeCommand.java index 5bbd9a6..ff51cc0 100644 --- a/src/main/java/sh/okx/rankup/commands/PrestigeCommand.java +++ b/src/main/java/sh/okx/rankup/commands/PrestigeCommand.java @@ -6,7 +6,7 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.gui.Gui; import sh.okx.rankup.messages.Message; import sh.okx.rankup.prestige.Prestige; @@ -18,7 +18,7 @@ import java.util.WeakHashMap; @RequiredArgsConstructor public class PrestigeCommand implements CommandExecutor { private final Map confirming = new WeakHashMap<>(); - private final Rankup plugin; + private final RankupPlugin plugin; @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { diff --git a/src/main/java/sh/okx/rankup/commands/PrestigesCommand.java b/src/main/java/sh/okx/rankup/commands/PrestigesCommand.java index 7bc12f4..83eede6 100644 --- a/src/main/java/sh/okx/rankup/commands/PrestigesCommand.java +++ b/src/main/java/sh/okx/rankup/commands/PrestigesCommand.java @@ -5,14 +5,14 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.messages.Message; import sh.okx.rankup.prestige.Prestige; import sh.okx.rankup.prestige.Prestiges; @RequiredArgsConstructor public class PrestigesCommand implements CommandExecutor { - private final Rankup plugin; + private final RankupPlugin plugin; @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { diff --git a/src/main/java/sh/okx/rankup/commands/RanksCommand.java b/src/main/java/sh/okx/rankup/commands/RanksCommand.java index 12a7938..4e6ae7d 100644 --- a/src/main/java/sh/okx/rankup/commands/RanksCommand.java +++ b/src/main/java/sh/okx/rankup/commands/RanksCommand.java @@ -5,14 +5,14 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.messages.Message; import sh.okx.rankup.ranks.Rank; import sh.okx.rankup.ranks.Rankups; @RequiredArgsConstructor public class RanksCommand implements CommandExecutor { - private final Rankup plugin; + private final RankupPlugin plugin; @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { diff --git a/src/main/java/sh/okx/rankup/commands/RankupCommand.java b/src/main/java/sh/okx/rankup/commands/RankupCommand.java index 32d0715..f04018f 100644 --- a/src/main/java/sh/okx/rankup/commands/RankupCommand.java +++ b/src/main/java/sh/okx/rankup/commands/RankupCommand.java @@ -6,7 +6,7 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.gui.Gui; import sh.okx.rankup.messages.Message; import sh.okx.rankup.ranks.Rank; @@ -20,7 +20,7 @@ public class RankupCommand implements CommandExecutor { // weak hash maps so players going offline are automatically removed. // otherwise there is a potential (albeit small) memory leak. private final Map confirming = new WeakHashMap<>(); - private final Rankup plugin; + private final RankupPlugin plugin; @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { diff --git a/src/main/java/sh/okx/rankup/gui/Gui.java b/src/main/java/sh/okx/rankup/gui/Gui.java index ecafbf6..bb21e07 100644 --- a/src/main/java/sh/okx/rankup/gui/Gui.java +++ b/src/main/java/sh/okx/rankup/gui/Gui.java @@ -12,7 +12,7 @@ import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.messages.Message; import sh.okx.rankup.messages.MessageBuilder; import sh.okx.rankup.prestige.Prestige; @@ -34,20 +34,22 @@ public class Gui implements InventoryHolder { @Getter private boolean prestige; - public static Gui of(Player player, Rank oldRank, String rank, Rankup plugin) { - ConfigurationSection config = plugin.getConfig().getConfigurationSection("gui"); - ItemStack[] items = new ItemStack[config.getInt("rows") * 9]; + public static Gui of(Player player, Rank oldRank, String rank, RankupPlugin plugin) { + Gui gui = new Gui(); + gui.prestige = oldRank instanceof Prestige; - ItemStack fill = getItem(plugin, "fill", player, oldRank, rank); - ItemStack cancel = getItem(plugin, "cancel", player, oldRank, rank); - ItemStack rankup = getItem(plugin, "rankup", player, oldRank, rank); + String type = gui.prestige ? "prestige" : "rankup"; + ConfigurationSection config = plugin.getSection(oldRank, type + ".gui"); + ItemStack[] items = new ItemStack[config.getInt("rows", 1) * 9]; + + ItemStack fill = getItem(plugin, config, "fill", player, oldRank, rank); + ItemStack cancel = getItem(plugin, config, "cancel", player, oldRank, rank); + ItemStack rankup = getItem(plugin, config, "rankup", player, oldRank, rank); addItem(items, config.getConfigurationSection("rankup"), rankup); addItem(items, config.getConfigurationSection("cancel"), cancel); addItem(items, config.getConfigurationSection("fill"), fill); - Gui gui = new Gui(); - gui.prestige = oldRank instanceof Prestige; gui.rankup = rankup; gui.cancel = cancel; @@ -62,8 +64,8 @@ public class Gui implements InventoryHolder { } @SuppressWarnings("deprecation") - private static ItemStack getItem(Rankup plugin, String name, Player player, Rank oldRank, String rank) { - ConfigurationSection section = plugin.getConfig().getConfigurationSection("gui").getConfigurationSection(name); + private static ItemStack getItem(RankupPlugin plugin, ConfigurationSection parent, String name, Player player, Rank oldRank, String rank) { + ConfigurationSection section = parent.getConfigurationSection(name); String materialName = section.getString("material").toUpperCase(); @@ -102,7 +104,7 @@ public class Gui implements InventoryHolder { return item; } - private static String format(Rankup plugin, String message, Player player, Rank oldRank, String rank) { + private static String format(RankupPlugin plugin, String message, Player player, Rank oldRank, String rank) { return plugin.replaceMoneyRequirements(new MessageBuilder(ChatColor.translateAlternateColorCodes('&', message)) .replaceRanks(player, oldRank, rank), player, oldRank) .toString(); diff --git a/src/main/java/sh/okx/rankup/gui/GuiListener.java b/src/main/java/sh/okx/rankup/gui/GuiListener.java index 550b9d4..d14f540 100644 --- a/src/main/java/sh/okx/rankup/gui/GuiListener.java +++ b/src/main/java/sh/okx/rankup/gui/GuiListener.java @@ -7,11 +7,11 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; @RequiredArgsConstructor public class GuiListener implements Listener { - private final Rankup plugin; + private final RankupPlugin plugin; @EventHandler public void on(InventoryClickEvent e) { diff --git a/src/main/java/sh/okx/rankup/placeholders/Placeholders.java b/src/main/java/sh/okx/rankup/placeholders/Placeholders.java index aefa433..a91a7c5 100644 --- a/src/main/java/sh/okx/rankup/placeholders/Placeholders.java +++ b/src/main/java/sh/okx/rankup/placeholders/Placeholders.java @@ -3,13 +3,12 @@ package sh.okx.rankup.placeholders; import lombok.Getter; import me.clip.placeholderapi.PlaceholderAPI; import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import java.text.DecimalFormat; public class Placeholders { - private final Rankup plugin; + private final RankupPlugin plugin; @Getter private final DecimalFormat moneyFormat; @Getter @@ -20,7 +19,7 @@ public class Placeholders { private RankupExpansion expansion; private boolean registered; - public Placeholders(Rankup plugin) { + public Placeholders(RankupPlugin plugin) { this.plugin = plugin; this.moneyFormat = new DecimalFormat(plugin.getConfig().getString("placeholders.money-format")); this.percentFormat = new DecimalFormat(plugin.getConfig().getString("placeholders.percent-format")); diff --git a/src/main/java/sh/okx/rankup/placeholders/RankupExpansion.java b/src/main/java/sh/okx/rankup/placeholders/RankupExpansion.java index 7672ad3..ba508f0 100644 --- a/src/main/java/sh/okx/rankup/placeholders/RankupExpansion.java +++ b/src/main/java/sh/okx/rankup/placeholders/RankupExpansion.java @@ -3,7 +3,7 @@ package sh.okx.rankup.placeholders; import lombok.RequiredArgsConstructor; import me.clip.placeholderapi.expansion.PlaceholderExpansion; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.prestige.Prestige; import sh.okx.rankup.prestige.Prestiges; import sh.okx.rankup.ranks.Rank; @@ -19,7 +19,7 @@ import java.util.regex.Pattern; public class RankupExpansion extends PlaceholderExpansion { private static final Pattern PATTERN = Pattern.compile("(.*)#(.*)"); - private final Rankup plugin; + private final RankupPlugin plugin; private final Placeholders placeholders; @Override @@ -211,4 +211,9 @@ public class RankupExpansion extends PlaceholderExpansion { public boolean persist() { return true; } + + @Override + public boolean canRegister() { + return true; + } } diff --git a/src/main/java/sh/okx/rankup/prestige/Prestige.java b/src/main/java/sh/okx/rankup/prestige/Prestige.java index aa969ad..5aa4b61 100644 --- a/src/main/java/sh/okx/rankup/prestige/Prestige.java +++ b/src/main/java/sh/okx/rankup/prestige/Prestige.java @@ -5,7 +5,7 @@ import lombok.Getter; import lombok.ToString; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.ranks.Rank; import sh.okx.rankup.requirements.Requirement; @@ -20,13 +20,13 @@ public class Prestige extends Rank { @Getter private final String to; - private Prestige(ConfigurationSection section, Rankup plugin, String next, String rank, Set requirements, List commands, String from, String to) { + private Prestige(ConfigurationSection section, RankupPlugin plugin, String next, String rank, Set requirements, List commands, String from, String to) { super(section, plugin, next, rank, requirements, commands); this.from = from; this.to = to; } - public static Prestige deserialize(Rankup plugin, ConfigurationSection section) { + public static Prestige deserialize(RankupPlugin plugin, ConfigurationSection section) { List requirementsList = section.getStringList("requirements"); Set requirements = plugin.getRequirements().getRequirements(requirementsList); diff --git a/src/main/java/sh/okx/rankup/prestige/Prestiges.java b/src/main/java/sh/okx/rankup/prestige/Prestiges.java index 06b288d..72772ee 100644 --- a/src/main/java/sh/okx/rankup/prestige/Prestiges.java +++ b/src/main/java/sh/okx/rankup/prestige/Prestiges.java @@ -1,12 +1,11 @@ package sh.okx.rankup.prestige; import org.bukkit.configuration.file.FileConfiguration; -import org.bukkit.entity.Player; import sh.okx.rankup.RankList; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; public class Prestiges extends RankList { - public Prestiges(Rankup plugin, FileConfiguration config) { + public Prestiges(RankupPlugin plugin, FileConfiguration config) { super(config, section -> Prestige.deserialize(plugin, section)); } diff --git a/src/main/java/sh/okx/rankup/ranks/Rank.java b/src/main/java/sh/okx/rankup/ranks/Rank.java index 6169d4c..79ded2e 100644 --- a/src/main/java/sh/okx/rankup/ranks/Rank.java +++ b/src/main/java/sh/okx/rankup/ranks/Rank.java @@ -1,5 +1,6 @@ package sh.okx.rankup.ranks; +import java.util.Collections; import lombok.AccessLevel; import lombok.EqualsAndHashCode; import lombok.Getter; @@ -9,7 +10,7 @@ import me.clip.placeholderapi.PlaceholderAPI; import org.bukkit.Bukkit; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.messages.MessageBuilder; import sh.okx.rankup.requirements.DeductibleRequirement; import sh.okx.rankup.requirements.Requirement; @@ -23,7 +24,7 @@ import java.util.Set; public class Rank { @Getter protected final ConfigurationSection section; - protected final Rankup plugin; + protected final RankupPlugin plugin; @Getter protected final String next; @Getter @@ -32,13 +33,26 @@ public class Rank { protected final Set requirements; protected final List commands; - public static Rank deserialize(Rankup plugin, ConfigurationSection section) { - List requirementsList = section.getStringList("requirements"); + public static Rank deserialize(RankupPlugin plugin, ConfigurationSection section) { + List requirementsList; + if (section.isList("requirements")) { + requirementsList = section.getStringList("requirements"); + } else { + requirementsList = Collections.singletonList(section.getString("requirements")); + } Set requirements = plugin.getRequirements().getRequirements(requirementsList); + String next = section.getString("next"); + String rank = section.getString("rank"); + + if (next != null && next.isEmpty()) { + plugin.getLogger().warning("Rankup section '" + section.getName() + "' has a blank 'next' field, will be ignored."); + return null; + } + return new Rank(section, plugin, - section.getString("next"), - section.getString("rank"), + next, + rank, requirements, section.getStringList("commands")); } diff --git a/src/main/java/sh/okx/rankup/ranks/Rankups.java b/src/main/java/sh/okx/rankup/ranks/Rankups.java index b606cbe..ed5bbd9 100644 --- a/src/main/java/sh/okx/rankup/ranks/Rankups.java +++ b/src/main/java/sh/okx/rankup/ranks/Rankups.java @@ -2,10 +2,10 @@ package sh.okx.rankup.ranks; import org.bukkit.configuration.file.FileConfiguration; import sh.okx.rankup.RankList; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; public class Rankups extends RankList { - public Rankups(Rankup plugin, FileConfiguration config) { + public Rankups(RankupPlugin plugin, FileConfiguration config) { super(config, section -> Rank.deserialize(plugin, section)); } } diff --git a/src/main/java/sh/okx/rankup/requirements/DeductibleRequirement.java b/src/main/java/sh/okx/rankup/requirements/DeductibleRequirement.java index 1158fed..1f3f60a 100644 --- a/src/main/java/sh/okx/rankup/requirements/DeductibleRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/DeductibleRequirement.java @@ -1,7 +1,6 @@ package sh.okx.rankup.requirements; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; public interface DeductibleRequirement { /** diff --git a/src/main/java/sh/okx/rankup/requirements/ProgressiveRequirement.java b/src/main/java/sh/okx/rankup/requirements/ProgressiveRequirement.java index 7ed447e..09cdc26 100644 --- a/src/main/java/sh/okx/rankup/requirements/ProgressiveRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/ProgressiveRequirement.java @@ -1,15 +1,14 @@ package sh.okx.rankup.requirements; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; -import sh.okx.rankup.requirements.Requirement; +import sh.okx.rankup.RankupPlugin; public abstract class ProgressiveRequirement extends Requirement { - public ProgressiveRequirement(Rankup plugin, String name) { + public ProgressiveRequirement(RankupPlugin plugin, String name) { super(plugin, name); } - public ProgressiveRequirement(Rankup plugin, String name, boolean subRequirement) { + public ProgressiveRequirement(RankupPlugin plugin, String name, boolean subRequirement) { super(plugin, name, subRequirement); } diff --git a/src/main/java/sh/okx/rankup/requirements/Requirement.java b/src/main/java/sh/okx/rankup/requirements/Requirement.java index 593774a..1c6b0f8 100644 --- a/src/main/java/sh/okx/rankup/requirements/Requirement.java +++ b/src/main/java/sh/okx/rankup/requirements/Requirement.java @@ -2,10 +2,10 @@ package sh.okx.rankup.requirements; import lombok.Getter; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; public abstract class Requirement implements Cloneable { - protected final Rankup plugin; + protected final RankupPlugin plugin; @Getter protected final String name; private String value; @@ -13,11 +13,11 @@ public abstract class Requirement implements Cloneable { private String sub; private boolean subRequirement; - public Requirement(Rankup plugin, String name) { + public Requirement(RankupPlugin plugin, String name) { this(plugin, name, false); } - public Requirement(Rankup plugin, String name, boolean subRequirement) { + public Requirement(RankupPlugin plugin, String name, boolean subRequirement) { this.plugin = plugin; this.name = name; this.subRequirement = subRequirement; diff --git a/src/main/java/sh/okx/rankup/requirements/RequirementRegistry.java b/src/main/java/sh/okx/rankup/requirements/RequirementRegistry.java index faa991f..e8effae 100644 --- a/src/main/java/sh/okx/rankup/requirements/RequirementRegistry.java +++ b/src/main/java/sh/okx/rankup/requirements/RequirementRegistry.java @@ -2,7 +2,6 @@ package sh.okx.rankup.requirements; import java.util.Collections; import java.util.HashSet; -import java.util.List; import java.util.Objects; import java.util.Set; @@ -28,11 +27,17 @@ public class RequirementRegistry { return null; } - public Set getRequirements(List list) { + public Set getRequirements(Iterable list) { Set requirements = new HashSet<>(); for (String req : list) { String[] parts = req.split(" ", 2); + if (parts.length < 2) { + throw new IllegalArgumentException("For requirement: '" + req + "'. Requirements must contain a space between" + + " the name of the requirement and the value of the requirement. If it already looks like it has a space, " + + "make sure it is not a tab or has an invisible character."); + } + String name = parts[0]; String value = parts[1]; Requirement requirement = newRequirement(name, value); diff --git a/src/main/java/sh/okx/rankup/requirements/XpLevelDeductibleRequirement.java b/src/main/java/sh/okx/rankup/requirements/XpLevelDeductibleRequirement.java index 5b207c8..14c223c 100644 --- a/src/main/java/sh/okx/rankup/requirements/XpLevelDeductibleRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/XpLevelDeductibleRequirement.java @@ -1,12 +1,12 @@ package sh.okx.rankup.requirements; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.requirement.XpLevelRequirement; public class XpLevelDeductibleRequirement extends XpLevelRequirement implements DeductibleRequirement { - public XpLevelDeductibleRequirement(Rankup plugin, String name) { + public XpLevelDeductibleRequirement(RankupPlugin plugin, String name) { super(plugin, name); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/BlockBreakRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/BlockBreakRequirement.java index a82e303..5cd2e42 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/BlockBreakRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/BlockBreakRequirement.java @@ -3,12 +3,12 @@ package sh.okx.rankup.requirements.requirement; import org.bukkit.Material; import org.bukkit.Statistic; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.ProgressiveRequirement; import sh.okx.rankup.requirements.Requirement; public class BlockBreakRequirement extends ProgressiveRequirement { - public BlockBreakRequirement(Rankup plugin) { + public BlockBreakRequirement(RankupPlugin plugin) { super(plugin, "block-break", true); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/CraftItemRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/CraftItemRequirement.java index 7d8000b..5e22e93 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/CraftItemRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/CraftItemRequirement.java @@ -3,12 +3,12 @@ package sh.okx.rankup.requirements.requirement; import org.bukkit.Material; import org.bukkit.Statistic; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.ProgressiveRequirement; import sh.okx.rankup.requirements.Requirement; public class CraftItemRequirement extends ProgressiveRequirement { - public CraftItemRequirement(Rankup plugin) { + public CraftItemRequirement(RankupPlugin plugin) { super(plugin, "craft-item", true); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/GroupRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/GroupRequirement.java index 734d1a4..b280a1b 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/GroupRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/GroupRequirement.java @@ -1,11 +1,11 @@ package sh.okx.rankup.requirements.requirement; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.Requirement; public class GroupRequirement extends Requirement { - public GroupRequirement(Rankup plugin) { + public GroupRequirement(RankupPlugin plugin) { super(plugin, "group"); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/ItemDeductibleRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/ItemDeductibleRequirement.java index e49cb71..a54f11a 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/ItemDeductibleRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/ItemDeductibleRequirement.java @@ -1,15 +1,14 @@ package sh.okx.rankup.requirements.requirement; -import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.DeductibleRequirement; import sh.okx.rankup.requirements.Requirement; public class ItemDeductibleRequirement extends ItemRequirement implements DeductibleRequirement { - public ItemDeductibleRequirement(Rankup plugin, String name) { + public ItemDeductibleRequirement(RankupPlugin plugin, String name) { super(plugin, name); } @@ -19,11 +18,28 @@ public class ItemDeductibleRequirement extends ItemRequirement implements Deduct @Override public void apply(Player player, double multiplier) { - Material type = Material.matchMaterial(getSub()); - if (type == null) { - throw new IllegalArgumentException("Invalid item " + getSub()); + int count = (int) (getTotal(player) * multiplier); + + ItemStack[] contents = player.getInventory().getStorageContents(); + for (int i = 0; i < contents.length && count > 0; i++) { + ItemStack item = contents[i]; + + if (matchItem(item)) { + if (count < item.getAmount()) { + item.setAmount(item.getAmount() - count); + count = 0; + } else { + count -= item.getAmount(); + contents[i] = null; + } + } + } + + player.getInventory().setStorageContents(contents); + + if (count > 0) { + throw new IllegalStateException("REPORT THIS ERROR TO THE DEV - COULD NOT DEDUCT ALL ITEMS"); } - player.getInventory().removeItem(new ItemStack(type, (int) (getValueInt() * multiplier))); } @Override diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/ItemRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/ItemRequirement.java index d7d1d93..905f5f6 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/ItemRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/ItemRequirement.java @@ -3,15 +3,14 @@ package sh.okx.rankup.requirements.requirement; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import sh.okx.rankup.Rankup; -import sh.okx.rankup.requirements.DeductibleRequirement; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.ProgressiveRequirement; import sh.okx.rankup.requirements.Requirement; import java.util.Arrays; public class ItemRequirement extends ProgressiveRequirement { - public ItemRequirement(Rankup plugin, String name) { + public ItemRequirement(RankupPlugin plugin, String name) { super(plugin, name, true); } @@ -26,9 +25,37 @@ public class ItemRequirement extends ProgressiveRequirement { @Override public double getProgress(Player player) { - Material material = Material.matchMaterial(getSub()); - return Arrays.stream(player.getInventory().getContents()) - .filter(item -> item != null && item.getType() == material) + return Arrays.stream(player.getInventory().getStorageContents()) + .filter(this::matchItem) .mapToInt(ItemStack::getAmount).sum(); } + + protected boolean matchItem(ItemStack item) { + if (item == null) { + return false; + } + + String sub = getSub(); + String[] parts = sub.split(":"); + + Material material = Material.matchMaterial(parts[0]); + if (material == null) { + throw new IllegalArgumentException("[item requirement] could not find material name: " + parts[0]); + } + + if (parts.length > 1) { + int durability; + try { + durability = Integer.parseInt(parts[1]); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("[item requirement] durability '" + parts[1] + "' must be a number in item: '" + sub + "'"); + } + + if (durability != item.getDurability()) { + return false; + } + } + + return material == item.getType(); + } } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/MobKillsRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/MobKillsRequirement.java index 3115068..6b26e09 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/MobKillsRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/MobKillsRequirement.java @@ -3,14 +3,14 @@ package sh.okx.rankup.requirements.requirement; import org.bukkit.Statistic; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.ProgressiveRequirement; import sh.okx.rankup.requirements.Requirement; import java.util.Objects; public class MobKillsRequirement extends ProgressiveRequirement { - public MobKillsRequirement(Rankup plugin) { + public MobKillsRequirement(RankupPlugin plugin) { super(plugin, "mob-kills", true); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/MoneyDeductibleRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/MoneyDeductibleRequirement.java index b42942f..c04116a 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/MoneyDeductibleRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/MoneyDeductibleRequirement.java @@ -2,13 +2,13 @@ package sh.okx.rankup.requirements.requirement; import net.milkbowl.vault.economy.Economy; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.DeductibleRequirement; import sh.okx.rankup.requirements.Requirement; public class MoneyDeductibleRequirement extends MoneyRequirement implements DeductibleRequirement { - public MoneyDeductibleRequirement(Rankup plugin, String name) { + public MoneyDeductibleRequirement(RankupPlugin plugin, String name) { super(plugin, name); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/MoneyRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/MoneyRequirement.java index 713cac9..e31fee4 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/MoneyRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/MoneyRequirement.java @@ -1,12 +1,12 @@ package sh.okx.rankup.requirements.requirement; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.ProgressiveRequirement; import sh.okx.rankup.requirements.Requirement; public class MoneyRequirement extends ProgressiveRequirement { - public MoneyRequirement(Rankup plugin, String name) { + public MoneyRequirement(RankupPlugin plugin, String name) { super(plugin, name); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/PermissionRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/PermissionRequirement.java index 5816da7..1e79dcc 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/PermissionRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/PermissionRequirement.java @@ -1,11 +1,11 @@ package sh.okx.rankup.requirements.requirement; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.Requirement; public class PermissionRequirement extends Requirement { - public PermissionRequirement(Rankup plugin) { + public PermissionRequirement(RankupPlugin plugin) { super(plugin, "permission"); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/PlaceholderRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/PlaceholderRequirement.java index 8f4185d..d312721 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/PlaceholderRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/PlaceholderRequirement.java @@ -2,7 +2,7 @@ package sh.okx.rankup.requirements.requirement; import me.clip.placeholderapi.PlaceholderAPI; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.ProgressiveRequirement; import sh.okx.rankup.requirements.Requirement; @@ -10,7 +10,7 @@ public class PlaceholderRequirement extends ProgressiveRequirement { public static final double DELTA = 0.00001D; - public PlaceholderRequirement(Rankup plugin) { + public PlaceholderRequirement(RankupPlugin plugin) { super(plugin, "placeholder"); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/PlayerKillsRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/PlayerKillsRequirement.java index 32b31e7..dc3ba3c 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/PlayerKillsRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/PlayerKillsRequirement.java @@ -2,12 +2,12 @@ package sh.okx.rankup.requirements.requirement; import org.bukkit.Statistic; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.ProgressiveRequirement; import sh.okx.rankup.requirements.Requirement; public class PlayerKillsRequirement extends ProgressiveRequirement { - public PlayerKillsRequirement(Rankup plugin) { + public PlayerKillsRequirement(RankupPlugin plugin) { super(plugin, "player-kills"); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/PlaytimeMinutesRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/PlaytimeMinutesRequirement.java index 9de0513..3e8f727 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/PlaytimeMinutesRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/PlaytimeMinutesRequirement.java @@ -2,7 +2,7 @@ package sh.okx.rankup.requirements.requirement; import org.bukkit.Statistic; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.ProgressiveRequirement; import sh.okx.rankup.requirements.Requirement; @@ -10,7 +10,7 @@ public class PlaytimeMinutesRequirement extends ProgressiveRequirement { private static final int TICKS_PER_MINUTE = 20 * 60; private Statistic playOneTick; - public PlaytimeMinutesRequirement(Rankup plugin) { + public PlaytimeMinutesRequirement(RankupPlugin plugin) { super(plugin, "playtime-minutes"); try { playOneTick = Statistic.valueOf("PLAY_ONE_MINUTE"); diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/TokensDeductibleRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/TokensDeductibleRequirement.java index 93084ef..33f1e4f 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/TokensDeductibleRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/TokensDeductibleRequirement.java @@ -1,12 +1,12 @@ package sh.okx.rankup.requirements.requirement; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.DeductibleRequirement; import sh.okx.rankup.requirements.requirement.tokenmanager.TokensRequirement; public class TokensDeductibleRequirement extends TokensRequirement implements DeductibleRequirement { - public TokensDeductibleRequirement(Rankup plugin, String name) { + public TokensDeductibleRequirement(RankupPlugin plugin, String name) { super(plugin, name); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/TotalMobKillsRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/TotalMobKillsRequirement.java index 2e0142b..4862246 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/TotalMobKillsRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/TotalMobKillsRequirement.java @@ -2,12 +2,12 @@ package sh.okx.rankup.requirements.requirement; import org.bukkit.Statistic; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.ProgressiveRequirement; import sh.okx.rankup.requirements.Requirement; public class TotalMobKillsRequirement extends ProgressiveRequirement { - public TotalMobKillsRequirement(Rankup plugin) { + public TotalMobKillsRequirement(RankupPlugin plugin) { super(plugin, "total-mob-kills"); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/UseItemRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/UseItemRequirement.java index bcd8782..9d071b9 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/UseItemRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/UseItemRequirement.java @@ -3,12 +3,12 @@ package sh.okx.rankup.requirements.requirement; import org.bukkit.Material; import org.bukkit.Statistic; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.ProgressiveRequirement; import sh.okx.rankup.requirements.Requirement; public class UseItemRequirement extends ProgressiveRequirement { - public UseItemRequirement(Rankup plugin) { + public UseItemRequirement(RankupPlugin plugin) { super(plugin, "use-item", true); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/WorldRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/WorldRequirement.java index d9b7409..211319c 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/WorldRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/WorldRequirement.java @@ -1,11 +1,11 @@ package sh.okx.rankup.requirements.requirement; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.Requirement; public class WorldRequirement extends Requirement { - public WorldRequirement(Rankup plugin) { + public WorldRequirement(RankupPlugin plugin) { super(plugin, "world"); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/XpLevelRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/XpLevelRequirement.java index 0b56c1d..377e812 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/XpLevelRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/XpLevelRequirement.java @@ -1,12 +1,12 @@ package sh.okx.rankup.requirements.requirement; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.ProgressiveRequirement; import sh.okx.rankup.requirements.Requirement; public class XpLevelRequirement extends ProgressiveRequirement { - public XpLevelRequirement(Rankup plugin, String name) { + public XpLevelRequirement(RankupPlugin plugin, String name) { super(plugin, name); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/advancedachievements/AdvancedAchievementsAchievementRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/advancedachievements/AdvancedAchievementsAchievementRequirement.java index 05b8bde..0f2ca6d 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/advancedachievements/AdvancedAchievementsAchievementRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/advancedachievements/AdvancedAchievementsAchievementRequirement.java @@ -3,11 +3,11 @@ package sh.okx.rankup.requirements.requirement.advancedachievements; import com.hm.achievement.api.AdvancedAchievementsAPI; import com.hm.achievement.api.AdvancedAchievementsAPIFetcher; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.Requirement; public class AdvancedAchievementsAchievementRequirement extends Requirement { - public AdvancedAchievementsAchievementRequirement(Rankup plugin) { + public AdvancedAchievementsAchievementRequirement(RankupPlugin plugin) { super(plugin, "advancedachievements-achievement"); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/advancedachievements/AdvancedAchievementsTotalRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/advancedachievements/AdvancedAchievementsTotalRequirement.java index 9345947..807a417 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/advancedachievements/AdvancedAchievementsTotalRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/advancedachievements/AdvancedAchievementsTotalRequirement.java @@ -2,12 +2,12 @@ package sh.okx.rankup.requirements.requirement.advancedachievements; import com.hm.achievement.api.AdvancedAchievementsAPIFetcher; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.Requirement; import sh.okx.rankup.requirements.ProgressiveRequirement; public class AdvancedAchievementsTotalRequirement extends ProgressiveRequirement { - public AdvancedAchievementsTotalRequirement(Rankup plugin) { + public AdvancedAchievementsTotalRequirement(RankupPlugin plugin) { super(plugin, "advancedachievements-total"); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/mcmmo/McMMOPowerLevelRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/mcmmo/McMMOPowerLevelRequirement.java index 04be159..3f050a4 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/mcmmo/McMMOPowerLevelRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/mcmmo/McMMOPowerLevelRequirement.java @@ -2,12 +2,12 @@ package sh.okx.rankup.requirements.requirement.mcmmo; import com.gmail.nossr50.util.player.UserManager; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.Requirement; import sh.okx.rankup.requirements.ProgressiveRequirement; public class McMMOPowerLevelRequirement extends ProgressiveRequirement { - public McMMOPowerLevelRequirement(Rankup plugin) { + public McMMOPowerLevelRequirement(RankupPlugin plugin) { super(plugin, "mcmmo-power-level"); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/mcmmo/McMMOSkillRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/mcmmo/McMMOSkillRequirement.java index 9680ea4..1f4ee27 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/mcmmo/McMMOSkillRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/mcmmo/McMMOSkillRequirement.java @@ -1,12 +1,12 @@ package sh.okx.rankup.requirements.requirement.mcmmo; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.Requirement; import sh.okx.rankup.requirements.ProgressiveRequirement; public class McMMOSkillRequirement extends ProgressiveRequirement { - public McMMOSkillRequirement(Rankup plugin) { + public McMMOSkillRequirement(RankupPlugin plugin) { super(plugin, "mcmmo", true); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/tokenmanager/TokensRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/tokenmanager/TokensRequirement.java index 0f105c7..2b3200d 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/tokenmanager/TokensRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/tokenmanager/TokensRequirement.java @@ -4,13 +4,13 @@ import java.util.Objects; import me.realized.tokenmanager.api.TokenManager; import org.bukkit.Bukkit; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.ProgressiveRequirement; public class TokensRequirement extends ProgressiveRequirement { protected final TokenManager manager = (TokenManager) Objects.requireNonNull(Bukkit.getPluginManager().getPlugin("TokenManager")); - public TokensRequirement(Rankup plugin, String name) { + public TokensRequirement(RankupPlugin plugin, String name) { super(plugin, name); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingNumberResidentsRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingNumberResidentsRequirement.java index a744df8..ac6e441 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingNumberResidentsRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingNumberResidentsRequirement.java @@ -1,12 +1,12 @@ package sh.okx.rankup.requirements.requirement.towny; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.ProgressiveRequirement; import sh.okx.rankup.requirements.Requirement; public class TownyKingNumberResidentsRequirement extends ProgressiveRequirement { - public TownyKingNumberResidentsRequirement(Rankup plugin) { + public TownyKingNumberResidentsRequirement(RankupPlugin plugin) { super(plugin, "towny-king-residents"); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingNumberTownsRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingNumberTownsRequirement.java index 4fddc9d..b84b7f6 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingNumberTownsRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingNumberTownsRequirement.java @@ -1,12 +1,12 @@ package sh.okx.rankup.requirements.requirement.towny; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.ProgressiveRequirement; import sh.okx.rankup.requirements.Requirement; public class TownyKingNumberTownsRequirement extends ProgressiveRequirement { - public TownyKingNumberTownsRequirement(Rankup plugin) { + public TownyKingNumberTownsRequirement(RankupPlugin plugin) { super(plugin, "towny-king-towns"); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingRequirement.java index b802af5..ae14753 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingRequirement.java @@ -1,11 +1,11 @@ package sh.okx.rankup.requirements.requirement.towny; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.Requirement; public class TownyKingRequirement extends Requirement { - public TownyKingRequirement(Rankup plugin) { + public TownyKingRequirement(RankupPlugin plugin) { super(plugin, "towny-king"); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyMayorNumberResidentsRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyMayorNumberResidentsRequirement.java index f49ed45..9d50364 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyMayorNumberResidentsRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyMayorNumberResidentsRequirement.java @@ -1,12 +1,12 @@ package sh.okx.rankup.requirements.requirement.towny; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.ProgressiveRequirement; import sh.okx.rankup.requirements.Requirement; public class TownyMayorNumberResidentsRequirement extends ProgressiveRequirement { - public TownyMayorNumberResidentsRequirement(Rankup plugin) { + public TownyMayorNumberResidentsRequirement(RankupPlugin plugin) { super(plugin, "towny-mayor-residents"); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyMayorRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyMayorRequirement.java index 8aaee97..e4d7ee1 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyMayorRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyMayorRequirement.java @@ -1,11 +1,11 @@ package sh.okx.rankup.requirements.requirement.towny; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.Requirement; public class TownyMayorRequirement extends Requirement { - public TownyMayorRequirement(Rankup plugin) { + public TownyMayorRequirement(RankupPlugin plugin) { super(plugin, "towny-mayor"); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyResidentRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyResidentRequirement.java index 88f7cd5..42a99bd 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyResidentRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyResidentRequirement.java @@ -1,11 +1,11 @@ package sh.okx.rankup.requirements.requirement.towny; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.Requirement; public class TownyResidentRequirement extends Requirement { - public TownyResidentRequirement(Rankup plugin) { + public TownyResidentRequirement(RankupPlugin plugin) { super(plugin, "towny-resident"); } diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/votingplugin/VotingPluginVotesRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/votingplugin/VotingPluginVotesRequirement.java index 7e6b1d9..a628e7f 100644 --- a/src/main/java/sh/okx/rankup/requirements/requirement/votingplugin/VotingPluginVotesRequirement.java +++ b/src/main/java/sh/okx/rankup/requirements/requirement/votingplugin/VotingPluginVotesRequirement.java @@ -2,12 +2,12 @@ package sh.okx.rankup.requirements.requirement.votingplugin; import com.Ben12345rocks.VotingPlugin.UserManager.UserManager; import org.bukkit.entity.Player; -import sh.okx.rankup.Rankup; +import sh.okx.rankup.RankupPlugin; import sh.okx.rankup.requirements.Requirement; import sh.okx.rankup.requirements.ProgressiveRequirement; public class VotingPluginVotesRequirement extends ProgressiveRequirement { - public VotingPluginVotesRequirement(Rankup plugin) { + public VotingPluginVotesRequirement(RankupPlugin plugin) { super(plugin, "votingplugin-votes"); } diff --git a/src/main/java/sh/okx/rankup/util/ItemUtil.java b/src/main/java/sh/okx/rankup/util/ItemUtil.java index ceea15d..4130e24 100644 --- a/src/main/java/sh/okx/rankup/util/ItemUtil.java +++ b/src/main/java/sh/okx/rankup/util/ItemUtil.java @@ -1,24 +1,22 @@ package sh.okx.rankup.util; -import com.google.common.base.Suppliers; -import java.util.function.Supplier; import org.bukkit.Material; public class ItemUtil { - private static Supplier flattenedSupplier = Suppliers.memoize(ItemUtil::isServerFlattenedPrivate); + private static boolean flattened; - private static boolean isServerFlattenedPrivate() { + static { try { Material.valueOf("BLACK_STAINED_GLASS_PANE"); - return true; + flattened = true; } catch (IllegalArgumentException e) { - return false; + flattened = false; } } /** * Determines if a server is post-flattening or pre-flattening. - * The flattening is the name for a process where, instead of using durability to represent + * The flattening is the name for the event where, instead of using durability to represent * similar items, Mojang decided to use distinct item types for each item. * This caused many {@link Material} names to change, making some things incompatible. * The flattening happened in 1.13. @@ -26,6 +24,6 @@ public class ItemUtil { * @return true if the server is post-flattening (server versions 1.13, 1.14, 1.15) or false if it is pre-flattening (1.12, 1.11, 1.10 etc) */ public static boolean isServerFlattened() { - return flattenedSupplier.get(); + return flattened; } } diff --git a/src/main/java/sh/okx/rankup/util/UpdateNotifier.java b/src/main/java/sh/okx/rankup/util/UpdateNotifier.java index 93b14d3..393403d 100644 --- a/src/main/java/sh/okx/rankup/util/UpdateNotifier.java +++ b/src/main/java/sh/okx/rankup/util/UpdateNotifier.java @@ -5,11 +5,12 @@ import org.bukkit.command.CommandSender; import sh.okx.rankup.util.VersionChecker.VersionCheckerCallback; public class UpdateNotifier { - private static final String PREFIX = ChatColor.GREEN + "" + ChatColor.BOLD + "Rankup " + ChatColor.RESET; + private final String prefix; private final VersionChecker checker; public UpdateNotifier(VersionChecker checker) { + this.prefix = ChatColor.GREEN + "" + ChatColor.BOLD + checker.getPlugin().getName() + ChatColor.RESET + " "; this.checker = checker; } @@ -29,7 +30,7 @@ public class UpdateNotifier { public void onOutdatedVersion(String currentVersion, String latestVersion) { send(sender, join, ChatColor.YELLOW + "A new version is available: " + ChatColor.GOLD + latestVersion + ChatColor.YELLOW + ". You are on: " + ChatColor.GOLD + currentVersion - + ChatColor.GOLD + "\nhttps://www.spigotmc.org/resources/rankup.17933/"); + + ChatColor.GOLD + "\nhttps://www.spigotmc.org/resources/" + VersionChecker.RESOURCE_ID + "/"); } @Override @@ -48,7 +49,7 @@ public class UpdateNotifier { private void send(CommandSender sender, boolean prefix, String message) { if (prefix) { - sender.sendMessage(PREFIX + message); + sender.sendMessage(this.prefix + message); } else { sender.sendMessage(message); } diff --git a/src/main/java/sh/okx/rankup/util/VersionChecker.java b/src/main/java/sh/okx/rankup/util/VersionChecker.java index 92359fd..b98dcbf 100644 --- a/src/main/java/sh/okx/rankup/util/VersionChecker.java +++ b/src/main/java/sh/okx/rankup/util/VersionChecker.java @@ -9,10 +9,9 @@ import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; public class VersionChecker { + public static final int RESOURCE_ID = 76964; - private static final int RESOURCE_ID = 17933; - - private final Plugin plugin; // used exclusively for scheduling + private final Plugin plugin; private final String currentVersion; private String latestVersion; private boolean checked = false; @@ -22,6 +21,10 @@ public class VersionChecker { this.plugin = plugin; } + public Plugin getPlugin() { + return plugin; + } + /** * Checks if the version checker has already made an asynchronous call to the web server to check * the version, so future checks will run instantly. @@ -45,13 +48,11 @@ public class VersionChecker { checked = true; callback.onPreReleaseVersion(currentVersion); } else { - Bukkit.getScheduler().runTaskAsynchronously(plugin, -// () -> checkVersionSync(new SyncVersionCheckerCallback(plugin, callback))); - () -> checkVersionSync(callback)); + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> checkVersionAsync(callback)); } } - private void checkVersionSync(VersionCheckerCallback callback) { + private void checkVersionAsync(VersionCheckerCallback callback) { try { latestVersion = getLatestVersion(); checked = true; @@ -78,6 +79,7 @@ public class VersionChecker { /** * Called when the plugin is already on the latest version + * May be called asynchronously * * @param version the current, and latest, version of the plugin */ @@ -85,6 +87,7 @@ public class VersionChecker { /** * Called when the plugin is on a version other than the latest on the SpigotMC plugin page. + * May be called asynchronously. * * @param currentVersion the current version of the plugin specified in plugin.yml * @param latestVersion the latest version of the plugin specified on SpigotMC. @@ -99,7 +102,8 @@ public class VersionChecker { void onPreReleaseVersion(String version); /** - * Called when the version checker was unable to retrieve the latest version + * Called when the version checker was unable to retrieve the latest version. + * May be called asynchronously. */ void onFailure(); } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 019f01b..a9775d1 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,5 +1,5 @@ # this is used for letting you know that you need to update/change your config file -version: 5 +version: 6 # the locale to use for messages # all messages can be customised but this allows you to @@ -31,7 +31,7 @@ prestiges: true prestige: false # if true, players with the permission rankup.notify will receive notifications when they join -# to update if they are on an older version of Rankup. +# to update if the server is on an older version of Rankup. notify-update: true # how people should confirm ranking up @@ -55,28 +55,6 @@ max-rankup: # /maxrankup and ranks up to B and then C, it will just say "player has ranked up to C") individual-messages: true -gui: - rows: 1 - rankup: - material: EMERALD_BLOCK - # index can be separated by spaces to show in multiple groups - # for example: 0-3 9-12 18-21 - # you can also just use a single number instead of a range. - index: 0-3 - name: '&a&lConfirm' - # lore is optional - lore: '&6Rankup to &b{RANK}' - cancel: - material: REDSTONE_BLOCK - index: 5-8 - name: '&c&lCancel' - fill: - name: ' ' - # if you are using a 1.8-1.12 and you want to change this - # you can use MATERIAL:data, for example STAINED_GLASS_PANE:8 - # this works for both the rankup and cancel blocks as well - material: BLACK_STAINED_GLASS_PANE - # options when using the text rankup confirmation text: # the time in seconds for a player to diff --git a/src/main/resources/locale/en.yml b/src/main/resources/locale/en.yml index 7e42dd7..6f98eab 100644 --- a/src/main/resources/locale/en.yml +++ b/src/main/resources/locale/en.yml @@ -15,6 +15,28 @@ rankup: must-prestige: "&cYou must prestige to /rankup further!" + gui: + title: "Rankup to {RANK}" + rankup: + material: EMERALD_BLOCK + # index can be separated by spaces to show in multiple groups + # for example: 0-3 9-12 18-21 + # you can also just use a single number instead of a range. + index: 0-3 + name: '&a&lConfirm' + # lore is optional + lore: '&6Rankup to &b{RANK}' + cancel: + material: REDSTONE_BLOCK + index: 5-8 + name: '&c&lCancel' + fill: + name: ' ' + # if you are using a 1.8-1.12 and you want to change this + # you can use MATERIAL:data, for example STAINED_GLASS_PANE:8 + # this works for both the rankup and cancel blocks as well + material: BLACK_STAINED_GLASS_PANE + # you can (and probably should) you override these in rankups.yml # to show the specific requirements for each rank. # however if you are just using money or don't need to change the message per rank, you can use any combination of: @@ -47,7 +69,24 @@ prestige: confirmation: |- &eAre you sure you want to prestige to &a{RANK}&e? &eType &c/prestige &eagain to confirm. - title: "Prestige to {RANK}" + + gui: + title: "Prestige to {RANK}" + rankup: + material: GOLD_BLOCK + index: 0-3 + name: '&a&lConfirm' + lore: '&6Prestige to &b{RANK}' + cancel: + material: REDSTONE_BLOCK + index: 5-8 + name: '&c&lCancel' + fill: + name: ' ' + # if you are using a 1.8-1.12 and you want to change this + # you can use MATERIAL:data, for example STAINED_GLASS_PANE:8 + # this works for both the rankup and cancel blocks as well + material: BLACK_STAINED_GLASS_PANE list: complete: "&7{OLD_RANK} &8\xbb &7{RANK}" diff --git a/src/main/resources/locale/fr.yml b/src/main/resources/locale/fr.yml index fe72a29..b00de9f 100644 --- a/src/main/resources/locale/fr.yml +++ b/src/main/resources/locale/fr.yml @@ -10,8 +10,29 @@ rankup: confirmation: |- &eÊtes-vous sûr(e) de vouloir passer au rang &a{RANK}&e? &eTapez &c/rankup &eà nouveau pour confirmer. - # used for the GUI confirmation - title: "Passer au rang {RANK}" + + gui: + rows: 1 + title: "Passer au rang {RANK}" + rankup: + material: EMERALD_BLOCK + # index can be separated by spaces to show in multiple groups + # for example: 0-3 9-12 18-21 + # you can also just use a single number instead of a range. + index: 0-3 + name: '&a&lConfirm' + # lore is optional + lore: '&6Rankup to &b{RANK}' + cancel: + material: REDSTONE_BLOCK + index: 5-8 + name: '&c&lCancel' + fill: + name: ' ' + # if you are using a 1.8-1.12 and you want to change this + # you can use MATERIAL:data, for example STAINED_GLASS_PANE:8 + # this works for both the rankup and cancel blocks as well + material: BLACK_STAINED_GLASS_PANE must-prestige: "&cVous devez passer un prestige pour continuer à monter de rang!" @@ -49,6 +70,25 @@ prestige: &eTapez &c/prestige &eà nouveau pour confirmer. title: "Passer au prestige {RANK}" + gui: + rows: 1 + title: "Prestige to {RANK}" + rankup: + material: GOLD_BLOCK + index: 0-3 + name: '&a&lConfirm' + lore: '&6Prestige to &b{RANK}' + cancel: + material: REDSTONE_BLOCK + index: 5-8 + name: '&c&lCancel' + fill: + name: ' ' + # if you are using a 1.8-1.12 and you want to change this + # you can use MATERIAL:data, for example STAINED_GLASS_PANE:8 + # this works for both the rankup and cancel blocks as well + material: BLACK_STAINED_GLASS_PANE + list: complete: "&7{OLD_RANK} &8\xbb &7{RANK}" current: "&c{OLD_RANK} &e\xbb &c{RANK}" diff --git a/src/main/resources/locale/pt-br.yml b/src/main/resources/locale/pt_br.yml similarity index 72% rename from src/main/resources/locale/pt-br.yml rename to src/main/resources/locale/pt_br.yml index 3802e2a..578673b 100644 --- a/src/main/resources/locale/pt-br.yml +++ b/src/main/resources/locale/pt_br.yml @@ -10,11 +10,32 @@ rankup: confirmation: |- &eVocê tem certeza que deseja subir para &a{RANK}&e? &eDigite &c/rankup &enovamente para confirmar. - # Utilizado para confirmação em GUI. - title: "Rankup to {RANK}" must-prestige: "&cVocê deve subir de prestígio para dar /rankup a frente!" + gui: + rows: 1 + title: "Rankup to {RANK}" + rankup: + material: EMERALD_BLOCK + # index can be separated by spaces to show in multiple groups + # for example: 0-3 9-12 18-21 + # you can also just use a single number instead of a range. + index: 0-3 + name: '&a&lConfirm' + # lore is optional + lore: '&6Rankup to &b{RANK}' + cancel: + material: REDSTONE_BLOCK + index: 5-8 + name: '&c&lCancel' + fill: + name: ' ' + # if you are using a 1.8-1.12 and you want to change this + # you can use MATERIAL:data, for example STAINED_GLASS_PANE:8 + # this works for both the rankup and cancel blocks as well + material: BLACK_STAINED_GLASS_PANE + # Você pode (e deveria) substituir isto em rankups.yml # para mostrar os requerimentos específicos para cada rank. # contudo, se você está apenas usando dinheiro ou não precisa mudar as mensagens por rank, você pode usar qualquer combinação de: @@ -52,6 +73,25 @@ prestige: &eDigite &c/prestige &enovamente para confimar. title: "Subiu de prestígio para {RANK}" + gui: + rows: 1 + title: "Prestige to {RANK}" + rankup: + material: GOLD_BLOCK + index: 0-3 + name: '&a&lConfirm' + lore: '&6Prestige to &b{RANK}' + cancel: + material: REDSTONE_BLOCK + index: 5-8 + name: '&c&lCancel' + fill: + name: ' ' + # if you are using a 1.8-1.12 and you want to change this + # you can use MATERIAL:data, for example STAINED_GLASS_PANE:8 + # this works for both the rankup and cancel blocks as well + material: BLACK_STAINED_GLASS_PANE + list: complete: "&7{OLD_RANK} &8\xbb &7{RANK}" current: "&c{OLD_RANK} &e\xbb &c{RANK}" diff --git a/src/main/resources/locale/ru.yml b/src/main/resources/locale/ru.yml index 610c4d6..d4acdbc 100644 --- a/src/main/resources/locale/ru.yml +++ b/src/main/resources/locale/ru.yml @@ -9,8 +9,29 @@ rankup: confirmation: |- &eВы уверены, что хотите ранг до &a{RANK}&e? &eВведите &c/rankup &eещё раз, чтобы подтвердить. - # Используется для подтверждения в GUI - title: "Повысить до {RANK}" + + gui: + rows: 1 + title: "Повысить до {RANK}" + rankup: + material: EMERALD_BLOCK + # index can be separated by spaces to show in multiple groups + # for example: 0-3 9-12 18-21 + # you can also just use a single number instead of a range. + index: 0-3 + name: '&a&lConfirm' + # lore is optional + lore: '&6Rankup to &b{RANK}' + cancel: + material: REDSTONE_BLOCK + index: 5-8 + name: '&c&lCancel' + fill: + name: ' ' + # if you are using a 1.8-1.12 and you want to change this + # you can use MATERIAL:data, for example STAINED_GLASS_PANE:8 + # this works for both the rankup and cancel blocks as well + material: BLACK_STAINED_GLASS_PANE must-prestige: "&cВам нужно будет больше престижа для /rankup в будущем!" @@ -49,6 +70,25 @@ prestige: &eВведите &c/prestige &eснова для подтверждения. title: "Повысить престиж в {RANK}" + gui: + rows: 1 + title: "Prestige to {RANK}" + rankup: + material: GOLD_BLOCK + index: 0-3 + name: '&a&lConfirm' + lore: '&6Prestige to &b{RANK}' + cancel: + material: REDSTONE_BLOCK + index: 5-8 + name: '&c&lCancel' + fill: + name: ' ' + # if you are using a 1.8-1.12 and you want to change this + # you can use MATERIAL:data, for example STAINED_GLASS_PANE:8 + # this works for both the rankup and cancel blocks as well + material: BLACK_STAINED_GLASS_PANE + list: complete: "&7{OLD_RANK} &8\xbb &7{RANK}" current: "&c{OLD_RANK} &e\xbb &c{RANK}" diff --git a/src/main/resources/locale/zh_CN.yml b/src/main/resources/locale/zh_cn.yml similarity index 100% rename from src/main/resources/locale/zh_CN.yml rename to src/main/resources/locale/zh_cn.yml diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index e224dc1..db89bc2 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: Rankup version: ${version} -main: sh.okx.rankup.Rankup +main: sh.okx.rankup.RankupPlugin author: Okx depend: [Vault] softdepend: [PlaceholderAPI, mcMMO, AdvancedAchievements, Towny] diff --git a/src/main/resources/prestiges.yml b/src/main/resources/prestiges.yml index 79a4223..d84f138 100644 --- a/src/main/resources/prestiges.yml +++ b/src/main/resources/prestiges.yml @@ -1,4 +1,3 @@ -# !!! To use prestiges, you must first enable it in config.yml first: # the rank people must be to use this prestige diff --git a/src/main/resources/rankups.yml b/src/main/resources/rankups.yml index 00d3db3..c7a2bcc 100644 --- a/src/main/resources/rankups.yml +++ b/src/main/resources/rankups.yml @@ -1,4 +1,9 @@ -# see https://github.com/okx-code/Rankup3/wiki/Rank-format +# +# If you are adding your own ranks, make sure to delete the example ranks! +# Need help setting the plugin up? +# Read an example: https://github.com/okx-code/Rankup3/wiki/Configuration-Example +# Join the discord server for live support: https://discord.gg/maB4382 (buyers only) +# # this name doesn't matter Aexample: