use of com.iCo6.util.nbt.NBTInputStream in project Core by iConomy.
the class InventoryDB method readInventory.
private ItemStack[] readInventory(String name) {
try {
NBTInputStream in = new NBTInputStream(new FileInputStream(new File(dataDir, name + ".dat")));
CompoundTag tag = (CompoundTag) in.readTag();
in.close();
ListTag inventory = (ListTag) tag.getValue().get("Inventory");
ItemStack[] stacks = new ItemStack[40];
for (int i = 0; i < inventory.getValue().size(); ++i) {
CompoundTag item = (CompoundTag) inventory.getValue().get(i);
byte count = ((ByteTag) item.getValue().get("Count")).getValue();
byte slot = ((ByteTag) item.getValue().get("Slot")).getValue();
short damage = ((ShortTag) item.getValue().get("Damage")).getValue();
short id = ((ShortTag) item.getValue().get("id")).getValue();
stacks[slot] = new ItemStack(id, count, damage);
}
return stacks;
} catch (IOException ex) {
iConomy.Server.getLogger().log(Level.WARNING, "[iCo/InvDB] error reading inventory {0}: {1}", new Object[] { name, ex.getMessage() });
return null;
}
}
use of com.iCo6.util.nbt.NBTInputStream 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