forked from mirrors/NBTExplorer
Entity / TileEntity work
This commit is contained in:
parent
4d87a5cc04
commit
f60a1f3f77
5 changed files with 531 additions and 6 deletions
|
@ -367,8 +367,8 @@ namespace NBToolkit.Map
|
||||||
Wool = new BlockInfo(35, "Wool");
|
Wool = new BlockInfo(35, "Wool");
|
||||||
YellowFlower = new BlockInfo(37, "Yellow Flower").SetOpacity(0);
|
YellowFlower = new BlockInfo(37, "Yellow Flower").SetOpacity(0);
|
||||||
RedRose = new BlockInfo(38, "Red Rose").SetOpacity(0);
|
RedRose = new BlockInfo(38, "Red Rose").SetOpacity(0);
|
||||||
BrownMushroom = new BlockInfo(39, "Brown Mushroom").SetOpacity(0);
|
BrownMushroom = new BlockInfo(39, "Brown Mushroom").SetOpacity(0).SetLuminance(1);
|
||||||
RedMushroom = new BlockInfo(40, "Red Mushroom").SetOpacity(0);
|
RedMushroom = new BlockInfo(40, "Red Mushroom").SetOpacity(0).SetLuminance(1);
|
||||||
GoldBlock = new BlockInfo(41, "Gold Block");
|
GoldBlock = new BlockInfo(41, "Gold Block");
|
||||||
IronBlock = new BlockInfo(42, "Iron Block");
|
IronBlock = new BlockInfo(42, "Iron Block");
|
||||||
DoubleSlab = new BlockInfo(43, "Double Slab");
|
DoubleSlab = new BlockInfo(43, "Double Slab");
|
||||||
|
|
73
NBToolkit/NBToolkit/Map/Entity.cs
Normal file
73
NBToolkit/NBToolkit/Map/Entity.cs
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace NBToolkit.Map
|
||||||
|
{
|
||||||
|
using NBT;
|
||||||
|
using Utility;
|
||||||
|
|
||||||
|
public class Entity
|
||||||
|
{
|
||||||
|
private NBT_Compound _tree;
|
||||||
|
|
||||||
|
public NBT_Compound Root
|
||||||
|
{
|
||||||
|
get { return _tree; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static readonly NBTCompoundNode BaseSchema = new NBTCompoundNode("")
|
||||||
|
{
|
||||||
|
new NBTScalerNode("id", NBT_Type.TAG_STRING),
|
||||||
|
new NBTListNode("Pos", NBT_Type.TAG_DOUBLE, 3),
|
||||||
|
new NBTListNode("Motion", NBT_Type.TAG_DOUBLE, 3),
|
||||||
|
new NBTListNode("Rotation", NBT_Type.TAG_FLOAT, 2),
|
||||||
|
new NBTScalerNode("FallDistance", NBT_Type.TAG_FLOAT),
|
||||||
|
new NBTScalerNode("Fire", NBT_Type.TAG_SHORT),
|
||||||
|
new NBTScalerNode("Air", NBT_Type.TAG_SHORT),
|
||||||
|
new NBTScalerNode("OnGround", NBT_Type.TAG_BYTE),
|
||||||
|
};
|
||||||
|
|
||||||
|
public static readonly NBTCompoundNode MobSchema = BaseSchema.MergeInto(new NBTCompoundNode("")
|
||||||
|
{
|
||||||
|
new NBTStringNode("id", "Mob"),
|
||||||
|
new NBTScalerNode("AttackTime", NBT_Type.TAG_SHORT),
|
||||||
|
new NBTScalerNode("DeathTime", NBT_Type.TAG_SHORT),
|
||||||
|
new NBTScalerNode("Health", NBT_Type.TAG_SHORT),
|
||||||
|
new NBTScalerNode("HurtTime", NBT_Type.TAG_SHORT),
|
||||||
|
});
|
||||||
|
|
||||||
|
public static readonly NBTCompoundNode MonsterSchema = MobSchema.MergeInto(new NBTCompoundNode("")
|
||||||
|
{
|
||||||
|
new NBTStringNode("id", "Monster"),
|
||||||
|
});
|
||||||
|
|
||||||
|
public static readonly NBTCompoundNode PigSchema = MobSchema.MergeInto(new NBTCompoundNode("")
|
||||||
|
{
|
||||||
|
new NBTScalerNode("Saddle", NBT_Type.TAG_BYTE),
|
||||||
|
});
|
||||||
|
|
||||||
|
public static readonly NBTCompoundNode SheepSchema = MobSchema.MergeInto(new NBTCompoundNode("")
|
||||||
|
{
|
||||||
|
new NBTScalerNode("Sheared", NBT_Type.TAG_BYTE),
|
||||||
|
new NBTScalerNode("Color", NBT_Type.TAG_BYTE),
|
||||||
|
});
|
||||||
|
|
||||||
|
public static readonly NBTCompoundNode Slimechema = MobSchema.MergeInto(new NBTCompoundNode("")
|
||||||
|
{
|
||||||
|
new NBTScalerNode("Size", NBT_Type.TAG_INT),
|
||||||
|
});
|
||||||
|
|
||||||
|
public static readonly NBTCompoundNode WolfSchema = MobSchema.MergeInto(new NBTCompoundNode("")
|
||||||
|
{
|
||||||
|
new NBTScalerNode("Owner", NBT_Type.TAG_STRING),
|
||||||
|
new NBTScalerNode("Sitting", NBT_Type.TAG_BYTE),
|
||||||
|
new NBTScalerNode("Angry", NBT_Type.TAG_BYTE),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public class MobEntity : Entity
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
190
NBToolkit/NBToolkit/Map/Item.cs
Normal file
190
NBToolkit/NBToolkit/Map/Item.cs
Normal file
|
@ -0,0 +1,190 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace NBToolkit.Map
|
||||||
|
{
|
||||||
|
using NBT;
|
||||||
|
|
||||||
|
public interface IItemContainer
|
||||||
|
{
|
||||||
|
ItemCollection Items { get; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Item
|
||||||
|
{
|
||||||
|
protected NBT_Compound _tree;
|
||||||
|
|
||||||
|
public NBT_Compound Root
|
||||||
|
{
|
||||||
|
get { return _tree; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int ID
|
||||||
|
{
|
||||||
|
get { return _tree["id"].ToNBTShort(); }
|
||||||
|
set { _tree["id"].ToNBTShort().Data = (short)value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Damage
|
||||||
|
{
|
||||||
|
get { return _tree["Damage"].ToNBTShort(); }
|
||||||
|
set { _tree["Count"].ToNBTShort().Data = (short)value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Count
|
||||||
|
{
|
||||||
|
get { return _tree["Count"].ToNBTByte(); }
|
||||||
|
set { _tree["Count"].ToNBTByte().Data = (byte) value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public Item (NBT_Compound tree)
|
||||||
|
{
|
||||||
|
_tree = tree;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ItemCollection
|
||||||
|
{
|
||||||
|
protected NBT_List _list;
|
||||||
|
protected int _capacity;
|
||||||
|
|
||||||
|
public ItemCollection (NBT_List list, int capacity)
|
||||||
|
{
|
||||||
|
_list = list;
|
||||||
|
_capacity = capacity;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Capacity
|
||||||
|
{
|
||||||
|
get { return _capacity; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Count
|
||||||
|
{
|
||||||
|
get { return _list.Count; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public Item this [int slot]
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
foreach (NBT_Compound tag in _list) {
|
||||||
|
if (tag["Slot"].ToNBTByte() == slot) {
|
||||||
|
return new Item(tag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (slot < 0 || slot >= _capacity) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
foreach (NBT_Compound tag in _list) {
|
||||||
|
if (tag["Slot"].ToNBTByte() == slot) {
|
||||||
|
_list.Remove(tag);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_list.Add(value.Root);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetItemID (int slot)
|
||||||
|
{
|
||||||
|
NBT_Compound tag = FindTag(slot);
|
||||||
|
if (tag == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return tag["id"].ToNBTShort();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetItemCount (int slot)
|
||||||
|
{
|
||||||
|
NBT_Compound tag = FindTag(slot);
|
||||||
|
if (tag == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return tag["Count"].ToNBTByte();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetItemDamage (int slot)
|
||||||
|
{
|
||||||
|
NBT_Compound tag = FindTag(slot);
|
||||||
|
if (tag == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return tag["Damage"].ToNBTShort();
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool SetItemID (int slot, int id)
|
||||||
|
{
|
||||||
|
NBT_Compound tag = FindTag(slot);
|
||||||
|
if (tag == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
tag["id"].ToNBTShort().Data = (short) id;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool SetItemCount (int slot, int count)
|
||||||
|
{
|
||||||
|
NBT_Compound tag = FindTag(slot);
|
||||||
|
if (tag == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
tag["Count"].ToNBTByte().Data = (byte) count;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool SetItemDamage (int slot, int damage)
|
||||||
|
{
|
||||||
|
NBT_Compound tag = FindTag(slot);
|
||||||
|
if (tag == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
tag["Damage"].ToNBTShort().Data = (short)damage;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ClearItem (int slot)
|
||||||
|
{
|
||||||
|
foreach (NBT_Compound tag in _list) {
|
||||||
|
if (tag["Slot"].ToNBTByte() == slot) {
|
||||||
|
_list.Remove(tag);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ItemExists (int slot)
|
||||||
|
{
|
||||||
|
return FindTag(slot) != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ClearAllItems ()
|
||||||
|
{
|
||||||
|
_list.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
private NBT_Compound FindTag (int slot)
|
||||||
|
{
|
||||||
|
foreach (NBT_Compound tag in _list) {
|
||||||
|
if (tag["Slot"].ToNBTByte() == slot) {
|
||||||
|
return tag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -159,6 +159,13 @@ namespace NBToolkit.Map.NBT
|
||||||
_type = type;
|
_type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NBTListNode (string name, NBT_Type type, int length)
|
||||||
|
: base(name)
|
||||||
|
{
|
||||||
|
_type = type;
|
||||||
|
_length = length;
|
||||||
|
}
|
||||||
|
|
||||||
public NBTListNode (string name, NBT_Type type, NBTSchemaNode subschema)
|
public NBTListNode (string name, NBT_Type type, NBTSchemaNode subschema)
|
||||||
: base(name)
|
: base(name)
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,7 +9,7 @@ namespace NBToolkit.Map
|
||||||
|
|
||||||
public class TileEntity : ICopyable<TileEntity>
|
public class TileEntity : ICopyable<TileEntity>
|
||||||
{
|
{
|
||||||
private NBT_Compound _tree;
|
protected NBT_Compound _tree;
|
||||||
|
|
||||||
public NBT_Compound Root
|
public NBT_Compound Root
|
||||||
{
|
{
|
||||||
|
@ -58,7 +58,7 @@ namespace NBToolkit.Map
|
||||||
_tree = schema.BuildDefaultTree() as NBT_Compound;
|
_tree = schema.BuildDefaultTree() as NBT_Compound;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Verify ()
|
public virtual bool Verify ()
|
||||||
{
|
{
|
||||||
NBTVerifier v = new NBTVerifier(Root, BaseSchema);
|
NBTVerifier v = new NBTVerifier(Root, BaseSchema);
|
||||||
return v.Verify();
|
return v.Verify();
|
||||||
|
@ -77,6 +77,15 @@ namespace NBToolkit.Map
|
||||||
_tree["z"].ToNBTInt().Data == z;
|
_tree["z"].ToNBTInt().Data == z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region ICopyable<TileEntity> Members
|
||||||
|
|
||||||
|
public virtual TileEntity Copy ()
|
||||||
|
{
|
||||||
|
return new TileEntity(_tree.Copy() as NBT_Compound);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Predefined Schemas
|
#region Predefined Schemas
|
||||||
|
|
||||||
public static readonly NBTCompoundNode InventorySchema = new NBTCompoundNode("")
|
public static readonly NBTCompoundNode InventorySchema = new NBTCompoundNode("")
|
||||||
|
@ -138,12 +147,258 @@ namespace NBToolkit.Map
|
||||||
});
|
});
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TileEntityFurnace : TileEntity, IItemContainer
|
||||||
|
{
|
||||||
|
protected const int _capacity = 3;
|
||||||
|
|
||||||
|
protected ItemCollection _items;
|
||||||
|
|
||||||
|
public int BurnTime
|
||||||
|
{
|
||||||
|
get { return _tree["BurnTime"].ToNBTShort(); }
|
||||||
|
set { _tree["BurnTime"] = new NBT_Short((short)value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int CookTime
|
||||||
|
{
|
||||||
|
get { return _tree["CookTime"].ToNBTShort(); }
|
||||||
|
set { _tree["CookTime"] = new NBT_Short((short)value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public TileEntityFurnace (NBT_Compound tree)
|
||||||
|
: base(tree)
|
||||||
|
{
|
||||||
|
NBT_List items = tree["Items"].ToNBTList();
|
||||||
|
|
||||||
|
if (items.Count == 0) {
|
||||||
|
tree["Items"] = new NBT_List(NBT_Type.TAG_COMPOUND);
|
||||||
|
items = _tree["Items"].ToNBTList();
|
||||||
|
}
|
||||||
|
|
||||||
|
_items = new ItemCollection(items, _capacity);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Verify ()
|
||||||
|
{
|
||||||
|
NBTVerifier v = new NBTVerifier(Root, TileEntity.FurnaceSchema);
|
||||||
|
return v.Verify();
|
||||||
|
}
|
||||||
|
|
||||||
#region ICopyable<TileEntity> Members
|
#region ICopyable<TileEntity> Members
|
||||||
|
|
||||||
public TileEntity Copy ()
|
public override TileEntity Copy ()
|
||||||
{
|
{
|
||||||
return new TileEntity(_tree.Copy() as NBT_Compound);
|
return new TileEntityFurnace(_tree.Copy() as NBT_Compound);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region IItemContainer Members
|
||||||
|
|
||||||
|
public ItemCollection Items
|
||||||
|
{
|
||||||
|
get { return _items; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TileEntitySign : TileEntity
|
||||||
|
{
|
||||||
|
public string Text1
|
||||||
|
{
|
||||||
|
get { return _tree["Text1"].ToNBTString(); }
|
||||||
|
set { _tree["Text1"] = new NBT_String(value.Substring(0, 12)); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Text2
|
||||||
|
{
|
||||||
|
get { return _tree["Text2"].ToNBTString(); }
|
||||||
|
set { _tree["Text2"] = new NBT_String(value.Substring(0, 12)); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Text3
|
||||||
|
{
|
||||||
|
get { return _tree["Text3"].ToNBTString(); }
|
||||||
|
set { _tree["Text3"] = new NBT_String(value.Substring(0, 12)); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Text4
|
||||||
|
{
|
||||||
|
get { return _tree["Text4"].ToNBTString(); }
|
||||||
|
set { _tree["Text4"] = new NBT_String(value.Substring(0, 12)); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public TileEntitySign (NBT_Compound tree)
|
||||||
|
: base(tree)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Verify ()
|
||||||
|
{
|
||||||
|
NBTVerifier v = new NBTVerifier(Root, TileEntity.SignSchema);
|
||||||
|
return v.Verify();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ICopyable<TileEntity> Members
|
||||||
|
|
||||||
|
public override TileEntity Copy ()
|
||||||
|
{
|
||||||
|
return new TileEntitySign(_tree.Copy() as NBT_Compound);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TileEntityMobSpawner : TileEntity
|
||||||
|
{
|
||||||
|
public int Delay
|
||||||
|
{
|
||||||
|
get { return _tree["Delay"].ToNBTShort(); }
|
||||||
|
set { _tree["Delay"] = new NBT_Short((short)value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string EntityID
|
||||||
|
{
|
||||||
|
get { return _tree["EntityID"].ToNBTString(); }
|
||||||
|
set { _tree["EntityID"] = new NBT_String(value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public TileEntityMobSpawner (NBT_Compound tree)
|
||||||
|
: base(tree)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Verify ()
|
||||||
|
{
|
||||||
|
NBTVerifier v = new NBTVerifier(Root, TileEntity.MobSpawnerSchema);
|
||||||
|
return v.Verify();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ICopyable<TileEntity> Members
|
||||||
|
|
||||||
|
public override TileEntity Copy ()
|
||||||
|
{
|
||||||
|
return new TileEntityMobSpawner(_tree.Copy() as NBT_Compound);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TileEntityChest : TileEntity, IItemContainer
|
||||||
|
{
|
||||||
|
protected const int _capacity = 27;
|
||||||
|
|
||||||
|
protected ItemCollection _items;
|
||||||
|
|
||||||
|
public TileEntityChest (NBT_Compound tree)
|
||||||
|
: base(tree)
|
||||||
|
{
|
||||||
|
NBT_List items = tree["Items"].ToNBTList();
|
||||||
|
|
||||||
|
if (items.Count == 0) {
|
||||||
|
tree["Items"] = new NBT_List(NBT_Type.TAG_COMPOUND);
|
||||||
|
items = _tree["Items"].ToNBTList();
|
||||||
|
}
|
||||||
|
|
||||||
|
_items = new ItemCollection(items, _capacity);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Verify ()
|
||||||
|
{
|
||||||
|
NBTVerifier v = new NBTVerifier(Root, TileEntity.ChestSchema);
|
||||||
|
return v.Verify();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ICopyable<TileEntity> Members
|
||||||
|
|
||||||
|
public override TileEntity Copy ()
|
||||||
|
{
|
||||||
|
return new TileEntityChest(_tree.Copy() as NBT_Compound);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region IItemContainer Members
|
||||||
|
|
||||||
|
public ItemCollection Items
|
||||||
|
{
|
||||||
|
get { return _items; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TileEntityMusic : TileEntity
|
||||||
|
{
|
||||||
|
public int Note
|
||||||
|
{
|
||||||
|
get { return _tree["Note"].ToNBTByte(); }
|
||||||
|
set { _tree["Note"] = new NBT_Byte((byte)value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public TileEntityMusic (NBT_Compound tree)
|
||||||
|
: base(tree)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Verify ()
|
||||||
|
{
|
||||||
|
NBTVerifier v = new NBTVerifier(Root, TileEntity.MusicSchema);
|
||||||
|
return v.Verify();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ICopyable<TileEntity> Members
|
||||||
|
|
||||||
|
public override TileEntity Copy ()
|
||||||
|
{
|
||||||
|
return new TileEntityMusic(_tree.Copy() as NBT_Compound);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TileEntityTrap : TileEntity, IItemContainer
|
||||||
|
{
|
||||||
|
protected const int _capacity = 8;
|
||||||
|
|
||||||
|
protected ItemCollection _items;
|
||||||
|
|
||||||
|
public TileEntityTrap (NBT_Compound tree)
|
||||||
|
: base(tree)
|
||||||
|
{
|
||||||
|
NBT_List items = tree["Items"].ToNBTList();
|
||||||
|
|
||||||
|
if (items.Count == 0) {
|
||||||
|
tree["Items"] = new NBT_List(NBT_Type.TAG_COMPOUND);
|
||||||
|
items = _tree["Items"].ToNBTList();
|
||||||
|
}
|
||||||
|
|
||||||
|
_items = new ItemCollection(items, _capacity);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Verify ()
|
||||||
|
{
|
||||||
|
NBTVerifier v = new NBTVerifier(Root, TileEntity.TrapSchema);
|
||||||
|
return v.Verify();
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ICopyable<TileEntity> Members
|
||||||
|
|
||||||
|
public override TileEntity Copy ()
|
||||||
|
{
|
||||||
|
return new TileEntityTrap(_tree.Copy() as NBT_Compound);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region IItemContainer Members
|
||||||
|
|
||||||
|
public ItemCollection Items
|
||||||
|
{
|
||||||
|
get { return _items; }
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
Loading…
Reference in a new issue