using System; namespace Substrate.Nbt { /// <summary> /// Defines methods for loading or extracting an NBT tree. /// </summary> /// <typeparam name="T">Object type that supports this interface.</typeparam> public interface INbtObject<T> { /// <summary> /// Attempt to load an NBT tree into the object without validation. /// </summary> /// <param name="tree">The root node of an NBT tree.</param> /// <returns>The object returns itself on success, or null if the tree was unparsable.</returns> T LoadTree (TagNode tree); /// <summary> /// Attempt to load an NBT tree into the object with validation. /// </summary> /// <param name="tree">The root node of an NBT tree.</param> /// <returns>The object returns itself on success, or null if the tree failed validation.</returns> T LoadTreeSafe (TagNode tree); /// <summary> /// Builds an NBT tree from the object's data. /// </summary> /// <returns>The root node of an NBT tree representing the object's data.</returns> TagNode BuildTree (); /// <summary> /// Validate an NBT tree, usually against an object-supplied schema. /// </summary> /// <param name="tree">The root node of an NBT tree.</param> /// <returns>Status indicating whether the tree was valid for this object.</returns> bool ValidateTree (TagNode tree); } }