Rework vault signs (#387)
* Rework vault signs * Fix potential vault sign issues
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
@@ -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 <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 final String path;
|
||||
|
||||
Reference in New Issue
Block a user