<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Substrate</name>
    </assembly>
    <members>
        <member name="T:Substrate.BlockManager">
            <summary>
            Represents an Alpha-compatible interface for globally managing blocks.
            </summary>
        </member>
        <member name="T:Substrate.Core.IVersion10BlockManager">
            <summary>
            Provides a common interface for block containers that provide global management, extended through Version 1.0 capabilities.
            </summary>
        </member>
        <member name="T:Substrate.Core.IBlockManager">
            <summary>
            Provides a common interface for block containers that provide global management.
            </summary>
        </member>
        <member name="T:Substrate.Core.IAlphaBlockCollection">
            <summary>
            An unbounded container of blocks supporting data, lighting, and properties.
            </summary>
            <seealso cref="T:Substrate.Core.IBoundedAlphaBlockCollection"/>
        </member>
        <member name="T:Substrate.Core.IDataBlockCollection">
            <summary>
            An unbounded container of blocks supporting data fields.
            </summary>
            <seealso cref="T:Substrate.Core.IBoundedDataBlockCollection"/>
        </member>
        <member name="T:Substrate.Core.IBlockCollection">
            <summary>
            A basic unconstrained container of blocks.
            </summary>
            <remarks>The scope of coordinates is undefined for unconstrained block containers.</remarks>
        </member>
        <member name="M:Substrate.Core.IBlockCollection.GetBlock(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a basic block from an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>A basic <see cref="T:Substrate.Core.IBlock"/> from the collection at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBlockCollection.GetBlockRef(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a reference object to a basic block within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>A basic <see cref="T:Substrate.Core.IBlock"/> acting as a reference directly into the container at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.IBlock)">
            <summary>
            Updates a block in an unbounded block container with data from an existing <see cref="T:Substrate.Core.IBlock"/> object.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <param name="block">The <see cref="T:Substrate.Core.IBlock"/> to copy basic data from.</param>
        </member>
        <member name="M:Substrate.Core.IBlockCollection.GetID(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a block's id (type) from an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>The block id (type) from the block container at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBlockCollection.SetID(System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets a block's id (type) within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <param name="id">The id (type) to assign to a block at the given coordinates.</param>
        </member>
        <member name="M:Substrate.Core.IBlockCollection.GetInfo(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets info and attributes on a block's type within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>A <see cref="T:Substrate.BlockInfo"/> instance for the block's type.</returns>
        </member>
        <member name="M:Substrate.Core.IDataBlockCollection.GetBlock(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a block with data field from an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.Core.IDataBlock"/> from the collection at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IDataBlockCollection.GetBlockRef(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a reference object to a block with data field within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.Core.IDataBlock"/> acting as a reference directly into the container at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IDataBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.IDataBlock)">
            <summary>
            Updates a block in an unbounded block container with data from an existing <see cref="T:Substrate.Core.IDataBlock"/> object.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <param name="block">The <see cref="T:Substrate.Core.IDataBlock"/> to copy data from.</param>
        </member>
        <member name="M:Substrate.Core.IDataBlockCollection.GetData(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a block's data field from an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>The data field of a block at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IDataBlockCollection.SetData(System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets a block's data field within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <param name="data">The data field to assign to a block at the given coordinates.</param>
        </member>
        <member name="T:Substrate.Core.ILitBlockCollection">
            <summary>
            An unbounded container of blocks supporting dual-source lighting.
            </summary>
            <seealso cref="T:Substrate.Core.IBoundedLitBlockCollection"/>
        </member>
        <member name="M:Substrate.Core.ILitBlockCollection.GetBlock(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a block with lighting information from an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.Core.ILitBlock"/> from the collection at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.ILitBlockCollection.GetBlockRef(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a reference object to a block with lighting information within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.Core.ILitBlock"/> acting as a reference directly into the container at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.ILitBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.ILitBlock)">
            <summary>
            Updates a block in an unbounded block container with data from an existing <see cref="T:Substrate.Core.ILitBlock"/> object.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <param name="block">The <see cref="T:Substrate.Core.ILitBlock"/> to copy data from.</param>
        </member>
        <member name="M:Substrate.Core.ILitBlockCollection.GetBlockLight(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a block's block-source light value from an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>The block-source light value of a block at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.ILitBlockCollection.GetSkyLight(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a block's sky-source light value from an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>The sky-source light value of a block at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.ILitBlockCollection.SetBlockLight(System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets a block's block-source light value within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <param name="light">The block-source light value to assign to a block at the given coordinates.</param>
        </member>
        <member name="M:Substrate.Core.ILitBlockCollection.SetSkyLight(System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets a block's sky-source light value within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <param name="light">The sky-source light value to assign to a block at the given coordinates.</param>
        </member>
        <member name="M:Substrate.Core.ILitBlockCollection.GetHeight(System.Int32,System.Int32)">
            <summary>
            Gets the Y-coordinate of the lowest block with unobstructed view of the sky at the given coordinates within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>The height value of an X-Z coordinate pair in the block container.</returns>
            <remarks>The height value represents the lowest block with an unobstructed view of the sky.  This is the lowest block with
            a maximum-value sky-light value.  Fully transparent blocks, like glass, do not count as an obstruction.</remarks>
        </member>
        <member name="M:Substrate.Core.ILitBlockCollection.SetHeight(System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets the Y-coordinate of the lowest block with unobstructed view of the sky at the given coordinates within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <param name="height">The height value of an X-Z coordinate pair in the block container.</param>
            <remarks>Minecraft lighting algorithms rely heavily on this value being correct.  Setting this value too low may result in
            rooms that can never get dark, for example.</remarks>
        </member>
        <member name="M:Substrate.Core.ILitBlockCollection.UpdateBlockLight(System.Int32,System.Int32,System.Int32)">
            <summary>
            Recalculates the block-source light value of a single block within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <remarks><para>The lighting of the block will be updated to be consistent with the lighting in neighboring blocks.
            If the block is itself a light source, many nearby blocks may be updated to maintain consistent lighting.  These
            updates may also touch neighboring <see cref="T:Substrate.Core.ILitBlockCollection"/> objects, if they can be resolved.</para>
            <para>This function assumes that the entire <see cref="T:Substrate.Core.ILitBlockCollection"/> and neighboring <see cref="T:Substrate.Core.ILitBlockCollection"/>s
            already have consistent lighting, with the exception of the block being updated.  If this assumption is violated, 
            lighting may fail to converge correctly.</para></remarks>
        </member>
        <member name="M:Substrate.Core.ILitBlockCollection.UpdateSkyLight(System.Int32,System.Int32,System.Int32)">
            <summary>
            Recalculates the sky-source light value of a single block within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <remarks><para>The lighting of the block will be updated to be consistent with the lighting in neighboring blocks.
            If the block is itself a light source, many nearby blocks may be updated to maintain consistent lighting.  These
            updates may also touch neighboring <see cref="T:Substrate.Core.ILitBlockCollection"/> objects, if they can be resolved.</para>
            <para>This function assumes that the entire <see cref="T:Substrate.Core.ILitBlockCollection"/> and neighboring <see cref="T:Substrate.Core.ILitBlockCollection"/>s
            already have consistent lighting, with the exception of the block being updated.  If this assumption is violated,
            lighting may fail to converge correctly.</para></remarks>
        </member>
        <member name="T:Substrate.Core.IPropertyBlockCollection">
            <summary>
            An unbounded container for blocks supporting extra properties.
            </summary>
            <seealso cref="T:Substrate.Core.IBoundedPropertyBlockCollection"/>
        </member>
        <member name="M:Substrate.Core.IPropertyBlockCollection.GetBlock(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a block supporting extra properties from an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.Core.IPropertyBlock"/> from the collection at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IPropertyBlockCollection.GetBlockRef(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a reference object to a block supporting extra properties within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.Core.IPropertyBlock"/> acting as a reference directly into the container at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IPropertyBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.IPropertyBlock)">
            <summary>
            Updates a block in an unbounded block container with data from an existing <see cref="T:Substrate.Core.IPropertyBlock"/> object.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <param name="block">The <see cref="T:Substrate.Core.IPropertyBlock"/> to copy data from.</param>
        </member>
        <member name="M:Substrate.Core.IPropertyBlockCollection.GetTileEntity(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets the <see cref="T:Substrate.TileEntity"/> record of a block within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>A <see cref="T:Substrate.TileEntity"/> record attached to a block at the given coordinates, or null if no tile entity is set.</returns>
        </member>
        <member name="M:Substrate.Core.IPropertyBlockCollection.SetTileEntity(System.Int32,System.Int32,System.Int32,Substrate.TileEntity)">
            <summary>
            Sets a <see cref="T:Substrate.TileEntity"/> record to a block within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <param name="te">The <see cref="T:Substrate.TileEntity"/> record to assign to the given block.</param>
            <exception cref="T:System.ArgumentException">Thrown when an incompatible <see cref="T:Substrate.TileEntity"/> is added to a block.</exception>
            <exception cref="T:System.InvalidOperationException">Thrown when a <see cref="T:Substrate.TileEntity"/> is added to a block that does not use tile entities.</exception>
        </member>
        <member name="M:Substrate.Core.IPropertyBlockCollection.CreateTileEntity(System.Int32,System.Int32,System.Int32)">
            <summary>
            Creates a new default <see cref="T:Substrate.TileEntity"/> record for a block within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <exception cref="T:System.InvalidOperationException">Thrown when a <see cref="T:Substrate.TileEntity"/> is created for a block that does not use tile entities.</exception>
            <exception cref="T:Substrate.UnknownTileEntityException">Thrown when the tile entity type associated with the given block has not been registered with <see cref="T:Substrate.TileEntityFactory"/>.</exception>
        </member>
        <member name="M:Substrate.Core.IPropertyBlockCollection.ClearTileEntity(System.Int32,System.Int32,System.Int32)">
            <summary>
            Deletes a <see cref="T:Substrate.TileEntity"/> record associated with a block within an unbounded block container, if it exists.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
        </member>
        <member name="M:Substrate.Core.IAlphaBlockCollection.GetBlock(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a context-insensitive Alpha-compatible block from an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.AlphaBlock"/> from the collection at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IAlphaBlockCollection.GetBlockRef(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a reference object to a context-insensitive Alpha-compatible block within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.AlphaBlockRef"/> acting as a reference directly into the container at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IAlphaBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.AlphaBlock)">
            <summary>
            Updates a block in an unbounded block container with data from an existing <see cref="T:Substrate.AlphaBlock"/> object.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <param name="block">The <see cref="T:Substrate.AlphaBlock"/> to copy data from.</param>
        </member>
        <member name="T:Substrate.Core.IActiveBlockCollection">
            <summary>
            An unbounded container for blocks supporting active processing properties.
            </summary>
            <seealso cref="T:Substrate.Core.IBoundedActiveBlockCollection"/>
        </member>
        <member name="M:Substrate.Core.IActiveBlockCollection.GetBlock(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a block supporting active processing properties from an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.Core.IActiveBlock"/> from the collection at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IActiveBlockCollection.GetBlockRef(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a reference object to a block supporting active processing properties within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.Core.IActiveBlock"/> acting as a reference directly into the container at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IActiveBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.IActiveBlock)">
            <summary>
            Updates a block in an unbounded block container with data from an existing <see cref="T:Substrate.Core.IActiveBlock"/> object.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <param name="block">The <see cref="T:Substrate.Core.IActiveBlock"/> to copy data from.</param>
        </member>
        <member name="M:Substrate.Core.IActiveBlockCollection.GetTileTick(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets the <see cref="T:Substrate.TileTick"/> record of a block within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>A <see cref="T:Substrate.TileTick"/> record attached to a block at the given coordinates, or null if no tile entity is set.</returns>
        </member>
        <member name="M:Substrate.Core.IActiveBlockCollection.SetTileTick(System.Int32,System.Int32,System.Int32,Substrate.TileTick)">
            <summary>
            Sets a <see cref="T:Substrate.TileTick"/> record to a block within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <param name="tt">The <see cref="T:Substrate.TileTick"/> record to assign to the given block.</param>
        </member>
        <member name="M:Substrate.Core.IActiveBlockCollection.CreateTileTick(System.Int32,System.Int32,System.Int32)">
            <summary>
            Creates a new default <see cref="T:Substrate.TileTick"/> record for a block within an unbounded block container.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
        </member>
        <member name="M:Substrate.Core.IActiveBlockCollection.ClearTileTick(System.Int32,System.Int32,System.Int32)">
            <summary>
            Deletes a <see cref="T:Substrate.TileTick"/> record associated with a block within an unbounded block container, if it exists.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
        </member>
        <member name="M:Substrate.Core.IActiveBlockCollection.GetTileTickValue(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets the tick delay specified in a block's <see cref="T:Substrate.TileTick"/> entry, if it exists.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <returns>The tick delay in a block's <see cref="T:Substrate.TileTick"/> entry, or <c>0</c> if no entry exists.</returns>
        </member>
        <member name="M:Substrate.Core.IActiveBlockCollection.SetTileTickValue(System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets the tick delay in a block's <see cref="T:Substrate.TileTick"/> entry.
            </summary>
            <param name="x">The global X-coordinate of a block.</param>
            <param name="y">The global Y-coordinate of a block.</param>
            <param name="z">The global Z-coordinate of a block.</param>
            <param name="tickValue">The tick delay that specifies when this block should next be processed for update.</param>
        </member>
        <member name="M:Substrate.BlockManager.#ctor(Substrate.Core.IChunkManager)">
            <summary>
            Constructs a new <see cref="T:Substrate.BlockManager"/> instance on top of the given <see cref="T:Substrate.Core.IChunkManager"/>.
            </summary>
            <param name="cm">An <see cref="T:Substrate.Core.IChunkManager"/> instance.</param>
        </member>
        <member name="M:Substrate.BlockManager.GetBlock(System.Int32,System.Int32,System.Int32)">
            <summary>
            Returns a new <see cref="T:Substrate.AlphaBlock"/> object from global coordinates.
            </summary>
            <param name="x">Global X-coordinate of block.</param>
            <param name="y">Global Y-coordinate of block.</param>
            <param name="z">Global Z-coordiante of block.</param>
            <returns>A new <see cref="T:Substrate.AlphaBlock"/> object representing context-independent data of a single block.</returns>
            <remarks>Context-independent data excludes data such as lighting.  <see cref="T:Substrate.AlphaBlock"/> object actually contain a copy
            of the data they represent, so changes to the <see cref="T:Substrate.AlphaBlock"/> will not affect this container, and vice-versa.</remarks>
        </member>
        <member name="M:Substrate.BlockManager.GetBlockRef(System.Int32,System.Int32,System.Int32)">
            <summary>
            Returns a new <see cref="T:Substrate.AlphaBlockRef"/> object from global coordaintes.
            </summary>
            <param name="x">Global X-coordinate of block.</param>
            <param name="y">Global Y-coordinate of block.</param>
            <param name="z">Global Z-coordinate of block.</param>
            <returns>A new <see cref="T:Substrate.AlphaBlockRef"/> object representing context-dependent data of a single block.</returns>
            <remarks>Context-depdendent data includes all data associated with this block.  Since a <see cref="T:Substrate.AlphaBlockRef"/> represents
            a view of a block within this container, any updates to data in the container will be reflected in the <see cref="T:Substrate.AlphaBlockRef"/>,
            and vice-versa for updates to the <see cref="T:Substrate.AlphaBlockRef"/>.</remarks>
        </member>
        <member name="M:Substrate.BlockManager.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.AlphaBlock)">
            <summary>
            Updates a block with values from a <see cref="T:Substrate.AlphaBlock"/> object.
            </summary>
            <param name="x">Global X-coordinate of a block.</param>
            <param name="y">Global Y-coordinate of a block.</param>
            <param name="z">Global Z-coordinate of a block.</param>
            <param name="block">A <see cref="T:Substrate.AlphaBlock"/> object to copy block data from.</param>
        </member>
        <member name="M:Substrate.BlockManager.GetChunk(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a reference object to a single chunk given global coordinates to a block within that chunk.
            </summary>
            <param name="x">Global X-coordinate of a block.</param>
            <param name="y">Global Y-coordinate of a block.</param>
            <param name="z">Global Z-coordinate of a block.</param>
            <returns>A <see cref="T:Substrate.ChunkRef"/> to a single chunk containing the given block.</returns>
        </member>
        <member name="M:Substrate.BlockManager.Check(System.Int32,System.Int32,System.Int32)">
            <summary>
            Called by other block-specific 'get' and 'set' functions to filter
            out operations on some blocks.  Override this method in derrived
            classes to filter the entire BlockManager.
            </summary>
        </member>
        <member name="M:Substrate.BlockManager.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.IBlock)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.GetInfo(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.GetID(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.SetID(System.Int32,System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.IDataBlock)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.GetData(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.SetData(System.Int32,System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.ILitBlock)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.GetBlockLight(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.GetSkyLight(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.SetBlockLight(System.Int32,System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.SetSkyLight(System.Int32,System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.GetHeight(System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.SetHeight(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.UpdateBlockLight(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.UpdateSkyLight(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.IPropertyBlock)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.GetTileEntity(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.SetTileEntity(System.Int32,System.Int32,System.Int32,Substrate.TileEntity)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.CreateTileEntity(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.ClearTileEntity(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.IActiveBlock)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.GetTileTickValue(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.SetTileTickValue(System.Int32,System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.GetTileTick(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.SetTileTick(System.Int32,System.Int32,System.Int32,Substrate.TileTick)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.CreateTileTick(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.BlockManager.ClearTileTick(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="P:Substrate.BlockManager.AutoLight">
            <summary>
            Gets or sets a value indicating whether changes to blocks will trigger automatic lighting updates.
            </summary>
        </member>
        <member name="P:Substrate.BlockManager.AutoFluid">
            <summary>
            Gets or sets a value indicating whether changes to blocks will trigger automatic fluid updates.
            </summary>
        </member>
        <member name="P:Substrate.BlockManager.AutoTileTick">
            <summary>
            Gets or sets a value indicating whether changes to blocks will trigger automatic fluid updates.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.TagNodeString">
            <summary>
            An NBT node representing a string tag type.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.TagNode">
            <summary>
            An abstract base class representing a node in an NBT tree.
            </summary>
        </member>
        <member name="T:Substrate.Core.ICopyable`1">
            <summary>
            Provides a virtual deep copy capability to implementors.
            </summary>
            <typeparam name="T"></typeparam>
        </member>
        <member name="M:Substrate.Core.ICopyable`1.Copy">
            <summary>
            Performs a virtual deep copy of the object instance.
            </summary>
            <returns>An independent copy of the object instance.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNode.ToTagNull">
            <summary>
            Convert this node to a null tag type if supported.
            </summary>
            <returns>A new null node.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNode.ToTagByte">
            <summary>
            Convert this node to a byte tag type if supported.
            </summary>
            <returns>A new byte node.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNode.ToTagShort">
            <summary>
            Convert this node to a short tag type if supported.
            </summary>
            <returns>A new short node.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNode.ToTagInt">
            <summary>
            Convert this node to an int tag type if supported.
            </summary>
            <returns>A new int node.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNode.ToTagLong">
            <summary>
            Convert this node to a long tag type if supported.
            </summary>
            <returns>A new long node.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNode.ToTagFloat">
            <summary>
            Convert this node to a float tag type if supported.
            </summary>
            <returns>A new float node.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNode.ToTagDouble">
            <summary>
            Convert this node to a double tag type if supported.
            </summary>
            <returns>A new double node.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNode.ToTagByteArray">
            <summary>
            Convert this node to a byte array tag type if supported.
            </summary>
            <returns>A new byte array node.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNode.ToTagString">
            <summary>
            Convert this node to a string tag type if supported.
            </summary>
            <returns>A new string node.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNode.ToTagList">
            <summary>
            Convert this node to a list tag type if supported.
            </summary>
            <returns>A new list node.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNode.ToTagCompound">
            <summary>
            Convert this node to a compound tag type if supported.
            </summary>
            <returns>A new compound node.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNode.ToTagIntArray">
            <summary>
            Conver this node to an int array tag type if supported.
            </summary>
            <returns>A new int array node.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNode.GetTagType">
            <summary>
            Gets the underlying tag type of the node.
            </summary>
            <returns>An NBT tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNode.IsCastableTo(Substrate.Nbt.TagType)">
            <summary>
            Checks if this node is castable to another node of a given tag type.
            </summary>
            <param name="type">An NBT tag type.</param>
            <returns>Status indicating whether this object could be cast to a node type represented by the given tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNode.Copy">
            <summary>
            Makes a deep copy of the NBT node.
            </summary>
            <returns>A new NBT node.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeString.ToTagString">
            <summary>
            Converts the node to itself.
            </summary>
            <returns>A reference to itself.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeString.GetTagType">
            <summary>
            Gets the tag type of the node.
            </summary>
            <returns>The TAG_STRING tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeString.#ctor">
            <summary>
            Constructs a new byte array node with an empty string.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeString.#ctor(System.String)">
            <summary>
            Constructs a new string node.
            </summary>
            <param name="d">The value to set the node's tag data value.</param>
        </member>
        <member name="M:Substrate.Nbt.TagNodeString.Copy">
            <summary>
            Makes a deep copy of the node.
            </summary>
            <returns>A new string node representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeString.ToString">
            <summary>
            Gets a string representation of the node's data.
            </summary>
            <returns>String representation of the node's data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeString.op_Implicit(System.String)~Substrate.Nbt.TagNodeString">
            <summary>
            Converts a system string to a string node representing the same data.
            </summary>
            <param name="s">A string.</param>
            <returns>A new string node containing the given value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeString.op_Implicit(Substrate.Nbt.TagNodeString)~System.String">
            <summary>
            Converts a string node to a system string representing the same data.
            </summary>
            <param name="s">A string node.</param>
            <returns>A system string set to the node's data.</returns>
        </member>
        <member name="P:Substrate.Nbt.TagNodeString.Data">
            <summary>
            Gets or sets a string of tag data.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.TagNodeString.Length">
            <summary>
            Gets the length of the stored string.
            </summary>
        </member>
        <member name="T:Substrate.AlphaBlock">
            <summary>
            A single Alpha-compatible block with context-independent data.
            </summary>
            <remarks><para>In general, you should prefer other types for accessing block data including <see cref="T:Substrate.AlphaBlockRef"/>,
            <see cref="T:Substrate.BlockManager"/>, and the <see cref="T:Substrate.AlphaBlockCollection"/> property of <see cref="T:Substrate.Core.IChunk"/> and <see cref="T:Substrate.ChunkRef"/>.</para>
            <para>You should use the <see cref="T:Substrate.AlphaBlock"/> type when you need to copy individual blocks into a custom collection or
            container, and context-depdendent data such as coordinates and lighting have no well-defined meaning.  <see cref="T:Substrate.AlphaBlock"/>
            offers a relatively compact footprint for storing the unique identity of a block's manifestation in the world.</para>
            <para>A single <see cref="T:Substrate.AlphaBlock"/> object may also provide a convenient way to paste a block into many locations in
            a block collection type.</para></remarks>
        </member>
        <member name="T:Substrate.Core.IDataBlock">
            <summary>
            A block type supporting a data field.
            </summary>
        </member>
        <member name="T:Substrate.Core.IBlock">
            <summary>
            A basic block type.
            </summary>
        </member>
        <member name="P:Substrate.Core.IBlock.Info">
            <summary>
            Gets a variety of info and attributes on the block's type.
            </summary>
        </member>
        <member name="P:Substrate.Core.IBlock.ID">
            <summary>
            Gets or sets the block's id (type).
            </summary>
        </member>
        <member name="P:Substrate.Core.IDataBlock.Data">
            <summary>
            Gets or sets a data value on the block.
            </summary>
        </member>
        <member name="T:Substrate.Core.IPropertyBlock">
            <summary>
            A block type supporting properties.
            </summary>
        </member>
        <member name="M:Substrate.Core.IPropertyBlock.GetTileEntity">
            <summary>
            Gets a tile entity attached to this block.
            </summary>
            <returns>A <see cref="T:Substrate.TileEntity"/> for this block, or null if this block type does not support a tile entity.</returns>
        </member>
        <member name="M:Substrate.Core.IPropertyBlock.SetTileEntity(Substrate.TileEntity)">
            <summary>
            Sets the tile entity attached to this block.
            </summary>
            <param name="te">A <see cref="T:Substrate.TileEntity"/> supported by this block type.</param>
            <exception cref="T:System.ArgumentException">Thrown when the <see cref="T:Substrate.TileEntity"/> being passed is of the wrong type for the given block.</exception>
            <exception cref="T:System.InvalidOperationException">Thrown when the given block is of a type that does not support a <see cref="T:Substrate.TileEntity"/> record.</exception>
        </member>
        <member name="M:Substrate.Core.IPropertyBlock.CreateTileEntity">
            <summary>
            Creates a default tile entity for this block consistent with its type.
            </summary>
            <remarks>This method will overwrite any existing <see cref="T:Substrate.TileEntity"/> attached to the block.</remarks>
            <exception cref="T:System.InvalidOperationException">Thrown when the given block is of a type that does not support a <see cref="T:Substrate.TileEntity"/> record.</exception>
            <exception cref="T:Substrate.UnknownTileEntityException">Thrown when the block type requests a <see cref="T:Substrate.TileEntity"/> that has not been registered with the <see cref="T:Substrate.TileEntityFactory"/>.</exception>
        </member>
        <member name="M:Substrate.Core.IPropertyBlock.ClearTileEntity">
            <summary>
            Deletes the tile entity attached to this block if one exists.
            </summary>
        </member>
        <member name="T:Substrate.Core.IActiveBlock">
            <summary>
            A block type supporting active tick state.
            </summary>
        </member>
        <member name="M:Substrate.Core.IActiveBlock.GetTileTick">
            <summary>
            Gets a <see cref="T:Substrate.TileTick"/> entry attached to this block.
            </summary>
            <returns>A <see cref="T:Substrate.TileTick"/> for this block, or null if one has not been created yet.</returns>
        </member>
        <member name="M:Substrate.Core.IActiveBlock.SetTileTick(Substrate.TileTick)">
            <summary>
            Sets the <see cref="T:Substrate.TileTick"/> attached to this block.
            </summary>
            <param name="tt">A <see cref="T:Substrate.TileTick"/> representing the delay until this block is next processed in-game.</param>
        </member>
        <member name="M:Substrate.Core.IActiveBlock.CreateTileTick">
            <summary>
            Creates a default <see cref="T:Substrate.TileTick"/> entry for this block.
            </summary>
            <remarks>This method will overwrite any existing <see cref="T:Substrate.TileTick"/> attached to the block.</remarks>
        </member>
        <member name="M:Substrate.Core.IActiveBlock.ClearTileTick">
            <summary>
            Deletes the <see cref="T:Substrate.TileTick"/> entry attached to this block, if one exists.
            </summary>
        </member>
        <member name="P:Substrate.Core.IActiveBlock.TileTickValue">
            <summary>
            Gets or sets the the actual tick delay associated with this block.
            </summary>
            <remarks>If no underlying <see cref="T:Substrate.TileTick"/> entry exists for this block, one will be created.</remarks>
        </member>
        <member name="M:Substrate.AlphaBlock.#ctor(System.Int32)">
            <summary>
            Create a new <see cref="T:Substrate.AlphaBlock"/> instance of the given type with default data.
            </summary>
            <param name="id">The id (type) of the block.</param>
            <remarks>If the specified block type requires a Tile Entity as part of its definition, a default
            <see cref="T:Substrate.TileEntity"/> of the appropriate type will automatically be created.</remarks>
        </member>
        <member name="M:Substrate.AlphaBlock.#ctor(System.Int32,System.Int32)">
            <summary>
            Create a new <see cref="T:Substrate.AlphaBlock"/> instance of the given type and data value.
            </summary>
            <param name="id">The id (type) of the block.</param>
            <param name="data">The block's supplementary data value, currently limited to the range [0-15].</param>
            <remarks>If the specified block type requires a Tile Entity as part of its definition, a default
            <see cref="T:Substrate.TileEntity"/> of the appropriate type will automatically be created.</remarks>
        </member>
        <member name="M:Substrate.AlphaBlock.#ctor(Substrate.AlphaBlockCollection,System.Int32,System.Int32,System.Int32)">
            <summary>
            Crrates a new <see cref="T:Substrate.AlphaBlock"/> from a given block in an existing <see cref="T:Substrate.AlphaBlockCollection"/>.
            </summary>
            <param name="chunk">The block collection to reference.</param>
            <param name="lx">The local X-coordinate of a block within the collection.</param>
            <param name="ly">The local Y-coordinate of a block within the collection.</param>
            <param name="lz">The local Z-coordinate of a block within the collection.</param>
        </member>
        <member name="M:Substrate.AlphaBlock.GetTileEntity">
            <summary>
            Gets the Tile Entity record of the block if it has one.
            </summary>
            <returns>The <see cref="T:Substrate.TileEntity"/> attached to this block, or null if the block type does not require a Tile Entity.</returns>
        </member>
        <member name="M:Substrate.AlphaBlock.SetTileEntity(Substrate.TileEntity)">
            <summary>
            Sets a new Tile Entity record for the block.
            </summary>
            <param name="te">A Tile Entity record compatible with the block's type.</param>
            <exception cref="T:System.ArgumentException">Thrown when an incompatible <see cref="T:Substrate.TileEntity"/> is added to a block.</exception>
            <exception cref="T:System.InvalidOperationException">Thrown when a <see cref="T:Substrate.TileEntity"/> is added to a block that does not use tile entities.</exception>
        </member>
        <member name="M:Substrate.AlphaBlock.CreateTileEntity">
            <summary>
            Creates a default Tile Entity record appropriate for the block.
            </summary>
        </member>
        <member name="M:Substrate.AlphaBlock.ClearTileEntity">
            <summary>
            Removes any Tile Entity currently attached to the block.
            </summary>
        </member>
        <member name="M:Substrate.AlphaBlock.GetTileTick">
            <summary>
            Gets the <see cref="T:Substrate.TileTick"/> record of the block if it has one.
            </summary>
            <returns>The <see cref="T:Substrate.TileTick"/> attached to this block, or null if the block type does not require a Tile Entity.</returns>
        </member>
        <member name="M:Substrate.AlphaBlock.SetTileTick(Substrate.TileTick)">
            <summary>
            Sets a new <see cref="T:Substrate.TileTick"/> record for the block.
            </summary>
            <param name="tt">A <see cref="T:Substrate.TileTick"/> record compatible with the block's type.</param>
        </member>
        <member name="M:Substrate.AlphaBlock.CreateTileTick">
            <summary>
            Creates a default <see cref="T:Substrate.TileTick"/> record appropriate for the block.
            </summary>
        </member>
        <member name="M:Substrate.AlphaBlock.ClearTileTick">
            <summary>
            Removes any <see cref="T:Substrate.TileTick"/> currently attached to the block.
            </summary>
        </member>
        <member name="M:Substrate.AlphaBlock.Copy">
            <summary>
            Creates a deep copy of the <see cref="T:Substrate.AlphaBlock"/>.
            </summary>
            <returns>A new <see cref="T:Substrate.AlphaBlock"/> representing the same data.</returns>
        </member>
        <member name="P:Substrate.AlphaBlock.Info">
            <summary>
            Gets information on the type of the block.
            </summary>
        </member>
        <member name="P:Substrate.AlphaBlock.ID">
            <summary>
            Gets or sets the id (type) of the block.
            </summary>
            <remarks>If the new or old type have non-matching Tile Entity requirements, the embedded Tile Entity data
            will be updated to keep consistent with the new block type.</remarks>
        </member>
        <member name="P:Substrate.AlphaBlock.Data">
            <summary>
            Gets or sets the supplementary data value of the block.
            </summary>
        </member>
        <member name="T:Substrate.Data.DataManager">
            <summary>
            Provides a common interface for managing additional data resources in a world.
            </summary>
        </member>
        <member name="M:Substrate.Data.DataManager.GetMapManager">
            <summary>
            Gets an <see cref="T:Substrate.Data.IMapManager"/> for managing <see cref="T:Substrate.Data.Map"/> data resources.
            </summary>
            <returns>An <see cref="T:Substrate.Data.IMapManager"/> instance appropriate for the concrete <see cref="T:Substrate.Data.DataManager"/> instance.</returns>
        </member>
        <member name="M:Substrate.Data.DataManager.Save">
            <summary>
            Saves any metadata required by the world for managing data resources.
            </summary>
            <returns><c>true</c> on success, or <c>false</c> if data could not be saved.</returns>
        </member>
        <member name="P:Substrate.Data.DataManager.CurrentMapId">
            <summary>
            Gets or sets the id of the next map to be created.
            </summary>
        </member>
        <member name="P:Substrate.Data.DataManager.Maps">
            <summary>
            Gets an <see cref="T:Substrate.Data.IMapManager"/> for managing <see cref="T:Substrate.Data.Map"/> data resources.
            </summary>
        </member>
        <member name="T:Substrate.Core.RegionManager">
            <summary>
            Manages the regions of a Beta-compatible world.
            </summary>
        </member>
        <member name="M:Substrate.Core.IRegionContainer.RegionExists(System.Int32,System.Int32)">
            <summary>
            Determines if a region exists at the given coordinates.
            </summary>
            <param name="rx">The global X-coordinate of a region.</param>
            <param name="rz">The global Z-coordinate of a region.</param>
            <returns>True if a region exists at the given global region coordinates; false otherwise.</returns>
        </member>
        <member name="M:Substrate.Core.IRegionContainer.GetRegion(System.Int32,System.Int32)">
            <summary>
            Gets an <see cref="T:Substrate.Core.IRegion"/> for the given region filename.
            </summary>
            <param name="filename">The filename of the region to get.</param>
            <returns>A <see cref="T:Substrate.Core.IRegion"/> corresponding to the coordinates encoded in the filename.</returns>
        </member>
        <member name="M:Substrate.Core.IRegionContainer.CreateRegion(System.Int32,System.Int32)">
            <summary>
            Creates a new empty region at the given coordinates, if no region exists.
            </summary>
            <param name="rx">The global X-coordinate of a region.</param>
            <param name="rz">The global Z-coordinate of a region.</param>
            <returns>A new empty <see cref="T:Substrate.Core.IRegion"/> object for the given coordinates, or an existing <see cref="T:Substrate.Core.IRegion"/> if one exists.</returns>
        </member>
        <member name="M:Substrate.Core.IRegionContainer.DeleteRegion(System.Int32,System.Int32)">
            <summary>
            Deletes a region at the given coordinates.
            </summary>
            <param name="rx">The global X-coordinate of a region.</param>
            <param name="rz">The global Z-coordinate of a region.</param>
            <returns>True if a region was deleted; false otherwise.</returns>
        </member>
        <member name="M:Substrate.Core.RegionManager.#ctor(System.String,Substrate.Core.ChunkCache)">
            <summary>
            Creates a new instance of a <see cref="T:Substrate.Core.RegionManager"/> for the given region directory and chunk cache.
            </summary>
            <param name="regionDir">The path to a directory containing region files.</param>
            <param name="cache">The shared chunk cache to hold chunk data in.</param>
        </member>
        <member name="M:Substrate.Core.RegionManager.GetRegion(System.Int32,System.Int32)">
            <inherits />
        </member>
        <member name="M:Substrate.Core.RegionManager.RegionExists(System.Int32,System.Int32)">
            <inherits />
        </member>
        <member name="M:Substrate.Core.RegionManager.CreateRegion(System.Int32,System.Int32)">
            <inherits />
        </member>
        <member name="M:Substrate.Core.RegionManager.GetRegionPath">
            <summary>
            Get the current region directory path.
            </summary>
            <returns>The path to the region directory.</returns>
        </member>
        <member name="M:Substrate.Core.RegionManager.DeleteRegion(System.Int32,System.Int32)">
            <inherits />
        </member>
        <member name="M:Substrate.Core.RegionManager.GetEnumerator">
            <summary>
            Returns an enumerator that iterates over all of the regions in the underlying dimension.
            </summary>
            <returns>An enumerator instance.</returns>
        </member>
        <member name="M:Substrate.Core.RegionManager.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an enumerator that iterates over all of the regions in the underlying dimension.
            </summary>
            <returns>An enumerator instance.</returns>
        </member>
        <member name="T:Ionic.Zlib.ParallelDeflateOutputStream">
             <summary>
               A class for compressing and decompressing streams using the
               Deflate algorithm with multiple threads.
             </summary>
            
             <remarks>
             <para>
               This class is for compression only, and that can be only
               through writing.
             </para>
            
             <para>
               For more information on the Deflate algorithm, see IETF RFC 1951, "DEFLATE
               Compressed Data Format Specification version 1.3."
             </para>
            
             <para>
               This class is similar to <see cref="T:Ionic.Zlib.DeflateStream"/>, except
               that this implementation uses an approach that employs multiple worker
               threads to perform the DEFLATE.  On a multi-cpu or multi-core computer,
               the performance of this class can be significantly higher than the
               single-threaded DeflateStream, particularly for larger streams.  How
               large?  Anything over 10mb is a good candidate for parallel compression.
             </para>
            
             <para>
               The tradeoff is that this class uses more memory and more CPU than the
               vanilla DeflateStream, and also is less efficient as a compressor. For
               large files the size of the compressed data stream can be less than 1%
               larger than the size of a compressed data stream from the vanialla
               DeflateStream.  For smaller files the difference can be larger.  The
               difference will also be larger if you set the BufferSize to be lower
               than the default value.  Your mileage may vary. Finally, for small
               files, the ParallelDeflateOutputStream can be much slower than the vanilla
               DeflateStream, because of the overhead of using the thread pool.
             </para>
            
             </remarks>
             <seealso cref="T:Ionic.Zlib.DeflateStream"/>
        </member>
        <member name="M:Ionic.Zlib.ParallelDeflateOutputStream.#ctor(System.IO.Stream)">
             <summary>
             Create a ParallelDeflateOutputStream.
             </summary>
             <remarks>
            
             <para>
               This stream compresses data written into it via the DEFLATE
               algorithm (see RFC 1951), and writes out the compressed byte stream.
             </para>
            
             <para>
               The instance will use the default compression level, the default
               buffer sizes and the default number of threads and buffers per
               thread.
             </para>
            
             <para>
               This class is similar to <see cref="T:Ionic.Zlib.DeflateStream"/>,
               except that this implementation uses an approach that employs
               multiple worker threads to perform the DEFLATE.  On a multi-cpu or
               multi-core computer, the performance of this class can be
               significantly higher than the single-threaded DeflateStream,
               particularly for larger streams.  How large?  Anything over 10mb is
               a good candidate for parallel compression.
             </para>
            
             </remarks>
            
             <example>
            
             This example shows how to use a ParallelDeflateOutputStream to compress
             data.  It reads a file, compresses it, and writes the compressed data to
             a second, output file.
            
             <code>
             byte[] buffer = new byte[WORKING_BUFFER_SIZE];
             int n= -1;
             String outputFile = fileToCompress + ".compressed";
             using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
             {
                 using (var raw = System.IO.File.Create(outputFile))
                 {
                     using (Stream compressor = new ParallelDeflateOutputStream(raw))
                     {
                         while ((n= input.Read(buffer, 0, buffer.Length)) != 0)
                         {
                             compressor.Write(buffer, 0, n);
                         }
                     }
                 }
             }
             </code>
             <code lang="VB">
             Dim buffer As Byte() = New Byte(4096) {}
             Dim n As Integer = -1
             Dim outputFile As String = (fileToCompress &amp; ".compressed")
             Using input As Stream = File.OpenRead(fileToCompress)
                 Using raw As FileStream = File.Create(outputFile)
                     Using compressor As Stream = New ParallelDeflateOutputStream(raw)
                         Do While (n &lt;&gt; 0)
                             If (n &gt; 0) Then
                                 compressor.Write(buffer, 0, n)
                             End If
                             n = input.Read(buffer, 0, buffer.Length)
                         Loop
                     End Using
                 End Using
             End Using
             </code>
             </example>
             <param name="stream">The stream to which compressed data will be written.</param>
        </member>
        <member name="M:Ionic.Zlib.ParallelDeflateOutputStream.#ctor(System.IO.Stream,Ionic.Zlib.CompressionLevel)">
            <summary>
              Create a ParallelDeflateOutputStream using the specified CompressionLevel.
            </summary>
            <remarks>
              See the <see cref="M:Ionic.Zlib.ParallelDeflateOutputStream.#ctor(System.IO.Stream)"/>
              constructor for example code.
            </remarks>
            <param name="stream">The stream to which compressed data will be written.</param>
            <param name="level">A tuning knob to trade speed for effectiveness.</param>
        </member>
        <member name="M:Ionic.Zlib.ParallelDeflateOutputStream.#ctor(System.IO.Stream,System.Boolean)">
            <summary>
            Create a ParallelDeflateOutputStream and specify whether to leave the captive stream open
            when the ParallelDeflateOutputStream is closed.
            </summary>
            <remarks>
              See the <see cref="M:Ionic.Zlib.ParallelDeflateOutputStream.#ctor(System.IO.Stream)"/>
              constructor for example code.
            </remarks>
            <param name="stream">The stream to which compressed data will be written.</param>
            <param name="leaveOpen">
               true if the application would like the stream to remain open after inflation/deflation.
            </param>
        </member>
        <member name="M:Ionic.Zlib.ParallelDeflateOutputStream.#ctor(System.IO.Stream,Ionic.Zlib.CompressionLevel,System.Boolean)">
            <summary>
            Create a ParallelDeflateOutputStream and specify whether to leave the captive stream open
            when the ParallelDeflateOutputStream is closed.
            </summary>
            <remarks>
              See the <see cref="M:Ionic.Zlib.ParallelDeflateOutputStream.#ctor(System.IO.Stream)"/>
              constructor for example code.
            </remarks>
            <param name="stream">The stream to which compressed data will be written.</param>
            <param name="level">A tuning knob to trade speed for effectiveness.</param>
            <param name="leaveOpen">
               true if the application would like the stream to remain open after inflation/deflation.
            </param>
        </member>
        <member name="M:Ionic.Zlib.ParallelDeflateOutputStream.#ctor(System.IO.Stream,Ionic.Zlib.CompressionLevel,Ionic.Zlib.CompressionStrategy,System.Boolean)">
            <summary>
            Create a ParallelDeflateOutputStream using the specified
            CompressionLevel and CompressionStrategy, and specifying whether to
            leave the captive stream open when the ParallelDeflateOutputStream is
            closed.
            </summary>
            <remarks>
              See the <see cref="M:Ionic.Zlib.ParallelDeflateOutputStream.#ctor(System.IO.Stream)"/>
              constructor for example code.
            </remarks>
            <param name="stream">The stream to which compressed data will be written.</param>
            <param name="level">A tuning knob to trade speed for effectiveness.</param>
            <param name="strategy">
              By tweaking this parameter, you may be able to optimize the compression for
              data with particular characteristics.
            </param>
            <param name="leaveOpen">
               true if the application would like the stream to remain open after inflation/deflation.
            </param>
        </member>
        <member name="M:Ionic.Zlib.ParallelDeflateOutputStream.Write(System.Byte[],System.Int32,System.Int32)">
             <summary>
               Write data to the stream.
             </summary>
            
             <remarks>
            
             <para>
               To use the ParallelDeflateOutputStream to compress data, create a
               ParallelDeflateOutputStream with CompressionMode.Compress, passing a
               writable output stream.  Then call Write() on that
               ParallelDeflateOutputStream, providing uncompressed data as input.  The
               data sent to the output stream will be the compressed form of the data
               written.
             </para>
            
             <para>
               To decompress data, use the <see cref="T:Ionic.Zlib.DeflateStream"/> class.
             </para>
            
             </remarks>
             <param name="buffer">The buffer holding data to write to the stream.</param>
             <param name="offset">the offset within that data array to find the first byte to write.</param>
             <param name="count">the number of bytes to write.</param>
        </member>
        <member name="M:Ionic.Zlib.ParallelDeflateOutputStream.Flush">
            <summary>
            Flush the stream.
            </summary>
        </member>
        <member name="M:Ionic.Zlib.ParallelDeflateOutputStream.Close">
            <summary>
            Close the stream.
            </summary>
            <remarks>
            You must call Close on the stream to guarantee that all of the data written in has
            been compressed, and the compressed data has been written out.
            </remarks>
        </member>
        <member name="M:Ionic.Zlib.ParallelDeflateOutputStream.Dispose">
            <summary>Dispose the object</summary>
            <remarks>
              <para>
                Because ParallelDeflateOutputStream is IDisposable, the
                application must call this method when finished using the instance.
              </para>
              <para>
                This method is generally called implicitly upon exit from
                a <c>using</c> scope in C# (<c>Using</c> in VB).
              </para>
            </remarks>
        </member>
        <member name="M:Ionic.Zlib.ParallelDeflateOutputStream.Dispose(System.Boolean)">
            <summary>The Dispose method</summary>
        </member>
        <member name="M:Ionic.Zlib.ParallelDeflateOutputStream.Reset(System.IO.Stream)">
             <summary>
               Resets the stream for use with another stream.
             </summary>
             <remarks>
               Because the ParallelDeflateOutputStream is expensive to create, it
               has been designed so that it can be recycled and re-used.  You have
               to call Close() on the stream first, then you can call Reset() on
               it, to use it again on another stream.
             </remarks>
            
             <example>
             <code>
             ParallelDeflateOutputStream deflater = null;
             foreach (var inputFile in listOfFiles)
             {
                 string outputFile = inputFile + ".compressed";
                 using (System.IO.Stream input = System.IO.File.OpenRead(inputFile))
                 {
                     using (var outStream = System.IO.File.Create(outputFile))
                     {
                         if (deflater == null)
                             deflater = new ParallelDeflateOutputStream(outStream,
                                                                        CompressionLevel.Best,
                                                                        CompressionStrategy.Default,
                                                                        true);
                         deflater.Reset(outStream);
            
                         while ((n= input.Read(buffer, 0, buffer.Length)) != 0)
                         {
                             deflater.Write(buffer, 0, n);
                         }
                     }
                 }
             }
             </code>
             </example>
        </member>
        <member name="M:Ionic.Zlib.ParallelDeflateOutputStream.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            This method always throws a NotImplementedException.
            </summary>
        </member>
        <member name="M:Ionic.Zlib.ParallelDeflateOutputStream.Seek(System.Int64,System.IO.SeekOrigin)">
            <summary>
            This method always throws a NotImplementedException.
            </summary>
        </member>
        <member name="M:Ionic.Zlib.ParallelDeflateOutputStream.SetLength(System.Int64)">
            <summary>
            This method always throws a NotImplementedException.
            </summary>
        </member>
        <member name="P:Ionic.Zlib.ParallelDeflateOutputStream.Strategy">
             <summary>
               The ZLIB strategy to be used during compression.
             </summary>
            
        </member>
        <member name="P:Ionic.Zlib.ParallelDeflateOutputStream.BuffersPerCore">
             <summary>
             The number of buffers per CPU or CPU core.
             </summary>
            
             <remarks>
             <para>
               This property sets the number of memory buffers to create, for every
               CPU or CPU core in the machine.  The divide-and-conquer approach
               taken by this class assumes a single thread from the application
               will call Write().  There will be multiple background threads that
               then compress (DEFLATE) the data written into the stream, and also a
               single output thread, also operating in the background, aggregating
               those results and finally emitting the output.
             </para>
            
             <para>
               The default value is 4.  Different values may deliver better or
               worse results, depending on the dynamic performance characteristics
               of your storage and compute resources.
             </para>
            
             <para>
               The total amount of storage space allocated for buffering will be
               (n*M*S*2), where n is the number of CPUs, M is the multiple (this
               property), S is the size of each buffer (<see cref="P:Ionic.Zlib.ParallelDeflateOutputStream.BufferSize"/>),
               and there are 2 buffers used by the compressor, one for input and
               one for output. For example, if your machine has 4 cores, and you
               set BuffersPerCore to 3, and you retain the default buffer size of
               128k, then the ParallelDeflateOutputStream will use 3mb of buffer
               memory in total.
             </para>
            
             <para>
               The application can set this value at any time, but it is effective
               only before the first call to Write(), which is when the buffers are
               allocated.
             </para>
             </remarks>
        </member>
        <member name="P:Ionic.Zlib.ParallelDeflateOutputStream.BufferSize">
             <summary>
               The size of the buffers used by the compressor threads.
             </summary>
             <remarks>
            
             <para>
               The default buffer size is 128k. The application can set this value at any
               time, but it is effective only before the first Write().
             </para>
            
             <para>
               Larger buffer sizes implies larger memory consumption but allows
               more efficient compression. Using smaller buffer sizes consumes less
               memory but result in less effective compression.  For example, using
               the default buffer size of 128k, the compression delivered is within
               1% of the compression delivered by the single-threaded <see cref="T:Ionic.Zlib.DeflateStream"/>.  On the other hand, using a
               BufferSize of 8k can result in a compressed data stream that is 5%
               larger than that delivered by the single-threaded
               <c>DeflateStream</c>.  Excessively small buffer sizes can also cause
               the speed of the ParallelDeflateOutputStream to drop, because of
               larger thread scheduling overhead dealing with many many small
               buffers.
             </para>
            
             <para>
               The total amount of storage space allocated for buffering will be
               (n*M*S*2), where n is the number of CPUs, M is the multiple (<see cref="P:Ionic.Zlib.ParallelDeflateOutputStream.BuffersPerCore"/>), S is the size of each buffer (this
               property), and there are 2 buffers used by the compressor, one for
               input and one for output. For example, if your machine has a total
               of 4 cores, and if you set <see cref="P:Ionic.Zlib.ParallelDeflateOutputStream.BuffersPerCore"/> to 3, and
               you keep the default buffer size of 128k, then the
               <c>ParallelDeflateOutputStream</c> will use 3mb of buffer memory in
               total.
             </para>
            
             </remarks>
        </member>
        <member name="P:Ionic.Zlib.ParallelDeflateOutputStream.Crc32">
            <summary>
            The CRC32 for the data that was written out, prior to compression.
            </summary>
            <remarks>
            This value is meaningful only after a call to Close().
            </remarks>
        </member>
        <member name="P:Ionic.Zlib.ParallelDeflateOutputStream.BytesProcessed">
            <summary>
            The total number of uncompressed bytes processed by the ParallelDeflateOutputStream.
            </summary>
            <remarks>
            This value is meaningful only after a call to Close().
            </remarks>
        </member>
        <member name="P:Ionic.Zlib.ParallelDeflateOutputStream.CanSeek">
            <summary>
            Indicates whether the stream supports Seek operations.
            </summary>
            <remarks>
            Always returns false.
            </remarks>
        </member>
        <member name="P:Ionic.Zlib.ParallelDeflateOutputStream.CanRead">
            <summary>
            Indicates whether the stream supports Read operations.
            </summary>
            <remarks>
            Always returns false.
            </remarks>
        </member>
        <member name="P:Ionic.Zlib.ParallelDeflateOutputStream.CanWrite">
            <summary>
            Indicates whether the stream supports Write operations.
            </summary>
            <remarks>
            Returns true if the provided stream is writable.
            </remarks>
        </member>
        <member name="P:Ionic.Zlib.ParallelDeflateOutputStream.Length">
            <summary>
            Reading this property always throws a NotImplementedException.
            </summary>
        </member>
        <member name="P:Ionic.Zlib.ParallelDeflateOutputStream.Position">
            <summary>
            Reading or Writing this property always throws a NotImplementedException.
            </summary>
        </member>
        <member name="T:Ionic.Zlib.GZipStream">
             <summary>
               A class for compressing and decompressing GZIP streams.
             </summary>
             <remarks>
            
             <para>
               The <c>GZipStream</c> is a <see href="http://en.wikipedia.org/wiki/Decorator_pattern">Decorator</see> on a
               <see cref="T:System.IO.Stream"/>. It adds GZIP compression or decompression to any
               stream.
             </para>
            
             <para>
               Like the <c>System.IO.Compression.GZipStream</c> in the .NET Base Class Library, the
               <c>Ionic.Zlib.GZipStream</c> can compress while writing, or decompress while
               reading, but not vice versa.  The compression method used is GZIP, which is
               documented in <see href="http://www.ietf.org/rfc/rfc1952.txt">IETF RFC
               1952</see>, "GZIP file format specification version 4.3".</para>
            
             <para>
               A <c>GZipStream</c> can be used to decompress data (through <c>Read()</c>) or
               to compress data (through <c>Write()</c>), but not both.
             </para>
            
             <para>
               If you wish to use the <c>GZipStream</c> to compress data, you must wrap it
               around a write-able stream. As you call <c>Write()</c> on the <c>GZipStream</c>, the
               data will be compressed into the GZIP format.  If you want to decompress data,
               you must wrap the <c>GZipStream</c> around a readable stream that contains an
               IETF RFC 1952-compliant stream.  The data will be decompressed as you call
               <c>Read()</c> on the <c>GZipStream</c>.
             </para>
            
             <para>
               Though the GZIP format allows data from multiple files to be concatenated
               together, this stream handles only a single segment of GZIP format, typically
               representing a single file.
             </para>
            
             <para>
               This class is similar to <see cref="T:Ionic.Zlib.ZlibStream"/> and <see cref="T:Ionic.Zlib.DeflateStream"/>.
               <c>ZlibStream</c> handles RFC1950-compliant streams.  <see cref="T:Ionic.Zlib.DeflateStream"/>
               handles RFC1951-compliant streams. This class handles RFC1952-compliant streams.
             </para>
            
             </remarks>
            
             <seealso cref="T:Ionic.Zlib.DeflateStream"/>
             <seealso cref="T:Ionic.Zlib.ZlibStream"/>
        </member>
        <member name="F:Ionic.Zlib.GZipStream.LastModified">
             <summary>
               The last modified time for the GZIP stream.
             </summary>
            
             <remarks>
               GZIP allows the storage of a last modified time with each GZIP entry.
               When compressing data, you can set this before the first call to
               <c>Write()</c>.  When decompressing, you can retrieve this value any time
               after the first call to <c>Read()</c>.
             </remarks>
        </member>
        <member name="M:Ionic.Zlib.GZipStream.#ctor(System.IO.Stream,Ionic.Zlib.CompressionMode)">
             <summary>
               Create a <c>GZipStream</c> using the specified <c>CompressionMode</c>.
             </summary>
             <remarks>
            
             <para>
               When mode is <c>CompressionMode.Compress</c>, the <c>GZipStream</c> will use the
               default compression level.
             </para>
            
             <para>
               As noted in the class documentation, the <c>CompressionMode</c> (Compress
               or Decompress) also establishes the "direction" of the stream.  A
               <c>GZipStream</c> with <c>CompressionMode.Compress</c> works only through
               <c>Write()</c>.  A <c>GZipStream</c> with
               <c>CompressionMode.Decompress</c> works only through <c>Read()</c>.
             </para>
            
             </remarks>
            
             <example>
               This example shows how to use a GZipStream to compress data.
             <code>
             using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
             {
                 using (var raw = System.IO.File.Create(outputFile))
                 {
                     using (Stream compressor = new GZipStream(raw, CompressionMode.Compress))
                     {
                         byte[] buffer = new byte[WORKING_BUFFER_SIZE];
                         int n;
                         while ((n= input.Read(buffer, 0, buffer.Length)) != 0)
                         {
                             compressor.Write(buffer, 0, n);
                         }
                     }
                 }
             }
             </code>
             <code lang="VB">
             Dim outputFile As String = (fileToCompress &amp; ".compressed")
             Using input As Stream = File.OpenRead(fileToCompress)
                 Using raw As FileStream = File.Create(outputFile)
                 Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress)
                     Dim buffer As Byte() = New Byte(4096) {}
                     Dim n As Integer = -1
                     Do While (n &lt;&gt; 0)
                         If (n &gt; 0) Then
                             compressor.Write(buffer, 0, n)
                         End If
                         n = input.Read(buffer, 0, buffer.Length)
                     Loop
                 End Using
                 End Using
             End Using
             </code>
             </example>
            
             <example>
             This example shows how to use a GZipStream to uncompress a file.
             <code>
             private void GunZipFile(string filename)
             {
                 if (!filename.EndsWith(".gz))
                     throw new ArgumentException("filename");
                 var DecompressedFile = filename.Substring(0,filename.Length-3);
                 byte[] working = new byte[WORKING_BUFFER_SIZE];
                 int n= 1;
                 using (System.IO.Stream input = System.IO.File.OpenRead(filename))
                 {
                     using (Stream decompressor= new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, true))
                     {
                         using (var output = System.IO.File.Create(DecompressedFile))
                         {
                             while (n !=0)
                             {
                                 n= decompressor.Read(working, 0, working.Length);
                                 if (n > 0)
                                 {
                                     output.Write(working, 0, n);
                                 }
                             }
                         }
                     }
                 }
             }
             </code>
            
             <code lang="VB">
             Private Sub GunZipFile(ByVal filename as String)
                 If Not (filename.EndsWith(".gz)) Then
                     Throw New ArgumentException("filename")
                 End If
                 Dim DecompressedFile as String = filename.Substring(0,filename.Length-3)
                 Dim working(WORKING_BUFFER_SIZE) as Byte
                 Dim n As Integer = 1
                 Using input As Stream = File.OpenRead(filename)
                     Using decompressor As Stream = new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, True)
                         Using output As Stream = File.Create(UncompressedFile)
                             Do
                                 n= decompressor.Read(working, 0, working.Length)
                                 If n > 0 Then
                                     output.Write(working, 0, n)
                                 End IF
                             Loop While (n  > 0)
                         End Using
                     End Using
                 End Using
             End Sub
             </code>
             </example>
            
             <param name="stream">The stream which will be read or written.</param>
             <param name="mode">Indicates whether the GZipStream will compress or decompress.</param>
        </member>
        <member name="M:Ionic.Zlib.GZipStream.#ctor(System.IO.Stream,Ionic.Zlib.CompressionMode,Ionic.Zlib.CompressionLevel)">
             <summary>
               Create a <c>GZipStream</c> using the specified <c>CompressionMode</c> and
               the specified <c>CompressionLevel</c>.
             </summary>
             <remarks>
            
             <para>
               The <c>CompressionMode</c> (Compress or Decompress) also establishes the
               "direction" of the stream.  A <c>GZipStream</c> with
               <c>CompressionMode.Compress</c> works only through <c>Write()</c>.  A
               <c>GZipStream</c> with <c>CompressionMode.Decompress</c> works only
               through <c>Read()</c>.
             </para>
            
             </remarks>
            
             <example>
            
             This example shows how to use a <c>GZipStream</c> to compress a file into a .gz file.
            
             <code>
             using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
             {
                 using (var raw = System.IO.File.Create(fileToCompress + ".gz"))
                 {
                     using (Stream compressor = new GZipStream(raw,
                                                               CompressionMode.Compress,
                                                               CompressionLevel.BestCompression))
                     {
                         byte[] buffer = new byte[WORKING_BUFFER_SIZE];
                         int n;
                         while ((n= input.Read(buffer, 0, buffer.Length)) != 0)
                         {
                             compressor.Write(buffer, 0, n);
                         }
                     }
                 }
             }
             </code>
            
             <code lang="VB">
             Using input As Stream = File.OpenRead(fileToCompress)
                 Using raw As FileStream = File.Create(fileToCompress &amp; ".gz")
                     Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression)
                         Dim buffer As Byte() = New Byte(4096) {}
                         Dim n As Integer = -1
                         Do While (n &lt;&gt; 0)
                             If (n &gt; 0) Then
                                 compressor.Write(buffer, 0, n)
                             End If
                             n = input.Read(buffer, 0, buffer.Length)
                         Loop
                     End Using
                 End Using
             End Using
             </code>
             </example>
             <param name="stream">The stream to be read or written while deflating or inflating.</param>
             <param name="mode">Indicates whether the <c>GZipStream</c> will compress or decompress.</param>
             <param name="level">A tuning knob to trade speed for effectiveness.</param>
        </member>
        <member name="M:Ionic.Zlib.GZipStream.#ctor(System.IO.Stream,Ionic.Zlib.CompressionMode,System.Boolean)">
             <summary>
               Create a <c>GZipStream</c> using the specified <c>CompressionMode</c>, and
               explicitly specify whether the stream should be left open after Deflation
               or Inflation.
             </summary>
            
             <remarks>
             <para>
               This constructor allows the application to request that the captive stream
               remain open after the deflation or inflation occurs.  By default, after
               <c>Close()</c> is called on the stream, the captive stream is also
               closed. In some cases this is not desired, for example if the stream is a
               memory stream that will be re-read after compressed data has been written
               to it.  Specify true for the <paramref name="leaveOpen"/> parameter to leave
               the stream open.
             </para>
            
             <para>
               The <see cref="T:Ionic.Zlib.CompressionMode"/> (Compress or Decompress) also
               establishes the "direction" of the stream.  A <c>GZipStream</c> with
               <c>CompressionMode.Compress</c> works only through <c>Write()</c>.  A <c>GZipStream</c>
               with <c>CompressionMode.Decompress</c> works only through <c>Read()</c>.
             </para>
            
             <para>
               The <c>GZipStream</c> will use the default compression level. If you want
               to specify the compression level, see <see cref="M:Ionic.Zlib.GZipStream.#ctor(System.IO.Stream,Ionic.Zlib.CompressionMode,Ionic.Zlib.CompressionLevel,System.Boolean)"/>.
             </para>
            
             <para>
               See the other overloads of this constructor for example code.
             </para>
            
             </remarks>
            
             <param name="stream">
               The stream which will be read or written. This is called the "captive"
               stream in other places in this documentation.
             </param>
            
             <param name="mode">Indicates whether the GZipStream will compress or decompress.
             </param>
            
             <param name="leaveOpen">
               true if the application would like the base stream to remain open after
               inflation/deflation.
             </param>
        </member>
        <member name="M:Ionic.Zlib.GZipStream.#ctor(System.IO.Stream,Ionic.Zlib.CompressionMode,Ionic.Zlib.CompressionLevel,System.Boolean)">
             <summary>
               Create a <c>GZipStream</c> using the specified <c>CompressionMode</c> and the
               specified <c>CompressionLevel</c>, and explicitly specify whether the
               stream should be left open after Deflation or Inflation.
             </summary>
            
             <remarks>
            
             <para>
               This constructor allows the application to request that the captive stream
               remain open after the deflation or inflation occurs.  By default, after
               <c>Close()</c> is called on the stream, the captive stream is also
               closed. In some cases this is not desired, for example if the stream is a
               memory stream that will be re-read after compressed data has been written
               to it.  Specify true for the <paramref name="leaveOpen"/> parameter to
               leave the stream open.
             </para>
            
             <para>
               As noted in the class documentation, the <c>CompressionMode</c> (Compress
               or Decompress) also establishes the "direction" of the stream.  A
               <c>GZipStream</c> with <c>CompressionMode.Compress</c> works only through
               <c>Write()</c>.  A <c>GZipStream</c> with <c>CompressionMode.Decompress</c> works only
               through <c>Read()</c>.
             </para>
            
             </remarks>
            
             <example>
               This example shows how to use a <c>GZipStream</c> to compress data.
             <code>
             using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
             {
                 using (var raw = System.IO.File.Create(outputFile))
                 {
                     using (Stream compressor = new GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression, true))
                     {
                         byte[] buffer = new byte[WORKING_BUFFER_SIZE];
                         int n;
                         while ((n= input.Read(buffer, 0, buffer.Length)) != 0)
                         {
                             compressor.Write(buffer, 0, n);
                         }
                     }
                 }
             }
             </code>
             <code lang="VB">
             Dim outputFile As String = (fileToCompress &amp; ".compressed")
             Using input As Stream = File.OpenRead(fileToCompress)
                 Using raw As FileStream = File.Create(outputFile)
                 Using compressor As Stream = New GZipStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression, True)
                     Dim buffer As Byte() = New Byte(4096) {}
                     Dim n As Integer = -1
                     Do While (n &lt;&gt; 0)
                         If (n &gt; 0) Then
                             compressor.Write(buffer, 0, n)
                         End If
                         n = input.Read(buffer, 0, buffer.Length)
                     Loop
                 End Using
                 End Using
             End Using
             </code>
             </example>
             <param name="stream">The stream which will be read or written.</param>
             <param name="mode">Indicates whether the GZipStream will compress or decompress.</param>
             <param name="leaveOpen">true if the application would like the stream to remain open after inflation/deflation.</param>
             <param name="level">A tuning knob to trade speed for effectiveness.</param>
        </member>
        <member name="M:Ionic.Zlib.GZipStream.Dispose(System.Boolean)">
            <summary>
            Dispose the stream.
            </summary>
            <remarks>
            This may or may not result in a <c>Close()</c> call on the captive stream.
            See the doc on constructors that take a <c>leaveOpen</c> parameter for more information.
            </remarks>
        </member>
        <member name="M:Ionic.Zlib.GZipStream.Flush">
            <summary>
            Flush the stream.
            </summary>
        </member>
        <member name="M:Ionic.Zlib.GZipStream.Read(System.Byte[],System.Int32,System.Int32)">
             <summary>
               Read and decompress data from the source stream.
             </summary>
            
             <remarks>
               With a <c>GZipStream</c>, decompression is done through reading.
             </remarks>
            
             <example>
             <code>
             byte[] working = new byte[WORKING_BUFFER_SIZE];
             using (System.IO.Stream input = System.IO.File.OpenRead(_CompressedFile))
             {
                 using (Stream decompressor= new Ionic.Zlib.GZipStream(input, CompressionMode.Decompress, true))
                 {
                     using (var output = System.IO.File.Create(_DecompressedFile))
                     {
                         int n;
                         while ((n= decompressor.Read(working, 0, working.Length)) !=0)
                         {
                             output.Write(working, 0, n);
                         }
                     }
                 }
             }
             </code>
             </example>
             <param name="buffer">The buffer into which the decompressed data should be placed.</param>
             <param name="offset">the offset within that data array to put the first byte read.</param>
             <param name="count">the number of bytes to read.</param>
             <returns>the number of bytes actually read</returns>
        </member>
        <member name="M:Ionic.Zlib.GZipStream.Seek(System.Int64,System.IO.SeekOrigin)">
            <summary>
              Calling this method always throws a <see cref="T:System.NotImplementedException"/>.
            </summary>
            <param name="offset">irrelevant; it will always throw!</param>
            <param name="origin">irrelevant; it will always throw!</param>
            <returns>irrelevant!</returns>
        </member>
        <member name="M:Ionic.Zlib.GZipStream.SetLength(System.Int64)">
            <summary>
              Calling this method always throws a <see cref="T:System.NotImplementedException"/>.
            </summary>
            <param name="value">irrelevant; this method will always throw!</param>
        </member>
        <member name="M:Ionic.Zlib.GZipStream.Write(System.Byte[],System.Int32,System.Int32)">
             <summary>
               Write data to the stream.
             </summary>
            
             <remarks>
             <para>
               If you wish to use the <c>GZipStream</c> to compress data while writing,
               you can create a <c>GZipStream</c> with <c>CompressionMode.Compress</c>, and a
               writable output stream.  Then call <c>Write()</c> on that <c>GZipStream</c>,
               providing uncompressed data as input.  The data sent to the output stream
               will be the compressed form of the data written.
             </para>
            
             <para>
               A <c>GZipStream</c> can be used for <c>Read()</c> or <c>Write()</c>, but not
               both. Writing implies compression.  Reading implies decompression.
             </para>
            
             </remarks>
             <param name="buffer">The buffer holding data to write to the stream.</param>
             <param name="offset">the offset within that data array to find the first byte to write.</param>
             <param name="count">the number of bytes to write.</param>
        </member>
        <member name="M:Ionic.Zlib.GZipStream.CompressString(System.String)">
             <summary>
               Compress a string into a byte array using GZip.
             </summary>
            
             <remarks>
               Uncompress it with <see cref="M:Ionic.Zlib.GZipStream.UncompressString(System.Byte[])"/>.
             </remarks>
            
             <seealso cref="M:Ionic.Zlib.GZipStream.UncompressString(System.Byte[])"/>
             <seealso cref="M:Ionic.Zlib.GZipStream.CompressBuffer(System.Byte[])"/>
            
             <param name="s">
               A string to compress. The string will first be encoded
               using UTF8, then compressed.
             </param>
            
             <returns>The string in compressed form</returns>
        </member>
        <member name="M:Ionic.Zlib.GZipStream.CompressBuffer(System.Byte[])">
             <summary>
               Compress a byte array into a new byte array using GZip.
             </summary>
            
             <remarks>
               Uncompress it with <see cref="M:Ionic.Zlib.GZipStream.UncompressBuffer(System.Byte[])"/>.
             </remarks>
            
             <seealso cref="M:Ionic.Zlib.GZipStream.CompressString(System.String)"/>
             <seealso cref="M:Ionic.Zlib.GZipStream.UncompressBuffer(System.Byte[])"/>
            
             <param name="b">
               A buffer to compress.
             </param>
            
             <returns>The data in compressed form</returns>
        </member>
        <member name="M:Ionic.Zlib.GZipStream.UncompressString(System.Byte[])">
             <summary>
               Uncompress a GZip'ed byte array into a single string.
             </summary>
            
             <seealso cref="M:Ionic.Zlib.GZipStream.CompressString(System.String)"/>
             <seealso cref="M:Ionic.Zlib.GZipStream.UncompressBuffer(System.Byte[])"/>
            
             <param name="compressed">
               A buffer containing GZIP-compressed data.
             </param>
            
             <returns>The uncompressed string</returns>
        </member>
        <member name="M:Ionic.Zlib.GZipStream.UncompressBuffer(System.Byte[])">
             <summary>
               Uncompress a GZip'ed byte array into a byte array.
             </summary>
            
             <seealso cref="M:Ionic.Zlib.GZipStream.CompressBuffer(System.Byte[])"/>
             <seealso cref="M:Ionic.Zlib.GZipStream.UncompressString(System.Byte[])"/>
            
             <param name="compressed">
               A buffer containing data that has been compressed with GZip.
             </param>
            
             <returns>The data in uncompressed form</returns>
        </member>
        <member name="P:Ionic.Zlib.GZipStream.Comment">
             <summary>
               The comment on the GZIP stream.
             </summary>
            
             <remarks>
             <para>
               The GZIP format allows for each file to optionally have an associated
               comment stored with the file.  The comment is encoded with the ISO-8859-1
               code page.  To include a comment in a GZIP stream you create, set this
               property before calling <c>Write()</c> for the first time on the
               <c>GZipStream</c>.
             </para>
            
             <para>
               When using <c>GZipStream</c> to decompress, you can retrieve this property
               after the first call to <c>Read()</c>.  If no comment has been set in the
               GZIP bytestream, the Comment property will return <c>null</c>
               (<c>Nothing</c> in VB).
             </para>
             </remarks>
        </member>
        <member name="P:Ionic.Zlib.GZipStream.FileName">
             <summary>
               The FileName for the GZIP stream.
             </summary>
            
             <remarks>
            
             <para>
               The GZIP format optionally allows each file to have an associated
               filename.  When compressing data (through <c>Write()</c>), set this
               FileName before calling <c>Write()</c> the first time on the <c>GZipStream</c>.
               The actual filename is encoded into the GZIP bytestream with the
               ISO-8859-1 code page, according to RFC 1952. It is the application's
               responsibility to insure that the FileName can be encoded and decoded
               correctly with this code page.
             </para>
            
             <para>
               When decompressing (through <c>Read()</c>), you can retrieve this value
               any time after the first <c>Read()</c>.  In the case where there was no filename
               encoded into the GZIP bytestream, the property will return <c>null</c> (<c>Nothing</c>
               in VB).
             </para>
             </remarks>
        </member>
        <member name="P:Ionic.Zlib.GZipStream.Crc32">
            <summary>
            The CRC on the GZIP stream.
            </summary>
            <remarks>
            This is used for internal error checking. You probably don't need to look at this property.
            </remarks>
        </member>
        <member name="P:Ionic.Zlib.GZipStream.FlushMode">
            <summary>
            This property sets the flush behavior on the stream.
            </summary>
        </member>
        <member name="P:Ionic.Zlib.GZipStream.BufferSize">
             <summary>
               The size of the working buffer for the compression codec.
             </summary>
            
             <remarks>
             <para>
               The working buffer is used for all stream operations.  The default size is
               1024 bytes.  The minimum size is 128 bytes. You may get better performance
               with a larger buffer.  Then again, you might not.  You would have to test
               it.
             </para>
            
             <para>
               Set this before the first call to <c>Read()</c> or <c>Write()</c> on the
               stream. If you try to set it afterwards, it will throw.
             </para>
             </remarks>
        </member>
        <member name="P:Ionic.Zlib.GZipStream.TotalIn">
            <summary> Returns the total number of bytes input so far.</summary>
        </member>
        <member name="P:Ionic.Zlib.GZipStream.TotalOut">
            <summary> Returns the total number of bytes output so far.</summary>
        </member>
        <member name="P:Ionic.Zlib.GZipStream.CanRead">
            <summary>
            Indicates whether the stream can be read.
            </summary>
            <remarks>
            The return value depends on whether the captive stream supports reading.
            </remarks>
        </member>
        <member name="P:Ionic.Zlib.GZipStream.CanSeek">
            <summary>
            Indicates whether the stream supports Seek operations.
            </summary>
            <remarks>
            Always returns false.
            </remarks>
        </member>
        <member name="P:Ionic.Zlib.GZipStream.CanWrite">
            <summary>
            Indicates whether the stream can be written.
            </summary>
            <remarks>
            The return value depends on whether the captive stream supports writing.
            </remarks>
        </member>
        <member name="P:Ionic.Zlib.GZipStream.Length">
            <summary>
            Reading this property always throws a <see cref="T:System.NotImplementedException"/>.
            </summary>
        </member>
        <member name="P:Ionic.Zlib.GZipStream.Position">
             <summary>
               The position of the stream pointer.
             </summary>
            
             <remarks>
               Setting this property always throws a <see cref="T:System.NotImplementedException"/>. Reading will return the total bytes
               written out, if used in writing, or the total bytes read in, if used in
               reading.  The count may refer to compressed bytes or uncompressed bytes,
               depending on how you've used the stream.
             </remarks>
        </member>
        <member name="T:Substrate.TileEntity">
            <summary>
            Represents a Tile Entity record, which provides additional data to a block.
            </summary>
            <remarks>Generally, this class should be subtyped into new concrete Tile Entity types, as this generic type is unable to
            capture any of the custom data fields that make Tile Entities useful in the first place.  It is however still possible to
            create instances of <see cref="T:Substrate.TileEntity"/> objects, which may allow for graceful handling of unknown Tile Entities.</remarks>
        </member>
        <member name="T:Substrate.Nbt.INbtObject`1">
            <summary>
            Defines methods for loading or extracting an NBT tree.
            </summary>
            <typeparam name="T">Object type that supports this interface.</typeparam>
        </member>
        <member name="M:Substrate.Nbt.INbtObject`1.LoadTree(Substrate.Nbt.TagNode)">
            <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>
        </member>
        <member name="M:Substrate.Nbt.INbtObject`1.LoadTreeSafe(Substrate.Nbt.TagNode)">
            <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>
        </member>
        <member name="M:Substrate.Nbt.INbtObject`1.BuildTree">
            <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>
        </member>
        <member name="M:Substrate.Nbt.INbtObject`1.ValidateTree(Substrate.Nbt.TagNode)">
            <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>
        </member>
        <member name="M:Substrate.TileEntity.#ctor">
            <summary>
            Constructs a blank <see cref="T:Substrate.TileEntity"/>.
            </summary>
        </member>
        <member name="M:Substrate.TileEntity.#ctor(System.String)">
            <summary>
            Constructs a nonspecific <see cref="T:Substrate.TileEntity"/> with a given ID.
            </summary>
            <param name="id">The id (name) of the Tile Entity.</param>
        </member>
        <member name="M:Substrate.TileEntity.#ctor(Substrate.TileEntity)">
            <summary>
            Constructs a <see cref="T:Substrate.TileEntity"/> by copying an existing one.
            </summary>
            <param name="te">The <see cref="T:Substrate.TileEntity"/> to copy.</param>
        </member>
        <member name="M:Substrate.TileEntity.LocatedAt(System.Int32,System.Int32,System.Int32)">
            <summary>
            Checks whether the Tile Entity is located (associated with a block) at the specific global coordinates.
            </summary>
            <param name="x">The global X-coordinate to test.</param>
            <param name="y">The global Y-coordinate to test.</param>
            <param name="z">The global Z-coordinate to test.</param>
            <returns>Status indicating whether the Tile Entity is located at the specified global coordinates.</returns>
        </member>
        <member name="M:Substrate.TileEntity.MoveBy(System.Int32,System.Int32,System.Int32)">
            <summary>
            Moves the <see cref="T:Substrate.TileEntity"/> by given block offsets.
            </summary>
            <param name="diffX">The X-offset to move by, in blocks.</param>
            <param name="diffY">The Y-offset to move by, in blocks.</param>
            <param name="diffZ">The Z-offset to move by, in blocks.</param>
        </member>
        <member name="M:Substrate.TileEntity.Copy">
            <summary>
            Creates a deep-copy of the <see cref="T:Substrate.TileEntity"/> including any data defined in a subtype.
            </summary>
            <returns>A deep-copy of the <see cref="T:Substrate.TileEntity"/>.</returns>
        </member>
        <member name="M:Substrate.TileEntity.FromTree(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to construct a new <see cref="T:Substrate.TileEntity"/> from a Tile Entity subtree without validation.
            </summary>
            <param name="tree">The root node of a Tile Entity subtree.</param>
            <returns>A new <see cref="T:Substrate.TileEntity"/> on success, or null if the tree was unparsable.</returns>
        </member>
        <member name="M:Substrate.TileEntity.FromTreeSafe(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to construct a new <see cref="T:Substrate.TileEntity"/> from a Tile Entity subtree with validation.
            </summary>
            <param name="tree">The root node of a Tile Entity subtree.</param>
            <returns>A new <see cref="T:Substrate.TileEntity"/> on success, or null if the tree failed validation.</returns>
        </member>
        <member name="M:Substrate.TileEntity.LoadTree(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to load a Tile Entity subtree into the <see cref="T:Substrate.TileEntity"/> without validation.
            </summary>
            <param name="tree">The root node of a Tile Entity subtree.</param>
            <returns>The <see cref="T:Substrate.TileEntity"/> returns itself on success, or null if the tree was unparsable.</returns>
        </member>
        <member name="M:Substrate.TileEntity.LoadTreeSafe(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to load a Tile Entity subtree into the <see cref="T:Substrate.TileEntity"/> with validation.
            </summary>
            <param name="tree">The root node of a Tile Entity subtree.</param>
            <returns>The <see cref="T:Substrate.TileEntity"/> returns itself on success, or null if the tree failed validation.</returns>
        </member>
        <member name="M:Substrate.TileEntity.BuildTree">
            <summary>
            Builds a Tile Entity subtree from the current data.
            </summary>
            <returns>The root node of a Tile Entity subtree representing the current data.</returns>
        </member>
        <member name="M:Substrate.TileEntity.ValidateTree(Substrate.Nbt.TagNode)">
            <summary>
            Validate a Tile Entity subtree against a basic schema.
            </summary>
            <param name="tree">The root node of a Tile Entity subtree.</param>
            <returns>Status indicating whether the tree was valid against the internal schema.</returns>
        </member>
        <member name="P:Substrate.TileEntity.ID">
            <summary>
            Gets the id (name) of the Tile Entity.
            </summary>
        </member>
        <member name="P:Substrate.TileEntity.X">
            <summary>
            Gets or sets the global X-coordinate of the block that this Tile Entity is associated with.
            </summary>
        </member>
        <member name="P:Substrate.TileEntity.Y">
            <summary>
            Gets or sets the global Y-coordinate of the block that this Tile Entity is associated with.
            </summary>
        </member>
        <member name="P:Substrate.TileEntity.Z">
            <summary>
            Gets or sets the global Z-coordinate of the block that this Tile Entity is associated with.
            </summary>
        </member>
        <member name="P:Substrate.TileEntity.Source">
            <summary>
            Gets the source <see cref="T:Substrate.Nbt.TagNodeCompound"/> used to create this <see cref="T:Substrate.TileEntity"/> if it exists.
            </summary>
        </member>
        <member name="P:Substrate.TileEntity.Schema">
            <summary>
            Gets a <see cref="T:Substrate.Nbt.SchemaNode"/> representing the basic schema of a Tile Entity.
            </summary>
        </member>
        <member name="T:Substrate.Core.IItemContainer">
            <summary>
            An interface that exposes an <see cref="T:Substrate.ItemCollection"/> for the object.
            </summary>
        </member>
        <member name="P:Substrate.Core.IItemContainer.Items">
            <summary>
            Gets an <see cref="T:Substrate.ItemCollection"/> associated with the object.
            </summary>
        </member>
        <member name="T:Substrate.TypedEntity">
            <summary>
            A base entity type for all entities except <see cref="T:Substrate.Player"/> entities.
            </summary>
            <remarks>Generally, this class should be subtyped into new concrete Entity types, as this generic type is unable to
            capture any of the custom data fields.  It is however still possible to create instances of <see cref="T:Substrate.Entity"/> objects, 
            which may allow for graceful handling of unknown Entity types.</remarks>
        </member>
        <member name="T:Substrate.Entity">
            <summary>
            The base Entity type for Minecraft Entities, providing access to data common to all Minecraft Entities.
            </summary>
        </member>
        <member name="M:Substrate.Entity.#ctor">
            <summary>
            Constructs a new generic <see cref="T:Substrate.Entity"/> with default values.
            </summary>
        </member>
        <member name="M:Substrate.Entity.#ctor(Substrate.Entity)">
            <summary>
            Constructs a new generic <see cref="T:Substrate.Entity"/> by copying fields from another <see cref="T:Substrate.Entity"/> object.
            </summary>
            <param name="e">An <see cref="T:Substrate.Entity"/> to copy fields from.</param>
        </member>
        <member name="M:Substrate.Entity.MoveBy(System.Int32,System.Int32,System.Int32)">
            <summary>
            Moves the <see cref="T:Substrate.Entity"/> by given block offsets.
            </summary>
            <param name="diffX">The X-offset to move by, in blocks.</param>
            <param name="diffY">The Y-offset to move by, in blocks.</param>
            <param name="diffZ">The Z-offset to move by, in blocks.</param>
        </member>
        <member name="M:Substrate.Entity.LoadTree(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to load an Entity subtree into the <see cref="T:Substrate.Entity"/> without validation.
            </summary>
            <param name="tree">The root node of an Entity subtree.</param>
            <returns>The <see cref="T:Substrate.Entity"/> returns itself on success, or null if the tree was unparsable.</returns>
        </member>
        <member name="M:Substrate.Entity.LoadTreeSafe(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to load an Entity subtree into the <see cref="T:Substrate.Entity"/> with validation.
            </summary>
            <param name="tree">The root node of an Entity subtree.</param>
            <returns>The <see cref="T:Substrate.Entity"/> returns itself on success, or null if the tree failed validation.</returns>
        </member>
        <member name="M:Substrate.Entity.BuildTree">
            <summary>
            Builds an Entity subtree from the current data.
            </summary>
            <returns>The root node of an Entity subtree representing the current data.</returns>
        </member>
        <member name="M:Substrate.Entity.ValidateTree(Substrate.Nbt.TagNode)">
            <summary>
            Validate an Entity subtree against a basic schema.
            </summary>
            <param name="tree">The root node of an Entity subtree.</param>
            <returns>Status indicating whether the tree was valid against the internal schema.</returns>
        </member>
        <member name="M:Substrate.Entity.Copy">
            <summary>
            Creates a deep-copy of the <see cref="T:Substrate.Entity"/>.
            </summary>
            <returns>A deep-copy of the <see cref="T:Substrate.Entity"/>.</returns>
        </member>
        <member name="P:Substrate.Entity.Position">
            <summary>
            Gets or sets the global position of the entity in fractional block coordinates.
            </summary>
        </member>
        <member name="P:Substrate.Entity.Motion">
            <summary>
            Gets or sets the velocity of the entity.
            </summary>
        </member>
        <member name="P:Substrate.Entity.Rotation">
            <summary>
            Gets or sets the orientation of the entity.
            </summary>
        </member>
        <member name="P:Substrate.Entity.FallDistance">
            <summary>
            Gets or sets the distance that the entity has fallen, if it is falling.
            </summary>
        </member>
        <member name="P:Substrate.Entity.Fire">
            <summary>
            Gets or sets the fire counter of the entity.
            </summary>
        </member>
        <member name="P:Substrate.Entity.Air">
            <summary>
            Gets or sets the remaining air availale to the entity.
            </summary>
        </member>
        <member name="P:Substrate.Entity.IsOnGround">
            <summary>
            Gets or sets a value indicating whether the entity is currently touch the ground.
            </summary>
        </member>
        <member name="P:Substrate.Entity.Source">
            <summary>
            Gets the source <see cref="T:Substrate.Nbt.TagNodeCompound"/> used to create this <see cref="T:Substrate.Entity"/> if it exists.
            </summary>
        </member>
        <member name="P:Substrate.Entity.Schema">
            <summary>
            Gets a <see cref="T:Substrate.Nbt.SchemaNode"/> representing the basic schema of an Entity.
            </summary>
        </member>
        <member name="M:Substrate.TypedEntity.#ctor(System.String)">
            <summary>
            Creates a new generic <see cref="T:Substrate.TypedEntity"/> with the given id.
            </summary>
            <param name="id">The id (name) of the Entity.</param>
        </member>
        <member name="M:Substrate.TypedEntity.#ctor(Substrate.TypedEntity)">
            <summary>
            Constructs a new <see cref="T:Substrate.TypedEntity"/> by copying an existing one.
            </summary>
            <param name="e">The <see cref="T:Substrate.TypedEntity"/> to copy.</param>
        </member>
        <member name="M:Substrate.TypedEntity.LoadTree(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to load an Entity subtree into the <see cref="T:Substrate.TypedEntity"/> without validation.
            </summary>
            <param name="tree">The root node of an Entity subtree.</param>
            <returns>The <see cref="T:Substrate.TypedEntity"/> returns itself on success, or null if the tree was unparsable.</returns>
        </member>
        <member name="M:Substrate.TypedEntity.LoadTreeSafe(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to load an Entity subtree into the <see cref="T:Substrate.TypedEntity"/> with validation.
            </summary>
            <param name="tree">The root node of an Entity subtree.</param>
            <returns>The <see cref="T:Substrate.TypedEntity"/> returns itself on success, or null if the tree failed validation.</returns>
        </member>
        <member name="M:Substrate.TypedEntity.BuildTree">
            <summary>
            Builds an Entity subtree from the current data.
            </summary>
            <returns>The root node of an Entity subtree representing the current data.</returns>
        </member>
        <member name="M:Substrate.TypedEntity.ValidateTree(Substrate.Nbt.TagNode)">
            <summary>
            Validate an Entity subtree against a basic schema.
            </summary>
            <param name="tree">The root node of an Entity subtree.</param>
            <returns>Status indicating whether the tree was valid against the internal schema.</returns>
        </member>
        <member name="M:Substrate.TypedEntity.Copy">
            <summary>
            Creates a deep-copy of the <see cref="T:Substrate.TypedEntity"/>.
            </summary>
            <returns>A deep-copy of the <see cref="T:Substrate.TypedEntity"/>.</returns>
        </member>
        <member name="P:Substrate.TypedEntity.ID">
            <summary>
            Gets the id (type) of the entity.
            </summary>
        </member>
        <member name="P:Substrate.TypedEntity.Schema">
            <summary>
            Gets a <see cref="T:Substrate.Nbt.SchemaNode"/> representing the basic schema of an Entity.
            </summary>
        </member>
        <member name="T:Substrate.ChunkRef">
            <summary>
            Provides a wrapper around a physical Chunk stored in a chunk container.
            </summary>
            <remarks>
            Modifying data in a ChunkRef will signal to the chunk container that the physical chunk needs to be saved.
            </remarks>
        </member>
        <member name="T:Substrate.Core.IChunk">
            <summary>
            Provides a common interface for accessing Alpha-compatible chunk data.
            </summary>
        </member>
        <member name="M:Substrate.Core.IChunk.Save(System.IO.Stream)">
            <summary>
            Writes out the chunk's data to an output stream.
            </summary>
            <param name="outStream">A valid, open output stream.</param>
            <returns>True if the chunk could be saved; false otherwise.</returns>
        </member>
        <member name="P:Substrate.Core.IChunk.X">
            <summary>
            Gets the global X-coordinate of a chunk.
            </summary>
        </member>
        <member name="P:Substrate.Core.IChunk.Z">
            <summary>
            Gets the global Z-coordinate of a chunk.
            </summary>
        </member>
        <member name="P:Substrate.Core.IChunk.Blocks">
            <summary>
            Gets access to an <see cref="T:Substrate.AlphaBlockCollection"/> representing all block data of a chunk.
            </summary>
        </member>
        <member name="P:Substrate.Core.IChunk.Entities">
            <summary>
            Gets access to an <see cref="T:Substrate.EntityCollection"/> representing all entity data of a chunk.
            </summary>
        </member>
        <member name="P:Substrate.Core.IChunk.IsTerrainPopulated">
            <summary>
            Gets or sets the flag indicating that the terrain generator has created terrain features.
            </summary>
            <remarks>Terrain features include ores, water and lava sources, dungeons, trees, flowers, etc.</remarks>
        </member>
        <member name="M:Substrate.ChunkRef.#ctor">
            <summary>
            Forbid direct instantiation of ChunkRef objects
            </summary>
        </member>
        <member name="M:Substrate.ChunkRef.Create(Substrate.Core.IChunkContainer,System.Int32,System.Int32)">
            <summary>
            Create a reference to a chunk stored in a chunk container.
            </summary>
            <param name="container">Chunk container</param>
            <param name="cx">Local X-coordinate of chunk within container.</param>
            <param name="cz">Local Z-coordinate of chunk within container.</param>
            <returns>ChunkRef representing a reference to a physical chunk at the specified location within the container.</returns>
        </member>
        <member name="M:Substrate.ChunkRef.Save(System.IO.Stream)">
            <summary>
            Saves the underlying physical chunk to the specified output stream.
            </summary>
            <param name="outStream">An open output stream.</param>
            <returns>A value indicating whether the chunk is no longer considered dirty.</returns>
        </member>
        <member name="M:Substrate.ChunkRef.GetNorthNeighbor">
            <summary>
            Gets a ChunkRef to the chunk positioned immediately north (X - 1).
            </summary>
            <returns>ChunkRef to the northern neighboring chunk.</returns>
        </member>
        <member name="M:Substrate.ChunkRef.GetSouthNeighbor">
            <summary>
            Gets a ChunkRef to the chunk positioned immediately south (X + 1).
            </summary>
            <returns>ChunkRef to the southern neighboring chunk.</returns>
        </member>
        <member name="M:Substrate.ChunkRef.GetEastNeighbor">
            <summary>
            Gets a ChunkRef to the chunk positioned immediatly east (Z - 1).
            </summary>
            <returns>ChunkRef to the eastern neighboring chunk.</returns>
        </member>
        <member name="M:Substrate.ChunkRef.GetWestNeighbor">
            <summary>
            Gets a ChunkRef to the chunk positioned immedately west (Z + 1).
            </summary>
            <returns>ChunkRef to the western neighboring chunk.</returns>
        </member>
        <member name="M:Substrate.ChunkRef.GetChunkRef">
            <summary>
            Returns the reference of the physical chunk underlying the ChunkRef, and releases the reference from itself.
            </summary>
            <remarks>
            This function returns the reference to the chunk stored in the chunk container.  Because the ChunkRef simultaneously gives up
            its "ownership" of the Chunk, the container will not consider the Chunk dirty even if it is modified.  Attempting to use the ChunkRef after
            releasing its internal reference will query the container for a new reference.  If the chunk is still cached, it will get the same reference
            back, otherwise it will get an independent copy.  Chunks should only be taken from ChunkRefs to transfer them to another ChunkRef, or
            to modify them without intending to permanently store the changes.
            </remarks>
            <returns>The physical Chunk object underlying the ChunkRef</returns>
        </member>
        <member name="M:Substrate.ChunkRef.SetChunkRef(Substrate.Core.IChunk)">
            <summary>
            Replaces the underlying physical chunk with a different one, updating its physical location to reflect the ChunkRef.
            </summary>
            <remarks>
            Use this function to save chunks that have been created or manipulated independently of a container, or to
            move a physical chunk between locations within a container (by taking the reference from another ChunkRef).
            </remarks>
            <param name="chunk">Physical Chunk to store into the location represented by this ChunkRef.</param>
        </member>
        <member name="M:Substrate.ChunkRef.GetChunk">
            <summary>
            Gets an internal Chunk reference from cache or queries the container for it.
            </summary>
            <returns>The ChunkRef's underlying Chunk.</returns>
        </member>
        <member name="M:Substrate.ChunkRef.ResolveNeighborHandler(System.Int32,System.Int32,System.Int32)">
            <summary>
            Callback function to return the block collection of a ChunkRef at a relative offset to this one.
            </summary>
            <param name="relx">Relative offset from the X-coordinate.</param>
            <param name="rely">Relative offset from the Y-coordinate.</param>
            <param name="relz">Relative offset from the Z-coordinate.</param>
            <returns>Another ChunkRef's underlying block collection, or null if the ChunkRef cannot be found.</returns>
        </member>
        <member name="M:Substrate.ChunkRef.TranslateCoordinatesHandler(System.Int32,System.Int32,System.Int32)">
            <summary>
            Translates chunk-local block coordinates to corresponding global coordinates.
            </summary>
            <param name="lx">Chunk-local X-coordinate.</param>
            <param name="ly">Chunk-local Y-coordinate.</param>
            <param name="lz">Chunk-local Z-coordinate.</param>
            <returns>BlockKey containing the global block coordinates.</returns>
        </member>
        <member name="P:Substrate.ChunkRef.X">
            <summary>
            Gets the global X-coordinate of the chunk.
            </summary>
        </member>
        <member name="P:Substrate.ChunkRef.Z">
            <summary>
            Gets the global Z-coordinate of the chunk.
            </summary>
        </member>
        <member name="P:Substrate.ChunkRef.LocalX">
            <summary>
            Gets the local X-coordinate of the chunk within container.
            </summary>
        </member>
        <member name="P:Substrate.ChunkRef.LocalZ">
            <summary>
            Gets the local Z-coordinate of the chunk within container.
            </summary>
        </member>
        <member name="P:Substrate.ChunkRef.Blocks">
            <summary>
            Gets the collection of all blocks and their data stored in the chunk.
            </summary>
        </member>
        <member name="P:Substrate.ChunkRef.Entities">
            <summary>
            Gets the collection of all entities stored in the chunk.
            </summary>
        </member>
        <member name="P:Substrate.ChunkRef.IsDirty">
            <summary>
            Gets or sets the value indicating that the chunk has been modified, but not saved.
            </summary>
        </member>
        <member name="P:Substrate.ChunkRef.IsTerrainPopulated">
            <summary>
            Gets or sets the chunk's TerrainPopulated status.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.TagNodeList">
            <summary>
            An NBT node representing a list tag type containing other nodes.
            </summary>
            <remarks>
            A list node contains 0 or more nodes of the same type.  The nodes are unnamed
            but can be accessed by sequential index.
            </remarks>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.ToTagList">
            <summary>
            Converts the node to itself.
            </summary>
            <returns>A reference to itself.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.GetTagType">
            <summary>
            Gets the tag type of the node.
            </summary>
            <returns>The TAG_STRING tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.#ctor(Substrate.Nbt.TagType)">
            <summary>
            Constructs a new empty list node.
            </summary>
            <param name="type">The tag type of the list's subnodes.</param>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.#ctor(Substrate.Nbt.TagType,System.Collections.Generic.List{Substrate.Nbt.TagNode})">
            <summary>
            Constructs a new list node from a list of nodes.
            </summary>
            <param name="type">The tag type of the list's subnodes.</param>
            <param name="items">A list containing node objects matching the type parameter.</param>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.Copy">
            <summary>
            Makes a deep copy of the node.
            </summary>
            <returns>A new list node containing new subnodes representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.Find(System.Predicate{Substrate.Nbt.TagNode})">
            <summary>
            Finds the first subnode that matches the conditions defined by the specified predicate.
            </summary>
            <param name="match">The <see cref="T:System.Predicate`1"/> delegate that defines the conditions of the subnode to search for.</param>
            <returns>The first subnode matching the predicate.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.FindAll(System.Predicate{Substrate.Nbt.TagNode})">
            <summary>
            Retrieves all the subnodes that match the conditions defined by the specified predicate.
            </summary>
            <param name="match">The <see cref="T:System.Predicate`1"/> delegate that defines the conditions of the subnode to search for.</param>
            <returns>A list of all subnodes matching the predicate.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.RemoveAll(System.Predicate{Substrate.Nbt.TagNode})">
            <summary>
            Removes all subnodes that match the conditions defined by the specified predicate.
            </summary>
            <param name="match">The <see cref="T:System.Predicate`1"/> delegate that defines the conditions of the subnode to search for.</param>
            <returns>The number of subnodes removed from the node.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.Reverse">
            <summary>
            Reverses the order of all the subnodes in the list.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.Reverse(System.Int32,System.Int32)">
            <summary>
            Reverse the order of subnodes in the specified range.
            </summary>
            <param name="index">The zero-based starting index of the subnodes to reverse</param>
            <param name="count">The number of subnodes in the range to reverse.</param>
            <exception cref="T:System.ArgumentOutOfRangeException"><para><paramref name="index"/> is less than 0.</para><para>-or-</para>
              <para><paramref name="count"/> is less than 0.</para></exception>
            <exception cref="T:System.ArgumentException"><paramref name="index"/> and <paramref name="count"/> do not denote a valid range of elements in the list.</exception>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.Sort">
            <summary>
            Sorts all the subnodes in the list using the default comparator
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.ToString">
            <summary>
            Gets a string representation of the node's data.
            </summary>
            <returns>String representation of the node's data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.ChangeValueType(Substrate.Nbt.TagType)">
            <summary>
            Resets and changes the storage type of the list.
            </summary>
            <param name="type">The new tag type to store in the list.</param>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.IndexOf(Substrate.Nbt.TagNode)">
            <summary>
            Searches for the specified subnode and returns the zero-based index of the first occurrence within the entire node's list.
            </summary>
            <param name="item">The subnode to locate.</param>
            <returns>The zero-based index of the subnode within the node's list if found, or -1 otherwise.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.Insert(System.Int32,Substrate.Nbt.TagNode)">
            <summary>
            Inserts a subnode into the node's list at the specified index.
            </summary>
            <param name="index">The zero-based index at which the subnode should be inserted.</param>
            <param name="item">The subnode to insert.</param>
            <exception cref="T:System.ArgumentException">Thrown when a subnode being inserted has the wrong tag type.</exception>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.RemoveAt(System.Int32)">
            <summary>
            Removes the subnode from the node's list at the specified index.
            </summary>
            <param name="index">The zero-based index to remove a subnode at.</param>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.Add(Substrate.Nbt.TagNode)">
            <summary>
            Adds a subnode to the end of the node's list.
            </summary>
            <param name="item">The subnode to add.</param>
            <exception cref="T:System.ArgumentException">Thrown when a subnode being added has the wrong tag type.</exception>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.Clear">
            <summary>
            Removes all subnode's from the node's list.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.Contains(Substrate.Nbt.TagNode)">
            <summary>
            Checks if a subnode is contained within the node's list.
            </summary>
            <param name="item">The subnode to check for existance.</param>
            <returns>Status indicating if the subnode exists in the node's list.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.CopyTo(Substrate.Nbt.TagNode[],System.Int32)">
            <summary>
            Copies the entire node's list to a compatible one-dimensional array, starting at the specified index of the target array.
            </summary>
            <param name="array">The one-dimensional <see cref="T:System.Array"/> that is the destination of the subnodes copied. The Array must have zero-based indexing.</param>
            <param name="arrayIndex">The zero-based index in <paramref name="array"/> at which copying begins.</param>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.Remove(Substrate.Nbt.TagNode)">
            <summary>
            Removes the first occurance of a subnode from the node's list.
            </summary>
            <param name="item">The subnode to remove.</param>
            <returns>Status indicating whether a subnode was removed.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.GetEnumerator">
            <summary>
            Returns an enumerator that iterates through all of the subnodes in the node's list.
            </summary>
            <returns>An enumerator for this node.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeList.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an enumerator that iterates through all of the subnodes in the node's list.
            </summary>
            <returns>An enumerator for this node.</returns>
        </member>
        <member name="P:Substrate.Nbt.TagNodeList.Count">
            <summary>
            Gets the number of subnodes contained in the list.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.TagNodeList.ValueType">
            <summary>
            Gets the tag type of the subnodes contained in the list.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.TagNodeList.Item(System.Int32)">
            <summary>
            Gets or sets the subnode in the node's list at the specified index.
            </summary>
            <param name="index">The zero-based index to get or set from.</param>
            <returns>The subnode at the specified index.</returns>
            <exception cref="T:System.ArgumentException">Thrown when a subnode being assigned has the wrong tag type.</exception>
        </member>
        <member name="P:Substrate.Nbt.TagNodeList.IsReadOnly">
            <summary>
            Gets a value indicating whether the node is readonly.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.SchemaNodeIntArray">
            <summary>
            A concrete <see cref="T:Substrate.Nbt.SchemaNode"/> representing a <see cref="T:Substrate.Nbt.TagNodeIntArray"/>.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.SchemaNode">
            <summary>
            A node in an NBT schema definition, used to define what values are considered valid for a given NBT node.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.SchemaNode.#ctor(System.String)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNode"/> representing a <see cref="T:Substrate.Nbt.TagNode"/> named <paramref name="name"/>.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNode"/>.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNode.#ctor(System.String,Substrate.Nbt.SchemaOptions)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNode"/> with additional options.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNode"/>.</param>
            <param name="options">One or more option flags modifying the processing of this node.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNode.BuildDefaultTree">
            <summary>
            Construct a sensible default NBT tree representative of this schema node.
            </summary>
            <returns>A <see cref="T:Substrate.Nbt.TagNode"/> that is valid for this schema node.</returns>
        </member>
        <member name="P:Substrate.Nbt.SchemaNode.Name">
            <summary>
            Gets the name of an expected NBT node.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.SchemaNode.Options">
            <summary>
            Gets additional schema options defined for this node.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeIntArray.#ctor(System.String)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeIntArray"/> representing a <see cref="T:Substrate.Nbt.TagNodeIntArray"/> named <paramref name="name"/>.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeIntArray"/>.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeIntArray.#ctor(System.String,Substrate.Nbt.SchemaOptions)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeIntArray"/> with additional options.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeIntArray"/>.</param>
            <param name="options">One or more option flags modifying the processing of this node.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeIntArray.#ctor(System.String,System.Int32)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeIntArray"/> representing a <see cref="T:Substrate.Nbt.TagNodeIntArray"/> named <paramref name="name"/> with expected length <paramref name="length"/>.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeIntArray"/>.</param>
            <param name="length">The expected length of corresponding byte array.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeIntArray.#ctor(System.String,System.Int32,Substrate.Nbt.SchemaOptions)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeIntArray"/> with additional options.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeIntArray"/>.</param>
            <param name="length">The expected length of corresponding byte array.</param>
            <param name="options">One or more option flags modifying the processing of this node.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeIntArray.BuildDefaultTree">
            <summary>
            Constructs a default <see cref="T:Substrate.Nbt.TagNodeIntArray"/> satisfying the constraints of this node.
            </summary>
            <returns>A <see cref="T:Substrate.Nbt.TagNodeString"/> with a sensible default value.</returns>
        </member>
        <member name="P:Substrate.Nbt.SchemaNodeIntArray.Length">
            <summary>
            Gets the expected length of the corresponding int array.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.SchemaNodeIntArray.HasExpectedLength">
            <summary>
            Indicates whether there is an expected length of the corresponding int array.
            </summary>
        </member>
        <member name="T:Substrate.EntityCollection">
            <summary>
            Functions to query and manage a collection of entities.
            </summary>
        </member>
        <member name="M:Substrate.EntityCollection.#ctor(Substrate.Nbt.TagNodeList)">
            <summary>
            Creates a new <see cref="T:Substrate.EntityCollection"/> around a <see cref="T:Substrate.Nbt.TagNodeList"/> containing Entity nodes.
            </summary>
            <param name="entities">A <see cref="T:Substrate.Nbt.TagNodeList"/> containing Entity nodes.</param>
        </member>
        <member name="M:Substrate.EntityCollection.FindAll(System.String)">
            <summary>
            Gets a list of all entities in the collection that match a given id (type).
            </summary>
            <param name="id">The id (type) of entities that should be returned.</param>
            <returns>A list of <see cref="T:Substrate.TypedEntity"/> objects matching the given id (type).</returns>
        </member>
        <member name="M:Substrate.EntityCollection.FindAll(System.Predicate{Substrate.TypedEntity})">
            <summary>
            Gets a list of all entities in the collection that match a given condition.
            </summary>
            <param name="match">A <see cref="T:System.Predicate`1"/> defining the matching condition.</param>
            <returns>A list of <see cref="T:Substrate.TypedEntity"/> objects matching the given condition.</returns>
        </member>
        <member name="M:Substrate.EntityCollection.Add(Substrate.TypedEntity)">
            <summary>
            Adds a <see cref="T:Substrate.TypedEntity"/> to the collection.
            </summary>
            <param name="ent">The <see cref="T:Substrate.TypedEntity"/> object to add.</param>
            <remarks>It is up to the developer to ensure that the <see cref="T:Substrate.TypedEntity"/> being added to the collection has a position that
            is within acceptable range of the collection.  <see cref="T:Substrate.EntityCollection"/> transparently back other objects such as 
            <see cref="!:IChunk"/> objects, which have a well-defined position in global space.  The <see cref="T:Substrate.EntityCollection"/> itself has
            no concept of position and will not enforce constraints on the positions of <see cref="T:Substrate.TypedEntity"/> objects being added.</remarks>
        </member>
        <member name="M:Substrate.EntityCollection.RemoveAll(System.String)">
            <summary>
            Removes all entities matching the given id (type) from the collection.
            </summary>
            <param name="id">The id (type) of entities that should be removed.</param>
            <returns>A count of the number of entities that were removed.</returns>
        </member>
        <member name="M:Substrate.EntityCollection.RemoveAll(System.Predicate{Substrate.TypedEntity})">
            <summary>
            Removes all entities matching the given condition from the collection.
            </summary>
            <param name="match">A <see cref="T:System.Predicate`1"/> defining the matching condition.</param>
            <returns>A count of the number of entities that were removed.</returns>
        </member>
        <member name="M:Substrate.EntityCollection.GetEnumerator">
            <summary>
            Returns an enumerator that iterates through all entities.
            </summary>
            <returns>An <see cref="T:Substrate.EntityCollection.Enumerator"/> for this object.</returns>
        </member>
        <member name="M:Substrate.EntityCollection.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an enumerator that iterates through all entities.
            </summary>
            <returns>An <see cref="T:Substrate.EntityCollection.Enumerator"/> for this object.</returns>
        </member>
        <member name="P:Substrate.EntityCollection.IsDirty">
            <summary>
            Gets or sets a value indicating whether this collection contains unsaved changes.
            </summary>
        </member>
        <member name="T:Substrate.EntityCollection.Enumerator">
            <summary>
            Enumerates the entities within an <see cref="T:Substrate.EntityCollection"/>.
            </summary>
        </member>
        <member name="M:Substrate.EntityCollection.Enumerator.Dispose">
            <summary>
            Releases all resources used by the <see cref="T:Substrate.EntityCollection.Enumerator"/>.
            </summary>
        </member>
        <member name="M:Substrate.EntityCollection.Enumerator.MoveNext">
            <summary>
            Advances the enumerator to the next <see cref="T:Substrate.TypedEntity"/> in the <see cref="T:Substrate.EntityCollection"/>.
            </summary>
            <returns>True if the enumerator was successfully advanced to the next position; false if the enumerator advanced past the end of the collection.</returns>
        </member>
        <member name="M:Substrate.EntityCollection.Enumerator.System#Collections#IEnumerator#Reset">
            <summary>
            Sets the enumerator to its initial position, which is before the first <see cref="T:Substrate.TypedEntity"/> in the collection.
            </summary>
        </member>
        <member name="P:Substrate.EntityCollection.Enumerator.Current">
            <summary>
            Gets the <see cref="T:Substrate.TypedEntity"/> at the current position of the enumerator.
            </summary>
        </member>
        <member name="P:Substrate.EntityCollection.Enumerator.System#Collections#IEnumerator#Current">
            <summary>
            Gets the <see cref="T:Substrate.TypedEntity"/> at the current position of the enumerator.
            </summary>
        </member>
        <member name="T:Substrate.Core.ChunkCache">
            <summary>
            An LRU-based caching data structure for holding references to <see cref="T:Substrate.ChunkRef"/> objects.
            </summary>
            <remarks>The <see cref="T:Substrate.Core.ChunkCache"/> class maintains a separate dictionary on the side for tracking
            dirty chunks.  References to dirty chunks will still be held even if the chunk has been evicted from
            the normal LRU cache.  The dirty list is reset when the world is saved, or manually cleared.</remarks>
        </member>
        <member name="M:Substrate.Core.ChunkCache.#ctor">
            <summary>
            Creates a new <see cref="T:Substrate.Core.ChunkCache"/> with the default capacity of 256 chunks.
            </summary>
        </member>
        <member name="M:Substrate.Core.ChunkCache.#ctor(System.Int32)">
            <summary>
            Creates a new <see cref="T:Substrate.Core.ChunkCache"/> with the given chunk capacity.
            </summary>
            <param name="cacheSize">The capacity of the LRU-portion of the cache.</param>
        </member>
        <member name="M:Substrate.Core.ChunkCache.Insert(Substrate.ChunkRef)">
            <summary>
            Inserts a new chunk into the cache.
            </summary>
            <param name="chunk">The <see cref="T:Substrate.ChunkRef"/> to add to the cache.</param>
            <returns><c>True</c> if the chunk did not already exist in the cache, <c>false</c> otherwise.</returns>
            <remarks>If the chunk does not already exist and the list is full, then the least-recently used chunk in the cache will be evicted 
            to make room for the new chunk.  If the chunk is present in the dirty list, it will be removed.</remarks>
        </member>
        <member name="M:Substrate.Core.ChunkCache.Remove(Substrate.Core.ChunkKey)">
            <summary>
            Removes a chunk from the cache.
            </summary>
            <param name="key">The key identifying which <see cref="T:Substrate.ChunkRef"/> to try and remove.</param>
            <returns><c>True</c> if the chunk was in the LRU-portion of the cache and removed, <c>False</c> otherwise.</returns>
            <remarks>The chunk will also be removed from the dirty list, if it is currently in it.</remarks>
        </member>
        <member name="M:Substrate.Core.ChunkCache.Fetch(Substrate.Core.ChunkKey)">
            <summary>
            Attempts to get a chunk from the LRU- or dirty-portions of the cache.
            </summary>
            <param name="key">The key identifying which <see cref="T:Substrate.ChunkRef"/> to find.</param>
            <returns>The cached <see cref="T:Substrate.ChunkRef"/> if it was found anywhere in the cache, or <c>null</c> if it was not found.</returns>
            <remarks>If the <see cref="T:Substrate.ChunkRef"/> is found in the LRU-portion of the cache, it will be moved to the front of the
            LRU list, making future eviction less likely.</remarks>
        </member>
        <member name="M:Substrate.Core.ChunkCache.GetDirtyEnumerator">
            <summary>
            Gets an enumerator to iterate over all of the <see cref="T:Substrate.ChunkRef"/> objects currently in the dirty list.
            </summary>
            <returns>An enumerator over all of the dirty <see cref="T:Substrate.ChunkRef"/> objects.</returns>
        </member>
        <member name="M:Substrate.Core.ChunkCache.Clear">
            <summary>
            Clears all chunks from the LRU list.
            </summary>
            <remarks>This method will clear all chunks from the LRU-portion of the cache, including any chunks that are
            dirty but have not yet been discovered and added to the dirty list.  Chunks already in the dirty list will
            not be affected.  To clear dirty chunks as well, see <see cref="M:Substrate.Core.ChunkCache.ClearDirty"/>.</remarks>
        </member>
        <member name="M:Substrate.Core.ChunkCache.ClearDirty">
            <summary>
            Clears all chunks from the dirty list.
            </summary>
        </member>
        <member name="M:Substrate.Core.ChunkCache.SyncDirty">
            <summary>
            Scans the LRU list for any dirty chunks, and adds them to the dirty list.
            </summary>
        </member>
        <member name="T:Substrate.Data.Map">
            <summary>
            Represents the complete data of a Map item.
            </summary>
        </member>
        <member name="M:Substrate.Data.Map.#ctor">
            <summary>
            Creates a new default <see cref="T:Substrate.Data.Map"/> object.
            </summary>
        </member>
        <member name="M:Substrate.Data.Map.#ctor(Substrate.Data.Map)">
            <summary>
            Creates a new <see cref="T:Substrate.Data.Map"/> object with copied data.
            </summary>
            <param name="p">A <see cref="T:Substrate.Data.Map"/> to copy data from.</param>
        </member>
        <member name="M:Substrate.Data.Map.Save">
            <summary>
            Saves a <see cref="T:Substrate.Data.Map"/> object to disk as a standard compressed NBT stream.
            </summary>
            <returns>True if the map was saved; false otherwise.</returns>
            <exception cref="T:System.Exception">Thrown when an error is encountered writing out the level.</exception>
        </member>
        <member name="M:Substrate.Data.Map.LoadTree(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to load a Map subtree into the <see cref="T:Substrate.Data.Map"/> without validation.
            </summary>
            <param name="tree">The root node of a Map subtree.</param>
            <returns>The <see cref="T:Substrate.Data.Map"/> returns itself on success, or null if the tree was unparsable.</returns>
        </member>
        <member name="M:Substrate.Data.Map.LoadTreeSafe(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to load a Map subtree into the <see cref="T:Substrate.Data.Map"/> with validation.
            </summary>
            <param name="tree">The root node of a Map subtree.</param>
            <returns>The <see cref="T:Substrate.Data.Map"/> returns itself on success, or null if the tree failed validation.</returns>
        </member>
        <member name="M:Substrate.Data.Map.BuildTree">
            <summary>
            Builds a Map subtree from the current data.
            </summary>
            <returns>The root node of a Map subtree representing the current data.</returns>
        </member>
        <member name="M:Substrate.Data.Map.ValidateTree(Substrate.Nbt.TagNode)">
            <summary>
            Validate a Map subtree against a schema defintion.
            </summary>
            <param name="tree">The root node of a Map subtree.</param>
            <returns>Status indicating whether the tree was valid against the internal schema.</returns>
        </member>
        <member name="M:Substrate.Data.Map.Copy">
            <summary>
            Creates a deep-copy of the <see cref="T:Substrate.Data.Map"/>.
            </summary>
            <returns>A deep-copy of the <see cref="T:Substrate.Data.Map"/>.</returns>
        </member>
        <member name="P:Substrate.Data.Map.Id">
            <summary>
            Gets or sets the id value associated with this map.
            </summary>
        </member>
        <member name="P:Substrate.Data.Map.Scale">
            <summary>
            Gets or sets the scale of the map.  Acceptable values are 0 (1:1) to 4 (1:16).
            </summary>
        </member>
        <member name="P:Substrate.Data.Map.Dimension">
            <summary>
            Gets or sets the (World) Dimension of the map.
            </summary>
        </member>
        <member name="P:Substrate.Data.Map.Height">
            <summary>
            Gets or sets the height of the map.
            </summary>
            <remarks>If the new height dimension is different, the map's color data will be reset.</remarks>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown if the new height value is zero or negative.</exception>
        </member>
        <member name="P:Substrate.Data.Map.Width">
            <summary>
            Gets or sets the width of the map.
            </summary>
            <remarks>If the new width dimension is different, the map's color data will be reset.</remarks>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown if the new width value is zero or negative.</exception>
        </member>
        <member name="P:Substrate.Data.Map.X">
            <summary>
            Gets or sets the global X-coordinate that this map is centered on, in blocks.
            </summary>
        </member>
        <member name="P:Substrate.Data.Map.Z">
            <summary>
            Gets or sets the global Z-coordinate that this map is centered on, in blocks.
            </summary>
        </member>
        <member name="P:Substrate.Data.Map.Colors">
            <summary>
            Gets the raw byte array of the map's color index values.
            </summary>
        </member>
        <member name="P:Substrate.Data.Map.Item(System.Int32,System.Int32)">
            <summary>
            Gets or sets a color index value within the map's internal colors bitmap.
            </summary>
            <param name="x">The X-coordinate to get or set.</param>
            <param name="z">The Z-coordinate to get or set.</param>
            <exception cref="T:System.IndexOutOfRangeException">Thrown when the X- or Z-coordinates exceed the map dimensions.</exception>
        </member>
        <member name="T:Substrate.AnvilWorld">
            <summary>
            Represents an Anvil-compatible (Release 1.2 or higher) Minecraft world.
            </summary>
        </member>
        <member name="T:Substrate.NbtWorld">
            <summary>
            An abstract representation of any conforming chunk-based world.
            </summary>
            <remarks><para>By default, NbtWorld registers handlers to check if a given world can be opened as an <see cref="T:Substrate.AlphaWorld"/> or
            a <see cref="T:Substrate.BetaWorld"/>, which are used by <see cref="T:Substrate.NbtWorld"/>'s generic <see cref="M:Substrate.NbtWorld.Open(System.String)"/> method to automatically
            detect a world's type and open it.</para>
            <para>Advanced implementors can support loading other Nbt-compatible world formats by extending <see cref="T:Substrate.NbtWorld"/> and registering
            an event handler with the <see cref="E:Substrate.NbtWorld.ResolveOpen"/> event, which will allow the generic <see cref="M:Substrate.NbtWorld.Open(System.String)"/> method to
            open worlds of the new format.</para></remarks>
        </member>
        <member name="M:Substrate.NbtWorld.#ctor">
            <summary>
            Creates a new instance of an <see cref="T:Substrate.NbtWorld"/> object.
            </summary>
        </member>
        <member name="M:Substrate.NbtWorld.GetBlockManager">
            <summary>
            Gets an <see cref="T:Substrate.Core.IBlockManager"/> for the default dimension.
            </summary>
            <returns>An <see cref="T:Substrate.Core.IBlockManager"/> tied to the default dimension in this world.</returns>
        </member>
        <member name="M:Substrate.NbtWorld.GetBlockManager(System.Int32)">
            <summary>
            Gets an <see cref="T:Substrate.Core.IBlockManager"/> for the given dimension.
            </summary>
            <param name="dim">The id of the dimension to look up.</param>
            <returns>An <see cref="T:Substrate.Core.IBlockManager"/> tied to the given dimension in this world.</returns>
        </member>
        <member name="M:Substrate.NbtWorld.GetChunkManager">
            <summary>
            Gets an <see cref="T:Substrate.Core.IChunkManager"/> for the default dimension.
            </summary>
            <returns>An <see cref="T:Substrate.Core.IChunkManager"/> tied to the default dimension in this world.</returns>
        </member>
        <member name="M:Substrate.NbtWorld.GetChunkManager(System.Int32)">
            <summary>
            Gets an <see cref="T:Substrate.Core.IChunkManager"/> for the given dimension.
            </summary>
            <param name="dim">The id of the dimension to look up.</param>
            <returns>An <see cref="T:Substrate.Core.IChunkManager"/> tied to the given dimension in this world.</returns>
        </member>
        <member name="M:Substrate.NbtWorld.GetPlayerManager">
            <summary>
            Gets an <see cref="T:Substrate.Core.IPlayerManager"/> for maanging players on multiplayer worlds.
            </summary>
            <returns>An <see cref="T:Substrate.Core.IPlayerManager"/> for this world.</returns>
        </member>
        <member name="M:Substrate.NbtWorld.GetDataManager">
            <summary>
            Gets a <see cref="T:Substrate.Data.DataManager"/> for managing data resources, such as maps.
            </summary>
            <returns>A <see cref="T:Substrate.Data.DataManager"/> for this world.</returns>
        </member>
        <member name="M:Substrate.NbtWorld.Open(System.String)">
            <summary>
            Attempts to determine the best matching world type of the given path, and open the world as that type.
            </summary>
            <param name="path">The path to the directory containing the world.</param>
            <returns>A concrete <see cref="T:Substrate.NbtWorld"/> type, or null if the world cannot be opened or is ambiguos.</returns>
        </member>
        <member name="M:Substrate.NbtWorld.Save">
            <summary>
            Saves the world's <see cref="P:Substrate.NbtWorld.Level"/> data, and any <see cref="T:Substrate.Core.IChunk"/> objects known to have unsaved changes.
            </summary>
        </member>
        <member name="M:Substrate.NbtWorld.GetBlockManagerVirt(System.Int32)">
            <summary>
            Virtual implementor of <see cref="M:Substrate.NbtWorld.GetBlockManager(System.Int32)"/>.
            </summary>
            <param name="dim">The given dimension to fetch an <see cref="T:Substrate.Core.IBlockManager"/> for.</param>
            <returns>An <see cref="T:Substrate.Core.IBlockManager"/> for the given dimension in the world.</returns>
        </member>
        <member name="M:Substrate.NbtWorld.GetChunkManagerVirt(System.Int32)">
            <summary>
            Virtual implementor of <see cref="M:Substrate.NbtWorld.GetChunkManager(System.Int32)"/>.
            </summary>
            <param name="dim">The given dimension to fetch an <see cref="T:Substrate.Core.IChunkManager"/> for.</param>
            <returns>An <see cref="T:Substrate.Core.IChunkManager"/> for the given dimension in the world.</returns>
        </member>
        <member name="M:Substrate.NbtWorld.GetPlayerManagerVirt">
            <summary>
            Virtual implementor of <see cref="M:Substrate.NbtWorld.GetPlayerManager"/>.
            </summary>
            <returns>An <see cref="T:Substrate.Core.IPlayerManager"/> for the given dimension in the world.</returns>
        </member>
        <member name="M:Substrate.NbtWorld.GetDataManagerVirt">
            <summary>
            Virtual implementor of <see cref="M:Substrate.NbtWorld.GetDataManager"/>
            </summary>
            <returns>A <see cref="T:Substrate.Data.DataManager"/> for the given dimension in the world.</returns>
        </member>
        <member name="P:Substrate.NbtWorld.Path">
            <summary>
            Gets or sets the path to the directory containing the world.
            </summary>
        </member>
        <member name="P:Substrate.NbtWorld.DataDirectory">
            <summary>
            Gets or sets the directory containing data resources, rooted in the world directory.
            </summary>
        </member>
        <member name="P:Substrate.NbtWorld.Level">
            <summary>
            Gets a reference to this world's <see cref="P:Substrate.NbtWorld.Level"/> object.
            </summary>
        </member>
        <member name="E:Substrate.NbtWorld.ResolveOpen">
            <summary>
            Raised when <see cref="M:Substrate.NbtWorld.Open(System.String)"/> is called, used to find a concrete <see cref="T:Substrate.NbtWorld"/> type that can open the world.
            </summary>
        </member>
        <member name="M:Substrate.AnvilWorld.GetBlockManager">
            <summary>
            Gets a <see cref="T:Substrate.BlockManager"/> for the default dimension.
            </summary>
            <returns>A <see cref="T:Substrate.BlockManager"/> tied to the default dimension in this world.</returns>
            <remarks>Get a <see cref="T:Substrate.BlockManager"/> if you need to manage blocks as a global, unbounded matrix.  This abstracts away
            any higher-level organizational divisions.  If your task is going to be heavily performance-bound, consider getting a
            <see cref="T:Substrate.RegionChunkManager"/> instead and working with blocks on a chunk-local level.</remarks>
        </member>
        <member name="M:Substrate.AnvilWorld.GetBlockManager(System.Int32)">
            <summary>
            Gets a <see cref="T:Substrate.BlockManager"/> for the given dimension.
            </summary>
            <param name="dim">The id of the dimension to look up.</param>
            <returns>A <see cref="T:Substrate.BlockManager"/> tied to the given dimension in this world.</returns>
            <remarks>Get a <see cref="T:Substrate.BlockManager"/> if you need to manage blocks as a global, unbounded matrix.  This abstracts away
            any higher-level organizational divisions.  If your task is going to be heavily performance-bound, consider getting a
            <see cref="T:Substrate.RegionChunkManager"/> instead and working with blocks on a chunk-local level.</remarks>
        </member>
        <member name="M:Substrate.AnvilWorld.GetChunkManager">
            <summary>
            Gets a <see cref="T:Substrate.RegionChunkManager"/> for the default dimension.
            </summary>
            <returns>A <see cref="T:Substrate.RegionChunkManager"/> tied to the default dimension in this world.</returns>
            <remarks>Get a <see cref="T:Substrate.RegionChunkManager"/> if you you need to work with easily-digestible, bounded chunks of blocks.</remarks>
        </member>
        <member name="M:Substrate.AnvilWorld.GetChunkManager(System.Int32)">
            <summary>
            Gets a <see cref="T:Substrate.RegionChunkManager"/> for the given dimension.
            </summary>
            <param name="dim">The id of the dimension to look up.</param>
            <returns>A <see cref="T:Substrate.RegionChunkManager"/> tied to the given dimension in this world.</returns>
            <remarks>Get a <see cref="T:Substrate.RegionChunkManager"/> if you you need to work with easily-digestible, bounded chunks of blocks.</remarks>
        </member>
        <member name="M:Substrate.AnvilWorld.GetRegionManager">
            <summary>
            Gets a <see cref="T:Substrate.Core.RegionManager"/> for the default dimension.
            </summary>
            <returns>A <see cref="T:Substrate.Core.RegionManager"/> tied to the defaul dimension in this world.</returns>
            <remarks>Regions are a higher-level unit of organization for blocks unique to worlds created in Beta 1.3 and beyond.
            Consider using the <see cref="T:Substrate.RegionChunkManager"/> if you are interested in working with blocks.</remarks>
        </member>
        <member name="M:Substrate.AnvilWorld.GetRegionManager(System.Int32)">
            <summary>
            Gets a <see cref="T:Substrate.Core.RegionManager"/> for the given dimension.
            </summary>
            <param name="dim">The id of the dimension to look up.</param>
            <returns>A <see cref="T:Substrate.Core.RegionManager"/> tied to the given dimension in this world.</returns>
            <remarks>Regions are a higher-level unit of organization for blocks unique to worlds created in Beta 1.3 and beyond.
            Consider using the <see cref="T:Substrate.RegionChunkManager"/> if you are interested in working with blocks.</remarks>
        </member>
        <member name="M:Substrate.AnvilWorld.GetPlayerManager">
            <summary>
            Gets a <see cref="T:Substrate.PlayerManager"/> for maanging players on multiplayer worlds.
            </summary>
            <returns>A <see cref="T:Substrate.PlayerManager"/> for this world.</returns>
            <remarks>To manage the player of a single-player world, get a <see cref="P:Substrate.AnvilWorld.Level"/> object for the world instead.</remarks>
        </member>
        <member name="M:Substrate.AnvilWorld.GetDataManager">
            <summary>
            Gets a <see cref="T:Substrate.Data.BetaDataManager"/> for managing data resources, such as maps.
            </summary>
            <returns>A <see cref="T:Substrate.Data.BetaDataManager"/> for this world.</returns>
        </member>
        <member name="M:Substrate.AnvilWorld.Save">
            <inherits />
        </member>
        <member name="M:Substrate.AnvilWorld.GetChunkCache">
            <summary>
            Gets the <see cref="T:Substrate.Core.ChunkCache"/> currently managing chunks in the default dimension.
            </summary>
            <returns>The <see cref="T:Substrate.Core.ChunkCache"/> for the default dimension, or null if the dimension was not found.</returns>
        </member>
        <member name="M:Substrate.AnvilWorld.GetChunkCache(System.Int32)">
            <summary>
            Gets the <see cref="T:Substrate.Core.ChunkCache"/> currently managing chunks in the given dimension.
            </summary>
            <param name="dim">The id of a dimension to look up.</param>
            <returns>The <see cref="T:Substrate.Core.ChunkCache"/> for the given dimension, or null if the dimension was not found.</returns>
        </member>
        <member name="M:Substrate.AnvilWorld.Open(System.String)">
            <summary>
            Opens an existing Beta-compatible Minecraft world and returns a new <see cref="T:Substrate.BetaWorld"/> to represent it.
            </summary>
            <param name="path">The path to the directory containing the world's level.dat, or the path to level.dat itself.</param>
            <returns>A new <see cref="T:Substrate.BetaWorld"/> object representing an existing world on disk.</returns>
        </member>
        <member name="M:Substrate.AnvilWorld.Open(System.String,System.Int32)">
            <summary>
            Opens an existing Beta-compatible Minecraft world and returns a new <see cref="T:Substrate.BetaWorld"/> to represent it.
            </summary>
            <param name="path">The path to the directory containing the world's level.dat, or the path to level.dat itself.</param>
            <param name="cacheSize">The preferred cache size in chunks for each opened dimension in this world.</param>
            <returns>A new <see cref="T:Substrate.BetaWorld"/> object representing an existing world on disk.</returns>
        </member>
        <member name="M:Substrate.AnvilWorld.Create(System.String)">
            <summary>
            Creates a new Beta-compatible Minecraft world and returns a new <see cref="T:Substrate.BetaWorld"/> to represent it.
            </summary>
            <param name="path">The path to the directory where the new world should be stored.</param>
            <returns>A new <see cref="T:Substrate.BetaWorld"/> object representing a new world.</returns>
            <remarks>This method will attempt to create the specified directory immediately if it does not exist, but will not
            write out any world data unless it is explicitly saved at a later time.</remarks>
        </member>
        <member name="M:Substrate.AnvilWorld.Create(System.String,System.Int32)">
            <summary>
            Creates a new Beta-compatible Minecraft world and returns a new <see cref="T:Substrate.BetaWorld"/> to represent it.
            </summary>
            <param name="path">The path to the directory where the new world should be stored.</param>
            <param name="cacheSize">The preferred cache size in chunks for each opened dimension in this world.</param>
            <returns>A new <see cref="T:Substrate.BetaWorld"/> object representing a new world.</returns>
            <remarks>This method will attempt to create the specified directory immediately if it does not exist, but will not
            write out any world data unless it is explicitly saved at a later time.</remarks>
        </member>
        <member name="M:Substrate.AnvilWorld.GetBlockManagerVirt(System.Int32)">
            <exclude/>
        </member>
        <member name="M:Substrate.AnvilWorld.GetChunkManagerVirt(System.Int32)">
            <exclude/>
        </member>
        <member name="M:Substrate.AnvilWorld.GetPlayerManagerVirt">
            <exclude/>
        </member>
        <member name="M:Substrate.AnvilWorld.GetDataManagerVirt">
            <exclude/>
        </member>
        <member name="P:Substrate.AnvilWorld.Level">
            <summary>
            Gets a reference to this world's <see cref="P:Substrate.AnvilWorld.Level"/> object.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.NbtIOException">
            <summary>
            The exception that is thrown when errors occur during Nbt IO operations.
            </summary>
            <remarks>In most cases, the <see cref="P:System.Exception.InnerException"/> property will contain more detailed information on the
            error that occurred.</remarks>
        </member>
        <member name="T:Substrate.SubstrateException">
            <summary>
            A base class for all Substrate-related exception classes.
            </summary>
        </member>
        <member name="M:Substrate.SubstrateException.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.SubstrateException"/> class.
            </summary>
        </member>
        <member name="M:Substrate.SubstrateException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.SubstrateException"/> class with a custom error message.
            </summary>
            <param name="message">A custom error message.</param>
        </member>
        <member name="M:Substrate.SubstrateException.#ctor(System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.SubstrateException"/> class with a custom error message and a reference to
            an InnerException representing the original cause of the exception.
            </summary>
            <param name="message">A custom error message.</param>
            <param name="innerException">A reference to the original exception that caused the error.</param>
        </member>
        <member name="M:Substrate.SubstrateException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.SubstrateException"/> class with serialized data.
            </summary>
            <param name="info">The object that holds the serialized object data.</param>
            <param name="context">The contextual information about the source or destination.</param>
        </member>
        <member name="M:Substrate.Nbt.NbtIOException.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.Nbt.NbtIOException"/> class.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.NbtIOException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.Nbt.NbtIOException"/> class with a custom error message.
            </summary>
            <param name="message">A custom error message.</param>
        </member>
        <member name="M:Substrate.Nbt.NbtIOException.#ctor(System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.Nbt.NbtIOException"/> class with a custom error message and a reference to
            an InnerException representing the original cause of the exception.
            </summary>
            <param name="message">A custom error message.</param>
            <param name="innerException">A reference to the original exception that caused the error.</param>
        </member>
        <member name="M:Substrate.Nbt.NbtIOException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.Nbt.NbtIOException"/> class with serialized data.
            </summary>
            <param name="info">The object that holds the serialized object data.</param>
            <param name="context">The contextual information about the source or destination.</param>
        </member>
        <member name="T:Substrate.Enchantment">
            <summary>
            Represents an enchantment that can be applied to some <see cref="T:Substrate.Item"/>s.
            </summary>
        </member>
        <member name="M:Substrate.Enchantment.#ctor">
            <summary>
            Constructs a blank <see cref="T:Substrate.Enchantment"/>.
            </summary>
        </member>
        <member name="M:Substrate.Enchantment.#ctor(System.Int32,System.Int32)">
            <summary>
            Constructs an <see cref="T:Substrate.Enchantment"/> from a given id and level.
            </summary>
            <param name="id">The id (type) of the enchantment.</param>
            <param name="level">The level of the enchantment.</param>
        </member>
        <member name="M:Substrate.Enchantment.LoadTree(Substrate.Nbt.TagNode)">
            <inheritdoc />
        </member>
        <member name="M:Substrate.Enchantment.LoadTreeSafe(Substrate.Nbt.TagNode)">
            <inheritdoc />
        </member>
        <member name="M:Substrate.Enchantment.BuildTree">
            <inheritdoc />
        </member>
        <member name="M:Substrate.Enchantment.ValidateTree(Substrate.Nbt.TagNode)">
            <inheritdoc />
        </member>
        <member name="M:Substrate.Enchantment.Copy">
            <inheritdoc />
        </member>
        <member name="P:Substrate.Enchantment.Info">
            <summary>
            Gets an <see cref="T:Substrate.EnchantmentInfo"/> entry for this enchantment's type.
            </summary>
        </member>
        <member name="P:Substrate.Enchantment.Id">
            <summary>
            Gets or sets the current type (id) of the enchantment.
            </summary>
        </member>
        <member name="P:Substrate.Enchantment.Level">
            <summary>
            Gets or sets the level of the enchantment.
            </summary>
        </member>
        <member name="P:Substrate.Enchantment.Schema">
            <summary>
            Gets a <see cref="T:Substrate.Nbt.SchemaNode"/> representing the schema of an enchantment.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.TagNodeLong">
            <summary>
            An NBT node representing a signed long tag type.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeLong.ToTagLong">
            <summary>
            Converts the node to itself.
            </summary>
            <returns>A reference to itself.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeLong.GetTagType">
            <summary>
            Gets the tag type of the node.
            </summary>
            <returns>The TAG_LONG tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeLong.#ctor">
            <summary>
            Constructs a new long node with a data value of 0.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeLong.#ctor(System.Int64)">
            <summary>
            Constructs a new long node.
            </summary>
            <param name="d">The value to set the node's tag data value.</param>
        </member>
        <member name="M:Substrate.Nbt.TagNodeLong.Copy">
            <summary>
            Makes a deep copy of the node.
            </summary>
            <returns>A new long node representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeLong.ToString">
            <summary>
            Gets a string representation of the node's data.
            </summary>
            <returns>String representation of the node's data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeLong.op_Implicit(System.Byte)~Substrate.Nbt.TagNodeLong">
            <summary>
            Converts a system byte to a long node representing the same value.
            </summary>
            <param name="b">A byte value.</param>
            <returns>A new long node containing the given value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeLong.op_Implicit(System.Int16)~Substrate.Nbt.TagNodeLong">
            <summary>
            Converts a system shprt to a long node representing the same value.
            </summary>
            <param name="s">A short value.</param>
            <returns>A new long node containing the given value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeLong.op_Implicit(System.Int32)~Substrate.Nbt.TagNodeLong">
            <summary>
            Converts a system int to a long node representing the same value.
            </summary>
            <param name="i">An int value.</param>
            <returns>A new long node containing the given value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeLong.op_Implicit(System.Int64)~Substrate.Nbt.TagNodeLong">
            <summary>
            Converts a system long to a long node representing the same value.
            </summary>
            <param name="l">A long value.</param>
            <returns>A new long node containing the given value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeLong.op_Implicit(Substrate.Nbt.TagNodeLong)~System.Int64">
            <summary>
            Converts a long node to a system long representing the same value.
            </summary>
            <param name="l">A long node.</param>
            <returns>A system long set to the node's data value.</returns>
        </member>
        <member name="P:Substrate.Nbt.TagNodeLong.Data">
            <summary>
            Gets or sets a long of tag data.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeIntArray.ToTagIntArray">
            <summary>
            Converts the node to itself.
            </summary>
            <returns>A reference to itself.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeIntArray.GetTagType">
            <summary>
            Gets the tag type of the node.
            </summary>
            <returns>The TAG_INT_ARRAY tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeIntArray.#ctor">
            <summary>
            Constructs a new byte array node with a null data value.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeIntArray.#ctor(System.Int32[])">
            <summary>
            Constructs a new byte array node.
            </summary>
            <param name="d">The value to set the node's tag data value.</param>
        </member>
        <member name="M:Substrate.Nbt.TagNodeIntArray.Copy">
            <summary>
            Makes a deep copy of the node.
            </summary>
            <returns>A new int array node representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeIntArray.ToString">
            <summary>
            Gets a string representation of the node's data.
            </summary>
            <returns>String representation of the node's data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeIntArray.op_Implicit(System.Int32[])~Substrate.Nbt.TagNodeIntArray">
            <summary>
            Converts a system int array to a int array node representing the same data.
            </summary>
            <param name="i">A int array.</param>
            <returns>A new int array node containing the given value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeIntArray.op_Implicit(Substrate.Nbt.TagNodeIntArray)~System.Int32[]">
            <summary>
            Converts an int array node to a system int array representing the same data.
            </summary>
            <param name="i">An int array node.</param>
            <returns>A system int array set to the node's data.</returns>
        </member>
        <member name="P:Substrate.Nbt.TagNodeIntArray.Data">
            <summary>
            Gets or sets an int array of tag data.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.TagNodeIntArray.Length">
            <summary>
            Gets the length of the stored byte array.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.TagNodeIntArray.Item(System.Int32)">
            <summary>
            Gets or sets a single int at the specified index.
            </summary>
            <param name="index">Valid index within stored int array.</param>
            <returns>The int value at the given index of the stored byte array.</returns>
        </member>
        <member name="T:Substrate.AlphaBlockCollection">
            <summary>
            Functions for reading and modifying a bounded-size collection of Alpha-compatible block data.
            </summary>
            <remarks>An <see cref="T:Substrate.AlphaBlockCollection"/> is a wrapper around existing pieces of data.  Although it
            holds references to data, it does not "own" the data in the same way that a <see cref="T:Substrate.Core.IChunk"/> does.  An
            <see cref="T:Substrate.AlphaBlockCollection"/> simply overlays a higher-level interface on top of existing data.</remarks>
        </member>
        <member name="T:Substrate.Core.IBoundedAlphaBlockCollection">
            <summary>
            A bounded container of blocks supporting data, lighting, and properties.
            </summary>
            <seealso cref="T:Substrate.Core.IAlphaBlockCollection"/>
        </member>
        <member name="T:Substrate.Core.IBoundedDataBlockCollection">
            <summary>
            A bounded container of blocks supporting data fields.
            </summary>
            <seealso cref="T:Substrate.Core.IDataBlockCollection"/>
        </member>
        <member name="T:Substrate.Core.IBoundedBlockCollection">
            <summary>
            A container of blocks with set dimensions.
            </summary>
        </member>
        <member name="M:Substrate.Core.IBoundedBlockCollection.CountByID(System.Int32)">
            <summary>
            Counts all instances of a block with the given type in the bounded block container.
            </summary>
            <param name="id">The id (type) of the block to count.</param>
            <returns>The count of blocks in the container matching the given id (type).</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedBlockCollection.GetBlock(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a basic block from a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>A basic <see cref="T:Substrate.Core.IBlock"/> from the collection at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedBlockCollection.GetBlockRef(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a reference object to a basic within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>A basic <see cref="T:Substrate.Core.IBlock"/> acting as a reference directly into the container at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.IBlock)">
            <summary>
            Updates a block in a bounded block container with data from an existing <see cref="T:Substrate.Core.IBlock"/> object.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <param name="block">The <see cref="T:Substrate.Core.IBlock"/> to copy basic data from.</param>
        </member>
        <member name="M:Substrate.Core.IBoundedBlockCollection.GetID(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a block's id (type) from a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>The block id (type) from the block container at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedBlockCollection.SetID(System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets a block's id (type) within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <param name="id">The id (type) to assign to a block at the given coordinates.</param>
        </member>
        <member name="M:Substrate.Core.IBoundedBlockCollection.GetInfo(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets info and attributes on a block's type within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>A <see cref="T:Substrate.BlockInfo"/> instance for the block's type.</returns>
        </member>
        <member name="P:Substrate.Core.IBoundedBlockCollection.XDim">
            <summary>
            Gets the length of the X-dimension of the container.
            </summary>
        </member>
        <member name="P:Substrate.Core.IBoundedBlockCollection.YDim">
            <summary>
            Gets the length of the Y-dimension of the container.
            </summary>
        </member>
        <member name="P:Substrate.Core.IBoundedBlockCollection.ZDim">
            <summary>
            Gets the length of the Z-dimension of the container.
            </summary>
        </member>
        <member name="M:Substrate.Core.IBoundedDataBlockCollection.GetBlock(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a block with data field from a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.Core.IDataBlock"/> from the collection at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedDataBlockCollection.GetBlockRef(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a reference object to a block with data field within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.Core.IDataBlock"/> acting as a reference directly into the container at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedDataBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.IDataBlock)">
            <summary>
            Updates a block in a bounded block container with data from an existing <see cref="T:Substrate.Core.IDataBlock"/> object.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <param name="block">The <see cref="T:Substrate.Core.IDataBlock"/> to copy data from.</param>
        </member>
        <member name="M:Substrate.Core.IBoundedDataBlockCollection.GetData(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a block's data field from a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>The data field of a block at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedDataBlockCollection.SetData(System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets a block's data field within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <param name="data">The data field to assign to a block at the given coordinates.</param>
        </member>
        <member name="M:Substrate.Core.IBoundedDataBlockCollection.CountByData(System.Int32,System.Int32)">
            <summary>
            Counts all blocks within a bounded container set to a given id (type) and data value.
            </summary>
            <param name="id">The id (type) of blocks to match.</param>
            <param name="data">The data value of blocks to match.</param>
            <returns>A count of all blocks in the container matching both conditions.</returns>
        </member>
        <member name="T:Substrate.Core.IBoundedLitBlockCollection">
            <summary>
            A bounded container of blocks supporting dual-source lighting.
            </summary>
            <seealso cref="T:Substrate.Core.ILitBlockCollection"/>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.GetBlock(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a block with lighting information from a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.Core.ILitBlock"/> from the collection at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.GetBlockRef(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a reference object to a block with lighting information within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.Core.ILitBlock"/> acting as a reference directly into the container at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.ILitBlock)">
            <summary>
            Updates a block in a bounded block container with data from an existing <see cref="T:Substrate.Core.ILitBlock"/> object.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <param name="block">The <see cref="T:Substrate.Core.ILitBlock"/> to copy data from.</param>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.GetBlockLight(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a block's block-source light value from a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>The block-source light value of a block at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.GetSkyLight(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a block's sky-source light value from a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>The sky-source light value of a block at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.SetBlockLight(System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets a block's block-source light value within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <param name="light">The block-source light value to assign to a block at the given coordinates.</param>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.SetSkyLight(System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets a block's sky-source light value within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <param name="light">The sky-source light value to assign to a block at the given coordinates.</param>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.GetHeight(System.Int32,System.Int32)">
            <summary>
            Gets the Y-coordinate of the lowest block with unobstructed view of the sky at the given coordinates within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>The height value of an X-Z coordinate pair in the block container.</returns>
            <remarks>The height value represents the lowest block with an unobstructed view of the sky.  This is the lowest block with
            a maximum-value sky-light value.  Fully transparent blocks, like glass, do not count as an obstruction.</remarks>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.SetHeight(System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets the Y-coordinate of the lowest block with unobstructed view of the sky at the given coordinates within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <param name="height">The height value of an X-Z coordinate pair in the block container.</param>
            <remarks>Minecraft lighting algorithms rely heavily on this value being correct.  Setting this value too low may result in
            rooms that can never get dark, for example.</remarks>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.UpdateBlockLight(System.Int32,System.Int32,System.Int32)">
            <summary>
            Recalculates the block-source light value of a single block within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <remarks><para>The lighting of the block will be updated to be consistent with the lighting in neighboring blocks.
            If the block is itself a light source, many nearby blocks may be updated to maintain consistent lighting.  These
            updates may also touch neighboring <see cref="T:Substrate.Core.ILitBlockCollection"/> objects, if they can be resolved.</para>
            <para>This function assumes that the entire <see cref="T:Substrate.Core.ILitBlockCollection"/> and neighboring <see cref="T:Substrate.Core.ILitBlockCollection"/>s
            already have consistent lighting, with the exception of the block being updated.  If this assumption is violated, 
            lighting may fail to converge correctly.</para></remarks>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.UpdateSkyLight(System.Int32,System.Int32,System.Int32)">
            <summary>
            Recalculates the sky-source light value of a single block within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <remarks><para>The lighting of the block will be updated to be consistent with the lighting in neighboring blocks.
            If the block is itself a light source, many nearby blocks may be updated to maintain consistent lighting.  These
            updates may also touch neighboring <see cref="T:Substrate.Core.ILitBlockCollection"/> objects, if they can be resolved.</para>
            <para>This function assumes that the entire <see cref="T:Substrate.Core.ILitBlockCollection"/> and neighboring <see cref="T:Substrate.Core.ILitBlockCollection"/>s
            already have consistent lighting, with the exception of the block being updated.  If this assumption is violated,
            lighting may fail to converge correctly.</para></remarks>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.ResetBlockLight">
            <summary>
            Resets the block-source light value to 0 for all blocks within a bounded block container.
            </summary>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.ResetSkyLight">
            <summary>
            Resets the sky-source light value to 0 for all blocks within a bounded block container.
            </summary>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.RebuildBlockLight">
            <summary>
            Reconstructs the block-source lighting for all blocks within a bounded block container.
            </summary>
            <remarks><para>This function should only be called after the lighting has been reset in this <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/>
            and all neighboring <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/>s, or lighting may fail to converge correctly.  
            This function cannot reset the lighting on its own, due to interactions between <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/>s.</para>
            <para>If many light source or block opacity values will be modified in this <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/>, it may
            be preferable to avoid explicit or implicit calls to <see cref="M:Substrate.Core.IBoundedLitBlockCollection.UpdateBlockLight(System.Int32,System.Int32,System.Int32)"/> and call this function once when
            modifications are complete.</para></remarks>
            <seealso cref="M:Substrate.Core.IBoundedLitBlockCollection.ResetBlockLight"/>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.RebuildSkyLight">
            <summary>
            Reconstructs the sky-source lighting for all blocks within a bounded block container.
            </summary>
            <remarks><para>This function should only be called after the lighting has been reset in this <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/>
            and all neighboring <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/>s, or lighting may fail to converge correctly.  
            This function cannot reset the lighting on its own, due to interactions between <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/>s.</para>
            <para>If many light source or block opacity values will be modified in this <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/>, it may
            be preferable to avoid explicit or implicit calls to <see cref="M:Substrate.Core.IBoundedLitBlockCollection.UpdateSkyLight(System.Int32,System.Int32,System.Int32)"/> and call this function once when
            modifications are complete.</para></remarks>
            <seealso cref="M:Substrate.Core.IBoundedLitBlockCollection.ResetSkyLight"/>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.RebuildHeightMap">
            <summary>
            Reconstructs the height-map for a bounded block container.
            </summary>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.StitchBlockLight">
            <summary>
            Reconciles any block-source lighting inconsistencies between this <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/> and any of its neighbors.
            </summary>
            <remarks>It will be necessary to call this function if an <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/> is reset and rebuilt, but
            some of its neighbors are not.  A rebuilt <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/> will spill lighting updates into its neighbors,
            but will not see lighting that should be propagated back from its neighbors.</remarks>
            <seealso cref="M:Substrate.Core.IBoundedLitBlockCollection.RebuildBlockLight"/>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.StitchSkyLight">
            <summary>
            Reconciles any sky-source lighting inconsistencies between this <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/> and any of its neighbors.
            </summary>
            <remarks>It will be necessary to call this function if an <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/> is reset and rebuilt, but
            some of its neighbors are not.  A rebuilt <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/> will spill lighting updates into its neighbors,
            but will not see lighting that should be propagated back from its neighbors.</remarks>
            <seealso cref="M:Substrate.Core.IBoundedLitBlockCollection.RebuildSkyLight"/>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.StitchBlockLight(Substrate.Core.IBoundedLitBlockCollection,Substrate.Core.BlockCollectionEdge)">
            <summary>
            Reconciles any block-source lighting inconsistencies between this <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/> and another <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/> on a given edge.
            </summary>
            <param name="blockset">An <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/>-compatible object with the same dimensions as this <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/>.</param>
            <param name="edge">The edge that <paramref name="blockset"/> is a neighbor on.</param>
            <remarks>It will be necessary to call this function if an <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/> is reset and rebuilt, but
            some of its neighbors are not.  A rebuilt <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/> will spill lighting updates into its neighbors,
            but will not see lighting that should be propagated back from its neighbors.</remarks>
            <seealso cref="M:Substrate.Core.IBoundedLitBlockCollection.RebuildBlockLight"/>
        </member>
        <member name="M:Substrate.Core.IBoundedLitBlockCollection.StitchSkyLight(Substrate.Core.IBoundedLitBlockCollection,Substrate.Core.BlockCollectionEdge)">
            <summary>
            Reconciles any sky-source lighting inconsistencies between this <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/> and another <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/> on a given edge.
            </summary>
            <param name="blockset">An <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/>-compatible object with the same dimensions as this <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/>.</param>
            <param name="edge">The edge that <paramref name="blockset"/> is a neighbor on.</param>
            <remarks>It will be necessary to call this function if an <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/> is reset and rebuilt, but
            some of its neighbors are not.  A rebuilt <see cref="T:Substrate.Core.IBoundedLitBlockCollection"/> will spill lighting updates into its neighbors,
            but will not see lighting that should be propagated back from its neighbors.</remarks>
            <seealso cref="M:Substrate.Core.IBoundedLitBlockCollection.RebuildSkyLight"/>
        </member>
        <member name="T:Substrate.Core.IBoundedPropertyBlockCollection">
            <summary>
            A bounded container for blocks supporting additional properties.
            </summary>
            <seealso cref="T:Substrate.Core.IPropertyBlockCollection"/>
        </member>
        <member name="M:Substrate.Core.IBoundedPropertyBlockCollection.GetBlock(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a block supporting extra properties from a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.Core.IPropertyBlock"/> from the collection at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedPropertyBlockCollection.GetBlockRef(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a reference object to a block supporting extra properties within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.Core.IPropertyBlock"/> acting as a reference directly into the container at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedPropertyBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.IPropertyBlock)">
            <summary>
            Updates a block in a bounded block container with data from an existing <see cref="T:Substrate.Core.IPropertyBlock"/> object.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <param name="block">The <see cref="T:Substrate.Core.IPropertyBlock"/> to copy data from.</param>
        </member>
        <member name="M:Substrate.Core.IBoundedPropertyBlockCollection.GetTileEntity(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets the <see cref="T:Substrate.TileEntity"/> record of a block within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>A <see cref="T:Substrate.TileEntity"/> record attached to a block at the given coordinates, or null if no tile entity is set.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedPropertyBlockCollection.SetTileEntity(System.Int32,System.Int32,System.Int32,Substrate.TileEntity)">
            <summary>
            Sets a <see cref="T:Substrate.TileEntity"/> record to a block within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <param name="te">The <see cref="T:Substrate.TileEntity"/> record to assign to the given block.</param>
            <exception cref="T:System.ArgumentException">Thrown when an incompatible <see cref="T:Substrate.TileEntity"/> is added to a block.</exception>
            <exception cref="T:System.InvalidOperationException">Thrown when a <see cref="T:Substrate.TileEntity"/> is added to a block that does not use tile entities.</exception>
        </member>
        <member name="M:Substrate.Core.IBoundedPropertyBlockCollection.CreateTileEntity(System.Int32,System.Int32,System.Int32)">
            <summary>
            Creates a new default <see cref="T:Substrate.TileEntity"/> record for a block within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <exception cref="T:System.InvalidOperationException">Thrown when a <see cref="T:Substrate.TileEntity"/> is created for a block that does not use tile entities.</exception>
            <exception cref="T:Substrate.UnknownTileEntityException">Thrown when the tile entity type associated with the given block has not been registered with <see cref="T:Substrate.TileEntityFactory"/>.</exception>
        </member>
        <member name="M:Substrate.Core.IBoundedPropertyBlockCollection.ClearTileEntity(System.Int32,System.Int32,System.Int32)">
            <summary>
            Deletes a <see cref="T:Substrate.TileEntity"/> record associated with a block within a bounded block container, if it exists.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
        </member>
        <member name="M:Substrate.Core.IBoundedAlphaBlockCollection.GetBlock(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a context-sensitive Alpha-compatible block from a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.AlphaBlock"/> from the collection at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedAlphaBlockCollection.GetBlockRef(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a reference object to a context-sensitive Alpha-compatible block within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.AlphaBlockRef"/> acting as a reference directly into the container at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedAlphaBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.AlphaBlock)">
            <summary>
            Updates a block in a bounded block container with data from an existing <see cref="T:Substrate.AlphaBlock"/> object.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <param name="block">The <see cref="T:Substrate.AlphaBlock"/> to copy data from.</param>
        </member>
        <member name="T:Substrate.Core.IBoundedActiveBlockCollection">
            <summary>
            A bounded container for blocks supporting active processing properties.
            </summary>
            <seealso cref="T:Substrate.Core.IBoundedActiveBlockCollection"/>
        </member>
        <member name="M:Substrate.Core.IBoundedActiveBlockCollection.GetBlock(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a block supporting active processing properties from a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.Core.IActiveBlock"/> from the collection at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedActiveBlockCollection.GetBlockRef(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets a reference object to a block supporting active processing properties within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>An <see cref="T:Substrate.Core.IActiveBlock"/> acting as a reference directly into the container at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedActiveBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.IActiveBlock)">
            <summary>
            Updates a block in a bounded block container with data from an existing <see cref="T:Substrate.Core.IActiveBlock"/> object.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <param name="block">The <see cref="T:Substrate.Core.IActiveBlock"/> to copy data from.</param>
        </member>
        <member name="M:Substrate.Core.IBoundedActiveBlockCollection.GetTileTick(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets the <see cref="T:Substrate.TileTick"/> record of a block within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>A <see cref="T:Substrate.TileTick"/> record attached to a block at the given coordinates, or null if no tile entity is set.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedActiveBlockCollection.SetTileTick(System.Int32,System.Int32,System.Int32,Substrate.TileTick)">
            <summary>
            Sets a <see cref="T:Substrate.TileTick"/> record to a block within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <param name="tt">The <see cref="T:Substrate.TileTick"/> record to assign to the given block.</param>
        </member>
        <member name="M:Substrate.Core.IBoundedActiveBlockCollection.CreateTileTick(System.Int32,System.Int32,System.Int32)">
            <summary>
            Creates a new default <see cref="T:Substrate.TileTick"/> record for a block within a bounded block container.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
        </member>
        <member name="M:Substrate.Core.IBoundedActiveBlockCollection.ClearTileTick(System.Int32,System.Int32,System.Int32)">
            <summary>
            Deletes a <see cref="T:Substrate.TileTick"/> record associated with a block within a bounded block container, if it exists.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
        </member>
        <member name="M:Substrate.Core.IBoundedActiveBlockCollection.GetTileTickValue(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets the tick delay specified in a block's <see cref="T:Substrate.TileTick"/> entry, if it exists.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <returns>The tick delay in a block's <see cref="T:Substrate.TileTick"/> entry, or <c>0</c> if no entry exists.</returns>
        </member>
        <member name="M:Substrate.Core.IBoundedActiveBlockCollection.SetTileTickValue(System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets the tick delay in a block's <see cref="T:Substrate.TileTick"/> entry.
            </summary>
            <param name="x">The container-local X-coordinate of a block.</param>
            <param name="y">The container-local Y-coordinate of a block.</param>
            <param name="z">The container-local Z-coordinate of a block.</param>
            <param name="tickValue">The tick delay that specifies when this block should next be processed for update.</param>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.#ctor(System.Int32,System.Int32,System.Int32)">
            <summary>
            Creates a new <see cref="T:Substrate.AlphaBlockCollection"/> of a given dimension.
            </summary>
            <param name="xdim">The length of the X-dimension of the collection.</param>
            <param name="ydim">The length of the Y-dimension of the collection.</param>
            <param name="zdim">The length of the Z-dimension of the collection.</param>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.#ctor(Substrate.Core.IDataArray3,Substrate.Core.IDataArray3,Substrate.Core.IDataArray3,Substrate.Core.IDataArray3,Substrate.Core.IDataArray2,Substrate.Nbt.TagNodeList)">
            <summary>
            Creates a new <see cref="T:Substrate.AlphaBlockCollection"/> overlay on top of Alpha-specific units of data.
            </summary>
            <param name="blocks">An array of Block IDs.</param>
            <param name="data">An array of data nibbles.</param>
            <param name="blockLight">An array of block light nibbles.</param>
            <param name="skyLight">An array of sky light nibbles.</param>
            <param name="heightMap">An array of height map values.</param>
            <param name="tileEntities">A list of tile entities corresponding to blocks in this collection.</param>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.#ctor(Substrate.Core.IDataArray3,Substrate.Core.IDataArray3,Substrate.Core.IDataArray3,Substrate.Core.IDataArray3,Substrate.Core.IDataArray2,Substrate.Nbt.TagNodeList,Substrate.Nbt.TagNodeList)">
            <summary>
            Creates a new <see cref="T:Substrate.AlphaBlockCollection"/> overlay on top of Alpha-specific units of data.
            </summary>
            <param name="blocks">An array of Block IDs.</param>
            <param name="data">An array of data nibbles.</param>
            <param name="blockLight">An array of block light nibbles.</param>
            <param name="skyLight">An array of sky light nibbles.</param>
            <param name="heightMap">An array of height map values.</param>
            <param name="tileEntities">A list of tile entities corresponding to blocks in this collection.</param>
            <param name="tileTicks">A list of tile ticks corresponding to blocks in this collection.</param>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.Refresh">
            <summary>
            Updates internal managers if underlying data, such as TileEntities, have been modified outside of the container.
            </summary>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.GetBlock(System.Int32,System.Int32,System.Int32)">
            <summary>
            Returns a new <see cref="T:Substrate.AlphaBlock"/> object from local coordinates relative to this collection.
            </summary>
            <param name="x">Local X-coordinate of block.</param>
            <param name="y">Local Y-coordinate of block.</param>
            <param name="z">Local Z-coordiante of block.</param>
            <returns>A new <see cref="T:Substrate.AlphaBlock"/> object representing context-independent data of a single block.</returns>
            <remarks>Context-independent data excludes data such as lighting.  <see cref="T:Substrate.AlphaBlock"/> object actually contain a copy
            of the data they represent, so changes to the <see cref="T:Substrate.AlphaBlock"/> will not affect this container, and vice-versa.</remarks>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.GetBlockRef(System.Int32,System.Int32,System.Int32)">
            <summary>
            Returns a new <see cref="T:Substrate.AlphaBlockRef"/> object from local coordaintes relative to this collection.
            </summary>
            <param name="x">Local X-coordinate of block.</param>
            <param name="y">Local Y-coordinate of block.</param>
            <param name="z">Local Z-coordinate of block.</param>
            <returns>A new <see cref="T:Substrate.AlphaBlockRef"/> object representing context-dependent data of a single block.</returns>
            <remarks>Context-depdendent data includes all data associated with this block.  Since a <see cref="T:Substrate.AlphaBlockRef"/> represents
            a view of a block within this container, any updates to data in the container will be reflected in the <see cref="T:Substrate.AlphaBlockRef"/>,
            and vice-versa for updates to the <see cref="T:Substrate.AlphaBlockRef"/>.</remarks>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.AlphaBlock)">
            <summary>
            Updates a block in this collection with values from a <see cref="T:Substrate.AlphaBlock"/> object.
            </summary>
            <param name="x">Local X-coordinate of a block.</param>
            <param name="y">Local Y-coordinate of a block.</param>
            <param name="z">Local Z-coordinate of a block.</param>
            <param name="block">A <see cref="T:Substrate.AlphaBlock"/> object to copy block data from.</param>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.IBlock)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.GetInfo(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.GetID(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.SetID(System.Int32,System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
            <remarks>Depending on the options set for this <see cref="T:Substrate.AlphaBlockCollection"/>, this method can be very
            heavy-handed in the amount of work it does to maintain consistency of tile entities, lighting, fluid, etc.
            for the affected block and possibly many other indirectly-affected blocks in the collection or neighboring
            collections.  If many SetID calls are expected to be made, some of this auto-reconciliation behavior should
            be disabled, and the data should be rebuilt at the <see cref="T:Substrate.AlphaBlockCollection"/>-level at the end.</remarks>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.CountByID(System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.IDataBlock)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.GetData(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.SetData(System.Int32,System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.CountByData(System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.ILitBlock)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.GetBlockLight(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.GetSkyLight(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.SetBlockLight(System.Int32,System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.SetSkyLight(System.Int32,System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.GetHeight(System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.SetHeight(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.UpdateBlockLight(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.UpdateSkyLight(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.ResetBlockLight">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.ResetSkyLight">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.RebuildBlockLight">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.RebuildSkyLight">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.RebuildHeightMap">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.StitchBlockLight">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.StitchSkyLight">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.StitchBlockLight(Substrate.Core.IBoundedLitBlockCollection,Substrate.Core.BlockCollectionEdge)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.StitchSkyLight(Substrate.Core.IBoundedLitBlockCollection,Substrate.Core.BlockCollectionEdge)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.IPropertyBlock)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.GetTileEntity(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.SetTileEntity(System.Int32,System.Int32,System.Int32,Substrate.TileEntity)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.CreateTileEntity(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.ClearTileEntity(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.SetBlock(System.Int32,System.Int32,System.Int32,Substrate.Core.IActiveBlock)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.GetTileTickValue(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.SetTileTickValue(System.Int32,System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.GetTileTick(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.SetTileTick(System.Int32,System.Int32,System.Int32,Substrate.TileTick)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.CreateTileTick(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.ClearTileTick(System.Int32,System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.ResetFluid">
            <summary>
            Resets all fluid blocks in the collection to their inactive type.
            </summary>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.RebuildFluid">
            <summary>
            Performs fluid simulation on all fluid blocks on this container.
            </summary>
            <remarks>Simulation will cause inactive fluid blocks to convert into and spread active fluid blocks according
            to the fluid calculation rules in Minecraft.  Fluid calculation may spill into neighboring block collections
            (and beyond).</remarks>
        </member>
        <member name="M:Substrate.AlphaBlockCollection.UpdateFluid(System.Int32,System.Int32,System.Int32)">
            <summary>
            Recalculates fluid starting from a given fluid block in this collection.
            </summary>
            <param name="x">Local X-coordinate of block.</param>
            <param name="y">Local Y-coordinate of block.</param>
            <param name="z">Local Z-coordiante of block.</param>
        </member>
        <member name="P:Substrate.AlphaBlockCollection.AutoLight">
            <summary>
            Gets or sets a value indicating whether changes to blocks will trigger automatic lighting updates.
            </summary>
            <remarks>Automatic updates to lighting may spill into neighboring <see cref="T:Substrate.AlphaBlockCollection"/> objects, if they can
            be resolved.</remarks>
        </member>
        <member name="P:Substrate.AlphaBlockCollection.AutoFluid">
            <summary>
            Gets or sets a value indicating whether changes to blocks will trigger automatic fluid updates.
            </summary>
            <remarks>Automatic updates to fluid may cascade through neighboring <see cref="T:Substrate.AlphaBlockCollection"/> objects and beyond,
            if they can be resolved.</remarks>
        </member>
        <member name="P:Substrate.AlphaBlockCollection.AutoTileTick">
            <summary>
            Gets or sets a value indicating whether changes to blocks will create tile tick entries.
            </summary>
        </member>
        <member name="P:Substrate.AlphaBlockCollection.IsDirty">
            <summary>
            Gets or sets a value indicating whether this <see cref="T:Substrate.AlphaBlockCollection"/> needs to be saved.
            </summary>
            <remarks>If this <see cref="T:Substrate.AlphaBlockCollection"/> is backed by a reference conainer type, set this property to false
            to prevent any modifications from being saved.  The next update will set this property true again, however.</remarks>
        </member>
        <member name="P:Substrate.AlphaBlockCollection.XDim">
            <inheritdoc/>
        </member>
        <member name="P:Substrate.AlphaBlockCollection.YDim">
            <inheritdoc/>
        </member>
        <member name="P:Substrate.AlphaBlockCollection.ZDim">
            <inheritdoc/>
        </member>
        <member name="T:Substrate.ItemType">
            <summary>
            Provides named id values for known item types.
            </summary>
            <remarks>See <see cref="T:Substrate.BlockType"/> for additional information.</remarks>
        </member>
        <member name="T:Substrate.ItemInfo">
            <summary>
            Provides information on a specific type of item.
            </summary>
            <remarks>By default, all known MC item types are already defined and registered, assuming Substrate
            is up to date with the current MC version.
            New item types may be created and used at runtime, and will automatically populate various static lookup tables
            in the <see cref="T:Substrate.ItemInfo"/> class.</remarks>
        </member>
        <member name="M:Substrate.ItemInfo.#ctor(System.Int32)">
            <summary>
            Constructs a new <see cref="T:Substrate.ItemInfo"/> record for the given item id.
            </summary>
            <param name="id">The id of an item type.</param>
        </member>
        <member name="M:Substrate.ItemInfo.#ctor(System.Int32,System.String)">
            <summary>
            Constructs a new <see cref="T:Substrate.ItemInfo"/> record for the given item id and name.
            </summary>
            <param name="id">The id of an item type.</param>
            <param name="name">The name of an item type.</param>
        </member>
        <member name="M:Substrate.ItemInfo.SetStackSize(System.Int32)">
            <summary>
            Sets the maximum stack size for this item type.
            </summary>
            <param name="stack">A stack size between 1 and 64, inclusive.</param>
            <returns>The object instance used to invoke this method.</returns>
        </member>
        <member name="M:Substrate.ItemInfo.GetRandomItem">
            <summary>
            Chooses a registered item type at random and returns it.
            </summary>
            <returns></returns>
        </member>
        <member name="P:Substrate.ItemInfo.ItemTable">
            <summary>
            Gets the lookup table for id-to-info values.
            </summary>
        </member>
        <member name="P:Substrate.ItemInfo.ID">
            <summary>
            Gets the id of the item type.
            </summary>
        </member>
        <member name="P:Substrate.ItemInfo.Name">
            <summary>
            Gets the name of the item type.
            </summary>
        </member>
        <member name="P:Substrate.ItemInfo.StackSize">
            <summary>
            Gets the maximum stack size allowed for this item type.
            </summary>
        </member>
        <member name="T:Substrate.ICacheTable`1">
            <summary>
            Provides read-only indexed access to an underlying resource.
            </summary>
            <typeparam name="T">The type of the underlying resource.</typeparam>
        </member>
        <member name="P:Substrate.ICacheTable`1.Item(System.Int32)">
            <summary>
            Gets the value at the given index.
            </summary>
            <param name="index">The index to fetch.</param>
        </member>
        <member name="T:Substrate.LevelIOException">
            <summary>
            The exception that is thrown when IO errors occur during level management operations.
            </summary>
        </member>
        <member name="M:Substrate.LevelIOException.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.LevelIOException"/> class.
            </summary>
        </member>
        <member name="M:Substrate.LevelIOException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.LevelIOException"/> class with a custom error message.
            </summary>
            <param name="message">A custom error message.</param>
        </member>
        <member name="M:Substrate.LevelIOException.#ctor(System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.LevelIOException"/> class with a custom error message and a reference to
            an InnerException representing the original cause of the exception.
            </summary>
            <param name="message">A custom error message.</param>
            <param name="innerException">A reference to the original exception that caused the error.</param>
        </member>
        <member name="M:Substrate.LevelIOException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.LevelIOException"/> class with serialized data.
            </summary>
            <param name="info">The object that holds the serialized object data.</param>
            <param name="context">The contextual information about the source or destination.</param>
        </member>
        <member name="T:Substrate.Data.DataIOException">
            <summary>
            The exception that is thrown when IO errors occur during high-level data resource management operations.
            </summary>
        </member>
        <member name="M:Substrate.Data.DataIOException.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.Data.DataIOException"/> class.
            </summary>
        </member>
        <member name="M:Substrate.Data.DataIOException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.Data.DataIOException"/> class with a custom error message.
            </summary>
            <param name="message">A custom error message.</param>
        </member>
        <member name="M:Substrate.Data.DataIOException.#ctor(System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.Data.DataIOException"/> class with a custom error message and a reference to
            an InnerException representing the original cause of the exception.
            </summary>
            <param name="message">A custom error message.</param>
            <param name="innerException">A reference to the original exception that caused the error.</param>
        </member>
        <member name="M:Substrate.Data.DataIOException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.Data.DataIOException"/> class with serialized data.
            </summary>
            <param name="info">The object that holds the serialized object data.</param>
            <param name="context">The contextual information about the source or destination.</param>
        </member>
        <member name="M:Substrate.AnvilChunk.SetLocation(System.Int32,System.Int32)">
            <summary>
            Updates the chunk's global world coordinates.
            </summary>
            <param name="x">Global X-coordinate.</param>
            <param name="z">Global Z-coordinate.</param>
        </member>
        <member name="T:Ionic.Zlib.DeflateStream">
             <summary>
             A class for compressing and decompressing streams using the Deflate algorithm.
             </summary>
            
             <remarks>
            
             <para>
             The DeflateStream is a <see href="http://en.wikipedia.org/wiki/Decorator_pattern">Decorator</see> on a <see cref="T:System.IO.Stream"/>.  It adds DEFLATE compression or decompression to any stream.
             </para>
            
             <para> Using this stream, applications can compress or decompress data via
             stream <c>Read</c> and <c>Write</c> operations.  Either compresssion or
             decompression can occur through either reading or writing. The compression
             format used is DEFLATE, which is documented in <see href="http://www.ietf.org/rfc/rfc1951.txt">IETF RFC 1951</see>, "DEFLATE
             Compressed Data Format Specification version 1.3.".</para>
            
             <para>
             This class is similar to <see cref="T:Ionic.Zlib.ZlibStream"/>, except that <c>ZlibStream</c>
             adds the <see href="http://www.ietf.org/rfc/rfc1950.txt">RFC 1950 - ZLIB</see>
             framing bytes to a compressed stream when compressing, or expects the RFC1950
             framing bytes when decompressing. The <c>DeflateStream</c> does not.
             </para>
            
             </remarks>
            
             <seealso cref="T:Ionic.Zlib.DeflateStream"/>
             <seealso cref="T:Ionic.Zlib.GZipStream"/>
        </member>
        <member name="M:Ionic.Zlib.DeflateStream.#ctor(System.IO.Stream,Ionic.Zlib.CompressionMode)">
            <summary>
            Create a DeflateStream using the specified CompressionMode.
            </summary>
            
            <remarks> When mode is <c>CompressionMode.Compress</c>, the DeflateStream
            will use the default compression level. The "captive" stream will be closed
            when the DeflateStream is closed.  </remarks>
            
            <example>
            This example uses a DeflateStream to compress data from a file, and writes
            the compressed data to another file.
            <code>
            using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
            {
                using (var raw = System.IO.File.Create(fileToCompress + ".deflated"))
                {
                    using (Stream compressor = new DeflateStream(raw, CompressionMode.Compress))
                    {
                        byte[] buffer = new byte[WORKING_BUFFER_SIZE];
                        int n;
                        while ((n= input.Read(buffer, 0, buffer.Length)) != 0)
                        {
                            compressor.Write(buffer, 0, n);
                        }
                    }
                }
            }
            </code>
            <code lang="VB">
            Using input As Stream = File.OpenRead(fileToCompress)
                Using raw As FileStream = File.Create(fileToCompress &amp; ".deflated")
                    Using compressor As Stream = New DeflateStream(raw, CompressionMode.Compress)
                        Dim buffer As Byte() = New Byte(4096) {}
                        Dim n As Integer = -1
                        Do While (n &lt;&gt; 0)
                            If (n &gt; 0) Then
                                compressor.Write(buffer, 0, n)
                            End If
                            n = input.Read(buffer, 0, buffer.Length)
                        Loop
                    End Using
                End Using
            End Using
            </code>
            </example>
            <param name="stream">The stream which will be read or written.</param>
            <param name="mode">Indicates whether the DeflateStream will compress or decompress.</param>
        </member>
        <member name="M:Ionic.Zlib.DeflateStream.#ctor(System.IO.Stream,Ionic.Zlib.CompressionMode,Ionic.Zlib.CompressionLevel)">
             <summary>
             Create a DeflateStream using the specified CompressionMode and the specified CompressionLevel.
             </summary>
            
             <remarks>
            
             <para> When mode is <c>CompressionMode.Decompress</c>, the level parameter
             is ignored.  The "captive" stream will be closed when the DeflateStream is
             closed.
             </para>
            
             </remarks>
            
             <example>
             This example uses a DeflateStream to compress data from a file, and writes
             the compressed data to another file.
             <code>
             using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
             {
                 using (var raw = System.IO.File.Create(fileToCompress + ".deflated"))
                 {
                     using (Stream compressor = new DeflateStream(raw,
                                                                  CompressionMode.Compress, 
                                                                  CompressionLevel.BestCompression))
                     {
                         byte[] buffer = new byte[WORKING_BUFFER_SIZE];
                         int n= -1;
                         while (n != 0)
                         {
                             if (n &gt; 0) 
                                 compressor.Write(buffer, 0, n);
                             n= input.Read(buffer, 0, buffer.Length);
                         }
                     }
                 }
             }
             </code>
            
             <code lang="VB">
             Using input As Stream = File.OpenRead(fileToCompress)
                 Using raw As FileStream = File.Create(fileToCompress &amp; ".deflated")
                     Using compressor As Stream = New DeflateStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression)
                         Dim buffer As Byte() = New Byte(4096) {}
                         Dim n As Integer = -1
                         Do While (n &lt;&gt; 0)
                             If (n &gt; 0) Then
                                 compressor.Write(buffer, 0, n)
                             End If
                             n = input.Read(buffer, 0, buffer.Length)
                         Loop
                     End Using
                 End Using
             End Using
             </code>
             </example>
             <param name="stream">The stream to be read or written while deflating or inflating.</param>
             <param name="mode">Indicates whether the <c>DeflateStream</c> will compress or decompress.</param>
             <param name="level">A tuning knob to trade speed for effectiveness.</param>
        </member>
        <member name="M:Ionic.Zlib.DeflateStream.#ctor(System.IO.Stream,Ionic.Zlib.CompressionMode,System.Boolean)">
             <summary>
               Create a <c>DeflateStream</c> using the specified
               <c>CompressionMode</c>, and explicitly specify whether the
               stream should be left open after Deflation or Inflation.
             </summary>
            
             <remarks>
            
             <para>
               This constructor allows the application to request that the captive stream
               remain open after the deflation or inflation occurs.  By default, after
               <c>Close()</c> is called on the stream, the captive stream is also
               closed. In some cases this is not desired, for example if the stream is a
               memory stream that will be re-read after compression.  Specify true for
               the <paramref name="leaveOpen"/> parameter to leave the stream open.
             </para>
            
             <para>
               The <c>DeflateStream</c> will use the default compression level.
             </para>
            
             <para>
               See the other overloads of this constructor for example code.
             </para>
             </remarks>
            
             <param name="stream">
               The stream which will be read or written. This is called the 
               "captive" stream in other places in this documentation.
             </param>
            
             <param name="mode">
               Indicates whether the <c>DeflateStream</c> will compress or decompress.
             </param>
            
             <param name="leaveOpen">true if the application would like the stream to
             remain open after inflation/deflation.</param>
        </member>
        <member name="M:Ionic.Zlib.DeflateStream.#ctor(System.IO.Stream,Ionic.Zlib.CompressionMode,Ionic.Zlib.CompressionLevel,System.Boolean)">
             <summary>
               Create a <c>DeflateStream</c> using the specified <c>CompressionMode</c>
               and the specified <c>CompressionLevel</c>, and explicitly specify whether
               the stream should be left open after Deflation or Inflation.
             </summary>
            
             <remarks>
            
             <para>
               When mode is <c>CompressionMode.Decompress</c>, the level parameter is ignored. 
             </para>
            
             <para>
               This constructor allows the application to request that the captive stream
               remain open after the deflation or inflation occurs.  By default, after
               <c>Close()</c> is called on the stream, the captive stream is also
               closed. In some cases this is not desired, for example if the stream is a
               <see cref="T:System.IO.MemoryStream"/> that will be re-read after
               compression.  Specify true for the <paramref name="leaveOpen"/> parameter
               to leave the stream open.
             </para>
            
             </remarks>
            
             <example>
             
               This example shows how to use a <c>DeflateStream</c> to compress data from
               a file, and store the compressed data into another file.
             
             <code>
             using (var output = System.IO.File.Create(fileToCompress + ".deflated"))
             {
                 using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
                 {
                     using (Stream compressor = new DeflateStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, true))
                     {
                         byte[] buffer = new byte[WORKING_BUFFER_SIZE];
                         int n= -1;
                         while (n != 0)
                         {
                             if (n &gt; 0) 
                                 compressor.Write(buffer, 0, n);
                             n= input.Read(buffer, 0, buffer.Length);
                         }
                     }
                 }
                 // can write additional data to the output stream here
             }
             </code>
            
             <code lang="VB">
             Using output As FileStream = File.Create(fileToCompress &amp; ".deflated")
                 Using input As Stream = File.OpenRead(fileToCompress)
                     Using compressor As Stream = New DeflateStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, True)
                         Dim buffer As Byte() = New Byte(4096) {}
                         Dim n As Integer = -1
                         Do While (n &lt;&gt; 0)
                             If (n &gt; 0) Then
                                 compressor.Write(buffer, 0, n)
                             End If
                             n = input.Read(buffer, 0, buffer.Length)
                         Loop
                     End Using
                 End Using
                 ' can write additional data to the output stream here.
             End Using
             </code>
             </example>
             <param name="stream">The stream which will be read or written.</param>
             <param name="mode">Indicates whether the DeflateStream will compress or decompress.</param>
             <param name="leaveOpen">true if the application would like the stream to remain open after inflation/deflation.</param>
             <param name="level">A tuning knob to trade speed for effectiveness.</param>
        </member>
        <member name="M:Ionic.Zlib.DeflateStream.Dispose(System.Boolean)">
            <summary>
            Dispose the stream.  
            </summary>
            <remarks>
            This may or may not result in a <c>Close()</c> call on the captive stream. 
            See the constructors that have a <c>leaveOpen</c> parameter for more information.
            </remarks>
        </member>
        <member name="M:Ionic.Zlib.DeflateStream.Flush">
            <summary>
            Flush the stream.
            </summary>
        </member>
        <member name="M:Ionic.Zlib.DeflateStream.Read(System.Byte[],System.Int32,System.Int32)">
             <summary>
             Read data from the stream. 
             </summary>
             <remarks>
            
             <para>
               If you wish to use the <c>DeflateStream</c> to compress data while
               reading, you can create a <c>DeflateStream</c> with
               <c>CompressionMode.Compress</c>, providing an uncompressed data stream.
               Then call Read() on that <c>DeflateStream</c>, and the data read will be
               compressed as you read.  If you wish to use the <c>DeflateStream</c> to
               decompress data while reading, you can create a <c>DeflateStream</c> with
               <c>CompressionMode.Decompress</c>, providing a readable compressed data
               stream.  Then call Read() on that <c>DeflateStream</c>, and the data read
               will be decompressed as you read.
             </para>
            
             <para>
               A <c>DeflateStream</c> can be used for <c>Read()</c> or <c>Write()</c>, but not both. 
             </para>
            
             </remarks>
             <param name="buffer">The buffer into which the read data should be placed.</param>
             <param name="offset">the offset within that data array to put the first byte read.</param>
             <param name="count">the number of bytes to read.</param>
             <returns>the number of bytes actually read</returns>
        </member>
        <member name="M:Ionic.Zlib.DeflateStream.Seek(System.Int64,System.IO.SeekOrigin)">
            <summary>
            Calling this method always throws a <see cref="T:System.NotImplementedException"/>.
            </summary>
            <param name="offset">this is irrelevant, since it will always throw!</param>
            <param name="origin">this is irrelevant, since it will always throw!</param>
            <returns>irrelevant!</returns>
        </member>
        <member name="M:Ionic.Zlib.DeflateStream.SetLength(System.Int64)">
            <summary>
            Calling this method always throws a <see cref="T:System.NotImplementedException"/>.
            </summary>
            <param name="value">this is irrelevant, since it will always throw!</param>
        </member>
        <member name="M:Ionic.Zlib.DeflateStream.Write(System.Byte[],System.Int32,System.Int32)">
             <summary>
               Write data to the stream. 
             </summary>
             <remarks>
            
             <para>
               If you wish to use the <c>DeflateStream</c> to compress data while
               writing, you can create a <c>DeflateStream</c> with
               <c>CompressionMode.Compress</c>, and a writable output stream.  Then call
               <c>Write()</c> on that <c>DeflateStream</c>, providing uncompressed data
               as input.  The data sent to the output stream will be the compressed form
               of the data written.  If you wish to use the <c>DeflateStream</c> to
               decompress data while writing, you can create a <c>DeflateStream</c> with
               <c>CompressionMode.Decompress</c>, and a writable output stream.  Then
               call <c>Write()</c> on that stream, providing previously compressed
               data. The data sent to the output stream will be the decompressed form of
               the data written.
             </para>
            
             <para>
               A <c>DeflateStream</c> can be used for <c>Read()</c> or <c>Write()</c>,
               but not both.
             </para>
            
             </remarks>
            
             <param name="buffer">The buffer holding data to write to the stream.</param>
             <param name="offset">the offset within that data array to find the first byte to write.</param>
             <param name="count">the number of bytes to write.</param>
        </member>
        <member name="M:Ionic.Zlib.DeflateStream.CompressString(System.String)">
             <summary>
               Compress a string into a byte array using DEFLATE.
             </summary>
            
             <remarks>
               Uncompress it with <see cref="M:Ionic.Zlib.DeflateStream.UncompressString(System.Byte[])"/>.
             </remarks>
            
             <seealso cref="M:Ionic.Zlib.DeflateStream.UncompressString(System.Byte[])"/>
             <seealso cref="M:Ionic.Zlib.DeflateStream.CompressBuffer(System.Byte[])"/>
            
             <param name="s">
               A string to compress. The string will first be encoded
               using UTF8, then compressed.
             </param>
            
             <returns>The string in compressed form</returns>
        </member>
        <member name="M:Ionic.Zlib.DeflateStream.CompressBuffer(System.Byte[])">
             <summary>
               Compress a byte array into a new byte array using DEFLATE.
             </summary>
            
             <remarks>
               Uncompress it with <see cref="M:Ionic.Zlib.DeflateStream.UncompressBuffer(System.Byte[])"/>.
             </remarks>
            
             <seealso cref="M:Ionic.Zlib.DeflateStream.CompressString(System.String)"/>
             <seealso cref="M:Ionic.Zlib.DeflateStream.UncompressBuffer(System.Byte[])"/>
            
             <param name="b">
               A buffer to compress. 
             </param>
            
             <returns>The data in compressed form</returns> 
        </member>
        <member name="M:Ionic.Zlib.DeflateStream.UncompressString(System.Byte[])">
             <summary>
               Uncompress a DEFLATE'd byte array into a single string.
             </summary>
            
             <seealso cref="M:Ionic.Zlib.DeflateStream.CompressString(System.String)"/>
             <seealso cref="M:Ionic.Zlib.DeflateStream.UncompressBuffer(System.Byte[])"/>
            
             <param name="compressed">
               A buffer containing GZIP-compressed data.  
             </param>
            
             <returns>The uncompressed string</returns>
        </member>
        <member name="M:Ionic.Zlib.DeflateStream.UncompressBuffer(System.Byte[])">
             <summary>
               Uncompress a DEFLATE'd byte array into a byte array.
             </summary>
            
             <seealso cref="M:Ionic.Zlib.DeflateStream.CompressBuffer(System.Byte[])"/>
             <seealso cref="M:Ionic.Zlib.DeflateStream.UncompressString(System.Byte[])"/>
            
             <param name="compressed">
               A buffer containing data that has been compressed with DEFLATE.  
             </param>
            
             <returns>The data in uncompressed form</returns>
        </member>
        <member name="P:Ionic.Zlib.DeflateStream.FlushMode">
            <summary>
            This property sets the flush behavior on the stream.  
            </summary>
            <remarks> See the ZLIB documentation for the meaning of the flush behavior.
            </remarks>
        </member>
        <member name="P:Ionic.Zlib.DeflateStream.BufferSize">
             <summary>
               The size of the working buffer for the compression codec. 
             </summary>
            
             <remarks>
             <para>
               The working buffer is used for all stream operations.  The default size is
               1024 bytes.  The minimum size is 128 bytes. You may get better performance
               with a larger buffer.  Then again, you might not.  You would have to test
               it.
             </para>
            
             <para>
               Set this before the first call to <c>Read()</c> or <c>Write()</c> on the
               stream. If you try to set it afterwards, it will throw.
             </para>
             </remarks>
        </member>
        <member name="P:Ionic.Zlib.DeflateStream.Strategy">
             <summary>
               The ZLIB strategy to be used during compression.
             </summary>
            
             <remarks>
               By tweaking this parameter, you may be able to optimize the compression for 
               data with particular characteristics.
             </remarks>
        </member>
        <member name="P:Ionic.Zlib.DeflateStream.TotalIn">
            <summary> Returns the total number of bytes input so far.</summary>
        </member>
        <member name="P:Ionic.Zlib.DeflateStream.TotalOut">
            <summary> Returns the total number of bytes output so far.</summary>
        </member>
        <member name="P:Ionic.Zlib.DeflateStream.CanRead">
            <summary>
            Indicates whether the stream can be read.
            </summary>
            <remarks>
            The return value depends on whether the captive stream supports reading.
            </remarks>
        </member>
        <member name="P:Ionic.Zlib.DeflateStream.CanSeek">
            <summary>
            Indicates whether the stream supports Seek operations.
            </summary>
            <remarks>
            Always returns false.
            </remarks>
        </member>
        <member name="P:Ionic.Zlib.DeflateStream.CanWrite">
            <summary>
            Indicates whether the stream can be written.
            </summary>
            <remarks>
            The return value depends on whether the captive stream supports writing.
            </remarks>
        </member>
        <member name="P:Ionic.Zlib.DeflateStream.Length">
            <summary>
            Reading this property always throws a <see cref="T:System.NotImplementedException"/>.
            </summary>
        </member>
        <member name="P:Ionic.Zlib.DeflateStream.Position">
             <summary>
             The position of the stream pointer. 
             </summary>
            
             <remarks>
               Setting this property always throws a <see cref="T:System.NotImplementedException"/>. Reading will return the total bytes
               written out, if used in writing, or the total bytes read in, if used in
               reading.  The count may refer to compressed bytes or uncompressed bytes,
               depending on how you've used the stream.
             </remarks>
        </member>
        <member name="T:Ionic.Zlib.FlushType">
            <summary>
            Describes how to flush the current deflate operation. 
            </summary>
            <remarks>
            The different FlushType values are useful when using a Deflate in a streaming application.
            </remarks>
        </member>
        <member name="F:Ionic.Zlib.FlushType.None">
            <summary>No flush at all.</summary>
        </member>
        <member name="F:Ionic.Zlib.FlushType.Partial">
            <summary>Closes the current block, but doesn't flush it to
            the output. Used internally only in hypothetical
            scenarios.  This was supposed to be removed by Zlib, but it is
            still in use in some edge cases. 
            </summary>
        </member>
        <member name="F:Ionic.Zlib.FlushType.Sync">
            <summary>
            Use this during compression to specify that all pending output should be
            flushed to the output buffer and the output should be aligned on a byte
            boundary.  You might use this in a streaming communication scenario, so that
            the decompressor can get all input data available so far.  When using this
            with a ZlibCodec, <c>AvailableBytesIn</c> will be zero after the call if
            enough output space has been provided before the call.  Flushing will
            degrade compression and so it should be used only when necessary.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.FlushType.Full">
            <summary>
            Use this during compression to specify that all output should be flushed, as
            with <c>FlushType.Sync</c>, but also, the compression state should be reset
            so that decompression can restart from this point if previous compressed
            data has been damaged or if random access is desired.  Using
            <c>FlushType.Full</c> too often can significantly degrade the compression.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.FlushType.Finish">
            <summary>Signals the end of the compression/decompression stream.</summary>
        </member>
        <member name="T:Substrate.PlayerAbilities">
            <summary>
            Encompases data to specify player abilities, especially mode-dependent abilities.
            </summary>
            <remarks>Whether or not any of these values are respected by the game client is dependent upon the active game mode.</remarks>
        </member>
        <member name="M:Substrate.PlayerAbilities.Copy">
            <inheritdoc />
        </member>
        <member name="P:Substrate.PlayerAbilities.Flying">
            <summary>
            Gets or sets whether the player is currently flying.
            </summary>
        </member>
        <member name="P:Substrate.PlayerAbilities.InstantBuild">
            <summary>
            Gets or sets whether the player can instantly build or mine.
            </summary>
        </member>
        <member name="P:Substrate.PlayerAbilities.MayFly">
            <summary>
            Gets or sets whether the player is allowed to fly.
            </summary>
        </member>
        <member name="P:Substrate.PlayerAbilities.Invulnerable">
            <summary>
            Gets or sets whether the player can take damage.
            </summary>
        </member>
        <member name="P:Substrate.PlayerAbilities.MayBuild">
            <summary>
            Gets or sets whether the player can create or destroy blocks.
            </summary>
        </member>
        <member name="P:Substrate.PlayerAbilities.FlySpeed">
            <summary>
            Gets or sets the player's walking speed.  Always 0.1.
            </summary>
        </member>
        <member name="P:Substrate.PlayerAbilities.WalkSpeed">
            <summary>
            Gets or sets the player's flying speed.  Always 0.05.
            </summary>
        </member>
        <member name="T:Substrate.Player">
            <summary>
            Represents a Player from either single- or multi-player Minecraft.
            </summary>
            <remarks>Unlike <see cref="T:Substrate.TypedEntity"/> objects, <see cref="T:Substrate.Player"/> objects do not need to be added to chunks.  They
            are stored individually or within level data.</remarks>
        </member>
        <member name="M:Substrate.Player.#ctor">
            <summary>
            Creates a new <see cref="T:Substrate.Player"/> object with reasonable default values.
            </summary>
        </member>
        <member name="M:Substrate.Player.#ctor(Substrate.Player)">
            <summary>
            Creates a copy of a <see cref="T:Substrate.Player"/> object.
            </summary>
            <param name="p">The <see cref="T:Substrate.Player"/> to copy fields from.</param>
        </member>
        <member name="M:Substrate.Player.ClearSpawn">
            <summary>
            Clears the player's personal spawn point.
            </summary>
        </member>
        <member name="M:Substrate.Player.LoadTree(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to load a Player subtree into the <see cref="T:Substrate.Player"/> without validation.
            </summary>
            <param name="tree">The root node of a Player subtree.</param>
            <returns>The <see cref="T:Substrate.Player"/> returns itself on success, or null if the tree was unparsable.</returns>
        </member>
        <member name="M:Substrate.Player.LoadTreeSafe(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to load a Player subtree into the <see cref="T:Substrate.Player"/> with validation.
            </summary>
            <param name="tree">The root node of a Player subtree.</param>
            <returns>The <see cref="T:Substrate.Player"/> returns itself on success, or null if the tree failed validation.</returns>
        </member>
        <member name="M:Substrate.Player.BuildTree">
            <summary>
            Builds a Player subtree from the current data.
            </summary>
            <returns>The root node of a Player subtree representing the current data.</returns>
        </member>
        <member name="M:Substrate.Player.ValidateTree(Substrate.Nbt.TagNode)">
            <summary>
            Validate a Player subtree against a schema defintion.
            </summary>
            <param name="tree">The root node of a Player subtree.</param>
            <returns>Status indicating whether the tree was valid against the internal schema.</returns>
        </member>
        <member name="M:Substrate.Player.Copy">
            <summary>
            Creates a deep-copy of the <see cref="T:Substrate.Player"/>.
            </summary>
            <returns>A deep-copy of the <see cref="T:Substrate.Player"/>.</returns>
        </member>
        <member name="P:Substrate.Player.AttackTime">
            <summary>
            Gets or sets the number of ticks left in the player's "invincibility shield" after last struck.
            </summary>
        </member>
        <member name="P:Substrate.Player.DeathTime">
            <summary>
            Gets or sets the number of ticks that the player has been dead for.
            </summary>
        </member>
        <member name="P:Substrate.Player.Health">
            <summary>
            Gets or sets the amount of the player's health.
            </summary>
        </member>
        <member name="P:Substrate.Player.HurtTime">
            <summary>
            Gets or sets the player's Hurt Time value.
            </summary>
        </member>
        <member name="P:Substrate.Player.Dimension">
            <summary>
            Gets or sets the dimension that the player is currently in.
            </summary>
        </member>
        <member name="P:Substrate.Player.IsSleeping">
            <summary>
            Gets or sets a value indicating whether the player is sleeping in a bed.
            </summary>
        </member>
        <member name="P:Substrate.Player.SleepTimer">
            <summary>
            Gets or sets the player's Sleep Timer value.
            </summary>
        </member>
        <member name="P:Substrate.Player.Spawn">
            <summary>
            Gets or sets the player's personal spawn point, set by sleeping in beds.
            </summary>
        </member>
        <member name="P:Substrate.Player.HasSpawn">
            <summary>
            Tests if the player currently has a personal spawn point.
            </summary>
        </member>
        <member name="P:Substrate.Player.World">
            <summary>
            Gets or sets the name of the world that the player is currently within.
            </summary>
        </member>
        <member name="P:Substrate.Player.Name">
            <summary>
            Gets or sets the name that is used when the player is read or written from a <see cref="T:Substrate.PlayerManager"/>.
            </summary>
        </member>
        <member name="P:Substrate.Player.Score">
            <summary>
            Gets or sets the player's score.
            </summary>
        </member>
        <member name="P:Substrate.Player.XPLevel">
            <summary>
            Gets or sets the player's XP Level.
            </summary>
        </member>
        <member name="P:Substrate.Player.XPTotal">
            <summary>
            Gets or sets the amount of the player's XP points.
            </summary>
        </member>
        <member name="P:Substrate.Player.HungerLevel">
            <summary>
            Gets or sets the hunger level of the player.  Valid values range 0 - 20.
            </summary>
        </member>
        <member name="P:Substrate.Player.HungerSaturationLevel">
            <summary>
            Gets or sets the player's hunger saturation level, which is reserve food capacity above <see cref="P:Substrate.Player.HungerLevel"/>.
            </summary>
        </member>
        <member name="P:Substrate.Player.HungerExhaustionLevel">
            <summary>
            Gets or sets the counter towards the next hunger point decrement.  Valid values range 0.0 - 4.0.
            </summary>
        </member>
        <member name="P:Substrate.Player.HungerTimer">
            <summary>
            Gets or sets the timer used to periodically heal or damage the player based on <see cref="P:Substrate.Player.HungerLevel"/>.  Valid values range 0 - 80.
            </summary>
        </member>
        <member name="P:Substrate.Player.Abilities">
            <summary>
            Gets the state of the player's abilities.
            </summary>
        </member>
        <member name="P:Substrate.Player.Schema">
            <summary>
            Gets a <see cref="T:Substrate.Nbt.SchemaNode"/> representing the schema of a Player.
            </summary>
        </member>
        <member name="P:Substrate.Player.Items">
            <summary>
            Gets access to an <see cref="T:Substrate.ItemCollection"/> representing the player's equipment and inventory.
            </summary>
        </member>
        <member name="T:Substrate.Core.IPlayerManager">
            <summary>
            An interface of basic manipulations on an abstract data store for player data.
            </summary>
        </member>
        <member name="M:Substrate.Core.IPlayerManager.GetPlayer(System.String)">
            <summary>
            Gets a <see cref="T:Substrate.Player"/> object for the given player from the underlying data store.
            </summary>
            <param name="name">The name of the player to fetch.</param>
            <returns>A <see cref="T:Substrate.Player"/> object for the given player, or null if the player could not be found.</returns>
        </member>
        <member name="M:Substrate.Core.IPlayerManager.SetPlayer(System.String,Substrate.Player)">
            <summary>
            Saves a <see cref="T:Substrate.Player"/> object's data back to the underlying data store for the given player.
            </summary>
            <param name="name">The name of the player to write back data for.</param>
            <param name="player">The <see cref="T:Substrate.Player"/> object containing data to write back.</param>
        </member>
        <member name="M:Substrate.Core.IPlayerManager.PlayerExists(System.String)">
            <summary>
            Checks if a player exists in the underlying data store.
            </summary>
            <param name="name">The name of the player to look up.</param>
            <returns>True if player data was found; false otherwise.</returns>
        </member>
        <member name="M:Substrate.Core.IPlayerManager.DeletePlayer(System.String)">
            <summary>
            Deletes a player with the given name from the underlying data store.
            </summary>
            <param name="name">The name of the player to delete.</param>
        </member>
        <member name="T:Substrate.RegionChunkManager">
            <summary>
            Represents a Beta-compatible interface for globally managing chunks.
            </summary>
        </member>
        <member name="T:Substrate.Core.IChunkManager">
            <summary>
            Provides a common interface for chunk containers that provide global management.
            </summary>
        </member>
        <member name="T:Substrate.Core.IChunkContainer">
            <summary>
            Provides a common interface to any object that acts as a physical or abstract chunk container.
            </summary>
        </member>
        <member name="M:Substrate.Core.IChunkContainer.ChunkGlobalX(System.Int32)">
            <summary>
            Returns a global chunk X-coordinate, given a container-defined X-coordinate.
            </summary>
            <param name="cx">An X-coordinate internally assigned to a <see cref="T:Substrate.ChunkRef"/> by a <see cref="T:Substrate.Core.IChunkContainer"/>.</param>
            <returns>A corresponding global X-coordinate.</returns>
            <remarks>This is largely intended for internal use.  If an <see cref="T:Substrate.Core.IChunk"/> is assigned coordinates by an
            <see cref="T:Substrate.Core.IChunkContainer"/>, the interpretation of those coordinates is ambiguous.  This method ensures the coordinate
            returned is interpreted as a global coordinate.</remarks>
        </member>
        <member name="M:Substrate.Core.IChunkContainer.ChunkGlobalZ(System.Int32)">
            <summary>
            Returns a global chunk Z-coordinate, given a container-defined Z-coordinate.
            </summary>
            <param name="cz">A Z-coordinate internally assigned to a <see cref="T:Substrate.ChunkRef"/> by a <see cref="T:Substrate.Core.IChunkContainer"/>.</param>
            <returns>A corresponding global Z-coordinate.</returns>
            <remarks>This is largely intended for internal use.  If an <see cref="T:Substrate.Core.IChunk"/> is assigned coordinates by an
            <see cref="T:Substrate.Core.IChunkContainer"/>, the interpretation of those coordinates is ambiguous.  This method ensures the coordinate
            returned is interpreted as a global coordinate.</remarks>
        </member>
        <member name="M:Substrate.Core.IChunkContainer.ChunkLocalX(System.Int32)">
            <summary>
            Returns a local chunk X-coordinate, given a container-defined X-coordinate.
            </summary>
            <param name="cx">An X-coordinate internally assigned to a <see cref="T:Substrate.ChunkRef"/> by a <see cref="T:Substrate.Core.IChunkContainer"/>.</param>
            <returns>A corresponding local X-coordinate.</returns>
            <remarks>This is largely intended for internal use.  If an <see cref="T:Substrate.Core.IChunk"/> is assigned coordinates by an
            <see cref="T:Substrate.Core.IChunkContainer"/>, the interpretation of those coordinates is ambiguous.  This method ensures the coordinate
            returned is interpreted as a local coordinate.</remarks>
        </member>
        <member name="M:Substrate.Core.IChunkContainer.ChunkLocalZ(System.Int32)">
            <summary>
            Returns a local chunk Z-coordinate, given a container-defined Z-coordinate.
            </summary>
            <param name="cz">A Z-coordinate internally assigned to a <see cref="T:Substrate.ChunkRef"/> by a <see cref="T:Substrate.Core.IChunkContainer"/>.</param>
            <returns>A corresponding global X-coordinate.</returns>
            <remarks>This is largely intended for internal use.  If an <see cref="T:Substrate.Core.IChunk"/> is assigned coordinates by an
            <see cref="T:Substrate.Core.IChunkContainer"/>, the interpretation of those coordinates is ambiguous.  This method ensures the coordinate
            returned is interpreted as a local coordinate.</remarks>
        </member>
        <member name="M:Substrate.Core.IChunkContainer.GetChunk(System.Int32,System.Int32)">
            <summary>
            Gets an unwrapped <see cref="T:Substrate.Core.IChunk"/> object for the given container-local coordinates.
            </summary>
            <param name="cx">The container-local X-coordinate of a chunk.</param>
            <param name="cz">The container-local Z-coordinate of a chunk.</param>
            <returns>A <see cref="T:Substrate.Core.IChunk"/> for the given coordinates, or null if no chunk exists at those coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IChunkContainer.GetChunkRef(System.Int32,System.Int32)">
            <summary>
            Gets a <see cref="T:Substrate.ChunkRef"/> binding a chunk to this container for the given container-local coordinates.
            </summary>
            <param name="cx">The container-local X-coordinate of a chunk.</param>
            <param name="cz">The container-local Z-coordinate of a chunk.</param>
            <returns>A <see cref="T:Substrate.ChunkRef"/> for the given coordinates binding a <see cref="T:Substrate.Core.IChunk"/> to this container, or null if
            no chunk exists at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IChunkContainer.CreateChunk(System.Int32,System.Int32)">
            <summary>
            Creates an empty chunk at the given coordinates, if no chunk previously exists.
            </summary>
            <param name="cx">The container-local X-coordinate of a chunk.</param>
            <param name="cz">The container-local Z-coordinate of a chunk.</param>
            <returns>A <see cref="T:Substrate.ChunkRef"/> for the newly created chunk if no previous chunk existed; a <see cref="T:Substrate.ChunkRef"/> 
            to the existing chunk otherwise.</returns>
            <remarks>This method ensures that an empty/default chunk is written out to the underlying data store before returning.</remarks>
        </member>
        <member name="M:Substrate.Core.IChunkContainer.SetChunk(System.Int32,System.Int32,Substrate.Core.IChunk)">
            <summary>
            Saves an unwrapped <see cref="T:Substrate.Core.IChunk"/> to the container at the given container-local coordinates.
            </summary>
            <param name="cx">The container-local X-coordinate to save the chunk to.</param>
            <param name="cz">The container-local Z-coordinate to save the chunk to.</param>
            <param name="chunk">The <see cref="T:Substrate.Core.IChunk"/> to save at the given coordinates.</param>
            <returns>A <see cref="T:Substrate.ChunkRef"/> binding <paramref name="chunk"/> to this container at the given location.</returns>
            <remarks><para>The <see cref="T:Substrate.Core.IChunk"/> argument will be updated to reflect new global coordinates corresponding to
            the given location in this container.  It is up to the developer to ensure that no competing <see cref="T:Substrate.ChunkRef"/>
            has a handle to the <see cref="T:Substrate.Core.IChunk"/> argument, or an inconsistency could develop where the chunk held by the
            other <see cref="T:Substrate.ChunkRef"/> is written to the underlying data store with invalid coordinates.</para>
            <para>The <see cref="T:Substrate.ChunkRef"/> specification is designed to avoid this situation from occuring, but
            class hierarchy extensions could violate these safeguards.</para></remarks>
        </member>
        <member name="M:Substrate.Core.IChunkContainer.ChunkExists(System.Int32,System.Int32)">
            <summary>
            Checks if a chunk exists at the given container-local coordinates.
            </summary>
            <param name="cx">The container-local X-coordinate of a chunk.</param>
            <param name="cz">The container-local Z-coordinate of a chunk.</param>
            <returns>True if a chunk exists at the given coordinates; false otherwise.</returns>
        </member>
        <member name="M:Substrate.Core.IChunkContainer.DeleteChunk(System.Int32,System.Int32)">
            <summary>
            Deletes a chunk at the given container-local coordinates if it exists.
            </summary>
            <param name="cx">The container-local X-coordinate of a chunk.</param>
            <param name="cz">The container-local Z-coordinate of a chunk.</param>
            <returns>True if a chunk existed and was deleted; false otherwise.</returns>
        </member>
        <member name="M:Substrate.Core.IChunkContainer.Save">
            <summary>
            Saves any chunks in the container that currently have unsaved changes.
            </summary>
            <returns>The number of chunks that were saved.</returns>
            <remarks>If this container supports delegating out-of-bounds coordinates to other containers, then any chunk
            modified by an action on this container that was delegated to another container will not be saved.  The foreign
            containers must be individually saved, but are guaranteed to know about the unsaved changes originating from
            an action in another container.</remarks>
        </member>
        <member name="M:Substrate.Core.IChunkContainer.SaveChunk(Substrate.Core.IChunk)">
            <exclude/>
        </member>
        <member name="P:Substrate.Core.IChunkContainer.CanDelegateCoordinates">
            <summary>
            Checks if this container supports delegating an action on out-of-bounds coordinates to another container.
            </summary>
            <remarks>If a container does not support this property, it is expected to throw <see cref="T:System.ArgumentOutOfRangeException"/>
            for any action on out-of-bounds coordinates.</remarks>
        </member>
        <member name="M:Substrate.RegionChunkManager.#ctor(Substrate.Core.IRegionManager,Substrate.Core.ChunkCache)">
            <summary>
            Creates a new <see cref="T:Substrate.RegionChunkManager"/> instance given a backing <see cref="P:Substrate.RegionChunkManager.RegionManager"/> and <see cref="T:Substrate.Core.ChunkCache"/>.
            </summary>
            <param name="rm">A <see cref="P:Substrate.RegionChunkManager.RegionManager"/> exposing access to regions.</param>
            <param name="cache">A shared cache for storing chunks read in.</param>
        </member>
        <member name="M:Substrate.RegionChunkManager.#ctor(Substrate.RegionChunkManager)">
            <summary>
            Creates a new <see cref="T:Substrate.RegionChunkManager"/> instance from another.
            </summary>
            <param name="cm">A <see cref="T:Substrate.RegionChunkManager"/> to get a <see cref="P:Substrate.RegionChunkManager.RegionManager"/> and <see cref="T:Substrate.Core.ChunkCache"/> from.</param>
        </member>
        <member name="M:Substrate.RegionChunkManager.ChunkGlobalX(System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.RegionChunkManager.ChunkGlobalZ(System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.RegionChunkManager.ChunkLocalX(System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.RegionChunkManager.ChunkLocalZ(System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.RegionChunkManager.GetChunk(System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.RegionChunkManager.GetChunkRef(System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.RegionChunkManager.ChunkExists(System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.RegionChunkManager.CreateChunk(System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.RegionChunkManager.SetChunk(System.Int32,System.Int32,Substrate.Core.IChunk)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.RegionChunkManager.Save">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.RegionChunkManager.SaveChunk(Substrate.Core.IChunk)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.RegionChunkManager.DeleteChunk(System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.RegionChunkManager.CopyChunk(System.Int32,System.Int32,System.Int32,System.Int32)">
            <summary>
            Copies a chunk from one location to another.
            </summary>
            <param name="src_cx">The global X-coordinate of the source chunk.</param>
            <param name="src_cz">The global Z-coordinate of the source chunk.</param>
            <param name="dst_cx">The global X-coordinate of the destination chunk.</param>
            <param name="dst_cz">The global Z-coordinate of the destination chunk.</param>
            <returns>A <see cref="T:Substrate.ChunkRef"/> for the destination chunk.</returns>
        </member>
        <member name="M:Substrate.RegionChunkManager.RelightDirtyChunks">
            <summary>
            Performs a full chunk relight sequence on all modified chunks.
            </summary>
        </member>
        <member name="M:Substrate.RegionChunkManager.GetChunkTimestamp(System.Int32,System.Int32)">
            <summary>
            Gets the timestamp of the chunk from its underlying region file.
            </summary>
            <param name="cx">The global X-coordinate of a chunk.</param>
            <param name="cz">The global Z-coordinate of a chunk.</param>
            <returns>The timestamp of the chunk from its underlying region file.</returns>
            <remarks>The value returned may differ from any timestamp stored in the chunk data itself.</remarks>
        </member>
        <member name="M:Substrate.RegionChunkManager.SetChunkTimestamp(System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets the timestamp of the chunk in its underlying region file.
            </summary>
            <param name="cx">The global X-coordinate of a chunk.</param>
            <param name="cz">The global Z-coordinate of a chunk.</param>
            <param name="timestamp">The new timestamp value.</param>
            <remarks>This function will only update the timestamp of the chunk slot in the underlying region file.  It will not update
            any timestamp information in the chunk data itself.</remarks>
        </member>
        <member name="M:Substrate.RegionChunkManager.GetEnumerator">
            <summary>
            Returns an enumerator that iterates through all chunks in all regions of the world.
            </summary>
            <returns>An enumerator for this manager.</returns>
        </member>
        <member name="M:Substrate.RegionChunkManager.System#Collections#IEnumerable#GetEnumerator">
            <inheritdoc/>
        </member>
        <member name="P:Substrate.RegionChunkManager.RegionManager">
            <summary>
            Gets the <see cref="P:Substrate.RegionChunkManager.RegionManager"/> backing this manager.
            </summary>
        </member>
        <member name="P:Substrate.RegionChunkManager.CanDelegateCoordinates">
            <inheritdoc/>
        </member>
        <member name="T:Substrate.Nbt.SchemaOptions">
            <summary>
            Additional options that modify the processing of a <see cref="T:Substrate.Nbt.SchemaNode"/>.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.SchemaOptions.OPTIONAL">
            <summary>
            Any <see cref="T:Substrate.Nbt.SchemaNode"/> with this option will not throw an error if the corresponding <see cref="T:Substrate.Nbt.TagNode"/> is missing.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.SchemaOptions.CREATE_ON_MISSING">
            <summary>
            If a <see cref="T:Substrate.Nbt.TagNode"/> cannot be found for a <see cref="T:Substrate.Nbt.SchemaNode"/> marked with this option, a sensible default <see cref="T:Substrate.Nbt.TagNode"/> will be created and inserted into the tree.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.NbtTree">
            <summary>
            Contains the root node of an NBT tree and handles IO of tree nodes.
            </summary>
            <remarks>
            NBT, or Named Byte Tag, is a tree-based data structure for storing most Minecraft data.
            NBT_Tree is more of a helper class for NBT trees that handles reading and writing nodes to data streams.
            Most of the API takes a TagValue or derived node as the root of the tree, rather than an NBT_Tree object itself.
            </remarks>
        </member>
        <member name="M:Substrate.Nbt.NbtTree.#ctor">
            <summary>
            Constructs a wrapper around a new NBT tree with an empty root node.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.NbtTree.#ctor(Substrate.Nbt.TagNodeCompound)">
            <summary>
            Constructs a wrapper around another NBT tree.
            </summary>
            <param name="tree">The root node of an NBT tree.</param>
        </member>
        <member name="M:Substrate.Nbt.NbtTree.#ctor(Substrate.Nbt.TagNodeCompound,System.String)">
            <summary>
            Constructs a wrapper around another NBT tree and gives it a name.
            </summary>
            <param name="tree">The root node of an NBT tree.</param>
            <param name="name">The name for the root node.</param>
        </member>
        <member name="M:Substrate.Nbt.NbtTree.#ctor(System.IO.Stream)">
            <summary>
            Constructs and wrapper around a new NBT tree parsed from a source data stream.
            </summary>
            <param name="s">An open, readable data stream containing NBT data.</param>
        </member>
        <member name="M:Substrate.Nbt.NbtTree.ReadFrom(System.IO.Stream)">
            <summary>
            Rebuild the internal NBT tree from a source data stream.
            </summary>
            <param name="s">An open, readable data stream containing NBT data.</param>
        </member>
        <member name="M:Substrate.Nbt.NbtTree.WriteTo(System.IO.Stream)">
            <summary>
            Writes out the internal NBT tree to a destination data stream.
            </summary>
            <param name="s">An open, writable data stream.</param>
        </member>
        <member name="M:Substrate.Nbt.NbtTree.Copy">
            <summary>
            Creates a deep copy of the NBT_Tree and underlying nodes.
            </summary>
            <returns>A new NBT_tree.</returns>
        </member>
        <member name="P:Substrate.Nbt.NbtTree.Root">
            <summary>
            Gets the root node of this tree.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.NbtTree.Name">
            <summary>
            Gets or sets the name of the tree's root node.
            </summary>
        </member>
        <member name="T:Substrate.Core.Region">
            <summary>
            Represents a single region containing 32x32 chunks.
            </summary>
        </member>
        <member name="M:Substrate.Core.IRegion.GetFileName">
            <summary>
            Get the appropriate filename for this region.
            </summary>
            <returns>The filename of the region with encoded coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IRegion.GetFilePath">
            <summary>
            Gets the full path of the region's backing file.
            </summary>
            <returns>Gets the path of the region's file based on the <see cref="T:Substrate.Core.IRegionManager"/>'s region path and the region's on filename.</returns>
        </member>
        <member name="M:Substrate.Core.IRegion.GetChunkTree(System.Int32,System.Int32)">
            <summary>
            Gets the <see cref="T:Substrate.Nbt.NbtTree"/> for a chunk given local coordinates into the region.
            </summary>
            <param name="lcx">The local X-coordinate of a chunk within the region.</param>
            <param name="lcz">The local Z-coordinate of a chunk within the region.</param>
            <returns>An <see cref="T:Substrate.Nbt.NbtTree"/> for a local chunk, or null if there is no chunk at the given coordinates.</returns>
        </member>
        <member name="M:Substrate.Core.IRegion.SaveChunkTree(System.Int32,System.Int32,Substrate.Nbt.NbtTree)">
            <summary>
            Saves an <see cref="T:Substrate.Nbt.NbtTree"/> for a chunk back to the region's data store at the given local coordinates.
            </summary>
            <param name="lcx">The local X-coordinate of the chunk within the region.</param>
            <param name="lcz">The local Z-coordinate of the chunk within the region.</param>
            <param name="tree">The <see cref="T:Substrate.Nbt.NbtTree"/> of a chunk to write back to the region.</param>
            <returns>True if the save succeeded.</returns>
            <remarks>It is up to the programmer to ensure that the global coordinates defined within the chunk's tree
            are consistent with the local coordinates of the region being written into.</remarks>
        </member>
        <member name="M:Substrate.Core.IRegion.SaveChunkTree(System.Int32,System.Int32,Substrate.Nbt.NbtTree,System.Int32)">
            <summary>
            Saves an <see cref="T:Substrate.Nbt.NbtTree"/> for a chunk back to the region's data store at the given local coordinates and with the given timestamp.
            </summary>
            <param name="lcx">The local X-coordinate of the chunk within the region.</param>
            <param name="lcz">The local Z-coordinate of the chunk within the region.</param>
            <param name="tree">The <see cref="T:Substrate.Nbt.NbtTree"/> of a chunk to write back to the region.</param>
            <param name="timestamp">The timestamp to write to the underlying region file for this chunk.</param>
            <returns>True if the save succeeded.</returns>
            <remarks>It is up to the programmer to ensure that the global coordinates defined within the chunk's tree
            are consistent with the local coordinates of the region being written into.</remarks>
        </member>
        <member name="M:Substrate.Core.IRegion.GetChunkOutStream(System.Int32,System.Int32)">
            <summary>
            Gets an output stream for replacing chunk data at the given coordinates within the region.
            </summary>
            <param name="lcx">The local X-coordinate of the chunk to replace within the region.</param>
            <param name="lcz">The local Z-coordinate of the chunk to replace within the region.</param>
            <returns>An output stream that can be written to on demand.</returns>
            <remarks>There is no guarantee that any data will be saved until the stream is closed.</remarks>
        </member>
        <member name="M:Substrate.Core.IRegion.ChunkCount">
            <summary>
            Returns the count of valid chunks stored in this region.
            </summary>
            <returns>The count of currently stored chunks.</returns>
        </member>
        <member name="M:Substrate.Core.IRegion.GetChunkRef(System.Int32,System.Int32)">
            <summary>
            Gets a <see cref="T:Substrate.ChunkRef"/> for a chunk at the given local coordinates relative to this region.
            </summary>
            <param name="lcx">The local X-coordinate of a chunk relative to this region.</param>
            <param name="lcz">The local Z-coordinate of a chunk relative to this region.</param>
            <returns>A <see cref="T:Substrate.ChunkRef"/> at the given local coordinates, or null if no chunk exists.</returns>
            <remarks>The local coordinates do not strictly need to be within the bounds of the region.  If coordinates are detected
            as being out of bounds, the lookup will be delegated to the correct region and the lookup will be performed there
            instead.  This allows any <see cref="T:Substrate.Core.Region"/> to perform a similar task to <see cref="T:Substrate.RegionChunkManager"/>, but with a
            region-local frame of reference instead of a global frame of reference.</remarks>
        </member>
        <member name="M:Substrate.Core.IRegion.CreateChunk(System.Int32,System.Int32)">
            <summary>
            Creates a new chunk at the given local coordinates relative to this region and returns a new <see cref="T:Substrate.ChunkRef"/> for it.
            </summary>
            <param name="lcx">The local X-coordinate of a chunk relative to this region.</param>
            <param name="lcz">The local Z-coordinate of a chunk relative to this region.</param>
            <returns>A <see cref="T:Substrate.ChunkRef"/> for the newly created chunk.</returns>
            <remarks>If the local coordinates are out of bounds for this region, the action will be forwarded to the correct region
            transparently.</remarks>
        </member>
        <member name="M:Substrate.Core.IRegion.GetChunkTimestamp(System.Int32,System.Int32)">
            <summary>
            Gets the timestamp of a chunk from the underlying region file.
            </summary>
            <param name="lcx">The local X-coordinate of a chunk relative to this region.</param>
            <param name="lcz">The local Z-coordinate of a chunk relative to this region.</param>
            <returns>The timestamp of the chunk slot in the region.</returns>
            <remarks>The value returned may differ from any timestamp stored in the chunk data itself.</remarks>
        </member>
        <member name="M:Substrate.Core.IRegion.SetChunkTimestamp(System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets the timestamp of a chunk in the underlying region file.
            </summary>
            <param name="lcx">The local X-coordinate of a chunk relative to this region.</param>
            <param name="lcz">The local Z-coordinate of a chunk relative to this region.</param>
            <param name="timestamp">The new timestamp value.</param>
            <remarks>This function will only update the timestamp of the chunk slot in the underlying region file.  It will not update
            any timestamp information in the chunk data itself.</remarks>
        </member>
        <member name="P:Substrate.Core.IRegion.X">
            <summary>
            Gets the global X-coordinate of the region.
            </summary>
        </member>
        <member name="P:Substrate.Core.IRegion.Z">
            <summary>
            Gets the global Z-coordinate of the region.
            </summary>
        </member>
        <member name="M:Substrate.Core.Region.#ctor(Substrate.Core.RegionManager,Substrate.Core.ChunkCache,System.Int32,System.Int32)">
            <summary>
            Creates an instance of a <see cref="T:Substrate.Core.Region"/> for a given set of coordinates.
            </summary>
            <param name="rm">The <see cref="T:Substrate.Core.RegionManager"/> that should be managing this region.</param>
            <param name="cache">A shared cache for holding chunks.</param>
            <param name="rx">The global X-coordinate of the region.</param>
            <param name="rz">The global Z-coordinate of the region.</param>
            <remarks><para>The constructor will not actually open or parse any region files.  Given just the region coordinates, the
            region will be able to determien the correct region file to look for based on the naming pattern for regions:
            r.x.z.mcr, given x and z are integers representing the region's coordinates.</para>
            <para>Regions require a <see cref="T:Substrate.Core.ChunkCache"/> to be provided because they do not actually store any chunks or references
            to chunks on their own.  This allows regions to easily pass off requests outside of their bounds, if necessary.</para></remarks>
        </member>
        <member name="M:Substrate.Core.Region.#ctor(Substrate.Core.RegionManager,Substrate.Core.ChunkCache,System.String)">
            <summary>
            Creates an instance of a <see cref="T:Substrate.Core.Region"/> for the given region file.
            </summary>
            <param name="rm">The <see cref="T:Substrate.Core.RegionManager"/> that should be managing this region.</param>
            <param name="cache">A shared cache for holding chunks.</param>
            <param name="filename">The region file to derive the region from.</param>
            <remarks><para>The constructor will not actually open or parse the region file.  It will only read the file's name in order
            to derive the region's coordinates, based on a strict naming pattern for regions: r.x.z.mcr, given x and z are integers
            representing the region's coordinates.</para>
            <para>Regions require a <see cref="T:Substrate.Core.ChunkCache"/> to be provided because they do not actually store any chunks or references
            to chunks on their own.  This allows regions to easily pass off requests outside of their bounds, if necessary.</para></remarks>
        </member>
        <member name="M:Substrate.Core.Region.Finalize">
            <summary>
            Region finalizer that ensures any resources are cleaned up
            </summary>
        </member>
        <member name="M:Substrate.Core.Region.Dispose">
            <summary>
            Disposes any managed and unmanaged resources held by the region.
            </summary>
        </member>
        <member name="M:Substrate.Core.Region.Dispose(System.Boolean)">
            <summary>
            Conditionally dispose managed or unmanaged resources.
            </summary>
            <param name="disposing">True if the call to Dispose was explicit.</param>
        </member>
        <member name="M:Substrate.Core.Region.GetChunkTree(System.Int32,System.Int32)">
            <inherits />
        </member>
        <member name="M:Substrate.Core.Region.SaveChunkTree(System.Int32,System.Int32,Substrate.Nbt.NbtTree)">
            <inherits />
        </member>
        <member name="M:Substrate.Core.Region.SaveChunkTree(System.Int32,System.Int32,Substrate.Nbt.NbtTree,System.Int32)">
            <inherits />
        </member>
        <member name="M:Substrate.Core.Region.GetChunkOutStream(System.Int32,System.Int32)">
            <inherits />
        </member>
        <member name="M:Substrate.Core.Region.ChunkCount">
            <inherits />
        </member>
        <member name="M:Substrate.Core.Region.GetChunkRef(System.Int32,System.Int32)">
            <inherits />
        </member>
        <member name="M:Substrate.Core.Region.CreateChunk(System.Int32,System.Int32)">
            <inherits />
        </member>
        <member name="M:Substrate.Core.Region.ChunkGlobalX(System.Int32)">
            <summary>
            Gets the global X-coordinate of a chunk given an internal coordinate handed out by a <see cref="T:Substrate.Core.Region"/> container.
            </summary>
            <param name="cx">An internal X-coordinate given to a <see cref="T:Substrate.ChunkRef"/> by any instance of a <see cref="T:Substrate.Core.Region"/> container.</param>
            <returns>The global X-coordinate of the corresponding chunk.</returns>
        </member>
        <member name="M:Substrate.Core.Region.ChunkGlobalZ(System.Int32)">
            <summary>
            Gets the global Z-coordinate of a chunk given an internal coordinate handed out by a <see cref="T:Substrate.Core.Region"/> container.
            </summary>
            <param name="cz">An internal Z-coordinate given to a <see cref="T:Substrate.ChunkRef"/> by any instance of a <see cref="T:Substrate.Core.Region"/> container.</param>
            <returns>The global Z-coordinate of the corresponding chunk.</returns>
        </member>
        <member name="M:Substrate.Core.Region.ChunkLocalX(System.Int32)">
            <summary>
            Gets the region-local X-coordinate of a chunk given an internal coordinate handed out by a <see cref="T:Substrate.Core.Region"/> container.
            </summary>
            <param name="cx">An internal X-coordinate given to a <see cref="T:Substrate.ChunkRef"/> by any instance of a <see cref="T:Substrate.Core.Region"/> container.</param>
            <returns>The region-local X-coordinate of the corresponding chunk.</returns>
        </member>
        <member name="M:Substrate.Core.Region.ChunkLocalZ(System.Int32)">
            <summary>
            Gets the region-local Z-coordinate of a chunk given an internal coordinate handed out by a <see cref="T:Substrate.Core.Region"/> container.
            </summary>
            <param name="cz">An internal Z-coordinate given to a <see cref="T:Substrate.ChunkRef"/> by any instance of a <see cref="T:Substrate.Core.Region"/> container.</param>
            <returns>The region-local Z-coordinate of the corresponding chunk.</returns>
        </member>
        <member name="M:Substrate.Core.Region.GetChunk(System.Int32,System.Int32)">
            <summary>
            Returns a <see cref="T:Substrate.Core.IChunk"/> given local coordinates relative to this region.
            </summary>
            <param name="lcx">The local X-coordinate of a chunk relative to this region.</param>
            <param name="lcz">The local Z-coordinate of a chunk relative to this region.</param>
            <returns>A <see cref="T:Substrate.Core.IChunk"/> object for the given coordinates, or null if the chunk does not exist.</returns>
            <remarks>If the local coordinates are out of bounds for this region, the action will be forwarded to the correct region
            transparently.  The returned <see cref="T:Substrate.Core.IChunk"/> object may either come from cache, or be regenerated from disk.</remarks>
        </member>
        <member name="M:Substrate.Core.Region.ChunkExists(System.Int32,System.Int32)">
            <summary>
            Checks if a chunk exists at the given local coordinates relative to this region.
            </summary>
            <param name="lcx">The local X-coordinate of a chunk relative to this region.</param>
            <param name="lcz">The local Z-coordinate of a chunk relative to this region.</param>
            <returns>True if there is a chunk at the given coordinates; false otherwise.</returns>
            <remarks>If the local coordinates are out of bounds for this region, the action will be forwarded to the correct region
            transparently.</remarks>
        </member>
        <member name="M:Substrate.Core.Region.DeleteChunk(System.Int32,System.Int32)">
            <summary>
            Deletes a chunk from the underlying data store at the given local coordinates relative to this region.
            </summary>
            <param name="lcx">The local X-coordinate of a chunk relative to this region.</param>
            <param name="lcz">The local Z-coordinate of a chunk relative to this region.</param>
            <returns>True if there is a chunk was deleted; false otherwise.</returns>
            <remarks>If the local coordinates are out of bounds for this region, the action will be forwarded to the correct region
            transparently.</remarks>
        </member>
        <member name="M:Substrate.Core.Region.SetChunk(System.Int32,System.Int32,Substrate.Core.IChunk)">
            <summary>
            Saves an existing <see cref="T:Substrate.Core.IChunk"/> to the region at the given local coordinates.
            </summary>
            <param name="lcx">The local X-coordinate of a chunk relative to this region.</param>
            <param name="lcz">The local Z-coordinate of a chunk relative to this region.</param>
            <param name="chunk">A <see cref="T:Substrate.Core.IChunk"/> to save to the given location.</param>
            <returns>A <see cref="T:Substrate.ChunkRef"/> represneting the <see cref="T:Substrate.Core.IChunk"/> at its new location.</returns>
            <remarks>If the local coordinates are out of bounds for this region, the action will be forwarded to the correct region
            transparently.  The <see cref="T:Substrate.Core.IChunk"/>'s internal global coordinates will be updated to reflect the new location.</remarks>
        </member>
        <member name="M:Substrate.Core.Region.Save">
            <summary>
            Saves all chunks within this region that have been marked as dirty.
            </summary>
            <returns>The number of chunks that were saved.</returns>
        </member>
        <member name="M:Substrate.Core.Region.SaveChunk(Substrate.Core.IChunk)">
            <exclude/>
        </member>
        <member name="M:Substrate.Core.Region.GetChunkTimestamp(System.Int32,System.Int32)">
            <inherits />
        </member>
        <member name="M:Substrate.Core.Region.SetChunkTimestamp(System.Int32,System.Int32,System.Int32)">
            <inherits />
        </member>
        <member name="P:Substrate.Core.Region.X">
            <inherit />
        </member>
        <member name="P:Substrate.Core.Region.Z">
            <inherit />
        </member>
        <member name="P:Substrate.Core.Region.XDim">
            <summary>
            Gets the length of the X-dimension of the region in chunks.
            </summary>
        </member>
        <member name="P:Substrate.Core.Region.ZDim">
            <summary>
            Gets the length of the Z-dimension of the region in chunks.
            </summary>
        </member>
        <member name="P:Substrate.Core.Region.CanDelegateCoordinates">
            <summary>
            Checks if this container supports delegating an action on out-of-bounds coordinates to another container. 
            </summary>
        </member>
        <member name="M:Substrate.BetaRegion.GetFileName">
            <inherits />
        </member>
        <member name="M:Substrate.BetaRegion.GetFilePath">
            <inherits />
        </member>
        <member name="M:Substrate.BetaRegion.TestFileName(System.String)">
            <summary>
            Tests if the given filename conforms to the general naming pattern for any region.
            </summary>
            <param name="filename">The filename to test.</param>
            <returns>True if the filename is a valid region name; false if it does not conform to the pattern.</returns>
        </member>
        <member name="M:Substrate.BetaRegion.ParseFileNameCore(System.String,System.Int32@,System.Int32@)">
            <summary>
            Parses the given filename to extract encoded region coordinates.
            </summary>
            <param name="filename">The region filename to parse.</param>
            <param name="x">This parameter will contain the X-coordinate of a region.</param>
            <param name="z">This parameter will contain the Z-coordinate of a region.</param>
            <returns>True if the filename could be correctly parse; false otherwise.</returns>
        </member>
        <member name="T:Ionic.Zlib.ZlibStream">
             <summary>
             Represents a Zlib stream for compression or decompression.
             </summary>
             <remarks>
            
             <para>
             The ZlibStream is a <see href="http://en.wikipedia.org/wiki/Decorator_pattern">Decorator</see> on a <see cref="T:System.IO.Stream"/>.  It adds ZLIB compression or decompression to any
             stream.
             </para>
            
             <para> Using this stream, applications can compress or decompress data via
             stream <c>Read()</c> and <c>Write()</c> operations.  Either compresssion or
             decompression can occur through either reading or writing. The compression
             format used is ZLIB, which is documented in <see href="http://www.ietf.org/rfc/rfc1950.txt">IETF RFC 1950</see>, "ZLIB Compressed
             Data Format Specification version 3.3". This implementation of ZLIB always uses
             DEFLATE as the compression method.  (see <see href="http://www.ietf.org/rfc/rfc1951.txt">IETF RFC 1951</see>, "DEFLATE
             Compressed Data Format Specification version 1.3.") </para>
            
             <para>
             The ZLIB format allows for varying compression methods, window sizes, and dictionaries.
             This implementation always uses the DEFLATE compression method, a preset dictionary,
             and 15 window bits by default.
             </para>
            
             <para>
             This class is similar to <see cref="T:Ionic.Zlib.DeflateStream"/>, except that it adds the
             RFC1950 header and trailer bytes to a compressed stream when compressing, or expects
             the RFC1950 header and trailer bytes when decompressing.  It is also similar to the
             <see cref="T:Ionic.Zlib.GZipStream"/>.
             </para>
             </remarks>
             <seealso cref="T:Ionic.Zlib.DeflateStream"/>
             <seealso cref="T:Ionic.Zlib.GZipStream"/>
        </member>
        <member name="M:Ionic.Zlib.ZlibStream.#ctor(System.IO.Stream,Ionic.Zlib.CompressionMode)">
             <summary>
             Create a <c>ZlibStream</c> using the specified <c>CompressionMode</c>.
             </summary>
             <remarks>
            
             <para>
               When mode is <c>CompressionMode.Compress</c>, the <c>ZlibStream</c> will use the
               default compression level. The "captive" stream will be closed when the
               <c>ZlibStream</c> is closed.
             </para>
            
             </remarks>
            
             <example>
             This example uses a <c>ZlibStream</c> to compress a file, and writes the compressed
             data to another file.
             <code>
             using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
             {
                 using (var raw = System.IO.File.Create(fileToCompress + ".zlib"))
                 {
                     using (Stream compressor = new ZlibStream(raw, CompressionMode.Compress))
                     {
                         byte[] buffer = new byte[WORKING_BUFFER_SIZE];
                         int n;
                         while ((n= input.Read(buffer, 0, buffer.Length)) != 0)
                         {
                             compressor.Write(buffer, 0, n);
                         }
                     }
                 }
             }
             </code>
             <code lang="VB">
             Using input As Stream = File.OpenRead(fileToCompress)
                 Using raw As FileStream = File.Create(fileToCompress &amp; ".zlib")
                 Using compressor As Stream = New ZlibStream(raw, CompressionMode.Compress)
                     Dim buffer As Byte() = New Byte(4096) {}
                     Dim n As Integer = -1
                     Do While (n &lt;&gt; 0)
                         If (n &gt; 0) Then
                             compressor.Write(buffer, 0, n)
                         End If
                         n = input.Read(buffer, 0, buffer.Length)
                     Loop
                 End Using
                 End Using
             End Using
             </code>
             </example>
            
             <param name="stream">The stream which will be read or written.</param>
             <param name="mode">Indicates whether the ZlibStream will compress or decompress.</param>
        </member>
        <member name="M:Ionic.Zlib.ZlibStream.#ctor(System.IO.Stream,Ionic.Zlib.CompressionMode,Ionic.Zlib.CompressionLevel)">
             <summary>
               Create a <c>ZlibStream</c> using the specified <c>CompressionMode</c> and
               the specified <c>CompressionLevel</c>.
             </summary>
            
             <remarks>
            
             <para>
               When mode is <c>CompressionMode.Decompress</c>, the level parameter is ignored.
               The "captive" stream will be closed when the <c>ZlibStream</c> is closed.
             </para>
            
             </remarks>
            
             <example>
               This example uses a <c>ZlibStream</c> to compress data from a file, and writes the
               compressed data to another file.
            
             <code>
             using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
             {
                 using (var raw = System.IO.File.Create(fileToCompress + ".zlib"))
                 {
                     using (Stream compressor = new ZlibStream(raw,
                                                               CompressionMode.Compress,
                                                               CompressionLevel.BestCompression))
                     {
                         byte[] buffer = new byte[WORKING_BUFFER_SIZE];
                         int n;
                         while ((n= input.Read(buffer, 0, buffer.Length)) != 0)
                         {
                             compressor.Write(buffer, 0, n);
                         }
                     }
                 }
             }
             </code>
            
             <code lang="VB">
             Using input As Stream = File.OpenRead(fileToCompress)
                 Using raw As FileStream = File.Create(fileToCompress &amp; ".zlib")
                     Using compressor As Stream = New ZlibStream(raw, CompressionMode.Compress, CompressionLevel.BestCompression)
                         Dim buffer As Byte() = New Byte(4096) {}
                         Dim n As Integer = -1
                         Do While (n &lt;&gt; 0)
                             If (n &gt; 0) Then
                                 compressor.Write(buffer, 0, n)
                             End If
                             n = input.Read(buffer, 0, buffer.Length)
                         Loop
                     End Using
                 End Using
             End Using
             </code>
             </example>
            
             <param name="stream">The stream to be read or written while deflating or inflating.</param>
             <param name="mode">Indicates whether the ZlibStream will compress or decompress.</param>
             <param name="level">A tuning knob to trade speed for effectiveness.</param>
        </member>
        <member name="M:Ionic.Zlib.ZlibStream.#ctor(System.IO.Stream,Ionic.Zlib.CompressionMode,System.Boolean)">
             <summary>
               Create a <c>ZlibStream</c> using the specified <c>CompressionMode</c>, and
               explicitly specify whether the captive stream should be left open after
               Deflation or Inflation.
             </summary>
            
             <remarks>
            
             <para>
               When mode is <c>CompressionMode.Compress</c>, the <c>ZlibStream</c> will use
               the default compression level.
             </para>
            
             <para>
               This constructor allows the application to request that the captive stream
               remain open after the deflation or inflation occurs.  By default, after
               <c>Close()</c> is called on the stream, the captive stream is also
               closed. In some cases this is not desired, for example if the stream is a
               <see cref="T:System.IO.MemoryStream"/> that will be re-read after
               compression.  Specify true for the <paramref name="leaveOpen"/> parameter to leave the stream
               open.
             </para>
            
             <para>
             See the other overloads of this constructor for example code.
             </para>
            
             </remarks>
            
             <param name="stream">The stream which will be read or written. This is called the
             "captive" stream in other places in this documentation.</param>
             <param name="mode">Indicates whether the ZlibStream will compress or decompress.</param>
             <param name="leaveOpen">true if the application would like the stream to remain
             open after inflation/deflation.</param>
        </member>
        <member name="M:Ionic.Zlib.ZlibStream.#ctor(System.IO.Stream,Ionic.Zlib.CompressionMode,Ionic.Zlib.CompressionLevel,System.Boolean)">
             <summary>
               Create a <c>ZlibStream</c> using the specified <c>CompressionMode</c> and
               the specified <c>CompressionLevel</c>, and explicitly specify whether the
               stream should be left open after Deflation or Inflation.
             </summary>
            
             <remarks>
            
             <para>
               This constructor allows the application to request that the captive stream
               remain open after the deflation or inflation occurs.  By default, after
               <c>Close()</c> is called on the stream, the captive stream is also closed. In
               some cases this is not desired, for example if the stream is a <see cref="T:System.IO.MemoryStream"/> that will be re-read after compression.
               Specify true for the <paramref name="leaveOpen"/> parameter to leave the stream open.
             </para>
            
             <para>
               When mode is <c>CompressionMode.Decompress</c>, the level parameter is ignored.
             </para>
            
             </remarks>
            
             <example>
             This example shows how to use a ZlibStream to compress the data from a file,
             and store the result into another file. The filestream remains open to allow
             additional data to be written to it.
             <code>
             using (var output = System.IO.File.Create(fileToCompress + ".zlib"))
             {
                 using (System.IO.Stream input = System.IO.File.OpenRead(fileToCompress))
                 {
                     using (Stream compressor = new ZlibStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, true))
                     {
                         byte[] buffer = new byte[WORKING_BUFFER_SIZE];
                         int n;
                         while ((n= input.Read(buffer, 0, buffer.Length)) != 0)
                         {
                             compressor.Write(buffer, 0, n);
                         }
                     }
                 }
                 // can write additional data to the output stream here
             }
             </code>
             <code lang="VB">
             Using output As FileStream = File.Create(fileToCompress &amp; ".zlib")
                 Using input As Stream = File.OpenRead(fileToCompress)
                     Using compressor As Stream = New ZlibStream(output, CompressionMode.Compress, CompressionLevel.BestCompression, True)
                         Dim buffer As Byte() = New Byte(4096) {}
                         Dim n As Integer = -1
                         Do While (n &lt;&gt; 0)
                             If (n &gt; 0) Then
                                 compressor.Write(buffer, 0, n)
                             End If
                             n = input.Read(buffer, 0, buffer.Length)
                         Loop
                     End Using
                 End Using
                 ' can write additional data to the output stream here.
             End Using
             </code>
             </example>
            
             <param name="stream">The stream which will be read or written.</param>
            
             <param name="mode">Indicates whether the ZlibStream will compress or decompress.</param>
            
             <param name="leaveOpen">
             true if the application would like the stream to remain open after inflation/deflation.
             </param>
            
             <param name="level">
             A tuning knob to trade speed for effectiveness. This parameter is effective only when
             mode is <c>CompressionMode.Compress</c>.
             </param>
        </member>
        <member name="M:Ionic.Zlib.ZlibStream.Dispose(System.Boolean)">
            <summary>
            Dispose the stream.
            </summary>
            <remarks>
            This may or may not result in a <c>Close()</c> call on the captive stream.
            See the constructors that have a  <c>leaveOpen</c> parameter for more information.
            </remarks>
        </member>
        <member name="M:Ionic.Zlib.ZlibStream.Flush">
            <summary>
            Flush the stream.
            </summary>
        </member>
        <member name="M:Ionic.Zlib.ZlibStream.Read(System.Byte[],System.Int32,System.Int32)">
             <summary>
             Read data from the stream.
             </summary>
            
             <remarks>
            
             <para>
               If you wish to use the <c>ZlibStream</c> to compress data while reading,
               you can create a <c>ZlibStream</c> with <c>CompressionMode.Compress</c>,
               providing an uncompressed data stream.  Then call <c>Read()</c> on that
               <c>ZlibStream</c>, and the data read will be compressed.  If you wish to
               use the <c>ZlibStream</c> to decompress data while reading, you can create
               a <c>ZlibStream</c> with <c>CompressionMode.Decompress</c>, providing a
               readable compressed data stream.  Then call <c>Read()</c> on that
               <c>ZlibStream</c>, and the data will be decompressed as it is read.
             </para>
            
             <para>
               A <c>ZlibStream</c> can be used for <c>Read()</c> or <c>Write()</c>, but
               not both.
             </para>
            
             </remarks>
             <param name="buffer">The buffer into which the read data should be placed.</param>
             <param name="offset">the offset within that data array to put the first byte read.</param>
             <param name="count">the number of bytes to read.</param>
        </member>
        <member name="M:Ionic.Zlib.ZlibStream.Seek(System.Int64,System.IO.SeekOrigin)">
            <summary>
            Calling this method always throws a <see cref="T:System.NotImplementedException"/>.
            </summary>
        </member>
        <member name="M:Ionic.Zlib.ZlibStream.SetLength(System.Int64)">
            <summary>
            Calling this method always throws a <see cref="T:System.NotImplementedException"/>.
            </summary>
        </member>
        <member name="M:Ionic.Zlib.ZlibStream.Write(System.Byte[],System.Int32,System.Int32)">
             <summary>
             Write data to the stream.
             </summary>
            
             <remarks>
            
             <para>
               If you wish to use the <c>ZlibStream</c> to compress data while writing,
               you can create a <c>ZlibStream</c> with <c>CompressionMode.Compress</c>,
               and a writable output stream.  Then call <c>Write()</c> on that
               <c>ZlibStream</c>, providing uncompressed data as input.  The data sent to
               the output stream will be the compressed form of the data written.  If you
               wish to use the <c>ZlibStream</c> to decompress data while writing, you
               can create a <c>ZlibStream</c> with <c>CompressionMode.Decompress</c>, and a
               writable output stream.  Then call <c>Write()</c> on that stream,
               providing previously compressed data. The data sent to the output stream
               will be the decompressed form of the data written.
             </para>
            
             <para>
               A <c>ZlibStream</c> can be used for <c>Read()</c> or <c>Write()</c>, but not both.
             </para>
             </remarks>
             <param name="buffer">The buffer holding data to write to the stream.</param>
             <param name="offset">the offset within that data array to find the first byte to write.</param>
             <param name="count">the number of bytes to write.</param>
        </member>
        <member name="M:Ionic.Zlib.ZlibStream.CompressString(System.String)">
             <summary>
               Compress a string into a byte array using ZLIB.
             </summary>
            
             <remarks>
               Uncompress it with <see cref="M:Ionic.Zlib.ZlibStream.UncompressString(System.Byte[])"/>.
             </remarks>
            
             <seealso cref="M:Ionic.Zlib.ZlibStream.UncompressString(System.Byte[])"/>
             <seealso cref="M:Ionic.Zlib.ZlibStream.CompressBuffer(System.Byte[])"/>
            
             <param name="s">
               A string to compress.  The string will first be encoded
               using UTF8, then compressed.
             </param>
            
             <returns>The string in compressed form</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibStream.CompressBuffer(System.Byte[])">
             <summary>
               Compress a byte array into a new byte array using ZLIB.
             </summary>
            
             <remarks>
               Uncompress it with <see cref="M:Ionic.Zlib.ZlibStream.UncompressBuffer(System.Byte[])"/>.
             </remarks>
            
             <seealso cref="M:Ionic.Zlib.ZlibStream.CompressString(System.String)"/>
             <seealso cref="M:Ionic.Zlib.ZlibStream.UncompressBuffer(System.Byte[])"/>
            
             <param name="b">
             A buffer to compress.
             </param>
            
             <returns>The data in compressed form</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibStream.UncompressString(System.Byte[])">
             <summary>
               Uncompress a ZLIB-compressed byte array into a single string.
             </summary>
            
             <seealso cref="M:Ionic.Zlib.ZlibStream.CompressString(System.String)"/>
             <seealso cref="M:Ionic.Zlib.ZlibStream.UncompressBuffer(System.Byte[])"/>
            
             <param name="compressed">
               A buffer containing ZLIB-compressed data.
             </param>
            
             <returns>The uncompressed string</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibStream.UncompressBuffer(System.Byte[])">
             <summary>
               Uncompress a ZLIB-compressed byte array into a byte array.
             </summary>
            
             <seealso cref="M:Ionic.Zlib.ZlibStream.CompressBuffer(System.Byte[])"/>
             <seealso cref="M:Ionic.Zlib.ZlibStream.UncompressString(System.Byte[])"/>
            
             <param name="compressed">
               A buffer containing ZLIB-compressed data.
             </param>
            
             <returns>The data in uncompressed form</returns>
        </member>
        <member name="P:Ionic.Zlib.ZlibStream.FlushMode">
            <summary>
            This property sets the flush behavior on the stream.
            Sorry, though, not sure exactly how to describe all the various settings.
            </summary>
        </member>
        <member name="P:Ionic.Zlib.ZlibStream.BufferSize">
             <summary>
               The size of the working buffer for the compression codec.
             </summary>
            
             <remarks>
             <para>
               The working buffer is used for all stream operations.  The default size is
               1024 bytes. The minimum size is 128 bytes. You may get better performance
               with a larger buffer.  Then again, you might not.  You would have to test
               it.
             </para>
            
             <para>
               Set this before the first call to <c>Read()</c> or <c>Write()</c> on the
               stream. If you try to set it afterwards, it will throw.
             </para>
             </remarks>
        </member>
        <member name="P:Ionic.Zlib.ZlibStream.TotalIn">
            <summary> Returns the total number of bytes input so far.</summary>
        </member>
        <member name="P:Ionic.Zlib.ZlibStream.TotalOut">
            <summary> Returns the total number of bytes output so far.</summary>
        </member>
        <member name="P:Ionic.Zlib.ZlibStream.CanRead">
            <summary>
            Indicates whether the stream can be read.
            </summary>
            <remarks>
            The return value depends on whether the captive stream supports reading.
            </remarks>
        </member>
        <member name="P:Ionic.Zlib.ZlibStream.CanSeek">
            <summary>
            Indicates whether the stream supports Seek operations.
            </summary>
            <remarks>
            Always returns false.
            </remarks>
        </member>
        <member name="P:Ionic.Zlib.ZlibStream.CanWrite">
            <summary>
            Indicates whether the stream can be written.
            </summary>
            <remarks>
            The return value depends on whether the captive stream supports writing.
            </remarks>
        </member>
        <member name="P:Ionic.Zlib.ZlibStream.Length">
            <summary>
            Reading this property always throws a <see cref="T:System.NotImplementedException"/>.
            </summary>
        </member>
        <member name="P:Ionic.Zlib.ZlibStream.Position">
             <summary>
               The position of the stream pointer.
             </summary>
            
             <remarks>
               Setting this property always throws a <see cref="T:System.NotImplementedException"/>. Reading will return the total bytes
               written out, if used in writing, or the total bytes read in, if used in
               reading.  The count may refer to compressed bytes or uncompressed bytes,
               depending on how you've used the stream.
             </remarks>
        </member>
        <member name="T:Substrate.Core.BlockCollectionEdge">
            <summary>
            Represents the cardinal direction of a block collection's neighboring collection.
            </summary>
        </member>
        <member name="F:Substrate.Core.BlockCollectionEdge.EAST">
            <summary>
            Refers to a chunk/collection to the east of the current chunk/collection.
            </summary>
        </member>
        <member name="F:Substrate.Core.BlockCollectionEdge.NORTH">
            <summary>
            Refers to a chunk/collection to the north of the current chunk/collection.
            </summary>
        </member>
        <member name="F:Substrate.Core.BlockCollectionEdge.WEST">
            <summary>
            Refers to a chunk/collection to the west of the current chunk/collection.
            </summary>
        </member>
        <member name="F:Substrate.Core.BlockCollectionEdge.SOUTH">
            <summary>
            Refers to a chunk/collection to the south of the current chunk/collection.
            </summary>
        </member>
        <member name="T:Substrate.Core.ILitBlock">
            <summary>
            A block type supporting dual-source lighting.
            </summary>
        </member>
        <member name="P:Substrate.Core.ILitBlock.BlockLight">
            <summary>
            Gets or sets the block-source light value on this block.
            </summary>
        </member>
        <member name="P:Substrate.Core.ILitBlock.SkyLight">
            <summary>
            Gets or sets the sky-source light value on this block.
            </summary>
        </member>
        <member name="T:Substrate.Core.IAlphaBlock">
            <summary>
            An Alpha-compatible context-free block type supporting data and properties.
            </summary>
        </member>
        <member name="T:Substrate.Core.IAlphaBlockRef">
            <summary>
            An Alpha-compatible block reference type supporting data, lighting, and properties.
            </summary>
        </member>
        <member name="P:Substrate.Core.IAlphaBlockRef.IsValid">
            <summary>
            Checks if the reference and its backing container are currently valid.
            </summary>
        </member>
        <member name="T:Substrate.Core.IVersion10Block">
            <summary>
            A version-1.0-compatible context-free block type supporting data, properties, and active tick state.
            </summary>
        </member>
        <member name="T:Substrate.Core.IVersion10BlockRef">
            <summary>
            A version-1.0-compatible reference type supporting data, lighting, properties, and active tick state.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.TagNodeFloat">
            <summary>
            An NBT node representing a single-precision floating point tag type.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeFloat.ToTagFloat">
            <summary>
            Converts the node to itself.
            </summary>
            <returns>A reference to itself.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeFloat.ToTagDouble">
            <summary>
            Converts the node to a new double node.
            </summary>
            <returns>A double node representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeFloat.GetTagType">
            <summary>
            Gets the tag type of the node.
            </summary>
            <returns>The TAG_FLOAT tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeFloat.IsCastableTo(Substrate.Nbt.TagType)">
            <summary>
            Checks if the node is castable to another node of a given tag type.
            </summary>
            <param name="type">An NBT tag type.</param>
            <returns>Status indicating whether this object could be cast to a node type represented by the given tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeFloat.#ctor">
            <summary>
            Constructs a new float node with a data value of 0.0.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeFloat.#ctor(System.Single)">
            <summary>
            Constructs a new float node.
            </summary>
            <param name="d">The value to set the node's tag data value.</param>
        </member>
        <member name="M:Substrate.Nbt.TagNodeFloat.Copy">
            <summary>
            Makes a deep copy of the node.
            </summary>
            <returns>A new float node representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeFloat.ToString">
            <summary>
            Gets a string representation of the node's data.
            </summary>
            <returns>String representation of the node's data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeFloat.op_Implicit(System.Single)~Substrate.Nbt.TagNodeFloat">
            <summary>
            Converts a system float to a float node representing the same value.
            </summary>
            <param name="f">A float value.</param>
            <returns>A new float node containing the given value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeFloat.op_Implicit(Substrate.Nbt.TagNodeFloat)~System.Single">
            <summary>
            Converts a float node to a system float representing the same value.
            </summary>
            <param name="f">A float node.</param>
            <returns>A system float set to the node's data value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeFloat.op_Implicit(Substrate.Nbt.TagNodeFloat)~System.Double">
            <summary>
            Converts a float node to a system double representing the same value.
            </summary>
            <param name="f">A float node.</param>
            <returns>A system double set to the node's data value.</returns>
        </member>
        <member name="P:Substrate.Nbt.TagNodeFloat.Data">
            <summary>
            Gets or sets a float of tag data.
            </summary>
        </member>
        <member name="T:Substrate.Dimension">
            <summary>
            A collection of constants to specify different Minecraft world dimensions.
            </summary>
        </member>
        <member name="F:Substrate.Dimension.NETHER">
            <summary>
            Specifies the Nether dimension.
            </summary>
        </member>
        <member name="F:Substrate.Dimension.DEFAULT">
            <summary>
            Specifies the default overworld.
            </summary>
        </member>
        <member name="F:Substrate.Dimension.THE_END">
            <summary>
            Specifies the Enderman dimension, The End.
            </summary>
        </member>
        <member name="T:Substrate.SpawnPoint">
            <summary>
            Represents the spawn point of a player or world.
            </summary>
            <remarks><see cref="T:Substrate.SpawnPoint"/> values are immutable.  To change an existing spawn point, create a new instance with
            the new coordinate(s).  Since some spawn points are optional in Minecraft, this helps safegaurd against saving a partial
            spawn point.</remarks>
        </member>
        <member name="M:Substrate.SpawnPoint.#ctor(System.Int32,System.Int32,System.Int32)">
            <summary>
            Creates a new spawn point.
            </summary>
            <param name="x">The global X-coordinate of the spawn point.</param>
            <param name="y">The global Y-coordinate of the spawn point.</param>
            <param name="z">The global Z-coordinate of the spawn point.</param>
        </member>
        <member name="M:Substrate.SpawnPoint.Equals(Substrate.SpawnPoint)">
            <summary>
            Checks if two <see cref="T:Substrate.SpawnPoint"/> objects are considered equal.
            </summary>
            <param name="spawn">A <see cref="T:Substrate.SpawnPoint"/> to compare against.</param>
            <returns>True if the two <see cref="T:Substrate.SpawnPoint"/> objects are equal; false otherwise.</returns>
        </member>
        <member name="M:Substrate.SpawnPoint.Equals(System.Object)">
            <summary>
            Checks if two <see cref="T:Substrate.SpawnPoint"/> objects are considered equal.
            </summary>
            <param name="o">An to compare against.</param>
            <returns>True if the two <see cref="T:Substrate.SpawnPoint"/> objects are equal; false otherwise.</returns>
        </member>
        <member name="M:Substrate.SpawnPoint.GetHashCode">
            <summary>
            Returns the hash code for this instance.
            </summary>
            <returns>A hash code for this instance.</returns>
        </member>
        <member name="M:Substrate.SpawnPoint.op_Equality(Substrate.SpawnPoint,Substrate.SpawnPoint)">
            <summary>
            Checks if two <see cref="T:Substrate.SpawnPoint"/> objects are considered equal.
            </summary>
            <param name="k1">The first <see cref="T:Substrate.SpawnPoint"/> in the comparison.</param>
            <param name="k2">The second <see cref="T:Substrate.SpawnPoint"/> in the comparison.</param>
            <returns>True if the two <see cref="T:Substrate.SpawnPoint"/> objects are equal; false otherwise.</returns>
        </member>
        <member name="M:Substrate.SpawnPoint.op_Inequality(Substrate.SpawnPoint,Substrate.SpawnPoint)">
            <summary>
            Checks if two <see cref="T:Substrate.SpawnPoint"/> objects are considered unequal.
            </summary>
            <param name="k1">The first <see cref="T:Substrate.SpawnPoint"/> in the comparison.</param>
            <param name="k2">The second <see cref="T:Substrate.SpawnPoint"/> in the comparison.</param>
            <returns>True if the two <see cref="T:Substrate.SpawnPoint"/> objects are not equal; false otherwise.</returns>
        </member>
        <member name="M:Substrate.SpawnPoint.ToString">
            <summary>
            Returns a string representation of the <see cref="T:Substrate.SpawnPoint"/>.
            </summary>
            <returns>A string representing this <see cref="T:Substrate.SpawnPoint"/>.</returns>
        </member>
        <member name="P:Substrate.SpawnPoint.X">
            <summary>
            Gets the global X-coordinate of the spawn point (in blocks).
            </summary>
        </member>
        <member name="P:Substrate.SpawnPoint.Y">
            <summary>
            Gets the global Y-coordinate of the spawn point (in blocks).
            </summary>
        </member>
        <member name="P:Substrate.SpawnPoint.Z">
            <summary>
            Gets the global Z-coordinate of the spawn point (in blocks).
            </summary>
        </member>
        <member name="T:Substrate.EntityFactory">
            <summary>
            Creates new instances of concrete <see cref="T:Substrate.TypedEntity"/> types from a dynamic registry.
            </summary>
            <remarks>This factory allows specific <see cref="T:Substrate.TypedEntity"/> objects to be generated as an NBT tree is parsed.  New types can be
            registered with the factory at any time, so that custom <see cref="T:Substrate.TypedEntity"/> types can be supported.  By default, the standard
            Entities of Minecraft are registered with the factory at startup and bound to their respective 'id' fields.</remarks>
        </member>
        <member name="M:Substrate.EntityFactory.Create(System.String)">
            <summary>
            Create a new instance of a concrete <see cref="T:Substrate.TypedEntity"/> type by name.
            </summary>
            <param name="type">The name that a concrete <see cref="T:Substrate.TypedEntity"/> type was registered with.</param>
            <returns>A new instance of a concrete <see cref="T:Substrate.TypedEntity"/> type, or null if no type was registered with the given name.</returns>
        </member>
        <member name="M:Substrate.EntityFactory.Create(Substrate.Nbt.TagNodeCompound)">
            <summary>
            Create a new instance of a concrete <see cref="T:Substrate.TypedEntity"/> type by NBT node.
            </summary>
            <param name="tree">A <see cref="T:Substrate.Nbt.TagNodeCompound"/> representing a single Entity, containing an 'id' field of the Entity's registered name.</param>
            <returns>A new instance of a concrete <see cref="T:Substrate.TypedEntity"/> type, or null if no type was registered with the given name.</returns>
        </member>
        <member name="M:Substrate.EntityFactory.CreateGeneric(Substrate.Nbt.TagNodeCompound)">
            <summary>
            Creates a new instance of a nonspecific <see cref="T:Substrate.TypedEntity"/> object by NBT node.
            </summary>
            <param name="tree">A <see cref="T:Substrate.Nbt.TagNodeCompound"/> representing a single Entity, containing an 'id' field.</param>
            <returns>A new instance of a <see cref="T:Substrate.TypedEntity"/> object, or null if the entity is not typed.</returns>
        </member>
        <member name="M:Substrate.EntityFactory.Lookup(System.String)">
            <summary>
            Lookup a concrete <see cref="T:Substrate.TypedEntity"/> type by name.
            </summary>
            <param name="type">The name that a concrete <see cref="T:Substrate.TypedEntity"/> type was registered with.</param>
            <returns>The <see cref="T:System.Type"/> of a concrete <see cref="T:Substrate.TypedEntity"/> type, or null if no type was registered with the given name.</returns>
        </member>
        <member name="M:Substrate.EntityFactory.Register(System.String,System.Type)">
            <summary>
            Registers a new concrete <see cref="T:Substrate.TypedEntity"/> type with the <see cref="T:Substrate.EntityFactory"/>, binding it to a given name.
            </summary>
            <param name="id">The name to bind to a concrete <see cref="T:Substrate.TypedEntity"/> type.</param>
            <param name="subtype">The <see cref="T:System.Type"/> of a concrete <see cref="T:Substrate.TypedEntity"/> type.</param>
        </member>
        <member name="P:Substrate.EntityFactory.RegisteredEntities">
            <summary>
            Gets an enumerator over all registered Entities.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.SchemaNodeList">
            <summary>
            A concrete <see cref="T:Substrate.Nbt.SchemaNode"/> representing a <see cref="T:Substrate.Nbt.TagNodeList"/>.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeList.#ctor(System.String,Substrate.Nbt.TagType)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeList"/> representing a <see cref="T:Substrate.Nbt.TagNodeList"/> named <paramref name="name"/> containing items of type <paramref name="type"/>.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="type">The type of items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeList.#ctor(System.String,Substrate.Nbt.TagType,Substrate.Nbt.SchemaOptions)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeList"/> with additional options.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="type">The type of items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="options">One or more option flags modifying the processing of this node.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeList.#ctor(System.String,Substrate.Nbt.TagType,System.Int32)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeList"/> representing a <see cref="T:Substrate.Nbt.TagNodeList"/> named <paramref name="name"/> containing <paramref name="length"/> items of type <paramref name="type"/>.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="type">The type of items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="length">The number of items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeList.#ctor(System.String,Substrate.Nbt.TagType,System.Int32,Substrate.Nbt.SchemaOptions)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeList"/> with additional options.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="type">The type of items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="length">The number of items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="options">One or more option flags modifying the processing of this node.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeList.#ctor(System.String,Substrate.Nbt.TagType,Substrate.Nbt.SchemaNode)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeList"/> representing a <see cref="T:Substrate.Nbt.TagNodeList"/> named <paramref name="name"/> containing items of type <paramref name="type"/> matching the given schema.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="type">The type of items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="subschema">A <see cref="T:Substrate.Nbt.SchemaNode"/> representing a schema to verify against items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeList.#ctor(System.String,Substrate.Nbt.TagType,Substrate.Nbt.SchemaNode,Substrate.Nbt.SchemaOptions)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeList"/> with additional options.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="type">The type of items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="subschema">A <see cref="T:Substrate.Nbt.SchemaNode"/> representing a schema to verify against items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="options">One or more option flags modifying the processing of this node.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeList.#ctor(System.String,Substrate.Nbt.TagType,System.Int32,Substrate.Nbt.SchemaNode)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeList"/> representing a <see cref="T:Substrate.Nbt.TagNodeList"/> named <paramref name="name"/> containing <paramref name="length"/> items of type <paramref name="type"/> matching the given schema.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="type">The type of items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="length">The number of items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="subschema">A <see cref="T:Substrate.Nbt.SchemaNode"/> representing a schema to verify against items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeList.#ctor(System.String,Substrate.Nbt.TagType,System.Int32,Substrate.Nbt.SchemaNode,Substrate.Nbt.SchemaOptions)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeList"/> with additional options.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="type">The type of items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="length">The number of items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="subschema">A <see cref="T:Substrate.Nbt.SchemaNode"/> representing a schema to verify against items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.</param>
            <param name="options">One or more option flags modifying the processing of this node.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeList.BuildDefaultTree">
            <summary>
            Constructs a default <see cref="T:Substrate.Nbt.TagNodeList"/> satisfying the constraints of this node.
            </summary>
            <returns>A <see cref="T:Substrate.Nbt.TagNodeList"/> with a sensible default value.  If a length is specified, default child <see cref="T:Substrate.Nbt.TagNode"/> objects of the necessary type will be created and added to the <see cref="T:Substrate.Nbt.TagNodeList"/>.</returns>
        </member>
        <member name="P:Substrate.Nbt.SchemaNodeList.Length">
            <summary>
            Gets the expected number of items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.SchemaNodeList.Type">
            <summary>
            Gets the expected <see cref="T:Substrate.Nbt.TagType"/> of the items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.SchemaNodeList.SubSchema">
            <summary>
            Gets a <see cref="T:Substrate.Nbt.SchemaNode"/> representing a schema that items contained in the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/> should be verified against.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.SchemaNodeList.HasExpectedLength">
            <summary>
            Indicates whether there is an expected number of items of the corresponding <see cref="T:Substrate.Nbt.TagNodeList"/>.
            </summary>
        </member>
        <member name="T:Substrate.Data.ColorGroup">
            <summary>
            Represents a range of color index values that pertains to an individual group of blocks.
            </summary>
        </member>
        <member name="T:Substrate.Data.MapConverter">
            <summary>
            A utility class for converting <see cref="T:Substrate.Data.Map"/> colors and data.
            </summary>
        </member>
        <member name="M:Substrate.Data.MapConverter.#ctor">
            <summary>
            Creates a new <see cref="T:Substrate.Data.MapConverter"/> with a Minecraft-default color-index and block-index.
            </summary>
        </member>
        <member name="M:Substrate.Data.MapConverter.BlockToColorIndex(System.Int32)">
            <summary>
            Returns the baseline color index associated with the <see cref="T:Substrate.Data.ColorGroup"/> currently representing the given block ID.
            </summary>
            <param name="blockId">The ID of a block.</param>
            <returns>A color index value.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown when <paramref name="blockId"/> is out of its normal range.</exception>
        </member>
        <member name="M:Substrate.Data.MapConverter.BlockToColorIndex(System.Int32,System.Int32)">
            <summary>
            Returns a color index associated with the <see cref="T:Substrate.Data.ColorGroup"/> currently representing the given block ID and based on the given level.
            </summary>
            <param name="blockId">The ID of a block.</param>
            <param name="level">The color level to select from within the derived <see cref="T:Substrate.Data.ColorGroup"/>.</param>
            <returns>A color index value.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown when either <paramref name="blockId"/> or <paramref name="level"/> are out of their normal ranges.</exception>
        </member>
        <member name="M:Substrate.Data.MapConverter.BlockToColor(System.Int32)">
            <summary>
            Returns a <see cref="T:System.Drawing.Color"/> value assocated with the <see cref="T:Substrate.Data.ColorGroup"/> currently representing the given block ID.
            </summary>
            <param name="blockId">The ID of a block.</param>
            <returns>A <see cref="T:System.Drawing.Color"/> value.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown when <paramref name="blockId"/> is out of its normal range.</exception>
            <exception cref="T:System.InvalidOperationException">Thrown when <paramref name="blockId"/> maps to an invalid color index.</exception>
        </member>
        <member name="M:Substrate.Data.MapConverter.BlockToColor(System.Int32,System.Int32)">
            <summary>
            Returns a <see cref="T:System.Drawing.Color"/> value associated with the <see cref="T:Substrate.Data.ColorGroup"/> currently representing the given block ID and based on the given level.
            </summary>
            <param name="blockId">The ID of a block.</param>
            <param name="level">The color level to select from within the derived <see cref="T:Substrate.Data.ColorGroup"/>.</param>
            <returns>A <see cref="T:System.Drawing.Color"/> value.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown when either <paramref name="blockId"/> or <paramref name="level"/> are out of their normal ranges.</exception>
            <exception cref="T:System.InvalidOperationException">Thrown when <paramref name="blockId"/> maps to an invalid color index.</exception>
        </member>
        <member name="M:Substrate.Data.MapConverter.ColorIndexToGroup(System.Int32)">
            <summary>
            Returns the <see cref="T:Substrate.Data.ColorGroup"/> that a particular color index is part of.
            </summary>
            <param name="colorIndex">A color index value.</param>
            <returns>A <see cref="T:Substrate.Data.ColorGroup"/> value.</returns>
        </member>
        <member name="M:Substrate.Data.MapConverter.GroupToColorIndex(Substrate.Data.ColorGroup)">
            <summary>
            Returns the baseline color index within a particular <see cref="T:Substrate.Data.ColorGroup"/>.
            </summary>
            <param name="group">A <see cref="T:Substrate.Data.ColorGroup"/> value.</param>
            <returns>The baseline (level = 0) color index value for the given <see cref="T:Substrate.Data.ColorGroup"/>.</returns>
        </member>
        <member name="M:Substrate.Data.MapConverter.GroupToColorIndex(Substrate.Data.ColorGroup,System.Int32)">
            <summary>
            Returns the color index for a given <see cref="T:Substrate.Data.ColorGroup"/> and group level.
            </summary>
            <param name="group">A <see cref="T:Substrate.Data.ColorGroup"/> value.</param>
            <param name="level">A level value within the <see cref="T:Substrate.Data.ColorGroup"/>.</param>
            <returns>The color index value for the given <see cref="T:Substrate.Data.ColorGroup"/> and group level.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown when the <paramref name="level"/> is out of range with respect to the current <see cref="P:Substrate.Data.MapConverter.ColorGroupSize"/> parameter.</exception>
        </member>
        <member name="M:Substrate.Data.MapConverter.GroupToColor(Substrate.Data.ColorGroup)">
            <summary>
            Returns the baseline <see cref="T:System.Drawing.Color"/> within a particular <see cref="T:Substrate.Data.ColorGroup"/>.
            </summary>
            <param name="group">A <see cref="T:Substrate.Data.ColorGroup"/> value.</param>
            <returns>The baseline (level = 0) <see cref="T:System.Drawing.Color"/> for the given <see cref="T:Substrate.Data.ColorGroup"/>.</returns>
        </member>
        <member name="M:Substrate.Data.MapConverter.GroupToColor(Substrate.Data.ColorGroup,System.Int32)">
            <summary>
            Returns the <see cref="T:System.Drawing.Color"/> for a given <see cref="T:Substrate.Data.ColorGroup"/> and group level.
            </summary>
            <param name="group">A <see cref="T:Substrate.Data.ColorGroup"/> value.</param>
            <param name="level">A level value within the <see cref="T:Substrate.Data.ColorGroup"/> and group level.</param>
            <returns>The <see cref="T:System.Drawing.Color"/> for the given <see cref="T:Substrate.Data.ColorGroup"/> and group level.</returns>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown when the <paramref name="level"/> is out of range with respect to the current <see cref="P:Substrate.Data.MapConverter.ColorGroupSize"/> parameter.</exception>
            <exception cref="T:System.InvalidOperationException">Thrown when the <paramref name="group"/> and <paramref name="level"/> map to an invalid color index.</exception>
        </member>
        <member name="M:Substrate.Data.MapConverter.RefreshColorCache">
            <summary>
            Rebuilds the internal color conversion tables.  Should be called after modifying the <see cref="P:Substrate.Data.MapConverter.ColorIndex"/> table.
            </summary>
        </member>
        <member name="M:Substrate.Data.MapConverter.NearestColorIndex(System.Drawing.Color)">
            <summary>
            Given a <see cref="T:System.Drawing.Color"/>, returns the index of the closest matching color from the color index table.
            </summary>
            <param name="color">The source <see cref="T:System.Drawing.Color"/>.</param>
            <returns>The closest matching color index value.</returns>
            <remarks>This method performs color comparisons in the CIELAB color space, to find the best match according to human perception.</remarks>
        </member>
        <member name="M:Substrate.Data.MapConverter.NearestColor(System.Drawing.Color)">
            <summary>
            Given a <see cref="T:System.Drawing.Color"/>, returns the cloest matching <see cref="T:System.Drawing.Color"/> from the color index table.
            </summary>
            <param name="color">The source <see cref="T:System.Drawing.Color"/>.</param>
            <returns>The closest matching <see cref="T:System.Drawing.Color"/>.</returns>
            <remarks>This method performs color comparisons in the CIELAB color space, to find the best match according to human perception.</remarks>
        </member>
        <member name="M:Substrate.Data.MapConverter.BitmapToMap(Substrate.Data.Map,System.Drawing.Bitmap)">
            <summary>
            Fills a <see cref="T:Substrate.Data.Map"/>'s color data using nearest-matching colors from a source <see cref="T:System.Drawing.Bitmap"/>.
            </summary>
            <param name="map">The <see cref="T:Substrate.Data.Map"/> to modify.</param>
            <param name="bmp">The source <see cref="T:System.Drawing.Bitmap"/>.</param>
            <exception cref="T:System.InvalidOperationException">Thrown when the <paramref name="map"/> and <paramref name="bmp"/> objects have different dimensions.</exception>
        </member>
        <member name="M:Substrate.Data.MapConverter.MapToBitmap(Substrate.Data.Map)">
            <summary>
            Creates a 32bpp <see cref="T:System.Drawing.Bitmap"/> from a <see cref="T:Substrate.Data.Map"/>.
            </summary>
            <param name="map">The source <see cref="T:Substrate.Data.Map"/> object.</param>
            <returns>A 32bpp <see cref="T:System.Drawing.Bitmap"/> with the same dimensions and pixel data as the source <see cref="T:Substrate.Data.Map"/>.</returns>
        </member>
        <member name="P:Substrate.Data.MapConverter.ColorGroupSize">
            <summary>
            Gets or sets the number of color levels within each color group.  The Minecraft default is 4.
            </summary>
            <exception cref="T:System.ArgumentOutOfRangeException">Thrown when the property is assigned a non-positive value.</exception>
        </member>
        <member name="P:Substrate.Data.MapConverter.ColorIndex">
            <summary>
            Gets the color index table, used to translate map color index values to RGB color values.
            </summary>
        </member>
        <member name="P:Substrate.Data.MapConverter.BlockIndex">
            <summary>
            Gets the block index table, used to translate block IDs to <see cref="T:Substrate.Data.ColorGroup"/>s that represent them.
            </summary>
        </member>
        <member name="T:Substrate.Core.OpenWorldCallback">
            <summary>
            A callback function to open a world and return it as an instance of a concrete derivative of <see cref="T:Substrate.NbtWorld"/>.
            </summary>
            <param name="path">The path to the directory of the world to open.</param>
            <returns>An instance of a concrete derivative of <see cref="T:Substrate.NbtWorld"/>.</returns>
        </member>
        <member name="T:Substrate.Core.OpenWorldEventArgs">
            <summary>
            Event arugments and response data for any handlers trying to determine if they can open a given world.
            </summary>
        </member>
        <member name="M:Substrate.Core.OpenWorldEventArgs.#ctor(System.String)">
            <summary>
            Create a new instance of event arguments.
            </summary>
            <param name="path">The path to the directory of a world.</param>
        </member>
        <member name="M:Substrate.Core.OpenWorldEventArgs.AddHandler(Substrate.Core.OpenWorldCallback)">
            <summary>
            Adds an <see cref="T:Substrate.Core.OpenWorldCallback"/> delegate that can open a world and return a corresponding <see cref="T:Substrate.NbtWorld"/> object.
            </summary>
            <param name="callback">The delegate to return to the code that raised the event.</param>
        </member>
        <member name="P:Substrate.Core.OpenWorldEventArgs.Path">
            <summary>
            Gets the path to the directory of a world being investigated.
            </summary>
        </member>
        <member name="T:Substrate.AlphaWorld">
            <summary>
            Represents an Alpha-compatible (up to Beta 1.2) Minecraft world.
            </summary>
        </member>
        <member name="M:Substrate.AlphaWorld.GetBlockManager">
            <summary>
            Gets a <see cref="T:Substrate.BlockManager"/> for the default dimension.
            </summary>
            <returns>A <see cref="T:Substrate.BlockManager"/> tied to the default dimension in this world.</returns>
            <remarks>Get a <see cref="T:Substrate.BlockManager"/> if you need to manage blocks as a global, unbounded matrix.  This abstracts away
            any higher-level organizational divisions.  If your task is going to be heavily performance-bound, consider getting a
            <see cref="T:Substrate.RegionChunkManager"/> instead and working with blocks on a chunk-local level.</remarks>
        </member>
        <member name="M:Substrate.AlphaWorld.GetBlockManager(System.Int32)">
            <summary>
            Gets a <see cref="T:Substrate.BlockManager"/> for the given dimension.
            </summary>
            <param name="dim">The id of the dimension to look up.</param>
            <returns>A <see cref="T:Substrate.BlockManager"/> tied to the given dimension in this world.</returns>
            <remarks>Get a <see cref="T:Substrate.BlockManager"/> if you need to manage blocks as a global, unbounded matrix.  This abstracts away
            any higher-level organizational divisions.  If your task is going to be heavily performance-bound, consider getting a
            <see cref="T:Substrate.RegionChunkManager"/> instead and working with blocks on a chunk-local level.</remarks>
        </member>
        <member name="M:Substrate.AlphaWorld.GetChunkManager">
            <summary>
            Gets a <see cref="T:Substrate.RegionChunkManager"/> for the default dimension.
            </summary>
            <returns>A <see cref="T:Substrate.RegionChunkManager"/> tied to the default dimension in this world.</returns>
            <remarks>Get a <see cref="T:Substrate.RegionChunkManager"/> if you you need to work with easily-digestible, bounded chunks of blocks.</remarks>
        </member>
        <member name="M:Substrate.AlphaWorld.GetChunkManager(System.Int32)">
            <summary>
            Gets a <see cref="T:Substrate.RegionChunkManager"/> for the given dimension.
            </summary>
            <param name="dim">The id of the dimension to look up.</param>
            <returns>A <see cref="T:Substrate.RegionChunkManager"/> tied to the given dimension in this world.</returns>
            <remarks>Get a <see cref="T:Substrate.RegionChunkManager"/> if you you need to work with easily-digestible, bounded chunks of blocks.</remarks>
        </member>
        <member name="M:Substrate.AlphaWorld.GetPlayerManager">
            <summary>
            Gets a <see cref="T:Substrate.PlayerManager"/> for maanging players on multiplayer worlds.
            </summary>
            <returns>A <see cref="T:Substrate.PlayerManager"/> for this world.</returns>
            <remarks>To manage the player of a single-player world, get a <see cref="P:Substrate.AlphaWorld.Level"/> object for the world instead.</remarks>
        </member>
        <member name="M:Substrate.AlphaWorld.Save">
            <inherits />
        </member>
        <member name="M:Substrate.AlphaWorld.Open(System.String)">
            <summary>
            Opens an existing Alpha-compatible Minecraft world and returns a new <see cref="T:Substrate.AlphaWorld"/> to represent it.
            </summary>
            <param name="path">The path to the directory containing the world's level.dat, or the path to level.dat itself.</param>
            <returns>A new <see cref="T:Substrate.AlphaWorld"/> object representing an existing world on disk.</returns>
        </member>
        <member name="M:Substrate.AlphaWorld.Create(System.String)">
            <summary>
            Creates a new Alpha-compatible Minecraft world and returns a new <see cref="T:Substrate.AlphaWorld"/> to represent it.
            </summary>
            <param name="path">The path to the directory where the new world should be stored.</param>
            <returns>A new <see cref="T:Substrate.AlphaWorld"/> object representing a new world.</returns>
            <remarks>This method will attempt to create the specified directory immediately if it does not exist, but will not
            write out any world data unless it is explicitly saved at a later time.</remarks>
        </member>
        <member name="M:Substrate.AlphaWorld.GetBlockManagerVirt(System.Int32)">
            <exclude/>
        </member>
        <member name="M:Substrate.AlphaWorld.GetChunkManagerVirt(System.Int32)">
            <exclude/>
        </member>
        <member name="M:Substrate.AlphaWorld.GetPlayerManagerVirt">
            <exclude/>
        </member>
        <member name="P:Substrate.AlphaWorld.Level">
            <summary>
            Gets a reference to this world's <see cref="P:Substrate.AlphaWorld.Level"/> object.
            </summary>
        </member>
        <member name="T:Ionic.Zlib.ZlibCodec">
             <summary>
             Encoder and Decoder for ZLIB and DEFLATE (IETF RFC1950 and RFC1951).
             </summary>
            
             <remarks>
             This class compresses and decompresses data according to the Deflate algorithm
             and optionally, the ZLIB format, as documented in <see
             href="http://www.ietf.org/rfc/rfc1950.txt">RFC 1950 - ZLIB</see> and <see
             href="http://www.ietf.org/rfc/rfc1951.txt">RFC 1951 - DEFLATE</see>.
             </remarks>
        </member>
        <member name="F:Ionic.Zlib.ZlibCodec.InputBuffer">
            <summary>
            The buffer from which data is taken.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibCodec.NextIn">
            <summary>
            An index into the InputBuffer array, indicating where to start reading. 
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibCodec.AvailableBytesIn">
            <summary>
            The number of bytes available in the InputBuffer, starting at NextIn. 
            </summary>
            <remarks>
            Generally you should set this to InputBuffer.Length before the first Inflate() or Deflate() call. 
            The class will update this number as calls to Inflate/Deflate are made.
            </remarks>
        </member>
        <member name="F:Ionic.Zlib.ZlibCodec.TotalBytesIn">
            <summary>
            Total number of bytes read so far, through all calls to Inflate()/Deflate().
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibCodec.OutputBuffer">
            <summary>
            Buffer to store output data.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibCodec.NextOut">
            <summary>
            An index into the OutputBuffer array, indicating where to start writing. 
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibCodec.AvailableBytesOut">
            <summary>
            The number of bytes available in the OutputBuffer, starting at NextOut. 
            </summary>
            <remarks>
            Generally you should set this to OutputBuffer.Length before the first Inflate() or Deflate() call. 
            The class will update this number as calls to Inflate/Deflate are made.
            </remarks>
        </member>
        <member name="F:Ionic.Zlib.ZlibCodec.TotalBytesOut">
            <summary>
            Total number of bytes written to the output so far, through all calls to Inflate()/Deflate().
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibCodec.Message">
            <summary>
            used for diagnostics, when something goes wrong!
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibCodec.CompressLevel">
            <summary>
            The compression level to use in this codec.  Useful only in compression mode.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibCodec.WindowBits">
            <summary>
            The number of Window Bits to use.  
            </summary>
            <remarks>
            This gauges the size of the sliding window, and hence the 
            compression effectiveness as well as memory consumption. It's best to just leave this 
            setting alone if you don't know what it is.  The maximum value is 15 bits, which implies
            a 32k window.  
            </remarks>
        </member>
        <member name="F:Ionic.Zlib.ZlibCodec.Strategy">
            <summary>
            The compression strategy to use.
            </summary>
            <remarks>
            This is only effective in compression.  The theory offered by ZLIB is that different
            strategies could potentially produce significant differences in compression behavior
            for different data sets.  Unfortunately I don't have any good recommendations for how
            to set it differently.  When I tested changing the strategy I got minimally different
            compression performance. It's best to leave this property alone if you don't have a
            good feel for it.  Or, you may want to produce a test harness that runs through the
            different strategy options and evaluates them on different file types. If you do that,
            let me know your results.
            </remarks>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.#ctor">
            <summary>
            Create a ZlibCodec.
            </summary>
            <remarks>
            If you use this default constructor, you will later have to explicitly call 
            InitializeInflate() or InitializeDeflate() before using the ZlibCodec to compress 
            or decompress. 
            </remarks>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.#ctor(Ionic.Zlib.CompressionMode)">
            <summary>
            Create a ZlibCodec that either compresses or decompresses.
            </summary>
            <param name="mode">
            Indicates whether the codec should compress (deflate) or decompress (inflate).
            </param>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.InitializeInflate">
            <summary>
            Initialize the inflation state. 
            </summary>
            <remarks>
            It is not necessary to call this before using the ZlibCodec to inflate data; 
            It is implicitly called when you call the constructor.
            </remarks>
            <returns>Z_OK if everything goes well.</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.InitializeInflate(System.Boolean)">
             <summary>
             Initialize the inflation state with an explicit flag to
             govern the handling of RFC1950 header bytes.
             </summary>
            
             <remarks>
             By default, the ZLIB header defined in <see
             href="http://www.ietf.org/rfc/rfc1950.txt">RFC 1950</see> is expected.  If
             you want to read a zlib stream you should specify true for
             expectRfc1950Header.  If you have a deflate stream, you will want to specify
             false. It is only necessary to invoke this initializer explicitly if you
             want to specify false.
             </remarks>
            
             <param name="expectRfc1950Header">whether to expect an RFC1950 header byte
             pair when reading the stream of data to be inflated.</param>
            
             <returns>Z_OK if everything goes well.</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.InitializeInflate(System.Int32)">
            <summary>
            Initialize the ZlibCodec for inflation, with the specified number of window bits. 
            </summary>
            <param name="windowBits">The number of window bits to use. If you need to ask what that is, 
            then you shouldn't be calling this initializer.</param>
            <returns>Z_OK if all goes well.</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.InitializeInflate(System.Int32,System.Boolean)">
             <summary>
             Initialize the inflation state with an explicit flag to govern the handling of
             RFC1950 header bytes. 
             </summary>
            
             <remarks>
             If you want to read a zlib stream you should specify true for
             expectRfc1950Header. In this case, the library will expect to find a ZLIB
             header, as defined in <see href="http://www.ietf.org/rfc/rfc1950.txt">RFC
             1950</see>, in the compressed stream.  If you will be reading a DEFLATE or
             GZIP stream, which does not have such a header, you will want to specify
             false.
             </remarks>
            
             <param name="expectRfc1950Header">whether to expect an RFC1950 header byte pair when reading 
             the stream of data to be inflated.</param>
             <param name="windowBits">The number of window bits to use. If you need to ask what that is, 
             then you shouldn't be calling this initializer.</param>
             <returns>Z_OK if everything goes well.</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.Inflate(Ionic.Zlib.FlushType)">
             <summary>
             Inflate the data in the InputBuffer, placing the result in the OutputBuffer.
             </summary>
             <remarks>
             You must have set InputBuffer and OutputBuffer, NextIn and NextOut, and AvailableBytesIn and 
             AvailableBytesOut  before calling this method.
             </remarks>
             <example>
             <code>
             private void InflateBuffer()
             {
                 int bufferSize = 1024;
                 byte[] buffer = new byte[bufferSize];
                 ZlibCodec decompressor = new ZlibCodec();
             
                 Console.WriteLine("\n============================================");
                 Console.WriteLine("Size of Buffer to Inflate: {0} bytes.", CompressedBytes.Length);
                 MemoryStream ms = new MemoryStream(DecompressedBytes);
             
                 int rc = decompressor.InitializeInflate();
             
                 decompressor.InputBuffer = CompressedBytes;
                 decompressor.NextIn = 0;
                 decompressor.AvailableBytesIn = CompressedBytes.Length;
             
                 decompressor.OutputBuffer = buffer;
             
                 // pass 1: inflate 
                 do
                 {
                     decompressor.NextOut = 0;
                     decompressor.AvailableBytesOut = buffer.Length;
                     rc = decompressor.Inflate(FlushType.None);
             
                     if (rc != ZlibConstants.Z_OK &amp;&amp; rc != ZlibConstants.Z_STREAM_END)
                         throw new Exception("inflating: " + decompressor.Message);
             
                     ms.Write(decompressor.OutputBuffer, 0, buffer.Length - decompressor.AvailableBytesOut);
                 }
                 while (decompressor.AvailableBytesIn &gt; 0 || decompressor.AvailableBytesOut == 0);
             
                 // pass 2: finish and flush
                 do
                 {
                     decompressor.NextOut = 0;
                     decompressor.AvailableBytesOut = buffer.Length;
                     rc = decompressor.Inflate(FlushType.Finish);
             
                     if (rc != ZlibConstants.Z_STREAM_END &amp;&amp; rc != ZlibConstants.Z_OK)
                         throw new Exception("inflating: " + decompressor.Message);
             
                     if (buffer.Length - decompressor.AvailableBytesOut &gt; 0)
                         ms.Write(buffer, 0, buffer.Length - decompressor.AvailableBytesOut);
                 }
                 while (decompressor.AvailableBytesIn &gt; 0 || decompressor.AvailableBytesOut == 0);
             
                 decompressor.EndInflate();
             }
            
             </code>
             </example>
             <param name="flush">The flush to use when inflating.</param>
             <returns>Z_OK if everything goes well.</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.EndInflate">
            <summary>
            Ends an inflation session. 
            </summary>
            <remarks>
            Call this after successively calling Inflate().  This will cause all buffers to be flushed. 
            After calling this you cannot call Inflate() without a intervening call to one of the
            InitializeInflate() overloads.
            </remarks>
            <returns>Z_OK if everything goes well.</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.SyncInflate">
            <summary>
            I don't know what this does!
            </summary>
            <returns>Z_OK if everything goes well.</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.InitializeDeflate">
            <summary>
            Initialize the ZlibCodec for deflation operation.
            </summary>
            <remarks>
            The codec will use the MAX window bits and the default level of compression.
            </remarks>
            <example>
            <code>
             int bufferSize = 40000;
             byte[] CompressedBytes = new byte[bufferSize];
             byte[] DecompressedBytes = new byte[bufferSize];
             
             ZlibCodec compressor = new ZlibCodec();
             
             compressor.InitializeDeflate(CompressionLevel.Default);
             
             compressor.InputBuffer = System.Text.ASCIIEncoding.ASCII.GetBytes(TextToCompress);
             compressor.NextIn = 0;
             compressor.AvailableBytesIn = compressor.InputBuffer.Length;
             
             compressor.OutputBuffer = CompressedBytes;
             compressor.NextOut = 0;
             compressor.AvailableBytesOut = CompressedBytes.Length;
             
             while (compressor.TotalBytesIn != TextToCompress.Length &amp;&amp; compressor.TotalBytesOut &lt; bufferSize)
             {
               compressor.Deflate(FlushType.None);
             }
             
             while (true)
             {
               int rc= compressor.Deflate(FlushType.Finish);
               if (rc == ZlibConstants.Z_STREAM_END) break;
             }
             
             compressor.EndDeflate();
              
            </code>
            </example>
            <returns>Z_OK if all goes well. You generally don't need to check the return code.</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.InitializeDeflate(Ionic.Zlib.CompressionLevel)">
            <summary>
            Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel.
            </summary>
            <remarks>
            The codec will use the maximum window bits (15) and the specified
            CompressionLevel.  It will emit a ZLIB stream as it compresses.
            </remarks>
            <param name="level">The compression level for the codec.</param>
            <returns>Z_OK if all goes well.</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.InitializeDeflate(Ionic.Zlib.CompressionLevel,System.Boolean)">
            <summary>
            Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel, 
            and the explicit flag governing whether to emit an RFC1950 header byte pair.
            </summary>
            <remarks>
            The codec will use the maximum window bits (15) and the specified CompressionLevel.
            If you want to generate a zlib stream, you should specify true for
            wantRfc1950Header. In this case, the library will emit a ZLIB
            header, as defined in <see href="http://www.ietf.org/rfc/rfc1950.txt">RFC
            1950</see>, in the compressed stream.  
            </remarks>
            <param name="level">The compression level for the codec.</param>
            <param name="wantRfc1950Header">whether to emit an initial RFC1950 byte pair in the compressed stream.</param>
            <returns>Z_OK if all goes well.</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.InitializeDeflate(Ionic.Zlib.CompressionLevel,System.Int32)">
            <summary>
            Initialize the ZlibCodec for deflation operation, using the specified CompressionLevel, 
            and the specified number of window bits. 
            </summary>
            <remarks>
            The codec will use the specified number of window bits and the specified CompressionLevel.
            </remarks>
            <param name="level">The compression level for the codec.</param>
            <param name="bits">the number of window bits to use.  If you don't know what this means, don't use this method.</param>
            <returns>Z_OK if all goes well.</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.InitializeDeflate(Ionic.Zlib.CompressionLevel,System.Int32,System.Boolean)">
             <summary>
             Initialize the ZlibCodec for deflation operation, using the specified
             CompressionLevel, the specified number of window bits, and the explicit flag
             governing whether to emit an RFC1950 header byte pair.
             </summary>
            
             <param name="level">The compression level for the codec.</param>
             <param name="wantRfc1950Header">whether to emit an initial RFC1950 byte pair in the compressed stream.</param>
             <param name="bits">the number of window bits to use.  If you don't know what this means, don't use this method.</param>
             <returns>Z_OK if all goes well.</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.Deflate(Ionic.Zlib.FlushType)">
            <summary>
            Deflate one batch of data.
            </summary>
            <remarks>
            You must have set InputBuffer and OutputBuffer before calling this method.
            </remarks>
            <example>
            <code>
            private void DeflateBuffer(CompressionLevel level)
            {
                int bufferSize = 1024;
                byte[] buffer = new byte[bufferSize];
                ZlibCodec compressor = new ZlibCodec();
            
                Console.WriteLine("\n============================================");
                Console.WriteLine("Size of Buffer to Deflate: {0} bytes.", UncompressedBytes.Length);
                MemoryStream ms = new MemoryStream();
            
                int rc = compressor.InitializeDeflate(level);
            
                compressor.InputBuffer = UncompressedBytes;
                compressor.NextIn = 0;
                compressor.AvailableBytesIn = UncompressedBytes.Length;
            
                compressor.OutputBuffer = buffer;
            
                // pass 1: deflate 
                do
                {
                    compressor.NextOut = 0;
                    compressor.AvailableBytesOut = buffer.Length;
                    rc = compressor.Deflate(FlushType.None);
            
                    if (rc != ZlibConstants.Z_OK &amp;&amp; rc != ZlibConstants.Z_STREAM_END)
                        throw new Exception("deflating: " + compressor.Message);
            
                    ms.Write(compressor.OutputBuffer, 0, buffer.Length - compressor.AvailableBytesOut);
                }
                while (compressor.AvailableBytesIn &gt; 0 || compressor.AvailableBytesOut == 0);
            
                // pass 2: finish and flush
                do
                {
                    compressor.NextOut = 0;
                    compressor.AvailableBytesOut = buffer.Length;
                    rc = compressor.Deflate(FlushType.Finish);
            
                    if (rc != ZlibConstants.Z_STREAM_END &amp;&amp; rc != ZlibConstants.Z_OK)
                        throw new Exception("deflating: " + compressor.Message);
            
                    if (buffer.Length - compressor.AvailableBytesOut &gt; 0)
                        ms.Write(buffer, 0, buffer.Length - compressor.AvailableBytesOut);
                }
                while (compressor.AvailableBytesIn &gt; 0 || compressor.AvailableBytesOut == 0);
            
                compressor.EndDeflate();
            
                ms.Seek(0, SeekOrigin.Begin);
                CompressedBytes = new byte[compressor.TotalBytesOut];
                ms.Read(CompressedBytes, 0, CompressedBytes.Length);
            }
            </code>
            </example>
            <param name="flush">whether to flush all data as you deflate. Generally you will want to 
            use Z_NO_FLUSH here, in a series of calls to Deflate(), and then call EndDeflate() to 
            flush everything. 
            </param>
            <returns>Z_OK if all goes well.</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.EndDeflate">
            <summary>
            End a deflation session.
            </summary>
            <remarks>
            Call this after making a series of one or more calls to Deflate(). All buffers are flushed.
            </remarks>
            <returns>Z_OK if all goes well.</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.ResetDeflate">
            <summary>
            Reset a codec for another deflation session.
            </summary>
            <remarks>
            Call this to reset the deflation state.  For example if a thread is deflating
            non-consecutive blocks, you can call Reset() after the Deflate(Sync) of the first
            block and before the next Deflate(None) of the second block.
            </remarks>
            <returns>Z_OK if all goes well.</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.SetDeflateParams(Ionic.Zlib.CompressionLevel,Ionic.Zlib.CompressionStrategy)">
            <summary>
            Set the CompressionStrategy and CompressionLevel for a deflation session.
            </summary>
            <param name="level">the level of compression to use.</param>
            <param name="strategy">the strategy to use for compression.</param>
            <returns>Z_OK if all goes well.</returns>
        </member>
        <member name="M:Ionic.Zlib.ZlibCodec.SetDictionary(System.Byte[])">
            <summary>
            Set the dictionary to be used for either Inflation or Deflation.
            </summary>
            <param name="dictionary">The dictionary bytes to use.</param>
            <returns>Z_OK if all goes well.</returns>
        </member>
        <member name="P:Ionic.Zlib.ZlibCodec.Adler32">
            <summary>
            The Adler32 checksum on the data transferred through the codec so far. You probably don't need to look at this.
            </summary>
        </member>
        <member name="T:Substrate.TileEntityFactory">
            <summary>
            Creates new instances of concrete <see cref="T:Substrate.TileEntity"/> types from a dynamic registry.
            </summary>
            <remarks>This factory allows specific <see cref="T:Substrate.TileEntity"/> objects to be generated as an NBT tree is parsed.  New types can be
            registered with the factory at any time, so that custom <see cref="T:Substrate.TileEntity"/> types can be supported.  By default, the standard
            Tile Entities of Minecraft are registered with the factory at startup and bound to their respective 'id' fields.</remarks>
        </member>
        <member name="M:Substrate.TileEntityFactory.Create(System.String)">
            <summary>
            Create a new instance of a concrete <see cref="T:Substrate.TileEntity"/> type by name.
            </summary>
            <param name="type">The name that a concrete <see cref="T:Substrate.TileEntity"/> type was registered with.</param>
            <returns>A new instance of a concrete <see cref="T:Substrate.TileEntity"/> type, or null if no type was registered with the given name.</returns>
        </member>
        <member name="M:Substrate.TileEntityFactory.Create(Substrate.Nbt.TagNodeCompound)">
            <summary>
            Create a new instance of a concrete <see cref="T:Substrate.TileEntity"/> type by NBT node.
            </summary>
            <param name="tree">A <see cref="T:Substrate.Nbt.TagNodeCompound"/> representing a single Tile Entity, containing an 'id' field of the Tile Entity's registered name.</param>
            <returns>A new instance of a concrete <see cref="T:Substrate.TileEntity"/> type, or null if no type was registered with the given name.</returns>
        </member>
        <member name="M:Substrate.TileEntityFactory.CreateGeneric(Substrate.Nbt.TagNodeCompound)">
            <summary>
            Create a new instance of a concrete <see cref="T:Substrate.TileEntity"/> type by NBT node.
            </summary>
            <param name="tree">A <see cref="T:Substrate.Nbt.TagNodeCompound"/> representing a single Tile Entity, containing an 'id' field of the Tile Entity's registered name.</param>
            <returns>A new instance of a concrete <see cref="T:Substrate.TileEntity"/> type, or null if no type was registered with the given name.</returns>
        </member>
        <member name="M:Substrate.TileEntityFactory.Lookup(System.String)">
            <summary>
            Lookup a concrete <see cref="T:Substrate.TileEntity"/> type by name.
            </summary>
            <param name="type">The name that a concrete <see cref="T:Substrate.TileEntity"/> type was registered with.</param>
            <returns>The <see cref="T:System.Type"/> of a concrete <see cref="T:Substrate.TileEntity"/> type, or null if no type was registered with the given name.</returns>
        </member>
        <member name="M:Substrate.TileEntityFactory.Register(System.String,System.Type)">
            <summary>
            Registers a new concrete <see cref="T:Substrate.TileEntity"/> type with the <see cref="T:Substrate.TileEntityFactory"/>, binding it to a given name.
            </summary>
            <param name="id">The name to bind to a concrete <see cref="T:Substrate.TileEntity"/> type.</param>
            <param name="subtype">The <see cref="T:System.Type"/> of a concrete <see cref="T:Substrate.TileEntity"/> type.</param>
        </member>
        <member name="P:Substrate.TileEntityFactory.RegisteredTileEntities">
            <summary>
            Gets an enumerator over all registered TileEntities.
            </summary>
        </member>
        <member name="T:Substrate.UnknownTileEntityException">
            <summary>
            An exception that is thrown when unknown TileEntity types are queried.
            </summary>
        </member>
        <member name="T:Substrate.BlockType">
            <summary>
            Provides named id values for known block types.
            </summary>
            <remarks><para>The preferred method to lookup
            Minecraft block IDs is to access the ID field of the corresponding static BlockInfo
            object in the BlockInfo class.</para>
            <para>The static BlockInfo objects can be re-bound to new BlockInfo objects, allowing
            the named object to be bound to a new block ID.  This gives the developer more flexibility
            in supporting nonstandard worlds, and the ability to future-proof their application against
            changes to Block IDs, by implementing functionality to import block/ID mappings from an
            external source and rebinding the objects in BlockInfo.</para></remarks>
        </member>
        <member name="T:Substrate.BlockState">
            <summary>
            Represents the physical state of a block, such as solid or fluid.
            </summary>
        </member>
        <member name="F:Substrate.BlockState.SOLID">
            <summary>
            A solid state that stops movement.
            </summary>
        </member>
        <member name="F:Substrate.BlockState.NONSOLID">
            <summary>
            A nonsolid state that can be passed through.
            </summary>
        </member>
        <member name="F:Substrate.BlockState.FLUID">
            <summary>
            A fluid state that flows and impedes movement.
            </summary>
        </member>
        <member name="T:Substrate.BlockInfo">
            <summary>
            Provides information on a specific type of block.
            </summary>
            <remarks>By default, all known MC block types are already defined and registered, assuming Substrate
            is up to date with the current MC version.  All unknown blocks are given a default type and unregistered status.
            New block types may be created and used at runtime, and will automatically populate various static lookup tables
            in the <see cref="T:Substrate.BlockInfo"/> class.</remarks>
        </member>
        <member name="F:Substrate.BlockInfo.MAX_BLOCKS">
            <summary>
            The maximum number of sequential blocks starting at 0 that can be registered.
            </summary>
        </member>
        <member name="F:Substrate.BlockInfo.MAX_OPACITY">
            <summary>
            The maximum opacity value that can be assigned to a block (fully opaque).
            </summary>
        </member>
        <member name="F:Substrate.BlockInfo.MIN_OPACITY">
            <summary>
            The minimum opacity value that can be assigned to a block (fully transparent).
            </summary>
        </member>
        <member name="F:Substrate.BlockInfo.MAX_LUMINANCE">
            <summary>
            The maximum luminance value that can be assigned to a block.
            </summary>
        </member>
        <member name="F:Substrate.BlockInfo.MIN_LUMINANCE">
            <summary>
            The minimum luminance value that can be assigned to a block.
            </summary>
        </member>
        <member name="M:Substrate.BlockInfo.#ctor(System.Int32,System.String)">
            <summary>
            Constructs a new <see cref="T:Substrate.BlockInfo"/> record for a given block id and name.
            </summary>
            <param name="id">The id of the block.</param>
            <param name="name">The name of the block.</param>
            <remarks>All user-constructed <see cref="T:Substrate.BlockInfo"/> objects are registered automatically.</remarks>
        </member>
        <member name="M:Substrate.BlockInfo.SetOpacity(System.Int32)">
            <summary>
            Sets a new opacity value for this block type.
            </summary>
            <param name="opacity">A new opacity value.</param>
            <returns>The object instance used to invoke this method.</returns>
            <seealso cref="P:Substrate.AlphaBlockCollection.AutoLight"/>
        </member>
        <member name="M:Substrate.BlockInfo.SetLuminance(System.Int32)">
            <summary>
            Sets a new luminance value for this block type.
            </summary>
            <param name="luminance">A new luminance value.</param>
            <returns>The object instance used to invoke this method.</returns>
            <seealso cref="P:Substrate.AlphaBlockCollection.AutoLight"/>
        </member>
        <member name="M:Substrate.BlockInfo.SetLightTransmission(System.Boolean)">
            <summary>
            Sets whether or not this block type will transmit light to neigboring blocks.
            </summary>
            <param name="transmit">True if this block type can transmit light to neighbors, false otherwise.</param>
            <returns>The object instance used to invoke this method.</returns>
            <seealso cref="P:Substrate.AlphaBlockCollection.AutoLight"/>
        </member>
        <member name="M:Substrate.BlockInfo.SetDataLimits(System.Int32,System.Int32,System.Int32)">
            <summary>
            Sets limitations on what data values are considered valid for this block type.
            </summary>
            <param name="low">The lowest valid integer value.</param>
            <param name="high">The highest valid integer value.</param>
            <param name="bitmask">A mask representing which bits are interpreted as a bitmask in the data value.</param>
            <returns>The object instance used to invoke this method.</returns>
        </member>
        <member name="M:Substrate.BlockInfo.SetState(Substrate.BlockState)">
            <summary>
            Sets the physical state of the block type.
            </summary>
            <param name="state">A physical state.</param>
            <returns>The object instance used to invoke this method.</returns>
        </member>
        <member name="M:Substrate.BlockInfo.SetBlocksFluid(System.Boolean)">
            <summary>
            Sets whether or not this block type blocks fluids.
            </summary>
            <param name="blocks">True if this block type blocks fluids, false otherwise.</param>
            <returns>The object instance used to invoke this method.</returns>
            <seealso cref="P:Substrate.AlphaBlockCollection.AutoFluid"/>
        </member>
        <member name="M:Substrate.BlockInfo.SetTick(System.Int32)">
            <summary>
            Sets the default tick rate/delay used for updating this block.
            </summary>
            <remarks>Set <paramref name="tick"/> to <c>0</c> to indicate that this block is not processed by tick updates.</remarks>
            <param name="tick">The tick rate in frames between scheduled updates on this block.</param>
            <returns>The object instance used to invoke this method.</returns>
            <seealso cref="P:Substrate.AlphaBlockCollection.AutoTileTick"/>
        </member>
        <member name="M:Substrate.BlockInfo.TestData(System.Int32)">
            <summary>
            Tests if the given data value is valid for this block type.
            </summary>
            <param name="data">A data value to test.</param>
            <returns>True if the data value is valid, false otherwise.</returns>
            <remarks>This method uses internal information set by <see cref="M:Substrate.BlockInfo.SetDataLimits(System.Int32,System.Int32,System.Int32)"/>.</remarks>
        </member>
        <member name="P:Substrate.BlockInfo.BlockTable">
            <summary>
            Gets the lookup table for id-to-info values.
            </summary>
        </member>
        <member name="P:Substrate.BlockInfo.OpacityTable">
            <summary>
            Gets the lookup table for id-to-opacity values.
            </summary>
        </member>
        <member name="P:Substrate.BlockInfo.LuminanceTable">
            <summary>
            Gets the lookup table for id-to-luminance values.
            </summary>
        </member>
        <member name="P:Substrate.BlockInfo.ID">
            <summary>
            Get's the block's Id.
            </summary>
        </member>
        <member name="P:Substrate.BlockInfo.Name">
            <summary>
            Get's the name of the block type.
            </summary>
        </member>
        <member name="P:Substrate.BlockInfo.Opacity">
            <summary>
            Gets the block's opacity value.  An opacity of 0 is fully transparent to light.
            </summary>
        </member>
        <member name="P:Substrate.BlockInfo.Luminance">
            <summary>
            Gets the block's luminance value.
            </summary>
            <remarks>Blocks with luminance act as light sources and transmit light to other blocks.</remarks>
        </member>
        <member name="P:Substrate.BlockInfo.TransmitsLight">
            <summary>
            Checks whether the block transmits light to neighboring blocks.
            </summary>
            <remarks>A block may stop the transmission of light, but still be illuminated.</remarks>
        </member>
        <member name="P:Substrate.BlockInfo.ObscuresLight">
            <summary>
            Checks whether the block partially or fully blocks the transmission of light.
            </summary>
        </member>
        <member name="P:Substrate.BlockInfo.BlocksFluid">
            <summary>
            Checks whether the block stops fluid from passing through it.
            </summary>
            <remarks>A block that does not block fluids will be destroyed by fluid.</remarks>
        </member>
        <member name="P:Substrate.BlockInfo.State">
            <summary>
            Gets the block's physical state type.
            </summary>
        </member>
        <member name="P:Substrate.BlockInfo.Registered">
            <summary>
            Checks whether this block type has been registered as a known type.
            </summary>
        </member>
        <member name="T:Substrate.BlockInfoEx">
            <summary>
            An extended <see cref="T:Substrate.BlockInfo"/> that includes <see cref="T:Substrate.TileEntity"/> information.
            </summary>
        </member>
        <member name="M:Substrate.BlockInfoEx.#ctor(System.Int32,System.String)">
            <summary>
            Constructs a new <see cref="T:Substrate.BlockInfoEx"/> with a given block id and name.
            </summary>
            <param name="id">The id of the block type.</param>
            <param name="name">The name of the block type.</param>
        </member>
        <member name="M:Substrate.BlockInfoEx.SetTileEntity(System.String)">
            <summary>
            Sets the name of the <see cref="T:Substrate.TileEntity"/> type associated with this block type.
            </summary>
            <param name="name">The name of a registered <see cref="T:Substrate.TileEntity"/> type.</param>
            <returns>The object instance used to invoke this method.</returns>
            <seealso cref="T:Substrate.TileEntityFactory"/>
        </member>
        <member name="P:Substrate.BlockInfoEx.TileEntityName">
            <summary>
            Gets the name of the <see cref="T:Substrate.TileEntity"/> type associated with this block type.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.TagNodeNull">
            <summary>
            An NBT node representing a null tag type.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeNull.ToTagNull">
            <summary>
            Converts the node to itself.
            </summary>
            <returns>A reference to itself.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeNull.GetTagType">
            <summary>
            Gets the tag type of the node.
            </summary>
            <returns>The TAG_END tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeNull.Copy">
            <summary>
            Makes a deep copy of the node.
            </summary>
            <returns>A new null node.</returns>
        </member>
        <member name="T:Substrate.ImportExport.Schematic">
            <summary>
            Provides import and export support for the 3rd party schematic file format.
            </summary>
        </member>
        <member name="M:Substrate.ImportExport.Schematic.#ctor(Substrate.AlphaBlockCollection,Substrate.EntityCollection)">
            <summary>
            Create an exportable schematic wrapper around existing blocks and entities.
            </summary>
            <param name="blocks">An existing <see cref="T:Substrate.AlphaBlockCollection"/>.</param>
            <param name="entities">An existing <see cref="T:Substrate.EntityCollection"/>.</param>
        </member>
        <member name="M:Substrate.ImportExport.Schematic.#ctor(System.Int32,System.Int32,System.Int32)">
            <summary>
            Create an empty, exportable schematic of given dimensions.
            </summary>
            <param name="xdim">The length of the X-dimension in blocks.</param>
            <param name="ydim">The length of the Y-dimension in blocks.</param>
            <param name="zdim">The length of the Z-dimension in blocks.</param>
        </member>
        <member name="M:Substrate.ImportExport.Schematic.Import(System.String)">
            <summary>
            Imports a schematic file at the given path and returns in as a <see cref="T:Substrate.ImportExport.Schematic"/> object.
            </summary>
            <param name="path">The path to the schematic file.</param>
            <returns>A <see cref="T:Substrate.ImportExport.Schematic"/> object containing the decoded schematic file data.</returns>
        </member>
        <member name="M:Substrate.ImportExport.Schematic.Export(System.String)">
            <summary>
            Exports the <see cref="T:Substrate.ImportExport.Schematic"/> object to a schematic file.
            </summary>
            <param name="path">The path to write out the schematic file to.</param>
        </member>
        <member name="P:Substrate.ImportExport.Schematic.Blocks">
            <summary>
            Gets or sets the underlying block collection.
            </summary>
        </member>
        <member name="P:Substrate.ImportExport.Schematic.Entities">
            <summary>
            Gets or sets the underlying entity collection.
            </summary>
        </member>
        <member name="T:Substrate.EnchantmentType">
            <summary>
            Provides named id values for known enchantment types.
            </summary>
            <remarks>See <see cref="T:Substrate.BlockType"/> for additional information.</remarks>
        </member>
        <member name="T:Substrate.EnchantmentInfo">
            <summary>
            Provides information on a specific type of enchantment.
            </summary>
            <remarks>By default, all known MC enchantment types are already defined and registered, assuming Substrate
            is up to date with the current MC version.
            New enchantment types may be created and used at runtime, and will automatically populate various static lookup tables
            in the <see cref="T:Substrate.EnchantmentInfo"/> class.</remarks>
        </member>
        <member name="M:Substrate.EnchantmentInfo.#ctor(System.Int32)">
            <summary>
            Constructs a new <see cref="T:Substrate.EnchantmentInfo"/> record for the given enchantment id.
            </summary>
            <param name="id">The id of an item type.</param>
        </member>
        <member name="M:Substrate.EnchantmentInfo.#ctor(System.Int32,System.String)">
            <summary>
            Constructs a new <see cref="T:Substrate.EnchantmentInfo"/> record for the given enchantment id and name.
            </summary>
            <param name="id">The id of an item type.</param>
            <param name="name">The name of an item type.</param>
        </member>
        <member name="M:Substrate.EnchantmentInfo.SetMaxLevel(System.Int32)">
            <summary>
            Sets the maximum level for this enchantment type.
            </summary>
            <param name="level">The maximum allowed level.</param>
            <returns>The object instance used to invoke this method.</returns>
        </member>
        <member name="M:Substrate.EnchantmentInfo.GetRandomEnchantment">
            <summary>
            Chooses a registered enchantment type at random and returns it.
            </summary>
            <returns></returns>
        </member>
        <member name="P:Substrate.EnchantmentInfo.EnchantmentTable">
            <summary>
            Gets the lookup table for id-to-info values.
            </summary>
        </member>
        <member name="P:Substrate.EnchantmentInfo.ID">
            <summary>
            Gets the id of the enchantment type.
            </summary>
        </member>
        <member name="P:Substrate.EnchantmentInfo.Name">
            <summary>
            Gets the name of the enchantment type.
            </summary>
        </member>
        <member name="P:Substrate.EnchantmentInfo.MaxLevel">
            <summary>
            Gets the maximum level allowed for this enchantment type.
            </summary>
        </member>
        <member name="T:Substrate.AlphaChunk">
            <summary>
            A Minecraft Alpha- and Beta-compatible chunk data structure.
            </summary>
            <remarks>
            A Chunk internally wraps an NBT_Tree of raw chunk data.  Modifying the chunk will update the tree, and vice-versa.
            </remarks>
        </member>
        <member name="F:Substrate.AlphaChunk.LevelSchema">
            <summary>
            An NBT Schema definition for valid chunk data.
            </summary>
        </member>
        <member name="M:Substrate.AlphaChunk.Create(System.Int32,System.Int32)">
            <summary>
            Creates a default (empty) chunk.
            </summary>
            <param name="x">Global X-coordinate of the chunk.</param>
            <param name="z">Global Z-coordinate of the chunk.</param>
            <returns>A new Chunk object.</returns>
        </member>
        <member name="M:Substrate.AlphaChunk.Create(Substrate.Nbt.NbtTree)">
            <summary>
            Creates a chunk object from an existing NBT_Tree.
            </summary>
            <param name="tree">An NBT_Tree conforming to the chunk schema definition.</param>
            <returns>A new Chunk object wrapping an existing NBT_Tree.</returns>
        </member>
        <member name="M:Substrate.AlphaChunk.CreateVerified(Substrate.Nbt.NbtTree)">
            <summary>
            Creates a chunk object from a verified NBT_Tree.
            </summary>
            <param name="tree">An NBT_Tree conforming to the chunk schema definition.</param>
            <returns>A new Chunk object wrapping an existing NBT_Tree, or null on verification failure.</returns>
        </member>
        <member name="M:Substrate.AlphaChunk.SetLocation(System.Int32,System.Int32)">
            <summary>
            Updates the chunk's global world coordinates.
            </summary>
            <param name="x">Global X-coordinate.</param>
            <param name="z">Global Z-coordinate.</param>
        </member>
        <member name="M:Substrate.AlphaChunk.Save(System.IO.Stream)">
            <summary>
            Saves a Chunk's underlying NBT_Tree to an output stream.
            </summary>
            <param name="outStream">An open, writable output stream.</param>
            <returns>True if the data is written out to the stream.</returns>
        </member>
        <member name="M:Substrate.AlphaChunk.LoadTree(Substrate.Nbt.TagNode)">
            <summary>
            Loads the Chunk from an NBT tree rooted at the given TagValue node.
            </summary>
            <param name="tree">Root node of an NBT tree.</param>
            <returns>A reference to the current Chunk, or null if the tree is unparsable.</returns>
        </member>
        <member name="M:Substrate.AlphaChunk.LoadTreeSafe(Substrate.Nbt.TagNode)">
            <summary>
            Loads the Chunk from a validated NBT tree rooted at the given TagValue node.
            </summary>
            <param name="tree">Root node of an NBT tree.</param>
            <returns>A reference to the current Chunk, or null if the tree does not conform to the chunk's NBT Schema definition.</returns>
        </member>
        <member name="M:Substrate.AlphaChunk.BuildTree">
            <summary>
            Gets a valid NBT tree representing the Chunk.
            </summary>
            <returns>The root node of the Chunk's NBT tree.</returns>
        </member>
        <member name="M:Substrate.AlphaChunk.ValidateTree(Substrate.Nbt.TagNode)">
            <summary>
            Validates an NBT tree against the chunk's NBT schema definition.
            </summary>
            <param name="tree">The root node of the NBT tree to verify.</param>
            <returns>Status indicating if the tree represents a valid chunk.</returns>
        </member>
        <member name="M:Substrate.AlphaChunk.Copy">
            <summary>
            Creates a deep copy of the Chunk and its underlying NBT tree.
            </summary>
            <returns>A new Chunk with copied data.</returns>
        </member>
        <member name="P:Substrate.AlphaChunk.X">
            <summary>
            Gets the global X-coordinate of the chunk.
            </summary>
        </member>
        <member name="P:Substrate.AlphaChunk.Z">
            <summary>
            Gets the global Z-coordinate of the chunk.
            </summary>
        </member>
        <member name="P:Substrate.AlphaChunk.Blocks">
            <summary>
            Gets the collection of all blocks and their data stored in the chunk.
            </summary>
        </member>
        <member name="P:Substrate.AlphaChunk.Entities">
            <summary>
            Gets the collection of all entities stored in the chunk.
            </summary>
        </member>
        <member name="P:Substrate.AlphaChunk.Tree">
            <summary>
            Provides raw access to the underlying NBT_Tree.
            </summary>
        </member>
        <member name="P:Substrate.AlphaChunk.IsTerrainPopulated">
            <summary>
            Gets or sets the chunk's TerrainPopulated status.
            </summary>
        </member>
        <member name="F:Substrate.Core.RegionFile.fileLock">
            <summary>
            The file lock used so that we do not seek in different areas
            of the same file at the same time. All file access should lock this
            object before moving the file pointer.
            The lock should also surround all access to the sectorFree free variable.
            </summary>
        </member>
        <member name="T:Substrate.Entities.ActiveEffects">
            <summary>
            Encompasses data in the "ActiveEffects" compound attribute of mob entity types, used to specify potion effects
            </summary>
        </member>
        <member name="P:Substrate.Entities.ActiveEffects.Id">
            <summary>
            Gets or sets the ID of the potion effect type.
            </summary>
        </member>
        <member name="P:Substrate.Entities.ActiveEffects.Amplifier">
            <summary>
            Gets or sets the amplification of the potion effect.
            </summary>
        </member>
        <member name="P:Substrate.Entities.ActiveEffects.Duration">
            <summary>
            Gets or sets the remaining duration of the potion effect.
            </summary>
        </member>
        <member name="P:Substrate.Entities.ActiveEffects.IsValid">
            <summary>
            Determine if the combination of properties in this ActiveEffects is valid.
            </summary>
        </member>
        <member name="T:Substrate.PlayerIOException">
            <summary>
            The exception that is thrown when IO errors occur during high-level player management operations.
            </summary>
        </member>
        <member name="M:Substrate.PlayerIOException.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.PlayerIOException"/> class.
            </summary>
        </member>
        <member name="M:Substrate.PlayerIOException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.PlayerIOException"/> class with a custom error message.
            </summary>
            <param name="message">A custom error message.</param>
        </member>
        <member name="M:Substrate.PlayerIOException.#ctor(System.String,System.Exception)">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.PlayerIOException"/> class with a custom error message and a reference to
            an InnerException representing the original cause of the exception.
            </summary>
            <param name="message">A custom error message.</param>
            <param name="innerException">A reference to the original exception that caused the error.</param>
        </member>
        <member name="M:Substrate.PlayerIOException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            Initializes a new instance of the <see cref="T:Substrate.PlayerIOException"/> class with serialized data.
            </summary>
            <param name="info">The object that holds the serialized object data.</param>
            <param name="context">The contextual information about the source or destination.</param>
        </member>
        <member name="T:Substrate.Nbt.TagNodeByte">
            <summary>
            An NBT node representing a signed byte tag type.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByte.ToTagByte">
            <summary>
            Converts the node to itself.
            </summary>
            <returns>A reference to itself.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByte.ToTagShort">
            <summary>
            Converts the node to a new short node.
            </summary>
            <returns>A short node representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByte.ToTagInt">
            <summary>
            Converts the node to a new int node.
            </summary>
            <returns>An int node representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByte.ToTagLong">
            <summary>
            Converts the node to a new long node.
            </summary>
            <returns>A long node representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByte.GetTagType">
            <summary>
            Gets the tag type of the node.
            </summary>
            <returns>The TAG_BYTE tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByte.IsCastableTo(Substrate.Nbt.TagType)">
            <summary>
            Checks if the node is castable to another node of a given tag type.
            </summary>
            <param name="type">An NBT tag type.</param>
            <returns>Status indicating whether this object could be cast to a node type represented by the given tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByte.#ctor">
            <summary>
            Constructs a new byte node with a data value of 0.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByte.#ctor(System.Byte)">
            <summary>
            Constructs a new byte node.
            </summary>
            <param name="d">The value to set the node's tag data value.</param>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByte.Copy">
            <summary>
            Makes a deep copy of the node.
            </summary>
            <returns>A new byte node representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByte.ToString">
            <summary>
            Gets a string representation of the node's data.
            </summary>
            <returns>String representation of the node's data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByte.op_Implicit(System.Byte)~Substrate.Nbt.TagNodeByte">
            <summary>
            Converts a system byte to a byte node representing the same value.
            </summary>
            <param name="b">A byte value.</param>
            <returns>A new byte node containing the given value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByte.op_Implicit(Substrate.Nbt.TagNodeByte)~System.Byte">
            <summary>
            Converts a byte node to a system byte representing the same value.
            </summary>
            <param name="b">A byte node.</param>
            <returns>A system byte set to the node's data value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByte.op_Implicit(Substrate.Nbt.TagNodeByte)~System.Int16">
            <summary>
            Converts a byte node to a system short representing the same value.
            </summary>
            <param name="b">A byte node.</param>
            <returns>A system short set to the node's data value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByte.op_Implicit(Substrate.Nbt.TagNodeByte)~System.Int32">
            <summary>
            Converts a byte node to a system int representing the same value.
            </summary>
            <param name="b">A byte node.</param>
            <returns>A system int set to the node's data value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByte.op_Implicit(Substrate.Nbt.TagNodeByte)~System.Int64">
            <summary>
            Converts a byte node to a system long representing the same value.
            </summary>
            <param name="b">A byte node.</param>
            <returns>A system long set to the node's data value.</returns>
        </member>
        <member name="P:Substrate.Nbt.TagNodeByte.Data">
            <summary>
            Gets or sets a byte of tag data.
            </summary>
        </member>
        <member name="T:Ionic.Zlib.CRC32">
            <summary>
            Calculates a 32bit Cyclic Redundancy Checksum (CRC) using the same polynomial
            used by Zip. This type is used internally by DotNetZip; it is generally not used
            directly by applications wishing to create, read, or manipulate zip archive
            files.
            </summary>
        </member>
        <member name="M:Ionic.Zlib.CRC32.GetCrc32(System.IO.Stream)">
            <summary>
            Returns the CRC32 for the specified stream.
            </summary>
            <param name="input">The stream over which to calculate the CRC32</param>
            <returns>the CRC32 calculation</returns>
        </member>
        <member name="M:Ionic.Zlib.CRC32.GetCrc32AndCopy(System.IO.Stream,System.IO.Stream)">
            <summary>
            Returns the CRC32 for the specified stream, and writes the input into the
            output stream.
            </summary>
            <param name="input">The stream over which to calculate the CRC32</param>
            <param name="output">The stream into which to deflate the input</param>
            <returns>the CRC32 calculation</returns>
        </member>
        <member name="M:Ionic.Zlib.CRC32.ComputeCrc32(System.Int32,System.Byte)">
            <summary>
            Get the CRC32 for the given (word,byte) combo.  This is a computation
            defined by PKzip.
            </summary>
            <param name="W">The word to start with.</param>
            <param name="B">The byte to combine it with.</param>
            <returns>The CRC-ized result.</returns>
        </member>
        <member name="M:Ionic.Zlib.CRC32.SlurpBlock(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Update the value for the running CRC32 using the given block of bytes.
            This is useful when using the CRC32() class in a Stream.
            </summary>
            <param name="block">block of bytes to slurp</param>
            <param name="offset">starting point in the block</param>
            <param name="count">how many bytes within the block to slurp</param>
        </member>
        <member name="M:Ionic.Zlib.CRC32.Combine(System.Int32,System.Int32)">
            <summary>
            Combines the given CRC32 value with the current running total.
            </summary>
            <remarks>
            This is useful when using a divide-and-conquer approach to calculating a CRC.
            Multiple threads can each calculate a CRC32 on a segment of the data, and then
            combine the individual CRC32 values at the end.
            </remarks>
            <param name="crc">the crc value to be combined with this one</param>
            <param name="length">the length of data the CRC value was calculated on</param>
        </member>
        <member name="P:Ionic.Zlib.CRC32.TotalBytesRead">
            <summary>
            indicates the total number of bytes read on the CRC stream.
            This is used when writing the ZipDirEntry when compressing files.
            </summary>
        </member>
        <member name="P:Ionic.Zlib.CRC32.Crc32Result">
            <summary>
            Indicates the current CRC for all blocks slurped in.
            </summary>
        </member>
        <member name="T:Ionic.Zlib.CrcCalculatorStream">
             <summary>
             A Stream that calculates a CRC32 (a checksum) on all bytes read,
             or on all bytes written.
             </summary>
            
             <remarks>
             <para>
             This class can be used to verify the CRC of a ZipEntry when
             reading from a stream, or to calculate a CRC when writing to a
             stream.  The stream should be used to either read, or write, but
             not both.  If you intermix reads and writes, the results are not
             defined.
             </para>
            
             <para>
             This class is intended primarily for use internally by the
             DotNetZip library.
             </para>
             </remarks>
        </member>
        <member name="M:Ionic.Zlib.CrcCalculatorStream.#ctor(System.IO.Stream)">
            <summary>
            The default constructor.
            </summary>
            <remarks>
            Instances returned from this constructor will leave the underlying stream
            open upon Close().
            </remarks>
            <param name="stream">The underlying stream</param>
        </member>
        <member name="M:Ionic.Zlib.CrcCalculatorStream.#ctor(System.IO.Stream,System.Boolean)">
            <summary>
            The constructor allows the caller to specify how to handle the underlying
            stream at close.
            </summary>
            <param name="stream">The underlying stream</param>
            <param name="leaveOpen">true to leave the underlying stream
            open upon close of the CrcCalculatorStream.; false otherwise.</param>
        </member>
        <member name="M:Ionic.Zlib.CrcCalculatorStream.#ctor(System.IO.Stream,System.Int64)">
            <summary>
            A constructor allowing the specification of the length of the stream to read.
            </summary>
            <remarks>
            Instances returned from this constructor will leave the underlying stream open
            upon Close().
            </remarks>
            <param name="stream">The underlying stream</param>
            <param name="length">The length of the stream to slurp</param>
        </member>
        <member name="M:Ionic.Zlib.CrcCalculatorStream.#ctor(System.IO.Stream,System.Int64,System.Boolean)">
            <summary>
            A constructor allowing the specification of the length of the stream to
            read, as well as whether to keep the underlying stream open upon Close().
            </summary>
            <param name="stream">The underlying stream</param>
            <param name="length">The length of the stream to slurp</param>
            <param name="leaveOpen">true to leave the underlying stream
            open upon close of the CrcCalculatorStream.; false otherwise.</param>
        </member>
        <member name="M:Ionic.Zlib.CrcCalculatorStream.Read(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Read from the stream
            </summary>
            <param name="buffer">the buffer to read</param>
            <param name="offset">the offset at which to start</param>
            <param name="count">the number of bytes to read</param>
            <returns>the number of bytes actually read</returns>
        </member>
        <member name="M:Ionic.Zlib.CrcCalculatorStream.Write(System.Byte[],System.Int32,System.Int32)">
            <summary>
            Write to the stream.
            </summary>
            <param name="buffer">the buffer from which to write</param>
            <param name="offset">the offset at which to start writing</param>
            <param name="count">the number of bytes to write</param>
        </member>
        <member name="M:Ionic.Zlib.CrcCalculatorStream.Flush">
            <summary>
            Flush the stream.
            </summary>
        </member>
        <member name="M:Ionic.Zlib.CrcCalculatorStream.Seek(System.Int64,System.IO.SeekOrigin)">
            <summary>
            Not implemented.
            </summary>
            <param name="offset">N/A</param>
            <param name="origin">N/A</param>
            <returns>N/A</returns>
        </member>
        <member name="M:Ionic.Zlib.CrcCalculatorStream.SetLength(System.Int64)">
            <summary>
            Not implemented.
            </summary>
            <param name="value">N/A</param>
        </member>
        <member name="M:Ionic.Zlib.CrcCalculatorStream.Close">
            <summary>
            Closes the stream.
            </summary>
        </member>
        <member name="P:Ionic.Zlib.CrcCalculatorStream.TotalBytesSlurped">
             <summary>
             Gets the total number of bytes run through the CRC32 calculator.
             </summary>
            
             <remarks>
             This is either the total number of bytes read, or the total number of bytes
             written, depending on the direction of this stream.
             </remarks>
        </member>
        <member name="P:Ionic.Zlib.CrcCalculatorStream.Crc">
            <summary>
            Provides the current CRC for all blocks slurped in.
            </summary>
        </member>
        <member name="P:Ionic.Zlib.CrcCalculatorStream.LeaveOpen">
            <summary>
            Indicates whether the underlying stream will be left open when the
            CrcCalculatorStream is Closed.
            </summary>
        </member>
        <member name="P:Ionic.Zlib.CrcCalculatorStream.CanRead">
            <summary>
            Indicates whether the stream supports reading.
            </summary>
        </member>
        <member name="P:Ionic.Zlib.CrcCalculatorStream.CanSeek">
            <summary>
            Indicates whether the stream supports seeking.
            </summary>
        </member>
        <member name="P:Ionic.Zlib.CrcCalculatorStream.CanWrite">
            <summary>
            Indicates whether the stream supports writing.
            </summary>
        </member>
        <member name="P:Ionic.Zlib.CrcCalculatorStream.Length">
            <summary>
            Not implemented.
            </summary>
        </member>
        <member name="P:Ionic.Zlib.CrcCalculatorStream.Position">
            <summary>
            Not implemented.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.TagNodeByteArray">
            <summary>
            An NBT node representing an unsigned byte array tag type.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByteArray.ToTagByteArray">
            <summary>
            Converts the node to itself.
            </summary>
            <returns>A reference to itself.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByteArray.GetTagType">
            <summary>
            Gets the tag type of the node.
            </summary>
            <returns>The TAG_BYTE_ARRAY tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByteArray.#ctor">
            <summary>
            Constructs a new byte array node with a null data value.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByteArray.#ctor(System.Byte[])">
            <summary>
            Constructs a new byte array node.
            </summary>
            <param name="d">The value to set the node's tag data value.</param>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByteArray.Copy">
            <summary>
            Makes a deep copy of the node.
            </summary>
            <returns>A new byte array node representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByteArray.ToString">
            <summary>
            Gets a string representation of the node's data.
            </summary>
            <returns>String representation of the node's data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByteArray.op_Implicit(System.Byte[])~Substrate.Nbt.TagNodeByteArray">
            <summary>
            Converts a system byte array to a byte array node representing the same data.
            </summary>
            <param name="b">A byte array.</param>
            <returns>A new byte array node containing the given value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeByteArray.op_Implicit(Substrate.Nbt.TagNodeByteArray)~System.Byte[]">
            <summary>
            Converts a byte array node to a system byte array representing the same data.
            </summary>
            <param name="b">A byte array node.</param>
            <returns>A system byte array set to the node's data.</returns>
        </member>
        <member name="P:Substrate.Nbt.TagNodeByteArray.Data">
            <summary>
            Gets or sets a byte array of tag data.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.TagNodeByteArray.Length">
            <summary>
            Gets the length of the stored byte array.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.TagNodeByteArray.Item(System.Int32)">
            <summary>
            Gets or sets a single byte at the specified index.
            </summary>
            <param name="index">Valid index within stored byte array.</param>
            <returns>The byte value at the given index of the stored byte array.</returns>
        </member>
        <member name="T:Substrate.Data.IMapManager">
            <summary>
            An interface of basic manipulations on an abstract data store for map data.
            </summary>
        </member>
        <member name="M:Substrate.Data.IMapManager.GetMap(System.Int32)">
            <summary>
            Gets a <see cref="T:Substrate.Data.Map"/> object for the given map id from the underlying data store.
            </summary>
            <param name="id">The id of a map data resource.</param>
            <returns>A <see cref="T:Substrate.Data.Map"/> object for the given map id, or <c>null</c> if the map doesn't exist.</returns>
        </member>
        <member name="M:Substrate.Data.IMapManager.SetMap(System.Int32,Substrate.Data.Map)">
            <summary>
            Saves a <see cref="T:Substrate.Data.Map"/> object's data back to the underlying data store for the given map id.
            </summary>
            <param name="id">The id of the map to write back data for.</param>
            <param name="map">The <see cref="T:Substrate.Data.Map"/> object containing data to write back.</param>
        </member>
        <member name="M:Substrate.Data.IMapManager.MapExists(System.Int32)">
            <summary>
            Checks if a map exists in the underlying data store.
            </summary>
            <param name="id">The id of the map to look up.</param>
            <returns>True if map data was found; false otherwise.</returns>
        </member>
        <member name="M:Substrate.Data.IMapManager.DeleteMap(System.Int32)">
            <summary>
            Deletes a map with the given id from the underlying data store.
            </summary>
            <param name="id">The id of the map to delete.</param>
        </member>
        <member name="T:Substrate.Nbt.SchemaNodeCompound">
            <summary>
            A concrete <see cref="T:Substrate.Nbt.SchemaNode"/> representing a <see cref="T:Substrate.Nbt.TagNodeCompound"/>.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeCompound.Add(Substrate.Nbt.SchemaNode)">
            <summary>
            Adds a <see cref="T:Substrate.Nbt.SchemaNode"/> as a child of this node.
            </summary>
            <param name="item">The <see cref="T:Substrate.Nbt.SchemaNode"/> to add.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeCompound.Clear">
            <summary>
            Removes all <see cref="T:Substrate.Nbt.SchemaNode"/> objects from the node.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeCompound.Contains(Substrate.Nbt.SchemaNode)">
            <summary>
            Checks if a <see cref="T:Substrate.Nbt.SchemaNode"/> is a child of this node.
            </summary>
            <param name="item">The <see cref="T:Substrate.Nbt.SchemaNode"/> to check for existance.</param>
            <returns>Status indicating if the <see cref="T:Substrate.Nbt.SchemaNode"/> exists as a child of this node.</returns>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeCompound.CopyTo(Substrate.Nbt.SchemaNode[],System.Int32)">
            <summary>
            Copies all child <see cref="T:Substrate.Nbt.SchemaNode"/> objects of this node to a compatible one-dimensional array, starting at the specified index of the target array.
            </summary>
            <param name="array">The one-dimensional <see cref="T:System.Array"/> that is the destination of the subnodes copied. The Array must have zero-based indexing.</param>
            <param name="arrayIndex">The zero-based index in <paramref name="array"/> at which copying begins.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeCompound.Remove(Substrate.Nbt.SchemaNode)">
            <summary>
            Removes the first occurance of a <see cref="T:Substrate.Nbt.SchemaNode"/> from this node.
            </summary>
            <param name="item">The <see cref="T:Substrate.Nbt.SchemaNode"/> to remove.</param>
            <returns>Status indicating whether a <see cref="T:Substrate.Nbt.SchemaNode"/> was removed.</returns>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeCompound.GetEnumerator">
            <summary>
            Iterates through all of the <see cref="T:Substrate.Nbt.SchemaNode"/> objects in this <see cref="T:Substrate.Nbt.SchemaNodeCompound"/>.
            </summary>
            <returns>An enumerator for this node.</returns>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeCompound.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Iterates through all of the <see cref="T:Substrate.Nbt.SchemaNode"/> objects in this <see cref="T:Substrate.Nbt.SchemaNodeCompound"/>.
            </summary>
            <returns>An enumerator for this node.</returns>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeCompound.#ctor">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeCompound"/> representing a root <see cref="T:Substrate.Nbt.TagNodeCompound"/>.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeCompound.#ctor(Substrate.Nbt.SchemaOptions)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeCompound"/> with additional options.
            </summary>
            <param name="options">One or more option flags modifying the processing of this node.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeCompound.#ctor(System.String)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeCompound"/> representing a <see cref="T:Substrate.Nbt.TagNodeCompound"/> named <paramref name="name"/>.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeCompound"/>.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeCompound.#ctor(System.String,Substrate.Nbt.SchemaOptions)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeCompound"/> with additional options.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeCompound"/>.</param>
            <param name="options">One or more option flags modifying the processing of this node.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeCompound.#ctor(System.String,Substrate.Nbt.SchemaNode)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeCompound"/> representing a <see cref="T:Substrate.Nbt.TagNodeCompound"/> named <paramref name="name"/> matching the given schema.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeCompound"/>.</param>
            <param name="subschema">A <see cref="T:Substrate.Nbt.SchemaNodeCompound"/> representing a schema to verify against the corresponding <see cref="T:Substrate.Nbt.TagNodeCompound"/>.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeCompound.#ctor(System.String,Substrate.Nbt.SchemaNode,Substrate.Nbt.SchemaOptions)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeCompound"/> with additional options.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeCompound"/>.</param>
            <param name="subschema">A <see cref="T:Substrate.Nbt.SchemaNodeCompound"/> representing a schema to verify against the corresponding <see cref="T:Substrate.Nbt.TagNodeCompound"/>.</param>
            <param name="options">One or more option flags modifying the processing of this node.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeCompound.MergeInto(Substrate.Nbt.SchemaNodeCompound)">
            <summary>
            Copies all the elements of this <see cref="T:Substrate.Nbt.SchemaNodeCompound"/> into <paramref name="tree"/>.
            </summary>
            <param name="tree">The destination <see cref="T:Substrate.Nbt.SchemaNodeCompound"/> to copy <see cref="T:Substrate.Nbt.SchemaNode"/> elements into.</param>
            <returns>A reference to <paramref name="tree"/>.</returns>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeCompound.BuildDefaultTree">
            <summary>
            Constructs a default <see cref="T:Substrate.Nbt.TagNodeCompound"/> satisfying the constraints of this node.
            </summary>
            <returns>A <see cref="T:Substrate.Nbt.TagNodeCompound"/> with a sensible default value.  A default child <see cref="T:Substrate.Nbt.TagNode"/> is created for every <see cref="T:Substrate.Nbt.SchemaNode"/> contained in this <see cref="T:Substrate.Nbt.SchemaNodeCompound"/>.</returns>
        </member>
        <member name="P:Substrate.Nbt.SchemaNodeCompound.Count">
            <summary>
            Gets the number of child <see cref="T:Substrate.Nbt.SchemaNode"/> objects in this node.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.SchemaNodeCompound.IsReadOnly">
            <summary>
            Gets a value indicating whether the node is readonly.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.SchemaNodeArray">
            <summary>
            A concrete <see cref="T:Substrate.Nbt.SchemaNode"/> representing a <see cref="T:Substrate.Nbt.TagNodeByteArray"/>.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeArray.#ctor(System.String)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeArray"/> representing a <see cref="T:Substrate.Nbt.TagNodeByteArray"/> named <paramref name="name"/>.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeByteArray"/>.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeArray.#ctor(System.String,Substrate.Nbt.SchemaOptions)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeArray"/> with additional options.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeByteArray"/>.</param>
            <param name="options">One or more option flags modifying the processing of this node.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeArray.#ctor(System.String,System.Int32)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeArray"/> representing a <see cref="T:Substrate.Nbt.TagNodeByteArray"/> named <paramref name="name"/> with expected length <paramref name="length"/>.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeByteArray"/>.</param>
            <param name="length">The expected length of corresponding byte array.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeArray.#ctor(System.String,System.Int32,Substrate.Nbt.SchemaOptions)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeArray"/> with additional options.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeByteArray"/>.</param>
            <param name="length">The expected length of corresponding byte array.</param>
            <param name="options">One or more option flags modifying the processing of this node.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeArray.BuildDefaultTree">
            <summary>
            Constructs a default <see cref="T:Substrate.Nbt.TagNodeByteArray"/> satisfying the constraints of this node.
            </summary>
            <returns>A <see cref="T:Substrate.Nbt.TagNodeString"/> with a sensible default value.</returns>
        </member>
        <member name="P:Substrate.Nbt.SchemaNodeArray.Length">
            <summary>
            Gets the expected length of the corresponding byte array.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.SchemaNodeArray.HasExpectedLength">
            <summary>
            Indicates whether there is an expected length of the corresponding byte array.
            </summary>
        </member>
        <member name="T:Substrate.AlphaBlockRef">
            <summary>
            A reference to a single Alpha-compatible block in an <see cref="T:Substrate.AlphaBlockCollection"/>.
            </summary>
            <remarks><para>The <see cref="T:Substrate.AlphaBlockRef"/> type provides a reasonably lightweight reference to an individual block in a
            <see cref="T:Substrate.AlphaBlockCollection"/>.  The <see cref="T:Substrate.AlphaBlockRef"/> does not store any of the data itself.  If the referenced
            block in the <see cref="T:Substrate.AlphaBlockCollection"/> is updated externally, those changes will be automatically reflected in the
            <see cref="T:Substrate.AlphaBlockRef"/>, and any changes made via the <see cref="T:Substrate.AlphaBlockRef"/> will be applied directly to the corresponding
            block within the <see cref="T:Substrate.AlphaBlockCollection"/>.  Such changes will also set the dirty status of the <see cref="T:Substrate.AlphaBlockCollection"/>,
            which can make this type particularly useful.</para>
            <para>Despite being lightweight, using an <see cref="T:Substrate.AlphaBlockRef"/> to get and set block data is still more expensive then directly
            getting and setting data in the <see cref="T:Substrate.AlphaBlockCollection"/> object, and can be significantly slow in a tight loop 
            (<see cref="T:Substrate.AlphaBlockCollection"/> does not provide an interface for enumerating <see cref="T:Substrate.AlphaBlockRef"/> objects specifically
            to discourage this kind of use).</para>
            <para><see cref="T:Substrate.AlphaBlockRef"/> objects are most appropriate in cases where looking up an object requires expensive checks, such as
            accessing blocks through a derived <see cref="T:Substrate.BlockManager"/> type with enhanced block filtering.  By getting an <see cref="T:Substrate.AlphaBlockRef"/>,
            any number of block attributes can be read or written to while only paying the lookup cost once to get the reference.  Using the
            <see cref="T:Substrate.BlockManager"/> (or similar) directly would incur the expensive lookup on each operation.  See NBToolkit for an example of this
            use case.</para>
            <para>Unlike the <see cref="T:Substrate.AlphaBlock"/> object, this type exposed access to context-dependent data such as lighting.</para></remarks>
        </member>
        <member name="M:Substrate.AlphaBlockRef.GetTileEntity">
            <summary>
            Gets the Tile Entity record of the block if it has one.
            </summary>
            <returns>The <see cref="T:Substrate.TileEntity"/> attached to this block, or null if the block type does not require a Tile Entity.</returns>
        </member>
        <member name="M:Substrate.AlphaBlockRef.SetTileEntity(Substrate.TileEntity)">
            <summary>
            Sets a new Tile Entity record for the block.
            </summary>
            <param name="te">A Tile Entity record compatible with the block's type.</param>
        </member>
        <member name="M:Substrate.AlphaBlockRef.CreateTileEntity">
            <summary>
            Creates a default Tile Entity record appropriate for the block.
            </summary>
        </member>
        <member name="M:Substrate.AlphaBlockRef.ClearTileEntity">
            <summary>
            Removes any Tile Entity currently attached to the block.
            </summary>
        </member>
        <member name="M:Substrate.AlphaBlockRef.GetTileTick">
            <summary>
            Gets the <see cref="T:Substrate.TileTick"/> record of the block if it has one.
            </summary>
            <returns>The <see cref="T:Substrate.TileTick"/> attached to this block, or null if the block type does not require a Tile Entity.</returns>
        </member>
        <member name="M:Substrate.AlphaBlockRef.SetTileTick(Substrate.TileTick)">
            <summary>
            Sets a new <see cref="T:Substrate.TileTick"/> record for the block.
            </summary>
            <param name="te">A <see cref="T:Substrate.TileTick"/> record compatible with the block's type.</param>
        </member>
        <member name="M:Substrate.AlphaBlockRef.CreateTileTick">
            <summary>
            Creates a default <see cref="T:Substrate.TileTick"/> record appropriate for the block.
            </summary>
        </member>
        <member name="M:Substrate.AlphaBlockRef.ClearTileTick">
            <summary>
            Removes any <see cref="T:Substrate.TileTick"/> currently attached to the block.
            </summary>
        </member>
        <member name="P:Substrate.AlphaBlockRef.IsValid">
            <summary>
            Checks if this object is currently a valid ref into another <see cref="T:Substrate.AlphaBlockCollection"/>.
            </summary>
        </member>
        <member name="P:Substrate.AlphaBlockRef.Info">
            <summary>
            Gets information on the type of the block.
            </summary>
        </member>
        <member name="P:Substrate.AlphaBlockRef.ID">
            <summary>
            Gets or sets the id (type) of the block.
            </summary>
        </member>
        <member name="P:Substrate.AlphaBlockRef.Data">
            <summary>
            Gets or sets the supplementary data value of the block.
            </summary>
        </member>
        <member name="P:Substrate.AlphaBlockRef.BlockLight">
            <summary>
            Gets or sets the block-source light component of the block.
            </summary>
        </member>
        <member name="P:Substrate.AlphaBlockRef.SkyLight">
            <summary>
            Gets or sets the sky-source light component of the block.
            </summary>
        </member>
        <member name="T:Substrate.Item">
            <summary>
            Represents an item (or item stack) within an item slot.
            </summary>
        </member>
        <member name="M:Substrate.Item.#ctor">
            <summary>
            Constructs an empty <see cref="T:Substrate.Item"/> instance.
            </summary>
        </member>
        <member name="M:Substrate.Item.#ctor(System.Int32)">
            <summary>
            Constructs an <see cref="T:Substrate.Item"/> instance representing the given item id.
            </summary>
            <param name="id">An item id.</param>
        </member>
        <member name="M:Substrate.Item.Copy">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.Item.LoadTree(Substrate.Nbt.TagNode)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.Item.LoadTreeSafe(Substrate.Nbt.TagNode)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.Item.BuildTree">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.Item.ValidateTree(Substrate.Nbt.TagNode)">
            <inheritdoc/>
        </member>
        <member name="P:Substrate.Item.Info">
            <summary>
            Gets an <see cref="T:Substrate.ItemInfo"/> entry for this item's type.
            </summary>
        </member>
        <member name="P:Substrate.Item.ID">
            <summary>
            Gets or sets the current type (id) of the item.
            </summary>
        </member>
        <member name="P:Substrate.Item.Damage">
            <summary>
            Gets or sets the damage value of the item.
            </summary>
            <remarks>The damage value may represent a generic data value for some items.</remarks>
        </member>
        <member name="P:Substrate.Item.Count">
            <summary>
            Gets or sets the number of this item stacked together in an item slot.
            </summary>
        </member>
        <member name="P:Substrate.Item.Enchantments">
            <summary>
            Gets the list of <see cref="T:Substrate.Enchantment"/>s applied to this item.
            </summary>
        </member>
        <member name="P:Substrate.Item.Source">
            <summary>
            Gets the source <see cref="T:Substrate.Nbt.TagNodeCompound"/> used to create this <see cref="T:Substrate.Item"/> if it exists.
            </summary>
        </member>
        <member name="P:Substrate.Item.Schema">
            <summary>
            Gets a <see cref="T:Substrate.Nbt.SchemaNode"/> representing the schema of an item.
            </summary>
        </member>
        <member name="T:Substrate.PlayerManager">
            <summary>
            Functions to manage multiple <see cref="T:Substrate.Player"/> entities and files in multiplayer settings.
            </summary>
            <remarks>This manager is intended for player files stored in standard compressed NBT format.</remarks>
        </member>
        <member name="M:Substrate.PlayerManager.#ctor(System.String)">
            <summary>
            Create a new <see cref="T:Substrate.PlayerManager"/> for a given file path.
            </summary>
            <param name="playerDir">Path to a directory containing player data files.</param>
        </member>
        <member name="M:Substrate.PlayerManager.GetPlayerFile(System.String)">
            <summary>
            Gets a <see cref="T:Substrate.Core.PlayerFile"/> representing the backing NBT data stream.
            </summary>
            <param name="name">The name of the player to fetch.</param>
            <returns>A <see cref="T:Substrate.Core.PlayerFile"/> for the given player.</returns>
        </member>
        <member name="M:Substrate.PlayerManager.GetPlayerTree(System.String)">
            <summary>
            Gets a raw <see cref="T:Substrate.Nbt.NbtTree"/> of data for the given player.
            </summary>
            <param name="name">The name of the player to fetch.</param>
            <returns>An <see cref="T:Substrate.Nbt.NbtTree"/> containing the given player's raw data.</returns>
            <exception cref="T:Substrate.Nbt.NbtIOException">Thrown when the manager cannot read in an NBT data stream.</exception>
        </member>
        <member name="M:Substrate.PlayerManager.SetPlayerTree(System.String,Substrate.Nbt.NbtTree)">
            <summary>
            Saves a raw <see cref="T:Substrate.Nbt.NbtTree"/> representing a player to the given player's file.
            </summary>
            <param name="name">The name of the player to write data to.</param>
            <param name="tree">The player's data as an <see cref="T:Substrate.Nbt.NbtTree"/>.</param>
            <exception cref="T:Substrate.Nbt.NbtIOException">Thrown when the manager cannot initialize an NBT data stream for output.</exception>
        </member>
        <member name="M:Substrate.PlayerManager.GetPlayer(System.String)">
            <summary>
            Gets a <see cref="T:Substrate.Player"/> object for the given player.
            </summary>
            <param name="name">The name of the player to fetch.</param>
            <returns>A <see cref="T:Substrate.Player"/> object for the given player, or null if the player could not be found.</returns>
            <exception cref="T:Substrate.PlayerIOException">Thrown when the manager cannot read in a player that should exist.</exception>
        </member>
        <member name="M:Substrate.PlayerManager.SetPlayer(System.String,Substrate.Player)">
            <summary>
            Saves a <see cref="T:Substrate.Player"/> object's data back to the given player's file.
            </summary>
            <param name="name">The name of the player to write back to.</param>
            <param name="player">The <see cref="T:Substrate.Player"/> object containing data to write back.</param>
            <exception cref="T:Substrate.PlayerIOException">Thrown when the manager cannot write out the player.</exception>
        </member>
        <member name="M:Substrate.PlayerManager.SetPlayer(Substrate.Player)">
            <summary>
            Saves a <see cref="T:Substrate.Player"/> object's data back to file given the name set in the <see cref="T:Substrate.Player"/> object.
            </summary>
            <param name="player">The <see cref="T:Substrate.Player"/> object containing the data to write back.</param>
            <exception cref="T:Substrate.PlayerIOException">Thrown when the manager cannot write out the player.</exception>
        </member>
        <member name="M:Substrate.PlayerManager.PlayerExists(System.String)">
            <summary>
            Checks if data for a player with the given name exists.
            </summary>
            <param name="name">The name of the player to look up.</param>
            <returns>True if player data was found; false otherwise.</returns>
        </member>
        <member name="M:Substrate.PlayerManager.DeletePlayer(System.String)">
            <summary>
            Deletes a player with the given name from the underlying data store.
            </summary>
            <param name="name">The name of the player to delete.</param>
            <exception cref="T:Substrate.PlayerIOException">Thrown when the manager cannot delete the player.</exception>
        </member>
        <member name="M:Substrate.PlayerManager.GetEnumerator">
            <summary>
            Gets an enumerator that iterates through all the players in the world.
            </summary>
            <returns>An enumerator for this manager.</returns>
        </member>
        <member name="T:Substrate.Nbt.TagNodeShort">
            <summary>
            An NBT node representing a signed short tag type.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeShort.ToTagShort">
            <summary>
            Converts the node to itself.
            </summary>
            <returns>A reference to itself.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeShort.ToTagInt">
            <summary>
            Converts the node to a new int node.
            </summary>
            <returns>An int node representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeShort.ToTagLong">
            <summary>
            Converts the node to a new long node.
            </summary>
            <returns>A long node representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeShort.GetTagType">
            <summary>
            Gets the tag type of the node.
            </summary>
            <returns>The TAG_SHORT tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeShort.IsCastableTo(Substrate.Nbt.TagType)">
            <summary>
            Checks if the node is castable to another node of a given tag type.
            </summary>
            <param name="type">An NBT tag type.</param>
            <returns>Status indicating whether this object could be cast to a node type represented by the given tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeShort.#ctor">
            <summary>
            Constructs a new short node with a data value of 0.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeShort.#ctor(System.Int16)">
            <summary>
            Constructs a new short node.
            </summary>
            <param name="d">The value to set the node's tag data value.</param>
        </member>
        <member name="M:Substrate.Nbt.TagNodeShort.Copy">
            <summary>
            Makes a deep copy of the node.
            </summary>
            <returns>A new short node representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeShort.ToString">
            <summary>
            Gets a string representation of the node's data.
            </summary>
            <returns>String representation of the node's data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeShort.op_Implicit(System.Byte)~Substrate.Nbt.TagNodeShort">
            <summary>
            Converts a system byte to a short node representing the same value.
            </summary>
            <param name="b">A byte value.</param>
            <returns>A new short node containing the given value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeShort.op_Implicit(System.Int16)~Substrate.Nbt.TagNodeShort">
            <summary>
            Converts a system short to a short node representing the same value.
            </summary>
            <param name="s">A short value.</param>
            <returns>A new short node containing the given value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeShort.op_Implicit(Substrate.Nbt.TagNodeShort)~System.Int16">
            <summary>
            Converts a short node to a system short representing the same value.
            </summary>
            <param name="s">A short node.</param>
            <returns>A system short set to the node's data value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeShort.op_Implicit(Substrate.Nbt.TagNodeShort)~System.Int32">
            <summary>
            Converts a short node to a system int representing the same value.
            </summary>
            <param name="s">A short node.</param>
            <returns>A system int set to the node's data value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeShort.op_Implicit(Substrate.Nbt.TagNodeShort)~System.Int64">
            <summary>
            Converts a short node to a system long representing the same value.
            </summary>
            <param name="s">A short node.</param>
            <returns>A system long set to the node's data value.</returns>
        </member>
        <member name="P:Substrate.Nbt.TagNodeShort.Data">
            <summary>
            Gets or sets a short of tag data.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.TagNodeDouble">
            <summary>
            An NBT node representing a double-precision floating point tag type.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeDouble.ToTagDouble">
            <summary>
            Converts the node to itself.
            </summary>
            <returns>A reference to itself.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeDouble.GetTagType">
            <summary>
            Gets the tag type of the node.
            </summary>
            <returns>The TAG_DOUBLE tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeDouble.#ctor">
            <summary>
            Constructs a new double node with a data value of 0.0.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeDouble.#ctor(System.Double)">
            <summary>
            Constructs a new double node.
            </summary>
            <param name="d">The value to set the node's tag data value.</param>
        </member>
        <member name="M:Substrate.Nbt.TagNodeDouble.Copy">
            <summary>
            Makes a deep copy of the node.
            </summary>
            <returns>A new double node representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeDouble.ToString">
            <summary>
            Gets a string representation of the node's data.
            </summary>
            <returns>String representation of the node's data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeDouble.op_Implicit(System.Single)~Substrate.Nbt.TagNodeDouble">
            <summary>
            Converts a system float to a double node representing the same value.
            </summary>
            <param name="f">A float value.</param>
            <returns>A new double node containing the given value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeDouble.op_Implicit(System.Double)~Substrate.Nbt.TagNodeDouble">
            <summary>
            Converts a system double to a double node representing the same value.
            </summary>
            <param name="d">A double value.</param>
            <returns>A new double node containing the given value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeDouble.op_Implicit(Substrate.Nbt.TagNodeDouble)~System.Double">
            <summary>
            Converts a double node to a system double representing the same value.
            </summary>
            <param name="d">A double node.</param>
            <returns>A system double set to the node's data value.</returns>
        </member>
        <member name="P:Substrate.Nbt.TagNodeDouble.Data">
            <summary>
            Gets or sets a double of tag data.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.SchemaNodeScaler">
            <summary>
            A concrete <see cref="T:Substrate.Nbt.SchemaNode"/> representing a scaler-type <see cref="T:Substrate.Nbt.TagNode"/>.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeScaler.#ctor(System.String,Substrate.Nbt.TagType)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeScaler"/> representing a <see cref="T:Substrate.Nbt.TagNode"/> named <paramref name="name"/> and of type <paramref name="type"/>.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNode"/>.</param>
            <param name="type">The type of the corresponding <see cref="T:Substrate.Nbt.TagNode"/>, restricted to scaler types.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeScaler.#ctor(System.String,Substrate.Nbt.TagType,Substrate.Nbt.SchemaOptions)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeScaler"/> with additional options.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNode"/>.</param>
            <param name="type">The type of the corresponding <see cref="T:Substrate.Nbt.TagNode"/>, restricted to scaler types.</param>
            <param name="options">One or more option flags modifying the processing of this node.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeScaler.BuildDefaultTree">
            <summary>
            Constructs a default <see cref="T:Substrate.Nbt.TagNode"/> according to the <see cref="T:Substrate.Nbt.TagType"/> this node represents.
            </summary>
            <returns>A <see cref="T:Substrate.Nbt.TagNode"/> with a sensible default value.</returns>
        </member>
        <member name="P:Substrate.Nbt.SchemaNodeScaler.Type">
            <summary>
            Gets the scaler <see cref="T:Substrate.Nbt.TagType"/> that this node represents.
            </summary>
        </member>
        <member name="T:Substrate.Data.MapManager">
            <summary>
            Functions to manage all <see cref="T:Substrate.Data.Map"/> data resources.
            </summary>
            <remarks>This manager is intended for map files stored in standard compressed NBT format.</remarks>
        </member>
        <member name="M:Substrate.Data.MapManager.#ctor(Substrate.NbtWorld)">
            <summary>
            Create a new <see cref="T:Substrate.Data.MapManager"/> for a given world.
            </summary>
            <param name="world">World containing data files.</param>
        </member>
        <member name="M:Substrate.Data.MapManager.GetMapFile(System.Int32)">
            <summary>
            Gets a <see cref="T:Substrate.Data.MapFile"/> representing the backing NBT data stream.
            </summary>
            <param name="id">The id of the map to fetch.</param>
            <returns>A <see cref="T:Substrate.Data.MapFile"/> for the given map.</returns>
        </member>
        <member name="M:Substrate.Data.MapManager.GetMapTree(System.Int32)">
            <summary>
            Gets a raw <see cref="T:Substrate.Nbt.NbtTree"/> of data for the given map.
            </summary>
            <param name="id">The id of the map to fetch.</param>
            <returns>An <see cref="T:Substrate.Nbt.NbtTree"/> containing the given map's raw data.</returns>
            <exception cref="T:Substrate.Nbt.NbtIOException">Thrown when the manager cannot read in an NBT data stream.</exception>
        </member>
        <member name="M:Substrate.Data.MapManager.SetMapTree(System.Int32,Substrate.Nbt.NbtTree)">
            <summary>
            Saves a raw <see cref="T:Substrate.Nbt.NbtTree"/> representing a map to the given map's file.
            </summary>
            <param name="id">The id of the map to write data to.</param>
            <param name="tree">The map's data as an <see cref="T:Substrate.Nbt.NbtTree"/>.</param>
            <exception cref="T:Substrate.Nbt.NbtIOException">Thrown when the manager cannot initialize an NBT data stream for output.</exception>
        </member>
        <member name="M:Substrate.Data.MapManager.GetMap(System.Int32)">
            <inherit/>
            <exception cref="T:Substrate.Data.DataIOException">Thrown when the manager cannot read in a map that should exist.</exception>
        </member>
        <member name="M:Substrate.Data.MapManager.SetMap(System.Int32,Substrate.Data.Map)">
            <inherit/>
            <exception cref="T:Substrate.Data.DataIOException">Thrown when the manager cannot write out the map</exception>
        </member>
        <member name="M:Substrate.Data.MapManager.SetMap(Substrate.Data.Map)">
            <summary>
            Saves a <see cref="T:Substrate.Data.Map"/> object's data back to file given the id set in the <see cref="T:Substrate.Data.Map"/> object.
            </summary>
            <param name="map">The <see cref="T:Substrate.Data.Map"/> object containing the data to write back.</param>
            <exception cref="T:Substrate.Data.DataIOException">Thrown when the manager cannot write out the map</exception>
        </member>
        <member name="M:Substrate.Data.MapManager.MapExists(System.Int32)">
            <inherit />
        </member>
        <member name="M:Substrate.Data.MapManager.DeleteMap(System.Int32)">
            <inherit/>
            <exception cref="T:Substrate.Data.DataIOException">Thrown when the manager cannot delete the map.</exception>
        </member>
        <member name="M:Substrate.Data.MapManager.GetEnumerator">
            <summary>
            Gets an enumerator that iterates through all the maps in the world's data directory.
            </summary>
            <returns>An enumerator for this manager.</returns>
        </member>
        <member name="T:Substrate.AlphaChunkManager">
            <summary>
            Represents an Alpha-compatible interface for globally managing chunks.
            </summary>
        </member>
        <member name="M:Substrate.AlphaChunkManager.#ctor(System.String)">
            <summary>
            Creates a new <see cref="T:Substrate.AlphaChunkManager"/> instance for the give chunk base directory.
            </summary>
            <param name="mapDir">The path to the chunk base directory.</param>
        </member>
        <member name="M:Substrate.AlphaChunkManager.ChunkGlobalX(System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaChunkManager.ChunkGlobalZ(System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaChunkManager.ChunkLocalX(System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaChunkManager.ChunkLocalZ(System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaChunkManager.GetChunk(System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaChunkManager.GetChunkRef(System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaChunkManager.CreateChunk(System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaChunkManager.ChunkExists(System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaChunkManager.DeleteChunk(System.Int32,System.Int32)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaChunkManager.SetChunk(System.Int32,System.Int32,Substrate.Core.IChunk)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaChunkManager.Save">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaChunkManager.SaveChunk(Substrate.Core.IChunk)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.AlphaChunkManager.GetChunkTimestamp(System.Int32,System.Int32)">
            <summary>
            Gets the (last modified) timestamp of the underlying chunk file.
            </summary>
            <param name="cx">The global X-coordinate of a chunk.</param>
            <param name="cz">The global Z-coordinate of a chunk.</param>
            <returns>The last modified timestamp of the underlying chunk file.</returns>
        </member>
        <member name="M:Substrate.AlphaChunkManager.GetEnumerator">
            <summary>
            Gets an enumerator that iterates through all the chunks in the world.
            </summary>
            <returns>An enumerator for this manager.</returns>
        </member>
        <member name="P:Substrate.AlphaChunkManager.ChunkPath">
            <summary>
            Gets the path to the base directory containing the chunk directory structure.
            </summary>
        </member>
        <member name="P:Substrate.AlphaChunkManager.CanDelegateCoordinates">
            <inheritdoc/>
        </member>
        <member name="T:Substrate.Nbt.VerifierLogger">
            <summary>
            A collection of static methods that can be hooked into <see cref="T:Substrate.Nbt.NbtVerifier"/> events for logging NBT errors to the console.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.VerifierLogger.MissingTagHandler(Substrate.Nbt.TagEventArgs)">
            <summary>
            Logs an occurance of a missing tag error, and advances to the next event in the event chain.
            </summary>
            <param name="e">Data about the NBT node being verified.</param>
            <returns>A <see cref="T:Substrate.Nbt.TagEventCode"/> indicating whether event processing should pass, fail, or advance.</returns>
        </member>
        <member name="M:Substrate.Nbt.VerifierLogger.InvalidTagTypeHandler(Substrate.Nbt.TagEventArgs)">
            <summary>
            Logs an occurance of an invalid tag type error, and advances to the next event in the event chain.
            </summary>
            <param name="e">Data about the NBT node being verified.</param>
            <returns>A <see cref="T:Substrate.Nbt.TagEventCode"/> indicating whether event processing should pass, fail, or advance.</returns>
        </member>
        <member name="M:Substrate.Nbt.VerifierLogger.InvalidTagValueHandler(Substrate.Nbt.TagEventArgs)">
            <summary>
            Logs an occurance of an invalid tag value error, and advances to the next event in the event chain.
            </summary>
            <param name="e">Data about the NBT node being verified.</param>
            <returns>A <see cref="T:Substrate.Nbt.TagEventCode"/> indicating whether event processing should pass, fail, or advance.</returns>
        </member>
        <member name="T:Substrate.Nbt.TagType">
            <summary>
            Defines the type of an NBT tag.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.TagType.TAG_END">
            <summary>
            A null tag, used to terminate lists.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.TagType.TAG_BYTE">
            <summary>
            A tag containing an 8-bit signed integer.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.TagType.TAG_SHORT">
            <summary>
            A tag containing a 16-bit signed integer.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.TagType.TAG_INT">
            <summary>
            A tag containing a 32-bit signed integer.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.TagType.TAG_LONG">
            <summary>
            A tag containing a 64-bit signed integer.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.TagType.TAG_FLOAT">
            <summary>
            A tag containing a 32-bit (single precision) floating-point value.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.TagType.TAG_DOUBLE">
            <summary>
            A tag containing a 64-bit (double precision) floating-point value.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.TagType.TAG_BYTE_ARRAY">
            <summary>
            A tag containing an array of unsigned 8-bit byte values.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.TagType.TAG_STRING">
            <summary>
            A tag containing a string of text.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.TagType.TAG_LIST">
            <summary>
            A tag containing a sequential list of tags, where all tags of of the same type.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.TagType.TAG_COMPOUND">
            <summary>
            A tag containing a key-value store of tags, where each tag can be of any type.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.TagType.TAG_INT_ARRAY">
            <summary>
            A tag containing an array of signed 32-bit values.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.TagNodeCompound">
            <summary>
            An NBT node representing a compound tag type containing other nodes.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.ToTagCompound">
            <summary>
            Converts the node to itself.
            </summary>
            <returns>A reference to itself.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.GetTagType">
            <summary>
            Gets the tag type of the node.
            </summary>
            <returns>The TAG_STRING tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.#ctor">
            <summary>
            Constructs a new empty compound node.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.MergeFrom(Substrate.Nbt.TagNodeCompound)">
            <summary>
            Copies all the elements of <paramref name="tree"/> into this <see cref="T:Substrate.Nbt.TagNodeCompound"/> if they do not already exist.
            </summary>
            <param name="tree">The source <see cref="T:Substrate.Nbt.TagNodeCompound"/> to copy elements from.</param>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.Copy">
            <summary>
            Makes a deep copy of the node.
            </summary>
            <returns>A new compound node containing new subnodes representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.ToString">
            <summary>
            Gets a string representation of the node's data.
            </summary>
            <returns>String representation of the node's data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.Add(System.String,Substrate.Nbt.TagNode)">
            <summary>
            Adds a named subnode to the set.
            </summary>
            <param name="key">The name of the subnode.</param>
            <param name="value">The subnode to add.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="key"/> is null.</exception>
            <exception cref="T:System.ArgumentException">A subnode with the same key already exists in the set.</exception>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.ContainsKey(System.String)">
            <summary>
            Checks if a subnode exists in the set with the specified name.
            </summary>
            <param name="key">The name of a subnode to check.</param>
            <returns>Status indicating whether a subnode with the specified name exists.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="key"/> is null.</exception>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.Remove(System.String)">
            <summary>
            Removes a subnode with the specified name.
            </summary>
            <param name="key">The name of the subnode to remove.</param>
            <returns>Status indicating whether a subnode was removed.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="key"/> is null.</exception>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.TryGetValue(System.String,Substrate.Nbt.TagNode@)">
            <summary>
            Gets the subnode associated with the given name.
            </summary>
            <param name="key">The name of the subnode to get.</param>
            <param name="value">When the function returns, contains the subnode assicated with the specified key.  If no subnode was found, contains a default value.</param>
            <returns>Status indicating whether a subnode was found.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="key"/> is null.</exception>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.Add(System.Collections.Generic.KeyValuePair{System.String,Substrate.Nbt.TagNode})">
            <summary>
            Adds a subnode to the to the set with the specified name.
            </summary>
            <param name="item">The <see cref="T:System.Collections.Generic.KeyValuePair`2"/> structure representing the key and subnode to add to the set.</param>
            <exception cref="T:System.ArgumentNullException">The key of <paramref name="item"/> is null.</exception>
            <exception cref="T:System.ArgumentException">A subnode with the same key already exists in the set.</exception>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.Clear">
            <summary>
            Removes all of the subnodes from this node.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.Contains(System.Collections.Generic.KeyValuePair{System.String,Substrate.Nbt.TagNode})">
            <summary>
            Checks if a specific subnode with a specific name is contained in the set.
            </summary>
            <param name="item">The <see cref="T:System.Collections.Generic.KeyValuePair`2"/> structure representing the key and subnode to look for.</param>
            <returns>Status indicating if the subnode and key combination exists in the set.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.CopyTo(System.Collections.Generic.KeyValuePair{System.String,Substrate.Nbt.TagNode}[],System.Int32)">
            <summary>
            Copies the elements of the <see cref="T:System.Collections.Generic.ICollection`1"/> to an array of type <see cref="T:System.Collections.Generic.KeyValuePair`2"/>, starting at the specified array index.
            </summary>
            <param name="array">The one-dimensional <see cref="T:System.Array"/> that is the destination of the subnodes copied. The Array must have zero-based indexing.</param>
            <param name="arrayIndex">The zero-based index in <paramref name="array"/> at which copying begins.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="array"/> is null.</exception>
            <exception cref="T:System.ArgumentOutOfRangeException"><paramref name="arrayIndex"/> is less than 0.</exception>
            <exception cref="T:System.ArgumentException">The number of elements in the source <see cref="T:System.Collections.Generic.ICollection`1"/> is greater than the available space from <paramref name="arrayIndex"/> to the end of the destination <paramref name="array"/>.</exception>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.Remove(System.Collections.Generic.KeyValuePair{System.String,Substrate.Nbt.TagNode})">
            <summary>
            Removes the specified key and subnode combination from the set.
            </summary>
            <param name="item">The <see cref="T:System.Collections.Generic.KeyValuePair`2"/> structure representing the key and value to remove from the set.</param>
            <returns>Status indicating whether a subnode was removed.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.GetEnumerator">
            <summary>
            Returns an enumerator that iterates through all of the subnodes in the set.
            </summary>
            <returns>An enumerator for this node.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeCompound.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Returns an enumerator that iterates through all of the subnodes in the set.
            </summary>
            <returns>An enumerator for this node.</returns>
        </member>
        <member name="P:Substrate.Nbt.TagNodeCompound.Count">
            <summary>
            Gets the number of subnodes contained in node.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.TagNodeCompound.Keys">
            <summary>
            Gets a collection containing all the names of subnodes in this set.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.TagNodeCompound.Values">
            <summary>
            Gets a collection containing all the subnodes in this set.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.TagNodeCompound.Item(System.String)">
            <summary>
            Gets or sets the subnode with the associated name.
            </summary>
            <param name="key">The name of the subnode to get or set.</param>
            <exception cref="T:System.ArgumentNullException"><paramref name="key"/> is null.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">The property is retrieved and key does not exist in the collection.</exception>
        </member>
        <member name="P:Substrate.Nbt.TagNodeCompound.IsReadOnly">
            <summary>
            Gets a value indicating whether the node is readonly.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.TagEventCode">
            <summary>
            Indicates how an <see cref="T:Substrate.Nbt.NbtVerifier"/> event processor should respond to returning event handler.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.TagEventCode.NEXT">
            <summary>
            The event processor should process the next event in the chian.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.TagEventCode.PASS">
            <summary>
            The event processor should ignore the verification failure and stop processing any remaining events.
            </summary>
        </member>
        <member name="F:Substrate.Nbt.TagEventCode.FAIL">
            <summary>
            The event processor should fail and stop processing any remaining events.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.TagEventArgs">
            <summary>
            Event arguments for <see cref="T:Substrate.Nbt.NbtVerifier"/> failure events.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagEventArgs.#ctor(System.String)">
            <summary>
            Constructs a new event argument set.
            </summary>
            <param name="tagName">The expected name of a <see cref="T:Substrate.Nbt.TagNode"/>.</param>
        </member>
        <member name="M:Substrate.Nbt.TagEventArgs.#ctor(System.String,Substrate.Nbt.TagNode)">
            <summary>
            Constructs a new event argument set.
            </summary>
            <param name="tagName">The expected name of a <see cref="T:Substrate.Nbt.TagNode"/>.</param>
            <param name="tag">The <see cref="T:Substrate.Nbt.TagNode"/> involved in this event.</param>
        </member>
        <member name="M:Substrate.Nbt.TagEventArgs.#ctor(Substrate.Nbt.SchemaNode,Substrate.Nbt.TagNode)">
            <summary>
            Constructs a new event argument set.
            </summary>
            <param name="schema">The <see cref="T:Substrate.Nbt.SchemaNode"/> corresponding to the <see cref="T:Substrate.Nbt.TagNode"/> involved in this event.</param>
            <param name="tag">The <see cref="T:Substrate.Nbt.TagNode"/> involved in this event.</param>
        </member>
        <member name="P:Substrate.Nbt.TagEventArgs.TagName">
            <summary>
            Gets the expected name of the <see cref="T:Substrate.Nbt.TagNode"/> referenced by this event.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.TagEventArgs.Parent">
            <summary>
            Gets the parent  <see cref="T:Substrate.Nbt.TagNode"/> of the <see cref="T:Substrate.Nbt.TagNode"/> referenced by this event, if it exists.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.TagEventArgs.Tag">
            <summary>
            Gets the <see cref="T:Substrate.Nbt.TagNode"/> referenced by this event.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.TagEventArgs.Schema">
            <summary>
            Gets the <see cref="T:Substrate.Nbt.SchemaNode"/> corresponding to the <see cref="T:Substrate.Nbt.TagNode"/> referenced by this event.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.VerifierEventHandler">
            <summary>
            An event handler for intercepting and responding to verification failures of NBT trees.
            </summary>
            <param name="eventArgs">Information relating to a verification event.</param>
            <returns>A <see cref="T:Substrate.Nbt.TagEventCode"/> determining how the event processor should respond.</returns>
        </member>
        <member name="T:Substrate.Nbt.NbtVerifier">
            <summary>
            Verifies the integrity of an NBT tree against a schema definition.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.NbtVerifier.#ctor(Substrate.Nbt.TagNode,Substrate.Nbt.SchemaNode)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.NbtVerifier"/> object for a given NBT tree and schema.
            </summary>
            <param name="root">A <see cref="T:Substrate.Nbt.TagNode"/> representing the root of an NBT tree.</param>
            <param name="schema">A <see cref="T:Substrate.Nbt.SchemaNode"/> representing the root of a schema definition for the NBT tree.</param>
        </member>
        <member name="M:Substrate.Nbt.NbtVerifier.Verify">
            <summary>
            Invokes the verifier.
            </summary>
            <returns>Status indicating whether the NBT tree is valid for the given schema.</returns>
        </member>
        <member name="M:Substrate.Nbt.NbtVerifier.OnMissingTag(Substrate.Nbt.TagEventArgs)">
            <summary>
            Processes registered events for <see cref="E:Substrate.Nbt.NbtVerifier.MissingTag"/> whenever an expected <see cref="T:Substrate.Nbt.TagNode"/> is not found.
            </summary>
            <param name="e">Arguments for this event.</param>
            <returns>Status indicating whether this event can be ignored.</returns>
        </member>
        <member name="M:Substrate.Nbt.NbtVerifier.OnInvalidTagType(Substrate.Nbt.TagEventArgs)">
            <summary>
            Processes registered events for <see cref="E:Substrate.Nbt.NbtVerifier.InvalidTagType"/> whenever an expected <see cref="T:Substrate.Nbt.TagNode"/> is of the wrong type and cannot be cast.
            </summary>
            <param name="e">Arguments for this event.</param>
            <returns>Status indicating whether this event can be ignored.</returns>
        </member>
        <member name="M:Substrate.Nbt.NbtVerifier.OnInvalidTagValue(Substrate.Nbt.TagEventArgs)">
            <summary>
            Processes registered events for <see cref="E:Substrate.Nbt.NbtVerifier.InvalidTagValue"/> whenever an expected <see cref="T:Substrate.Nbt.TagNode"/> has a value that violates the schema.
            </summary>
            <param name="e">Arguments for this event.</param>
            <returns>Status indicating whether this event can be ignored.</returns>
        </member>
        <member name="E:Substrate.Nbt.NbtVerifier.MissingTag">
            <summary>
            An event that gets fired whenever an expected <see cref="T:Substrate.Nbt.TagNode"/> is not found.
            </summary>
        </member>
        <member name="E:Substrate.Nbt.NbtVerifier.InvalidTagType">
            <summary>
            An event that gets fired whenever an expected <see cref="T:Substrate.Nbt.TagNode"/> is of the wrong type and cannot be cast.
            </summary>
        </member>
        <member name="E:Substrate.Nbt.NbtVerifier.InvalidTagValue">
            <summary>
            An event that gets fired whenever an expected <see cref="T:Substrate.Nbt.TagNode"/> has a value that violates the schema.
            </summary>
        </member>
        <member name="T:Substrate.ItemCollection">
            <summary>
            Represents a collection of items, such as a chest or an inventory.
            </summary>
            <remarks>ItemCollections have a limited number of slots that depends on where they are used.</remarks>
        </member>
        <member name="M:Substrate.ItemCollection.#ctor(System.Int32)">
            <summary>
            Constructs an <see cref="T:Substrate.ItemCollection"/> with at most <paramref name="capacity"/> item slots.
            </summary>
            <param name="capacity">The upper bound on item slots available.</param>
            <remarks>The <paramref name="capacity"/> parameter does not necessarily indicate the true capacity of an item collection.
            The player object, for example, contains a conventional inventory, a range of invalid slots, and then equipment.  Capacity in
            this case would refer to the highest equipment slot.</remarks>
        </member>
        <member name="M:Substrate.ItemCollection.ItemExists(System.Int32)">
            <summary>
            Checks if an item exists in the given item slot.
            </summary>
            <param name="slot">The item slot to check.</param>
            <returns>True if an item or stack of items exists in the given slot.</returns>
        </member>
        <member name="M:Substrate.ItemCollection.Clear(System.Int32)">
            <summary>
            Removes an item from the given item slot, if it exists.
            </summary>
            <param name="slot">The item slot to clear.</param>
            <returns>True if an item was removed; false otherwise.</returns>
        </member>
        <member name="M:Substrate.ItemCollection.ClearAllItems">
            <summary>
            Removes all items from the item collection.
            </summary>
        </member>
        <member name="M:Substrate.ItemCollection.Copy">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.ItemCollection.LoadTree(Substrate.Nbt.TagNode)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.ItemCollection.LoadTreeSafe(Substrate.Nbt.TagNode)">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.ItemCollection.BuildTree">
            <inheritdoc/>
        </member>
        <member name="M:Substrate.ItemCollection.ValidateTree(Substrate.Nbt.TagNode)">
            <inheritdoc/>
        </member>
        <member name="P:Substrate.ItemCollection.Capacity">
            <summary>
            Gets the capacity of the item collection.
            </summary>
        </member>
        <member name="P:Substrate.ItemCollection.Count">
            <summary>
            Gets the current number of item slots actually used in the collection.
            </summary>
        </member>
        <member name="P:Substrate.ItemCollection.Item(System.Int32)">
            <summary>
            Gets or sets an item in a given item slot.
            </summary>
            <param name="slot">The item slot to query or insert an item or item stack into.</param>
        </member>
        <member name="P:Substrate.ItemCollection.Schema">
            <summary>
            Gets a <see cref="T:Substrate.Nbt.SchemaNode"/> representing the schema of an item collection.
            </summary>
        </member>
        <member name="T:Substrate.BetaWorld">
            <summary>
            Represents a Beta-compatible (Beta 1.3 or higher) Minecraft world.
            </summary>
        </member>
        <member name="M:Substrate.BetaWorld.GetBlockManager">
            <summary>
            Gets a <see cref="T:Substrate.BlockManager"/> for the default dimension.
            </summary>
            <returns>A <see cref="T:Substrate.BlockManager"/> tied to the default dimension in this world.</returns>
            <remarks>Get a <see cref="T:Substrate.BlockManager"/> if you need to manage blocks as a global, unbounded matrix.  This abstracts away
            any higher-level organizational divisions.  If your task is going to be heavily performance-bound, consider getting a
            <see cref="T:Substrate.RegionChunkManager"/> instead and working with blocks on a chunk-local level.</remarks>
        </member>
        <member name="M:Substrate.BetaWorld.GetBlockManager(System.Int32)">
            <summary>
            Gets a <see cref="T:Substrate.BlockManager"/> for the given dimension.
            </summary>
            <param name="dim">The id of the dimension to look up.</param>
            <returns>A <see cref="T:Substrate.BlockManager"/> tied to the given dimension in this world.</returns>
            <remarks>Get a <see cref="T:Substrate.BlockManager"/> if you need to manage blocks as a global, unbounded matrix.  This abstracts away
            any higher-level organizational divisions.  If your task is going to be heavily performance-bound, consider getting a
            <see cref="T:Substrate.RegionChunkManager"/> instead and working with blocks on a chunk-local level.</remarks>
        </member>
        <member name="M:Substrate.BetaWorld.GetChunkManager">
            <summary>
            Gets a <see cref="T:Substrate.RegionChunkManager"/> for the default dimension.
            </summary>
            <returns>A <see cref="T:Substrate.RegionChunkManager"/> tied to the default dimension in this world.</returns>
            <remarks>Get a <see cref="T:Substrate.RegionChunkManager"/> if you you need to work with easily-digestible, bounded chunks of blocks.</remarks>
        </member>
        <member name="M:Substrate.BetaWorld.GetChunkManager(System.Int32)">
            <summary>
            Gets a <see cref="T:Substrate.RegionChunkManager"/> for the given dimension.
            </summary>
            <param name="dim">The id of the dimension to look up.</param>
            <returns>A <see cref="T:Substrate.RegionChunkManager"/> tied to the given dimension in this world.</returns>
            <remarks>Get a <see cref="T:Substrate.RegionChunkManager"/> if you you need to work with easily-digestible, bounded chunks of blocks.</remarks>
        </member>
        <member name="M:Substrate.BetaWorld.GetRegionManager">
            <summary>
            Gets a <see cref="T:Substrate.Core.RegionManager"/> for the default dimension.
            </summary>
            <returns>A <see cref="T:Substrate.Core.RegionManager"/> tied to the defaul dimension in this world.</returns>
            <remarks>Regions are a higher-level unit of organization for blocks unique to worlds created in Beta 1.3 and beyond.
            Consider using the <see cref="T:Substrate.RegionChunkManager"/> if you are interested in working with blocks.</remarks>
        </member>
        <member name="M:Substrate.BetaWorld.GetRegionManager(System.Int32)">
            <summary>
            Gets a <see cref="T:Substrate.Core.RegionManager"/> for the given dimension.
            </summary>
            <param name="dim">The id of the dimension to look up.</param>
            <returns>A <see cref="T:Substrate.Core.RegionManager"/> tied to the given dimension in this world.</returns>
            <remarks>Regions are a higher-level unit of organization for blocks unique to worlds created in Beta 1.3 and beyond.
            Consider using the <see cref="T:Substrate.RegionChunkManager"/> if you are interested in working with blocks.</remarks>
        </member>
        <member name="M:Substrate.BetaWorld.GetPlayerManager">
            <summary>
            Gets a <see cref="T:Substrate.PlayerManager"/> for maanging players on multiplayer worlds.
            </summary>
            <returns>A <see cref="T:Substrate.PlayerManager"/> for this world.</returns>
            <remarks>To manage the player of a single-player world, get a <see cref="P:Substrate.BetaWorld.Level"/> object for the world instead.</remarks>
        </member>
        <member name="M:Substrate.BetaWorld.GetDataManager">
            <summary>
            Gets a <see cref="T:Substrate.Data.BetaDataManager"/> for managing data resources, such as maps.
            </summary>
            <returns>A <see cref="T:Substrate.Data.BetaDataManager"/> for this world.</returns>
        </member>
        <member name="M:Substrate.BetaWorld.Save">
            <inherits />
        </member>
        <member name="M:Substrate.BetaWorld.GetChunkCache">
            <summary>
            Gets the <see cref="T:Substrate.Core.ChunkCache"/> currently managing chunks in the default dimension.
            </summary>
            <returns>The <see cref="T:Substrate.Core.ChunkCache"/> for the default dimension, or null if the dimension was not found.</returns>
        </member>
        <member name="M:Substrate.BetaWorld.GetChunkCache(System.Int32)">
            <summary>
            Gets the <see cref="T:Substrate.Core.ChunkCache"/> currently managing chunks in the given dimension.
            </summary>
            <param name="dim">The id of a dimension to look up.</param>
            <returns>The <see cref="T:Substrate.Core.ChunkCache"/> for the given dimension, or null if the dimension was not found.</returns>
        </member>
        <member name="M:Substrate.BetaWorld.Open(System.String)">
            <summary>
            Opens an existing Beta-compatible Minecraft world and returns a new <see cref="T:Substrate.BetaWorld"/> to represent it.
            </summary>
            <param name="path">The path to the directory containing the world's level.dat, or the path to level.dat itself.</param>
            <returns>A new <see cref="T:Substrate.BetaWorld"/> object representing an existing world on disk.</returns>
        </member>
        <member name="M:Substrate.BetaWorld.Open(System.String,System.Int32)">
            <summary>
            Opens an existing Beta-compatible Minecraft world and returns a new <see cref="T:Substrate.BetaWorld"/> to represent it.
            </summary>
            <param name="path">The path to the directory containing the world's level.dat, or the path to level.dat itself.</param>
            <param name="cacheSize">The preferred cache size in chunks for each opened dimension in this world.</param>
            <returns>A new <see cref="T:Substrate.BetaWorld"/> object representing an existing world on disk.</returns>
        </member>
        <member name="M:Substrate.BetaWorld.Create(System.String)">
            <summary>
            Creates a new Beta-compatible Minecraft world and returns a new <see cref="T:Substrate.BetaWorld"/> to represent it.
            </summary>
            <param name="path">The path to the directory where the new world should be stored.</param>
            <returns>A new <see cref="T:Substrate.BetaWorld"/> object representing a new world.</returns>
            <remarks>This method will attempt to create the specified directory immediately if it does not exist, but will not
            write out any world data unless it is explicitly saved at a later time.</remarks>
        </member>
        <member name="M:Substrate.BetaWorld.Create(System.String,System.Int32)">
            <summary>
            Creates a new Beta-compatible Minecraft world and returns a new <see cref="T:Substrate.BetaWorld"/> to represent it.
            </summary>
            <param name="path">The path to the directory where the new world should be stored.</param>
            <param name="cacheSize">The preferred cache size in chunks for each opened dimension in this world.</param>
            <returns>A new <see cref="T:Substrate.BetaWorld"/> object representing a new world.</returns>
            <remarks>This method will attempt to create the specified directory immediately if it does not exist, but will not
            write out any world data unless it is explicitly saved at a later time.</remarks>
        </member>
        <member name="M:Substrate.BetaWorld.GetBlockManagerVirt(System.Int32)">
            <exclude/>
        </member>
        <member name="M:Substrate.BetaWorld.GetChunkManagerVirt(System.Int32)">
            <exclude/>
        </member>
        <member name="M:Substrate.BetaWorld.GetPlayerManagerVirt">
            <exclude/>
        </member>
        <member name="M:Substrate.BetaWorld.GetDataManagerVirt">
            <exclude/>
        </member>
        <member name="P:Substrate.BetaWorld.Level">
            <summary>
            Gets a reference to this world's <see cref="P:Substrate.BetaWorld.Level"/> object.
            </summary>
        </member>
        <member name="T:Ionic.Zlib.ZlibConstants">
            <summary>
            A bunch of constants used in the Zlib interface.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibConstants.WindowBitsMax">
            <summary>
            The maximum number of window bits for the Deflate algorithm.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibConstants.WindowBitsDefault">
            <summary>
            The default number of window bits for the Deflate algorithm.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibConstants.Z_OK">
            <summary>
            indicates everything is A-OK
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibConstants.Z_STREAM_END">
            <summary>
            Indicates that the last operation reached the end of the stream.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibConstants.Z_NEED_DICT">
            <summary>
            The operation ended in need of a dictionary. 
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibConstants.Z_STREAM_ERROR">
            <summary>
            There was an error with the stream - not enough data, not open and readable, etc.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibConstants.Z_DATA_ERROR">
            <summary>
            There was an error with the data - not enough data, bad data, etc.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibConstants.Z_BUF_ERROR">
            <summary>
            There was an error with the working buffer.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibConstants.WorkingBufferSizeDefault">
            <summary>
            The size of the working buffer used in the ZlibCodec class. Defaults to 8192 bytes.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.ZlibConstants.WorkingBufferSizeMin">
            <summary>
            The minimum size of the working buffer used in the ZlibCodec class.  Currently it is 128 bytes.
            </summary>
        </member>
        <member name="T:Ionic.Zlib.CompressionLevel">
            <summary>
            The compression level to be used when using a DeflateStream or ZlibStream with CompressionMode.Compress.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionLevel.None">
            <summary>
            None means that the data will be simply stored, with no change at all.
            If you are producing ZIPs for use on Mac OSX, be aware that archives produced with CompressionLevel.None
            cannot be opened with the default zip reader. Use a different CompressionLevel.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionLevel.Level0">
            <summary>
            Same as None.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionLevel.BestSpeed">
            <summary>
            The fastest but least effective compression.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionLevel.Level1">
            <summary>
            A synonym for BestSpeed.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionLevel.Level2">
            <summary>
            A little slower, but better, than level 1.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionLevel.Level3">
            <summary>
            A little slower, but better, than level 2.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionLevel.Level4">
            <summary>
            A little slower, but better, than level 3.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionLevel.Level5">
            <summary>
            A little slower than level 4, but with better compression.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionLevel.Default">
            <summary>
            The default compression level, with a good balance of speed and compression efficiency.   
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionLevel.Level6">
            <summary>
            A synonym for Default.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionLevel.Level7">
            <summary>
            Pretty good compression!
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionLevel.Level8">
            <summary>
             Better compression than Level7!
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionLevel.BestCompression">
            <summary>
            The "best" compression, where best means greatest reduction in size of the input data stream. 
            This is also the slowest compression.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionLevel.Level9">
            <summary>
            A synonym for BestCompression.
            </summary>
        </member>
        <member name="T:Ionic.Zlib.CompressionStrategy">
            <summary>
            Describes options for how the compression algorithm is executed.  Different strategies
            work better on different sorts of data.  The strategy parameter can affect the compression
            ratio and the speed of compression but not the correctness of the compresssion.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionStrategy.Default">
            <summary>
            The default strategy is probably the best for normal data. 
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionStrategy.Filtered">
            <summary>
            The <c>Filtered</c> strategy is intended to be used most effectively with data produced by a
            filter or predictor.  By this definition, filtered data consists mostly of small
            values with a somewhat random distribution.  In this case, the compression algorithm
            is tuned to compress them better.  The effect of <c>Filtered</c> is to force more Huffman
            coding and less string matching; it is a half-step between <c>Default</c> and <c>HuffmanOnly</c>.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionStrategy.HuffmanOnly">
            <summary>
            Using <c>HuffmanOnly</c> will force the compressor to do Huffman encoding only, with no
            string matching.
            </summary>
        </member>
        <member name="T:Ionic.Zlib.CompressionMode">
            <summary>
            An enum to specify the direction of transcoding - whether to compress or decompress.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionMode.Compress">
            <summary>
            Used to specify that the stream should compress the data.
            </summary>
        </member>
        <member name="F:Ionic.Zlib.CompressionMode.Decompress">
            <summary>
            Used to specify that the stream should decompress the data.
            </summary>
        </member>
        <member name="T:Ionic.Zlib.ZlibException">
            <summary>
            A general purpose exception class for exceptions in the Zlib library.
            </summary>
        </member>
        <member name="M:Ionic.Zlib.ZlibException.#ctor">
            <summary>
            The ZlibException class captures exception information generated
            by the Zlib library. 
            </summary>
        </member>
        <member name="M:Ionic.Zlib.ZlibException.#ctor(System.String)">
            <summary>
            This ctor collects a message attached to the exception.
            </summary>
            <param name="s"></param>
        </member>
        <member name="M:Ionic.Zlib.SharedUtils.URShift(System.Int32,System.Int32)">
            <summary>
            Performs an unsigned bitwise right shift with the specified number
            </summary>
            <param name="number">Number to operate on</param>
            <param name="bits">Ammount of bits to shift</param>
            <returns>The resulting number from the shift operation</returns>
        </member>
        <member name="M:Ionic.Zlib.SharedUtils.ReadInput(System.IO.TextReader,System.Byte[],System.Int32,System.Int32)">
             <summary>
               Reads a number of characters from the current source TextReader and writes
               the data to the target array at the specified index.
             </summary>
            
             <param name="sourceTextReader">The source TextReader to read from</param>
             <param name="target">Contains the array of characteres read from the source TextReader.</param>
             <param name="start">The starting index of the target array.</param>
             <param name="count">The maximum number of characters to read from the source TextReader.</param>
             
             <returns>
               The number of characters read. The number will be less than or equal to
               count depending on the data available in the source TextReader. Returns -1
               if the end of the stream is reached.
             </returns>
        </member>
        <member name="T:Ionic.Zlib.Adler">
            <summary>
            Computes an Adler-32 checksum. 
            </summary>
            <remarks>
            The Adler checksum is similar to a CRC checksum, but faster to compute, though less
            reliable.  It is used in producing RFC1950 compressed streams.  The Adler checksum
            is a required part of the "ZLIB" standard.  Applications will almost never need to
            use this class directly.
            </remarks>
        </member>
        <member name="M:Ionic.Zlib.Tree.DistanceCode(System.Int32)">
            <summary>
            Map from a distance to a distance code.
            </summary>
            <remarks> 
            No side effects. _dist_code[256] and _dist_code[257] are never used.
            </remarks>
        </member>
        <member name="T:Substrate.TileTick">
            <summary>
            Represents a TileTick record, which is used to queue a block for processing in the future.
            </summary>
        </member>
        <member name="M:Substrate.TileTick.#ctor">
            <summary>
            Constructs an empty <see cref="T:Substrate.TileTick"/> object.
            </summary>
        </member>
        <member name="M:Substrate.TileTick.#ctor(Substrate.TileTick)">
            <summary>
            Constructs a <see cref="T:Substrate.TileTick"/> by copying an existing one.
            </summary>
            <param name="tt">The <see cref="T:Substrate.TileTick"/> to copy.</param>
        </member>
        <member name="M:Substrate.TileTick.LocatedAt(System.Int32,System.Int32,System.Int32)">
            <summary>
            Checks whether the <see cref="T:Substrate.TileTick"/> is located (associated with a block) at the specific global coordinates.
            </summary>
            <param name="x">The global X-coordinate to test.</param>
            <param name="y">The global Y-coordinate to test.</param>
            <param name="z">The global Z-coordinate to test.</param>
            <returns>Status indicating whether the <see cref="T:Substrate.TileTick"/> is located at the specified global coordinates.</returns>
        </member>
        <member name="M:Substrate.TileTick.MoveBy(System.Int32,System.Int32,System.Int32)">
            <summary>
            Moves the <see cref="T:Substrate.TileTick"/> by given block offsets.
            </summary>
            <param name="diffX">The X-offset to move by, in blocks.</param>
            <param name="diffY">The Y-offset to move by, in blocks.</param>
            <param name="diffZ">The Z-offset to move by, in blocks.</param>
        </member>
        <member name="M:Substrate.TileTick.FromTree(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to construct a new <see cref="T:Substrate.TileTick"/> from a Tile Entity subtree without validation.
            </summary>
            <param name="tree">The root node of a <see cref="T:Substrate.TileTick"/> subtree.</param>
            <returns>A new <see cref="T:Substrate.TileTick"/> on success, or null if the tree was unparsable.</returns>
        </member>
        <member name="M:Substrate.TileTick.FromTreeSafe(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to construct a new <see cref="T:Substrate.TileTick"/> from a Tile Entity subtree with validation.
            </summary>
            <param name="tree">The root node of a <see cref="T:Substrate.TileTick"/> subtree.</param>
            <returns>A new <see cref="T:Substrate.TileTick"/> on success, or null if the tree failed validation.</returns>
        </member>
        <member name="M:Substrate.TileTick.LoadTree(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to load a <see cref="T:Substrate.TileTick"/> subtree into the <see cref="T:Substrate.TileTick"/> without validation.
            </summary>
            <param name="tree">The root node of a <see cref="T:Substrate.TileTick"/> subtree.</param>
            <returns>The <see cref="T:Substrate.TileTick"/> returns itself on success, or null if the tree was unparsable.</returns>
        </member>
        <member name="M:Substrate.TileTick.LoadTreeSafe(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to load a <see cref="T:Substrate.TileTick"/> subtree into the <see cref="T:Substrate.TileTick"/> with validation.
            </summary>
            <param name="tree">The root node of a <see cref="T:Substrate.TileTick"/> subtree.</param>
            <returns>The <see cref="T:Substrate.TileTick"/> returns itself on success, or null if the tree failed validation.</returns>
        </member>
        <member name="M:Substrate.TileTick.BuildTree">
            <summary>
            Builds a <see cref="T:Substrate.TileTick"/> subtree from the current data.
            </summary>
            <returns>The root node of a <see cref="T:Substrate.TileTick"/> subtree representing the current data.</returns>
        </member>
        <member name="M:Substrate.TileTick.ValidateTree(Substrate.Nbt.TagNode)">
            <summary>
            Validate a <see cref="T:Substrate.TileTick"/> subtree against a basic schema.
            </summary>
            <param name="tree">The root node of a <see cref="T:Substrate.TileTick"/> subtree.</param>
            <returns>Status indicating whether the tree was valid against the internal schema.</returns>
        </member>
        <member name="M:Substrate.TileTick.Copy">
            <summary>
            Creates a deep-copy of the <see cref="T:Substrate.TileTick"/> including any data defined in a subtype.
            </summary>
            <returns>A deep-copy of the <see cref="T:Substrate.TileTick"/>.</returns>
        </member>
        <member name="P:Substrate.TileTick.ID">
            <summary>
            Gets or sets the ID (type) of the block that this <see cref="T:Substrate.TileTick"/> is associated with.
            </summary>
        </member>
        <member name="P:Substrate.TileTick.Ticks">
            <summary>
            Gets or sets the number of ticks remaining until the associated block is processed.
            </summary>
        </member>
        <member name="P:Substrate.TileTick.X">
            <summary>
            Gets or sets the global X-coordinate of the block that this <see cref="T:Substrate.TileTick"/> is associated with.
            </summary>
        </member>
        <member name="P:Substrate.TileTick.Y">
            <summary>
            Gets or sets the global Y-coordinate of the block that this <see cref="T:Substrate.TileTick"/> is associated with.
            </summary>
        </member>
        <member name="P:Substrate.TileTick.Z">
            <summary>
            Gets or sets the global Z-coordinate of the block that this <see cref="T:Substrate.TileTick"/> is associated with.
            </summary>
        </member>
        <member name="P:Substrate.TileTick.Schema">
            <summary>
            Gets a <see cref="T:Substrate.Nbt.SchemaNode"/> representing the basic schema of a <see cref="T:Substrate.TileTick"/>.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.TagNodeInt">
            <summary>
            An NBT node representing a signed int tag type.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeInt.ToTagInt">
            <summary>
            Converts the node to itself.
            </summary>
            <returns>A reference to itself.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeInt.ToTagLong">
            <summary>
            Converts the node to a new long node.
            </summary>
            <returns>A long node representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeInt.GetTagType">
            <summary>
            Gets the tag type of the node.
            </summary>
            <returns>The TAG_INT tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeInt.IsCastableTo(Substrate.Nbt.TagType)">
            <summary>
            Checks if the node is castable to another node of a given tag type.
            </summary>
            <param name="type">An NBT tag type.</param>
            <returns>Status indicating whether this object could be cast to a node type represented by the given tag type.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeInt.#ctor">
            <summary>
            Constructs a new int node with a data value of 0.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.TagNodeInt.#ctor(System.Int32)">
            <summary>
            Constructs a new int node.
            </summary>
            <param name="d">The value to set the node's tag data value.</param>
        </member>
        <member name="M:Substrate.Nbt.TagNodeInt.Copy">
            <summary>
            Makes a deep copy of the node.
            </summary>
            <returns>A new int node representing the same data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeInt.ToString">
            <summary>
            Gets a string representation of the node's data.
            </summary>
            <returns>String representation of the node's data.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeInt.op_Implicit(System.Byte)~Substrate.Nbt.TagNodeInt">
            <summary>
            Converts a system byte to an int node representing the same value.
            </summary>
            <param name="b">A byte value.</param>
            <returns>A new int node containing the given value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeInt.op_Implicit(System.Int16)~Substrate.Nbt.TagNodeInt">
            <summary>
            Converts a system short to an int node representing the same value.
            </summary>
            <param name="s">A short value.</param>
            <returns>A new int node containing the given value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeInt.op_Implicit(System.Int32)~Substrate.Nbt.TagNodeInt">
            <summary>
            Converts a system int to an int node representing the same value.
            </summary>
            <param name="i">An int value.</param>
            <returns>A new int node containing the given value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeInt.op_Implicit(Substrate.Nbt.TagNodeInt)~System.Int32">
            <summary>
            Converts an int node to a system int representing the same value.
            </summary>
            <param name="i">An int node.</param>
            <returns>A system int set to the node's data value.</returns>
        </member>
        <member name="M:Substrate.Nbt.TagNodeInt.op_Implicit(Substrate.Nbt.TagNodeInt)~System.Int64">
            <summary>
            Converts an int node to a system long representing the same value.
            </summary>
            <param name="i">An int node.</param>
            <returns>A system long set to the node's data value.</returns>
        </member>
        <member name="P:Substrate.Nbt.TagNodeInt.Data">
            <summary>
            Gets or sets an int of tag data.
            </summary>
        </member>
        <member name="T:Substrate.Nbt.SchemaNodeString">
            <summary>
            A concrete <see cref="T:Substrate.Nbt.SchemaNode"/> representing a <see cref="T:Substrate.Nbt.TagNodeString"/>.
            </summary>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeString.#ctor(System.String)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeString"/> representing a <see cref="T:Substrate.Nbt.TagNodeString"/> named <paramref name="name"/>.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeString"/>.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeString.#ctor(System.String,Substrate.Nbt.SchemaOptions)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeString"/> with additional options.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeString"/>.</param>
            <param name="options">One or more option flags modifying the processing of this node.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeString.#ctor(System.String,System.String)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeString"/> representing a <see cref="T:Substrate.Nbt.TagNodeString"/> named <paramref name="name"/> set to <paramref name="value"/>.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeString"/>.</param>
            <param name="value">The value that the corresponding <see cref="T:Substrate.Nbt.TagNodeString"/> must be set to.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeString.#ctor(System.String,System.String,Substrate.Nbt.SchemaOptions)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeString"/> with additional options.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeString"/>.</param>
            <param name="value">The value that the corresponding <see cref="T:Substrate.Nbt.TagNodeString"/> must be set to.</param>
            <param name="options">One or more option flags modifying the processing of this node.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeString.#ctor(System.String,System.Int32)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeString"/> representing a <see cref="T:Substrate.Nbt.TagNodeString"/> named <paramref name="name"/> with maximum length <paramref name="length"/>.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeString"/>.</param>
            <param name="length">The maximum length of strings in the corresponding <see cref="T:Substrate.Nbt.TagNodeString"/>.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeString.#ctor(System.String,System.Int32,Substrate.Nbt.SchemaOptions)">
            <summary>
            Constructs a new <see cref="T:Substrate.Nbt.SchemaNodeString"/> with additional options.
            </summary>
            <param name="name">The name of the corresponding <see cref="T:Substrate.Nbt.TagNodeString"/>.</param>
            <param name="length">The maximum length of strings in the corresponding <see cref="T:Substrate.Nbt.TagNodeString"/>.</param>
            <param name="options">One or more option flags modifying the processing of this node.</param>
        </member>
        <member name="M:Substrate.Nbt.SchemaNodeString.BuildDefaultTree">
            <summary>
            Constructs a default <see cref="T:Substrate.Nbt.TagNodeString"/> satisfying the constraints of this node.
            </summary>
            <returns>A <see cref="T:Substrate.Nbt.TagNodeString"/> with a sensible default value.  If this node represents a particular string, the <see cref="T:Substrate.Nbt.TagNodeString"/> constructed will be set to that string.</returns>
        </member>
        <member name="P:Substrate.Nbt.SchemaNodeString.Length">
            <summary>
            Gets the maximum length of a valid string.
            </summary>
        </member>
        <member name="P:Substrate.Nbt.SchemaNodeString.Value">
            <summary>
            Gets the expected value of a valid string.
            </summary>
            <remarks>A <see cref="T:Substrate.Nbt.TagNodeString"/> must be set to this value to be considered valid.</remarks>
        </member>
        <member name="P:Substrate.Nbt.SchemaNodeString.HasMaxLength">
            <summary>
            Indicates whether there is a maximum-length constraint on strings in this node.
            </summary>
        </member>
        <member name="T:Substrate.GameType">
            <summary>
            Specifies the type of gameplay associated with a world.
            </summary>
        </member>
        <member name="F:Substrate.GameType.SURVIVAL">
            <summary>
            The world will be played in Survival mode.
            </summary>
        </member>
        <member name="F:Substrate.GameType.CREATIVE">
            <summary>
            The world will be played in Creative mode.
            </summary>
        </member>
        <member name="T:Substrate.Level">
            <summary>
            Represents general data and metadata of a single world.
            </summary>
        </member>
        <member name="M:Substrate.Level.#ctor(Substrate.NbtWorld)">
            <summary>
            Creates a new <see cref="T:Substrate.Level"/> object with reasonable defaults tied to the given world.
            </summary>
            <param name="world">The world that the <see cref="T:Substrate.Level"/> should be tied to.</param>
        </member>
        <member name="M:Substrate.Level.#ctor(Substrate.Level)">
            <summary>
            Creates a copy of an existing <see cref="T:Substrate.Level"/> object.
            </summary>
            <param name="p">The <see cref="T:Substrate.Level"/> object to copy.</param>
        </member>
        <member name="M:Substrate.Level.SetDefaultPlayer">
            <summary>
            Creates a default player entry for this world.
            </summary>
        </member>
        <member name="M:Substrate.Level.Save">
            <summary>
            Saves a <see cref="T:Substrate.Level"/> object to disk as a standard compressed NBT stream.
            </summary>
            <returns>True if the level was saved; false otherwise.</returns>
            <exception cref="T:Substrate.LevelIOException">Thrown when an error is encountered writing out the level.</exception>
        </member>
        <member name="M:Substrate.Level.LoadTree(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to load a Level subtree into the <see cref="T:Substrate.Level"/> without validation.
            </summary>
            <param name="tree">The root node of a Level subtree.</param>
            <returns>The <see cref="T:Substrate.Level"/> returns itself on success, or null if the tree was unparsable.</returns>
        </member>
        <member name="M:Substrate.Level.LoadTreeSafe(Substrate.Nbt.TagNode)">
            <summary>
            Attempt to load a Level subtree into the <see cref="T:Substrate.Level"/> with validation.
            </summary>
            <param name="tree">The root node of a Level subtree.</param>
            <returns>The <see cref="T:Substrate.Level"/> returns itself on success, or null if the tree failed validation.</returns>
        </member>
        <member name="M:Substrate.Level.BuildTree">
            <summary>
            Builds a Level subtree from the current data.
            </summary>
            <returns>The root node of a Level subtree representing the current data.</returns>
        </member>
        <member name="M:Substrate.Level.ValidateTree(Substrate.Nbt.TagNode)">
            <summary>
            Validate a Level subtree against a schema defintion.
            </summary>
            <param name="tree">The root node of a Level subtree.</param>
            <returns>Status indicating whether the tree was valid against the internal schema.</returns>
        </member>
        <member name="M:Substrate.Level.Copy">
            <summary>
            Creates a deep-copy of the <see cref="T:Substrate.Level"/>.
            </summary>
            <returns>A deep-copy of the <see cref="T:Substrate.Level"/>, including a copy of the <see cref="P:Substrate.Level.Player"/>, if one is attached.</returns>
        </member>
        <member name="P:Substrate.Level.Time">
            <summary>
            Gets or sets the creation time of the world as a long timestamp.
            </summary>
        </member>
        <member name="P:Substrate.Level.LastPlayed">
            <summary>
            Gets or sets the time that the world was last played as a long timestamp.
            </summary>
        </member>
        <member name="P:Substrate.Level.Player">
            <summary>
            Gets or sets the player for single-player worlds.
            </summary>
        </member>
        <member name="P:Substrate.Level.Spawn">
            <summary>
            Gets or sets the world's spawn point.
            </summary>
        </member>
        <member name="P:Substrate.Level.SizeOnDisk">
            <summary>
            Gets the estimated size of the world in bytes.
            </summary>
        </member>
        <member name="P:Substrate.Level.RandomSeed">
            <summary>
            Gets or sets the world's random seed.
            </summary>
        </member>
        <member name="P:Substrate.Level.Version">
            <summary>
            Gets or sets the world's version number.
            </summary>
        </member>
        <member name="P:Substrate.Level.LevelName">
            <summary>
            Gets or sets the name of the world.
            </summary>
            <remarks>If there is a <see cref="P:Substrate.Level.Player"/> object attached to this world, the player's world field 
            will also be updated.</remarks>
        </member>
        <member name="P:Substrate.Level.GeneratorName">
            <summary>
            Gets or sets the name of the world generator.
            </summary>
            <remarks>This should be 'default', 'flat', or 'largeBiomes'.</remarks>
        </member>
        <member name="P:Substrate.Level.IsRaining">
            <summary>
            Gets or sets a value indicating that it is raining in the world.
            </summary>
        </member>
        <member name="P:Substrate.Level.IsThundering">
            <summary>
            Gets or sets a value indicating that it is thunderstorming in the world.
            </summary>
        </member>
        <member name="P:Substrate.Level.RainTime">
            <summary>
            Gets or sets the timer value for controlling rain.
            </summary>
        </member>
        <member name="P:Substrate.Level.ThunderTime">
            <summary>
            Gets or sets the timer value for controlling thunderstorms.
            </summary>
        </member>
        <member name="P:Substrate.Level.GameType">
            <summary>
            Gets or sets the game type associated with this world.
            </summary>
        </member>
        <member name="P:Substrate.Level.UseMapFeatures">
            <summary>
            Gets or sets a value indicating that structures (dungeons, villages, ...) will be generated.
            </summary>
        </member>
        <member name="P:Substrate.Level.Hardcore">
            <summary>
            Gets or sets a value indicating whether the map is hardcore mode
            </summary>
        </member>
        <member name="P:Substrate.Level.Source">
            <summary>
            Gets the source <see cref="T:Substrate.Nbt.TagNodeCompound"/> used to create this <see cref="T:Substrate.Level"/> if it exists.
            </summary>
        </member>
        <member name="P:Substrate.Level.Schema">
            <summary>
            Gets a <see cref="T:Substrate.Nbt.SchemaNode"/> representing the schema of a level.
            </summary>
        </member>
        <member name="M:Substrate.AnvilRegion.GetFileName">
            <inherits />
        </member>
        <member name="M:Substrate.AnvilRegion.GetFilePath">
            <inherits />
        </member>
        <member name="M:Substrate.AnvilRegion.TestFileName(System.String)">
            <summary>
            Tests if the given filename conforms to the general naming pattern for any region.
            </summary>
            <param name="filename">The filename to test.</param>
            <returns>True if the filename is a valid region name; false if it does not conform to the pattern.</returns>
        </member>
        <member name="M:Substrate.AnvilRegion.ParseFileNameCore(System.String,System.Int32@,System.Int32@)">
            <summary>
            Parses the given filename to extract encoded region coordinates.
            </summary>
            <param name="filename">The region filename to parse.</param>
            <param name="x">This parameter will contain the X-coordinate of a region.</param>
            <param name="z">This parameter will contain the Z-coordinate of a region.</param>
            <returns>True if the filename could be correctly parse; false otherwise.</returns>
        </member>
    </members>
</doc>
