diff --git a/pom.xml b/pom.xml index 3a9c451..f85038e 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.drtshock PlayerVaultsX - 4.1.3 + 4.1.4 PlayerVaultsX https://www.spigotmc.org/resources/51204/ @@ -53,7 +53,7 @@ org.spigotmc spigot-api - 1.14-R0.1-SNAPSHOT + 1.14.1-R0.1-SNAPSHOT provided diff --git a/src/main/java/com/drtshock/playervaults/PlayerVaults.java b/src/main/java/com/drtshock/playervaults/PlayerVaults.java index ba0b927..a20d51b 100644 --- a/src/main/java/com/drtshock/playervaults/PlayerVaults.java +++ b/src/main/java/com/drtshock/playervaults/PlayerVaults.java @@ -37,6 +37,7 @@ import org.bukkit.Material; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; +import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryInteractEvent; @@ -110,6 +111,7 @@ public class PlayerVaults extends JavaPlugin { debug("uuidvaultmanager", System.currentTimeMillis()); getServer().getPluginManager().registerEvents(new Listeners(this), this); getServer().getPluginManager().registerEvents(new VaultPreloadListener(), this); + getServer().getPluginManager().registerEvents(new SignListener(this), this); debug("registering listeners", System.currentTimeMillis()); this.backupsEnabled = this.getConfig().getBoolean("backups.enabled", true); loadSigns(); @@ -118,6 +120,7 @@ public class PlayerVaults extends JavaPlugin { getCommand("pv").setExecutor(new VaultCommand()); getCommand("pvdel").setExecutor(new DeleteCommand()); getCommand("pvconvert").setExecutor(new ConvertCommand()); + getCommand("pvsign").setExecutor(new SignCommand()); debug("registered commands", System.currentTimeMillis()); useVault = setupEconomy(); debug("setup economy", System.currentTimeMillis()); @@ -168,6 +171,7 @@ public class PlayerVaults extends JavaPlugin { if (cmd.getName().equalsIgnoreCase("pvreload")) { reloadConfig(); loadConfig(); // To update blocked materials. + reloadSigns(); loadLang(); sender.sendMessage(ChatColor.GREEN + "Reloaded PlayerVault's configuration and lang files."); } @@ -205,19 +209,13 @@ public class PlayerVaults extends JavaPlugin { } private void loadSigns() { - if (!getConfig().getBoolean("signs-enabled", true)) { - return; - } - - getCommand("pvsign").setExecutor(new SignCommand()); - getServer().getPluginManager().registerEvents(new SignListener(this), this); File signs = new File(getDataFolder(), "signs.yml"); if (!signs.exists()) { try { signs.createNewFile(); } catch (IOException e) { getLogger().severe("PlayerVaults has encountered a fatal error trying to load the signs file."); - getLogger().severe("Please report this error to drtshock."); + getLogger().severe("Please report this error on GitHub @ https://github.com/drtshock/PlayerVaults/"); e.printStackTrace(); } } @@ -225,6 +223,20 @@ public class PlayerVaults extends JavaPlugin { this.signs = YamlConfiguration.loadConfiguration(signs); } + private void reloadSigns() { + if (!getConfig().getBoolean("signs-enabled")) { + return; + } + if (!signsFile.exists()) loadSigns(); + try { + signs.load(signsFile); + } catch (IOException | InvalidConfigurationException e) { + getLogger().severe("PlayerVaults has encountered a fatal error trying to reload the signs file."); + getLogger().severe("Please report this error on GitHub @ https://github.com/drtshock/PlayerVaults/"); + e.printStackTrace(); + } + } + /** * Get the signs.yml config. * @@ -242,7 +254,7 @@ public class PlayerVaults extends JavaPlugin { } private void saveSignsFile() { - if (!getConfig().getBoolean("signs-enabled", true)) { + if (!getConfig().getBoolean("signs-enabled")) { return; } @@ -251,7 +263,7 @@ public class PlayerVaults extends JavaPlugin { signs.save(this.signsFile); } catch (IOException e) { getLogger().severe("PlayerVaults has encountered an error trying to save the signs file."); - getLogger().severe("Please report this error to drtshock."); + getLogger().severe("Please report this error on GitHub @ https://github.com/drtshock/PlayerVaults/"); e.printStackTrace(); } } diff --git a/src/main/java/com/drtshock/playervaults/commands/SignCommand.java b/src/main/java/com/drtshock/playervaults/commands/SignCommand.java index 5d2c192..b90f793 100644 --- a/src/main/java/com/drtshock/playervaults/commands/SignCommand.java +++ b/src/main/java/com/drtshock/playervaults/commands/SignCommand.java @@ -30,6 +30,10 @@ public class SignCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (sender.hasPermission("playervaults.signs.set")) { + if (!PlayerVaults.getInstance().getConfig().getBoolean("signs-enabled")) { + sender.sendMessage(Lang.TITLE.toString() + Lang.SIGNS_DISABLED.toString()); + return true; + } if (sender instanceof Player) { if (args.length == 1) { int i; diff --git a/src/main/java/com/drtshock/playervaults/listeners/SignListener.java b/src/main/java/com/drtshock/playervaults/listeners/SignListener.java index fc99fa7..3310806 100644 --- a/src/main/java/com/drtshock/playervaults/listeners/SignListener.java +++ b/src/main/java/com/drtshock/playervaults/listeners/SignListener.java @@ -41,15 +41,22 @@ import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.Inventory; public class SignListener implements Listener { - private PlayerVaults plugin; + /** + * TODO: Some of these events can be lag inducing (specifically: interactions & block breaking), + * perhaps we should try to optimize these listeners at some point? + */ + public SignListener(PlayerVaults plugin) { this.plugin = plugin; } @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onInteract(PlayerInteractEvent event) { + if (!PlayerVaults.getInstance().getConfig().getBoolean("signs-enabled")) { + return; + } Player player = event.getPlayer(); Block block = event.getClickedBlock(); if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { @@ -139,16 +146,25 @@ public class SignListener implements Listener { @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onBlockPhysics(BlockPhysicsEvent event) { + if (!PlayerVaults.getInstance().getConfig().getBoolean("signs-enabled")) { + return; + } blockChangeCheck(event.getBlock().getLocation()); } @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onEntityChangeBlock(EntityChangeBlockEvent event) { + if (!PlayerVaults.getInstance().getConfig().getBoolean("signs-enabled")) { + return; + } blockChangeCheck(event.getBlock().getLocation()); } @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void onBlockBreak(BlockBreakEvent event) { + if (!PlayerVaults.getInstance().getConfig().getBoolean("signs-enabled")) { + return; + } blockChangeCheck(event.getBlock().getLocation()); } diff --git a/src/main/java/com/drtshock/playervaults/translations/Lang.java b/src/main/java/com/drtshock/playervaults/translations/Lang.java index 2501ce0..eb1fc86 100644 --- a/src/main/java/com/drtshock/playervaults/translations/Lang.java +++ b/src/main/java/com/drtshock/playervaults/translations/Lang.java @@ -52,7 +52,8 @@ public enum Lang { CONVERT_BACKGROUND("conversion-background", "&fConversion has been forked to the background. See console for updates."), LOCKED("vaults-locked", "&cVaults are currently locked while conversion occurs. Please try again in a moment!"), HELP("help", "/pv "), - BLOCKED_ITEM("blocked-item", "&6%m &cis blocked from vaults"); + BLOCKED_ITEM("blocked-item", "&6%m &cis blocked from vaults"), + SIGNS_DISABLED("signs-disabled", "&cVault signs are currently disabled."); private static YamlConfiguration LANG; private final String path; diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index b0420ca..0d58199 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -17,7 +17,6 @@ language: english # Signs # This will determine whether vault signs are enabled. # If you don't know what this is or if it's for you, see the resource page. -# Reminder: This is only checked during startup. signs-enabled: false # Economy diff --git a/src/main/resources/lang.yml b/src/main/resources/lang.yml index 0a39b14..1940650 100644 --- a/src/main/resources/lang.yml +++ b/src/main/resources/lang.yml @@ -30,4 +30,5 @@ conversion-complete: "&aConverted %converted players to PlayerVaults" conversion-background: "&fConversion has been forked to the background. See console for updates." vaults-locked: "&cVaults are currently locked while conversion occurs. Please try again in a moment!" help: "/pv " -blocked-item: "&6%m &cis blocked from vaults." \ No newline at end of file +blocked-item: "&6%m &cis blocked from vaults." +signs-disabled: "&cVault signs are currently disabled." \ No newline at end of file diff --git a/src/main/resources/lang/bulgarian.yml b/src/main/resources/lang/bulgarian.yml index 67274bb..938296d 100644 --- a/src/main/resources/lang/bulgarian.yml +++ b/src/main/resources/lang/bulgarian.yml @@ -30,4 +30,5 @@ conversion-complete: "&aКонвертирахме %converted играч(а) к conversion-background: "&fЗапочнахме конвертирането на заден план. Следете конзолата за статуса на операцията." vaults-locked: "&cСейфовете са заключени докато тече конвертиране. Моля, опитайте пак по-късно!" help: "/pv <номер>" -blocked-item: "&6%m &cне може да се слага в сейфове." \ No newline at end of file +blocked-item: "&6%m &cне може да се слага в сейфове." +signs-disabled: "&cVault signs are currently disabled." \ No newline at end of file diff --git a/src/main/resources/lang/dutch.yml b/src/main/resources/lang/dutch.yml index ace8b60..b17dae2 100644 --- a/src/main/resources/lang/dutch.yml +++ b/src/main/resources/lang/dutch.yml @@ -30,4 +30,5 @@ conversion-complete: "&aEr zijn %converted spelers naar PlayerVaults geconvertee conversion-background: "&fHet converteren is naar de achtergrond geplaatst. Check de console voor de status van het converteren" vaults-locked: "&cVaults zijn op dit moment op slot terwijl het wordt geconverteerd. Probeer het later opnieuw!" help: "/pv " -blocked-item: "&6%m &cis geblokkeer van vaults." \ No newline at end of file +blocked-item: "&6%m &cis geblokkeer van vaults." +signs-disabled: "&cVault signs are currently disabled." \ No newline at end of file diff --git a/src/main/resources/lang/english.yml b/src/main/resources/lang/english.yml index 0a39b14..1940650 100644 --- a/src/main/resources/lang/english.yml +++ b/src/main/resources/lang/english.yml @@ -30,4 +30,5 @@ conversion-complete: "&aConverted %converted players to PlayerVaults" conversion-background: "&fConversion has been forked to the background. See console for updates." vaults-locked: "&cVaults are currently locked while conversion occurs. Please try again in a moment!" help: "/pv " -blocked-item: "&6%m &cis blocked from vaults." \ No newline at end of file +blocked-item: "&6%m &cis blocked from vaults." +signs-disabled: "&cVault signs are currently disabled." \ No newline at end of file diff --git a/src/main/resources/lang/german.yml b/src/main/resources/lang/german.yml index a7dac52..599ffc9 100644 --- a/src/main/resources/lang/german.yml +++ b/src/main/resources/lang/german.yml @@ -30,4 +30,5 @@ conversion-complete: "&%converted Spieler zu PlayerVaults konvertiert" conversion-background: "&fKonvertierung wurde im Hintergrund genauer gezeigt. Schaue in die Konsole für mehr Details." vaults-locked: "&cTresore sind gerade wegen einer Konvertierung verschlossen. Versuche es in einem Moment nocheinmal!" help: "/pv " -blocked-item: "&6%m &cist von Tresoren geblockt." \ No newline at end of file +blocked-item: "&6%m &cist von Tresoren geblockt." +signs-disabled: "&cVault signs are currently disabled." \ No newline at end of file diff --git a/src/main/resources/lang/russian.yml b/src/main/resources/lang/russian.yml index e9e6650..3da56b0 100644 --- a/src/main/resources/lang/russian.yml +++ b/src/main/resources/lang/russian.yml @@ -31,3 +31,4 @@ conversion-background: "&fКонвертирование просходит в vaults-locked: "&cХранилища сейчас заблокированы, пока конвертируются. Пожалуйста, попробуйте чуть позже!" help: "/pv <номер>" blocked-item: "&cПредмет «&6%m&c» &cзаблокирован хранилищем." +signs-disabled: "&cVault signs are currently disabled." \ No newline at end of file diff --git a/src/main/resources/lang/turkish.yml b/src/main/resources/lang/turkish.yml index 342354d..58e7378 100644 --- a/src/main/resources/lang/turkish.yml +++ b/src/main/resources/lang/turkish.yml @@ -30,4 +30,5 @@ conversion-complete: "&a%converted depo PlayerVaults'a dönüştürüldü" conversion-background: "&fDönüşüm, arka plana aktarıldı. Detaylar için konsola bakın." vaults-locked: "&cDönüşüm gerçekleştiğinde kasalar kilitlenir. Lütfen biraz sonra tekrar deneyin!" help: "/pv " -blocked-item: "&6%m &cdepoda barındırılamaz!" \ No newline at end of file +blocked-item: "&6%m &cdepoda barındırılamaz!" +signs-disabled: "&cVault signs are currently disabled." \ No newline at end of file