Fix sign usage permissions. Resolves #54.
This commit is contained in:
@@ -54,8 +54,8 @@ public class VaultCommand implements CommandExecutor {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
Player searchPlayer = Bukkit.getPlayer(args[0]);
|
OfflinePlayer searchPlayer = Bukkit.getOfflinePlayer(args[0]);
|
||||||
if (searchPlayer == null) {
|
if (searchPlayer == null || !searchPlayer.hasPlayedBefore()) {
|
||||||
sender.sendMessage(Lang.TITLE.toString() + Lang.NO_PLAYER_FOUND.toString().replaceAll("%p", args[0]));
|
sender.sendMessage(Lang.TITLE.toString() + Lang.NO_PLAYER_FOUND.toString().replaceAll("%p", args[0]));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -152,25 +152,32 @@ public class Listeners implements Listener {
|
|||||||
int y = l.getBlockY();
|
int y = l.getBlockY();
|
||||||
int z = l.getBlockZ();
|
int z = l.getBlockZ();
|
||||||
if (plugin.getSigns().getKeys(false).contains(world + ";;" + x + ";;" + y + ";;" + z)) {
|
if (plugin.getSigns().getKeys(false).contains(world + ";;" + x + ";;" + y + ";;" + z)) {
|
||||||
int num = PlayerVaults.getInstance().getSigns().getInt(world + ";;" + x + ";;" + y + ";;" + z + ".chest");
|
int num = PlayerVaults.getInstance().getSigns().getInt(world + ";;" + x + ";;" + y + ";;" + z + ".chest", 1);
|
||||||
if ((player.hasPermission("playervaults.signs.use") && (player.hasPermission("playervaults.signs.bypass") || VaultOperations.checkPerms(player, 99)))) {
|
if (player.hasPermission("playervaults.signs.use") || player.hasPermission("playervaults.signs.bypass")) {
|
||||||
boolean self = PlayerVaults.getInstance().getSigns().getBoolean(world + ";;" + x + ";;" + y + ";;" + z + ".self", false);
|
boolean self = PlayerVaults.getInstance().getSigns().getBoolean(world + ";;" + x + ";;" + y + ";;" + z + ".self", false);
|
||||||
String owner = null;
|
String owner = self ? player.getName() : PlayerVaults.getInstance().getSigns().getString(world + ";;" + x + ";;" + y + ";;" + z + ".owner");
|
||||||
if (!self) {
|
|
||||||
owner = PlayerVaults.getInstance().getSigns().getString(world + ";;" + x + ";;" + y + ";;" + z + ".owner");
|
|
||||||
}
|
|
||||||
OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(owner != null ? owner : event.getPlayer().getName()); // Not best way but :\
|
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());
|
player.sendMessage(Lang.TITLE.toString() + Lang.VAULT_DOES_NOT_EXIST.toString());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (self) {
|
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));
|
Inventory inv = UUIDVaultManager.getInstance().loadOwnVault(player, num, VaultOperations.getMaxVaultSize(player));
|
||||||
player.openInventory(inv);
|
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 {
|
} else {
|
||||||
Inventory inv = UUIDVaultManager.getInstance().loadOtherVault(offlinePlayer.getUniqueId(), num, VaultOperations.getMaxVaultSize(offlinePlayer));
|
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);
|
player.openInventory(inv);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
PlayerVaults.getInstance().getInVault().put(player.getName(), new VaultViewInfo((self) ? player.getName() : owner, num));
|
PlayerVaults.getInstance().getInVault().put(player.getName(), new VaultViewInfo((self) ? player.getName() : owner, num));
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
player.sendMessage(Lang.TITLE.toString() + Lang.OPEN_WITH_SIGN.toString().replace("%v", String.valueOf(num)).replace("%p", (self) ? player.getName() : owner));
|
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.
|
* @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()) {
|
if (isLocked()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (player.hasPermission("playervaults.admin")) {
|
if (player.hasPermission("playervaults.admin")) {
|
||||||
|
if(!holder.hasPlayedBefore()) {
|
||||||
|
player.sendMessage(Lang.TITLE.toString() + Lang.VAULT_DOES_NOT_EXIST.toString());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
int number = 0;
|
int number = 0;
|
||||||
try {
|
try {
|
||||||
number = Integer.parseInt(arg);
|
number = Integer.parseInt(arg);
|
||||||
|
|||||||
@@ -20,3 +20,10 @@ commands:
|
|||||||
pvconvert:
|
pvconvert:
|
||||||
description: Convert other plugins to PlayerVaults
|
description: Convert other plugins to PlayerVaults
|
||||||
aliases: [vaultconvert]
|
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