From 2b0118123fe359a721f19a3b8f70b2c7d0afe6ea Mon Sep 17 00:00:00 2001 From: fullwall Date: Sun, 20 Jul 2014 18:12:09 -0700 Subject: [PATCH] Persistent inventory --- .../api/trait/trait/Inventory.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/citizensnpcs/api/trait/trait/Inventory.java b/src/main/java/net/citizensnpcs/api/trait/trait/Inventory.java index 9c41b950..7fac5d93 100644 --- a/src/main/java/net/citizensnpcs/api/trait/trait/Inventory.java +++ b/src/main/java/net/citizensnpcs/api/trait/trait/Inventory.java @@ -7,6 +7,8 @@ import net.citizensnpcs.api.util.DataKey; import net.citizensnpcs.api.util.ItemStorage; +import org.bukkit.entity.Player; +import org.bukkit.entity.minecart.StorageMinecart; import org.bukkit.inventory.ItemStack; /** @@ -22,7 +24,7 @@ public Inventory() { /** * Gets the contents of an NPC's inventory. - * + * * @return ItemStack array of an NPC's inventory contents */ public ItemStack[] getContents() { @@ -34,6 +36,23 @@ public void load(DataKey key) throws NPCLoadException { contents = parseContents(key); } + @Override + public void onSpawn() { + switch (npc.getEntity().getType()) { + case PLAYER: + ((Player) npc.getEntity()).getInventory().setContents(contents); + break; + case MINECART: + if (npc.getEntity() instanceof StorageMinecart) { + ((StorageMinecart) npc.getEntity()).getInventory().setContents( + Arrays.copyOf(contents, contents.length * 2)); + } + break; + default: + break; + } + } + private ItemStack[] parseContents(DataKey key) throws NPCLoadException { ItemStack[] contents = new ItemStack[36]; for (DataKey slotKey : key.getIntegerSubKeys()) @@ -56,7 +75,7 @@ public void save(DataKey key) { /** * Sets the contents of an NPC's inventory. - * + * * @param contents * ItemStack array to set as the contents of an NPC's inventory */