diff --git a/src/main/java/com/drtshock/playervaults/Listeners.java b/src/main/java/com/drtshock/playervaults/Listeners.java index eacad90..ce25a8e 100644 --- a/src/main/java/com/drtshock/playervaults/Listeners.java +++ b/src/main/java/com/drtshock/playervaults/Listeners.java @@ -127,7 +127,11 @@ public class Listeners implements Listener { } if(Commands.SET_SIGN.containsKey(player.getName())) { int i = Commands.SET_SIGN.get(player.getName()).getChest(); - String owner = Commands.SET_SIGN.get(player.getName()).getOwner(); + boolean self = Commands.SET_SIGN.get(player.getName()).isSelf(); + String owner = null; + if(!self) { + owner = Commands.SET_SIGN.get(player.getName()).getOwner(); + } Commands.SET_SIGN.remove(player.getName()); event.setCancelled(true); if(event.getAction() == Action.RIGHT_CLICK_BLOCK) { @@ -138,7 +142,11 @@ public class Listeners implements Listener { int x = l.getBlockX(); int y = l.getBlockY(); int z = l.getBlockZ(); - plugin.getSigns().set(world + ";;" + x + ";;" + y + ";;" + z + ".owner", owner); + if(self) { + plugin.getSigns().set(world + ";;" + x + ";;" + y + ";;" + z + ".self", self); + } else { + plugin.getSigns().set(world + ";;" + x + ";;" + y + ";;" + z + ".owner", owner); + } plugin.getSigns().set(world + ";;" + x + ";;" + y + ";;" + z + ".chest", i); plugin.saveSigns(); player.sendMessage(Lang.TITLE.toString() + Lang.SET_SIGN); @@ -159,21 +167,29 @@ public class Listeners implements Listener { int y = l.getBlockY(); int z = l.getBlockZ(); if(plugin.getSigns().getKeys(false).contains(world + ";;" + x + ";;" + y + ";;" + z)) { - String owner = PlayerVaults.SIGNS.getString(world + ";;" + x + ";;" + y + ";;" + z + ".owner"); - int num = PlayerVaults.SIGNS.getInt(world + ";;" + x + ";;" + y + ";;" + z + ".chest"); - PlayerVaults.VM.loadVault(player, owner, num); - event.setCancelled(true); - player.sendMessage(Lang.TITLE.toString() + Lang.OPEN_WITH_SIGN.toString().replace("%v", String.valueOf(num)).replace("%p", owner)); + if(player.hasPermission("playervaults.signs.use")) { + boolean self = PlayerVaults.SIGNS.getBoolean(world + ";;" + x + ";;" + y + ";;" + z + ".self", false); + String owner = null; + if(!self) { + owner = PlayerVaults.SIGNS.getString(world + ";;" + x + ";;" + y + ";;" + z + ".owner"); + } + int num = PlayerVaults.SIGNS.getInt(world + ";;" + x + ";;" + y + ";;" + z + ".chest"); + PlayerVaults.VM.loadVault(player, (self) ? player.getName() : owner, num); + event.setCancelled(true); + player.sendMessage(Lang.TITLE.toString() + Lang.OPEN_WITH_SIGN.toString().replace("%v", String.valueOf(num)).replace("%p", (self) ? player.getName() : owner)); + } else { + player.sendMessage(Lang.TITLE.toString() + Lang.NO_PERMS); + } } } } } - + @EventHandler public void onBlockPhysics(BlockPhysicsEvent event) { blockChangeCheck(event.getBlock().getLocation()); } - + @EventHandler public void onEntityChangeBlock(EntityChangeBlockEvent event) { blockChangeCheck(event.getBlock().getLocation()); @@ -183,7 +199,7 @@ public class Listeners implements Listener { public void onBlockBreak(BlockBreakEvent event) { blockChangeCheck(event.getBlock().getLocation()); } - + public void blockChangeCheck(Location l) { String world = l.getWorld().getName(); int x = l.getBlockX(); diff --git a/src/main/java/com/drtshock/playervaults/PlayerVaults.java b/src/main/java/com/drtshock/playervaults/PlayerVaults.java index 44244fd..7150852 100644 --- a/src/main/java/com/drtshock/playervaults/PlayerVaults.java +++ b/src/main/java/com/drtshock/playervaults/PlayerVaults.java @@ -48,7 +48,7 @@ public class PlayerVaults extends JavaPlugin { Updater u = new Updater(); if(getConfig().getBoolean("check-update")) { try { - if(u.getUpdate()) { + if(u.getUpdate(getDescription().getVersion())) { UPDATE = true; } } catch(IOException e) { diff --git a/src/main/java/com/drtshock/playervaults/commands/Commands.java b/src/main/java/com/drtshock/playervaults/commands/Commands.java index bd31169..e1e7358 100644 --- a/src/main/java/com/drtshock/playervaults/commands/Commands.java +++ b/src/main/java/com/drtshock/playervaults/commands/Commands.java @@ -67,9 +67,21 @@ public class Commands implements CommandExecutor { sender.sendMessage(Lang.TITLE.toString() + Lang.NO_PERMS); } } else if(cmd.getName().equalsIgnoreCase("pvsign")) { - if(sender.hasPermission("playervaults.setsign")) { + if(sender.hasPermission("playervaults.signs.set")) { if(sender instanceof Player) { - if(args.length >= 2) { + if(args.length == 1) { + int i = 0; + try { + i = Integer.parseInt(args[0]); + } catch(NumberFormatException nfe) { + sender.sendMessage(Lang.TITLE.toString() + Lang.MUST_BE_NUMBER); + sender.sendMessage(Lang.TITLE.toString() + "Usage: /" + label + " <#>"); + return true; + } + SET_SIGN.put(sender.getName(), new SignSetInfo(i)); + sender.sendMessage(Lang.TITLE.toString() + Lang.CLICK_A_SIGN); + } + else if(args.length >= 2) { int i = 0; try { i = Integer.parseInt(args[1]); diff --git a/src/main/java/com/drtshock/playervaults/commands/SignSetInfo.java b/src/main/java/com/drtshock/playervaults/commands/SignSetInfo.java index c1d8b49..232dfad 100644 --- a/src/main/java/com/drtshock/playervaults/commands/SignSetInfo.java +++ b/src/main/java/com/drtshock/playervaults/commands/SignSetInfo.java @@ -4,12 +4,22 @@ public class SignSetInfo { private String o; private int i; + private boolean self = false; public SignSetInfo(String o, int i) { this.o = o; this.i = i; } + public SignSetInfo(int i) { + this.i = i; + this.self = true; + } + + public boolean isSelf() { + return this.self; + } + public String getOwner() { return this.o; }