Fix sign usage permissions. Resolves #54.
This commit is contained in:
@@ -54,8 +54,8 @@ public class VaultCommand implements CommandExecutor {
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
Player searchPlayer = Bukkit.getPlayer(args[0]);
|
||||
if (searchPlayer == null) {
|
||||
OfflinePlayer searchPlayer = Bukkit.getOfflinePlayer(args[0]);
|
||||
if (searchPlayer == null || !searchPlayer.hasPlayedBefore()) {
|
||||
sender.sendMessage(Lang.TITLE.toString() + Lang.NO_PLAYER_FOUND.toString().replaceAll("%p", args[0]));
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -152,25 +152,32 @@ public class Listeners implements Listener {
|
||||
int y = l.getBlockY();
|
||||
int z = l.getBlockZ();
|
||||
if (plugin.getSigns().getKeys(false).contains(world + ";;" + x + ";;" + y + ";;" + z)) {
|
||||
int num = PlayerVaults.getInstance().getSigns().getInt(world + ";;" + x + ";;" + y + ";;" + z + ".chest");
|
||||
if ((player.hasPermission("playervaults.signs.use") && (player.hasPermission("playervaults.signs.bypass") || VaultOperations.checkPerms(player, 99)))) {
|
||||
int num = PlayerVaults.getInstance().getSigns().getInt(world + ";;" + x + ";;" + y + ";;" + z + ".chest", 1);
|
||||
if (player.hasPermission("playervaults.signs.use") || player.hasPermission("playervaults.signs.bypass")) {
|
||||
boolean self = PlayerVaults.getInstance().getSigns().getBoolean(world + ";;" + x + ";;" + y + ";;" + z + ".self", false);
|
||||
String owner = null;
|
||||
if (!self) {
|
||||
owner = PlayerVaults.getInstance().getSigns().getString(world + ";;" + x + ";;" + y + ";;" + z + ".owner");
|
||||
}
|
||||
String owner = self ? player.getName() : PlayerVaults.getInstance().getSigns().getString(world + ";;" + x + ";;" + y + ";;" + z + ".owner");
|
||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(owner != null ? owner : event.getPlayer().getName()); // Not best way but :\
|
||||
if (offlinePlayer == null) {
|
||||
if (offlinePlayer == null || !offlinePlayer.hasPlayedBefore()) {
|
||||
player.sendMessage(Lang.TITLE.toString() + Lang.VAULT_DOES_NOT_EXIST.toString());
|
||||
return;
|
||||
}
|
||||
if (self) {
|
||||
// We already checked that they can use signs, now lets check if they have this many vaults.
|
||||
if(VaultOperations.checkPerms(player, num)) {
|
||||
Inventory inv = UUIDVaultManager.getInstance().loadOwnVault(player, num, VaultOperations.getMaxVaultSize(player));
|
||||
player.openInventory(inv);
|
||||
} else {
|
||||
player.sendMessage(Lang.TITLE.toString() + Lang.NO_PERMS.toString());
|
||||
return; // Otherwise it would try to add vault view info down there.
|
||||
}
|
||||
} else {
|
||||
Inventory inv = UUIDVaultManager.getInstance().loadOtherVault(offlinePlayer.getUniqueId(), num, VaultOperations.getMaxVaultSize(offlinePlayer));
|
||||
if(inv == null) {
|
||||
player.sendMessage(Lang.TITLE.toString() + Lang.VAULT_DOES_NOT_EXIST.toString());
|
||||
} else {
|
||||
player.openInventory(inv);
|
||||
}
|
||||
}
|
||||
PlayerVaults.getInstance().getInVault().put(player.getName(), new VaultViewInfo((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));
|
||||
|
||||
@@ -167,11 +167,15 @@ public class VaultOperations {
|
||||
*
|
||||
* @return Whether or not the player was allowed to open it.
|
||||
*/
|
||||
public static boolean openOtherVault(Player player, Player holder, String arg) {
|
||||
public static boolean openOtherVault(Player player, OfflinePlayer holder, String arg) {
|
||||
if (isLocked()) {
|
||||
return false;
|
||||
}
|
||||
if (player.hasPermission("playervaults.admin")) {
|
||||
if(!holder.hasPlayedBefore()) {
|
||||
player.sendMessage(Lang.TITLE.toString() + Lang.VAULT_DOES_NOT_EXIST.toString());
|
||||
return false;
|
||||
}
|
||||
int number = 0;
|
||||
try {
|
||||
number = Integer.parseInt(arg);
|
||||
|
||||
@@ -20,3 +20,10 @@ commands:
|
||||
pvconvert:
|
||||
description: Convert other plugins to PlayerVaults
|
||||
aliases: [vaultconvert]
|
||||
permissions:
|
||||
playervaults.commands.use:
|
||||
description: Open own vault with command.
|
||||
default: true
|
||||
playervaults.admin:
|
||||
description: Admin vault operations.
|
||||
default: op
|
||||
Reference in New Issue
Block a user