Rework vault signs (#387)

* Rework vault signs

* Fix potential vault sign issues
This commit is contained in:
ArtelGG
2019-05-30 12:28:03 -04:00
committed by Trent Hensler
parent 3821a9912d
commit 0592554f0c
13 changed files with 59 additions and 20 deletions
+2 -2
View File
@@ -4,7 +4,7 @@
<groupId>com.drtshock</groupId> <groupId>com.drtshock</groupId>
<artifactId>PlayerVaultsX</artifactId> <artifactId>PlayerVaultsX</artifactId>
<version>4.1.3</version> <version>4.1.4</version>
<name>PlayerVaultsX</name> <name>PlayerVaultsX</name>
<url>https://www.spigotmc.org/resources/51204/</url> <url>https://www.spigotmc.org/resources/51204/</url>
@@ -53,7 +53,7 @@
<dependency> <dependency>
<groupId>org.spigotmc</groupId> <groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId> <artifactId>spigot-api</artifactId>
<version>1.14-R0.1-SNAPSHOT</version> <version>1.14.1-R0.1-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
@@ -37,6 +37,7 @@ import org.bukkit.Material;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryInteractEvent; import org.bukkit.event.inventory.InventoryInteractEvent;
@@ -110,6 +111,7 @@ public class PlayerVaults extends JavaPlugin {
debug("uuidvaultmanager", System.currentTimeMillis()); debug("uuidvaultmanager", System.currentTimeMillis());
getServer().getPluginManager().registerEvents(new Listeners(this), this); getServer().getPluginManager().registerEvents(new Listeners(this), this);
getServer().getPluginManager().registerEvents(new VaultPreloadListener(), this); getServer().getPluginManager().registerEvents(new VaultPreloadListener(), this);
getServer().getPluginManager().registerEvents(new SignListener(this), this);
debug("registering listeners", System.currentTimeMillis()); debug("registering listeners", System.currentTimeMillis());
this.backupsEnabled = this.getConfig().getBoolean("backups.enabled", true); this.backupsEnabled = this.getConfig().getBoolean("backups.enabled", true);
loadSigns(); loadSigns();
@@ -118,6 +120,7 @@ public class PlayerVaults extends JavaPlugin {
getCommand("pv").setExecutor(new VaultCommand()); getCommand("pv").setExecutor(new VaultCommand());
getCommand("pvdel").setExecutor(new DeleteCommand()); getCommand("pvdel").setExecutor(new DeleteCommand());
getCommand("pvconvert").setExecutor(new ConvertCommand()); getCommand("pvconvert").setExecutor(new ConvertCommand());
getCommand("pvsign").setExecutor(new SignCommand());
debug("registered commands", System.currentTimeMillis()); debug("registered commands", System.currentTimeMillis());
useVault = setupEconomy(); useVault = setupEconomy();
debug("setup economy", System.currentTimeMillis()); debug("setup economy", System.currentTimeMillis());
@@ -168,6 +171,7 @@ public class PlayerVaults extends JavaPlugin {
if (cmd.getName().equalsIgnoreCase("pvreload")) { if (cmd.getName().equalsIgnoreCase("pvreload")) {
reloadConfig(); reloadConfig();
loadConfig(); // To update blocked materials. loadConfig(); // To update blocked materials.
reloadSigns();
loadLang(); loadLang();
sender.sendMessage(ChatColor.GREEN + "Reloaded PlayerVault's configuration and lang files."); sender.sendMessage(ChatColor.GREEN + "Reloaded PlayerVault's configuration and lang files.");
} }
@@ -205,19 +209,13 @@ public class PlayerVaults extends JavaPlugin {
} }
private void loadSigns() { 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"); File signs = new File(getDataFolder(), "signs.yml");
if (!signs.exists()) { if (!signs.exists()) {
try { try {
signs.createNewFile(); signs.createNewFile();
} catch (IOException e) { } catch (IOException e) {
getLogger().severe("PlayerVaults has encountered a fatal error trying to load the signs file."); 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(); e.printStackTrace();
} }
} }
@@ -225,6 +223,20 @@ public class PlayerVaults extends JavaPlugin {
this.signs = YamlConfiguration.loadConfiguration(signs); 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. * Get the signs.yml config.
* *
@@ -242,7 +254,7 @@ public class PlayerVaults extends JavaPlugin {
} }
private void saveSignsFile() { private void saveSignsFile() {
if (!getConfig().getBoolean("signs-enabled", true)) { if (!getConfig().getBoolean("signs-enabled")) {
return; return;
} }
@@ -251,7 +263,7 @@ public class PlayerVaults extends JavaPlugin {
signs.save(this.signsFile); signs.save(this.signsFile);
} catch (IOException e) { } catch (IOException e) {
getLogger().severe("PlayerVaults has encountered an error trying to save the signs file."); 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(); e.printStackTrace();
} }
} }
@@ -30,6 +30,10 @@ public class SignCommand implements CommandExecutor {
@Override @Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (sender.hasPermission("playervaults.signs.set")) { 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 (sender instanceof Player) {
if (args.length == 1) { if (args.length == 1) {
int i; int i;
@@ -41,15 +41,22 @@ import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
public class SignListener implements Listener { public class SignListener implements Listener {
private PlayerVaults plugin; 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) { public SignListener(PlayerVaults plugin) {
this.plugin = plugin; this.plugin = plugin;
} }
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onInteract(PlayerInteractEvent event) { public void onInteract(PlayerInteractEvent event) {
if (!PlayerVaults.getInstance().getConfig().getBoolean("signs-enabled")) {
return;
}
Player player = event.getPlayer(); Player player = event.getPlayer();
Block block = event.getClickedBlock(); Block block = event.getClickedBlock();
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
@@ -139,16 +146,25 @@ public class SignListener implements Listener {
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onBlockPhysics(BlockPhysicsEvent event) { public void onBlockPhysics(BlockPhysicsEvent event) {
if (!PlayerVaults.getInstance().getConfig().getBoolean("signs-enabled")) {
return;
}
blockChangeCheck(event.getBlock().getLocation()); blockChangeCheck(event.getBlock().getLocation());
} }
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onEntityChangeBlock(EntityChangeBlockEvent event) { public void onEntityChangeBlock(EntityChangeBlockEvent event) {
if (!PlayerVaults.getInstance().getConfig().getBoolean("signs-enabled")) {
return;
}
blockChangeCheck(event.getBlock().getLocation()); blockChangeCheck(event.getBlock().getLocation());
} }
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onBlockBreak(BlockBreakEvent event) { public void onBlockBreak(BlockBreakEvent event) {
if (!PlayerVaults.getInstance().getConfig().getBoolean("signs-enabled")) {
return;
}
blockChangeCheck(event.getBlock().getLocation()); blockChangeCheck(event.getBlock().getLocation());
} }
@@ -52,7 +52,8 @@ public enum Lang {
CONVERT_BACKGROUND("conversion-background", "&fConversion has been forked to the background. See console for updates."), 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!"), LOCKED("vaults-locked", "&cVaults are currently locked while conversion occurs. Please try again in a moment!"),
HELP("help", "/pv <number>"), HELP("help", "/pv <number>"),
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 static YamlConfiguration LANG;
private final String path; private final String path;
-1
View File
@@ -17,7 +17,6 @@ language: english
# Signs # Signs
# This will determine whether vault signs are enabled. # 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. # 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 signs-enabled: false
# Economy # Economy
+2 -1
View File
@@ -30,4 +30,5 @@ conversion-complete: "&aConverted %converted players to PlayerVaults"
conversion-background: "&fConversion has been forked to the background. See console for updates." 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!" vaults-locked: "&cVaults are currently locked while conversion occurs. Please try again in a moment!"
help: "/pv <number>" help: "/pv <number>"
blocked-item: "&6%m &cis blocked from vaults." blocked-item: "&6%m &cis blocked from vaults."
signs-disabled: "&cVault signs are currently disabled."
+2 -1
View File
@@ -30,4 +30,5 @@ conversion-complete: "&aКонвертирахме %converted играч(а) к
conversion-background: "&fЗапочнахме конвертирането на заден план. Следете конзолата за статуса на операцията." conversion-background: "&fЗапочнахме конвертирането на заден план. Следете конзолата за статуса на операцията."
vaults-locked: "&cСейфовете са заключени докато тече конвертиране. Моля, опитайте пак по-късно!" vaults-locked: "&cСейфовете са заключени докато тече конвертиране. Моля, опитайте пак по-късно!"
help: "/pv <номер>" help: "/pv <номер>"
blocked-item: "&6%m &cне може да се слага в сейфове." blocked-item: "&6%m &cне може да се слага в сейфове."
signs-disabled: "&cVault signs are currently disabled."
+2 -1
View File
@@ -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" 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!" vaults-locked: "&cVaults zijn op dit moment op slot terwijl het wordt geconverteerd. Probeer het later opnieuw!"
help: "/pv <number>" help: "/pv <number>"
blocked-item: "&6%m &cis geblokkeer van vaults." blocked-item: "&6%m &cis geblokkeer van vaults."
signs-disabled: "&cVault signs are currently disabled."
+2 -1
View File
@@ -30,4 +30,5 @@ conversion-complete: "&aConverted %converted players to PlayerVaults"
conversion-background: "&fConversion has been forked to the background. See console for updates." 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!" vaults-locked: "&cVaults are currently locked while conversion occurs. Please try again in a moment!"
help: "/pv <number>" help: "/pv <number>"
blocked-item: "&6%m &cis blocked from vaults." blocked-item: "&6%m &cis blocked from vaults."
signs-disabled: "&cVault signs are currently disabled."
+2 -1
View File
@@ -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." 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!" vaults-locked: "&cTresore sind gerade wegen einer Konvertierung verschlossen. Versuche es in einem Moment nocheinmal!"
help: "/pv <number>" help: "/pv <number>"
blocked-item: "&6%m &cist von Tresoren geblockt." blocked-item: "&6%m &cist von Tresoren geblockt."
signs-disabled: "&cVault signs are currently disabled."
+1
View File
@@ -31,3 +31,4 @@ conversion-background: "&fКонвертирование просходит в
vaults-locked: "&cХранилища сейчас заблокированы, пока конвертируются. Пожалуйста, попробуйте чуть позже!" vaults-locked: "&cХранилища сейчас заблокированы, пока конвертируются. Пожалуйста, попробуйте чуть позже!"
help: "/pv <номер>" help: "/pv <номер>"
blocked-item: "&cПредмет «&6%m&c» &cзаблокирован хранилищем." blocked-item: "&cПредмет «&6%m&c» &cзаблокирован хранилищем."
signs-disabled: "&cVault signs are currently disabled."
+2 -1
View File
@@ -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." 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!" vaults-locked: "&cDönüşüm gerçekleştiğinde kasalar kilitlenir. Lütfen biraz sonra tekrar deneyin!"
help: "/pv <numara>" help: "/pv <numara>"
blocked-item: "&6%m &cdepoda barındırılamaz!" blocked-item: "&6%m &cdepoda barındırılamaz!"
signs-disabled: "&cVault signs are currently disabled."