Add ability to change vault size (buggy, fix permissions later)

This commit is contained in:
gomeow
2013-06-13 00:01:00 -07:00
parent b832fa839f
commit 1635a84952
4 changed files with 18 additions and 10 deletions
@@ -168,7 +168,7 @@ public class Listeners implements Listener {
owner = PlayerVaults.SIGNS.getString(world + ";;" + x + ";;" + y + ";;" + z + ".owner"); owner = PlayerVaults.SIGNS.getString(world + ";;" + x + ";;" + y + ";;" + z + ".owner");
} }
int num = PlayerVaults.SIGNS.getInt(world + ";;" + x + ";;" + y + ";;" + z + ".chest"); int num = PlayerVaults.SIGNS.getInt(world + ";;" + x + ";;" + y + ";;" + z + ".chest");
Inventory inv = PlayerVaults.VM.loadVault((self) ? player.getName() : owner, num); Inventory inv = PlayerVaults.VM.loadVault((self) ? player.getName() : owner, num, !player.hasPermission("playervaults.small"));
player.openInventory(inv); player.openInventory(inv);
PlayerVaults.IN_VAULT.put(player.getName(), new VaultViewInfo((self) ? player.getName() : owner, num)); PlayerVaults.IN_VAULT.put(player.getName(), new VaultViewInfo((self) ? player.getName() : owner, num));
event.setCancelled(true); event.setCancelled(true);
@@ -46,7 +46,8 @@ public class VaultOperations {
} }
if (checkPerms(player, number)) { if (checkPerms(player, number)) {
if (EconomyOperations.payToOpen(player)) { if (EconomyOperations.payToOpen(player)) {
Inventory inv = PlayerVaults.VM.loadVault(player.getName(), number); PlayerVaults.log.info(String.valueOf(player.hasPermission("playervaults.small")));
Inventory inv = PlayerVaults.VM.loadVault(player.getName(), number, !player.hasPermission("playervaults.small"));
player.openInventory(inv); player.openInventory(inv);
player.sendMessage(Lang.TITLE.toString() + Lang.OPEN_VAULT.toString().replace("%v", arg)); player.sendMessage(Lang.TITLE.toString() + Lang.OPEN_VAULT.toString().replace("%v", arg));
return true; return true;
@@ -81,7 +82,7 @@ public class VaultOperations {
} catch(NumberFormatException nfe) { } catch(NumberFormatException nfe) {
player.sendMessage(Lang.TITLE.toString() + ChatColor.RED + Lang.MUST_BE_NUMBER); player.sendMessage(Lang.TITLE.toString() + ChatColor.RED + Lang.MUST_BE_NUMBER);
} }
Inventory inv = PlayerVaults.VM.loadVault(holder, number); Inventory inv = PlayerVaults.VM.loadVault(holder, number, true);
player.openInventory(inv); player.openInventory(inv);
player.sendMessage(Lang.TITLE.toString() + Lang.OPEN_OTHER_VAULT.toString().replace("%v", arg).replace("%p", holder)); player.sendMessage(Lang.TITLE.toString() + Lang.OPEN_OTHER_VAULT.toString().replace("%v", arg).replace("%p", holder));
return true; return true;
@@ -72,8 +72,8 @@ public class Serialization {
return result; return result;
} }
public static Inventory toInventory(List<String> stringItems, int number) { public static Inventory toInventory(List<String> stringItems, int number, boolean large) {
Inventory inv = Bukkit.createInventory(null, 54, ChatColor.RED + "Vault #" + number); Inventory inv = Bukkit.createInventory(null, (large) ? 54 : 27, ChatColor.RED + "Vault #" + number);
List<ItemStack> contents = new ArrayList<ItemStack>(); List<ItemStack> contents = new ArrayList<ItemStack>();
for(String piece:stringItems) { for(String piece:stringItems) {
if (piece.equalsIgnoreCase("null")) { if (piece.equalsIgnoreCase("null")) {
@@ -36,8 +36,15 @@ public class VaultManager {
* @throws IOException Uh oh! * @throws IOException Uh oh!
*/ */
public void saveVault(Inventory inventory, String player, int number) throws IOException { public void saveVault(Inventory inventory, String player, int number) throws IOException {
int size = inventory.getSize();
YamlConfiguration yaml = getPlayerVaultFile(player); YamlConfiguration yaml = getPlayerVaultFile(player);
if (size == 54) {
yaml.set("vault" + number, null); yaml.set("vault" + number, null);
} else {
for(int x = 0; x < 27; x++) {
yaml.set("vault" + number + "." + x, null);
}
}
List<String> list = Serialization.toString(inventory); List<String> list = Serialization.toString(inventory);
String[] ser = list.toArray(new String[list.size()]); String[] ser = list.toArray(new String[list.size()]);
for(int x = 0; x < ser.length; x++) { for(int x = 0; x < ser.length; x++) {
@@ -53,7 +60,7 @@ public class VaultManager {
* @param holder The holder of the vault. * @param holder The holder of the vault.
* @param number The vault number. * @param number The vault number.
*/ */
public Inventory loadVault(String holder, int number) { public Inventory loadVault(String holder, int number, boolean large) {
VaultViewInfo info = new VaultViewInfo(holder, number); VaultViewInfo info = new VaultViewInfo(holder, number);
Inventory inv = null; Inventory inv = null;
if (PlayerVaults.OPENINVENTORIES.containsKey(info.toString())) { if (PlayerVaults.OPENINVENTORIES.containsKey(info.toString())) {
@@ -64,7 +71,7 @@ public class VaultManager {
inv = Bukkit.createInventory(null, 54, ChatColor.DARK_RED + "Vault #" + String.valueOf(number)); inv = Bukkit.createInventory(null, 54, ChatColor.DARK_RED + "Vault #" + String.valueOf(number));
} else { } else {
List<String> data = new ArrayList<String>(); List<String> data = new ArrayList<String>();
for(int x = 0; x < 54; x++) { for(int x = 0; x < ((large) ? 54 : 27); x++) {
String line = playerFile.getString("vault" + number + "." + x); String line = playerFile.getString("vault" + number + "." + x);
if (line != null) { if (line != null) {
data.add(line); data.add(line);
@@ -72,7 +79,7 @@ public class VaultManager {
data.add("null"); data.add("null");
} }
} }
inv = Serialization.toInventory(data, number); inv = Serialization.toInventory(data, number, large);
} }
PlayerVaults.OPENINVENTORIES.put(info.toString(), inv); PlayerVaults.OPENINVENTORIES.put(info.toString(), inv);
} }
@@ -92,7 +99,7 @@ public class VaultManager {
Inventory inv = Bukkit.createInventory(null, 54, ChatColor.GREEN + "Vault #" + String.valueOf(number)); Inventory inv = Bukkit.createInventory(null, 54, ChatColor.GREEN + "Vault #" + String.valueOf(number));
return inv; return inv;
} else { } else {
Inventory inv = Serialization.toInventory(data, number); Inventory inv = Serialization.toInventory(data, number, true);
return inv; return inv;
} }
} }