use of com.iCo6.util.nbt.NBTOutputStream in project Core by iConomy.
the class InventoryDB method writeInventory.
private void writeInventory(String name, ItemStack[] stacks) {
try {
NBTInputStream in = new NBTInputStream(new FileInputStream(new File(dataDir, name + ".dat")));
CompoundTag tag = (CompoundTag) in.readTag();
in.close();
ArrayList tagList = new ArrayList<Tag>();
for (int i = 0; i < stacks.length; ++i) {
if (stacks[i] == null)
continue;
ByteTag count = new ByteTag("Count", (byte) stacks[i].getAmount());
ByteTag slot = new ByteTag("Slot", (byte) i);
ShortTag damage = new ShortTag("Damage", stacks[i].getDurability());
ShortTag id = new ShortTag("id", (short) stacks[i].getTypeId());
HashMap<String, Tag> tagMap = new HashMap<String, Tag>();
tagMap.put("Count", count);
tagMap.put("Slot", slot);
tagMap.put("Damage", damage);
tagMap.put("id", id);
tagList.add(new CompoundTag("", tagMap));
}
ListTag inventory = new ListTag("Inventory", CompoundTag.class, tagList);
HashMap<String, Tag> tagCompound = new HashMap<String, Tag>(tag.getValue());
tagCompound.put("Inventory", inventory);
tag = new CompoundTag("Player", tagCompound);
NBTOutputStream out = new NBTOutputStream(new FileOutputStream(new File(dataDir, name + ".dat")));
out.writeTag(tag);
out.close();
} catch (IOException ex) {
iConomy.Server.getLogger().log(Level.WARNING, "[iCo/InvDB] error writing inventory {0}: {1}", new Object[] { name, ex.getMessage() });
}
}
Aggregations