From b643cce511ad2fe6e4836a3f7cea786138434df1 Mon Sep 17 00:00:00 2001 From: garbagemule Date: Mon, 22 Jul 2013 19:10:11 +0200 Subject: [PATCH] Fix class chest bones not giving pets. --- src/com/garbagemule/MobArena/ArenaClass.java | 13 ------------ src/com/garbagemule/MobArena/ArenaImpl.java | 22 ++++++++++---------- 2 files changed, 11 insertions(+), 24 deletions(-) diff --git a/src/com/garbagemule/MobArena/ArenaClass.java b/src/com/garbagemule/MobArena/ArenaClass.java index 67b857a..b0bd644 100644 --- a/src/com/garbagemule/MobArena/ArenaClass.java +++ b/src/com/garbagemule/MobArena/ArenaClass.java @@ -15,7 +15,6 @@ public class ArenaClass private ItemStack helmet, chestplate, leggings, boots; private List items, armor; private Map perms; - private int pets; private boolean unbreakableWeapons; private boolean mount; @@ -30,7 +29,6 @@ public class ArenaClass this.items = new ArrayList(); this.armor = new ArrayList(4); this.perms = new HashMap(); - this.pets = 0; this.unbreakableWeapons = unbreakableWeapons; } @@ -107,9 +105,6 @@ public class ArenaClass if (unbreakableWeapons && isWeapon(stack)) { stack.setDurability(Short.MIN_VALUE); } - else if (stack.getType() == Material.BONE) { - pets += stack.getAmount(); - } else if (stack.getTypeId() == 170 && stack.getAmount() == 1) { if (mount) return; @@ -239,14 +234,6 @@ public class ArenaClass return pa; } - /** - * Get the amount of pets this class is given upon starting the arena. - * @return the number of pets this class has - */ - public int getPetAmount() { - return pets; - } - public boolean hasUnbreakableWeapons() { return unbreakableWeapons; } diff --git a/src/com/garbagemule/MobArena/ArenaImpl.java b/src/com/garbagemule/MobArena/ArenaImpl.java index 79d3a17..bb316c6 100644 --- a/src/com/garbagemule/MobArena/ArenaImpl.java +++ b/src/com/garbagemule/MobArena/ArenaImpl.java @@ -700,19 +700,16 @@ public class ArenaImpl implements Arena } private void spawnPets() { - for (Map.Entry entry : arenaPlayerMap.entrySet()) { - ArenaClass arenaClass = entry.getValue().getArenaClass(); - int petAmount = arenaClass.getPetAmount(); + for (Player p : arenaPlayers) { + // Find the first slot containing bones + int bone = p.getInventory().first(Material.BONE); + if (bone == -1) continue; - if (petAmount <= 0) { - continue; - } + // Get the amount of pets to spawn + int amount = p.getInventory().getItem(bone).getAmount(); - // Remove the bones from the inventory. - Player p = entry.getKey(); - p.getInventory().removeItem(new ItemStack(Material.BONE, petAmount)); - - for (int i = 0; i < petAmount; i++) { + // Spawn each pet + for (int i = 0; i < amount; i++) { Wolf wolf = (Wolf) world.spawnEntity(p.getLocation(), EntityType.WOLF); wolf.setTamed(true); wolf.setOwner(p); @@ -721,6 +718,9 @@ public class ArenaImpl implements Arena wolf.setFireTicks(32768); monsterManager.addPet(wolf); } + + // Remove the bones + p.getInventory().setItem(bone, null); } }