From b8619386eb31a2bf3f460e464d0237f6bee5f56f Mon Sep 17 00:00:00 2001
From: Adam Frisby
Date: Sat, 11 Apr 2009 10:21:04 +0000
Subject: * Minor MRM Cleanup * Interfaces now live in Interfaces subdirectory.
 * Namespace does not yet reflect this change. * Final namespace for MRMs will
 probably sit somewhere around OpenSim.Extend.MRM[?]

---
 .../Scripting/Minimodule/IAvatar.cs                |  39 ----
 .../Scripting/Minimodule/IEntity.cs                |  14 --
 .../Scripting/Minimodule/IGraphics.cs              |  12 --
 .../Scripting/Minimodule/IHeightmap.cs             |  69 -------
 .../OptionalModules/Scripting/Minimodule/IHost.cs  |  41 ----
 .../Scripting/Minimodule/IObject.cs                | 223 ---------------------
 .../Scripting/Minimodule/IObjectAccessor.cs        |  39 ----
 .../Scripting/Minimodule/IParcel.cs                |  42 ----
 .../Scripting/Minimodule/IPersistence.cs           |  56 ------
 .../Scripting/Minimodule/ISocialEntity.cs          |  41 ----
 .../OptionalModules/Scripting/Minimodule/IWorld.cs |  57 ------
 .../Scripting/Minimodule/Interfaces/IAvatar.cs     |  39 ++++
 .../Scripting/Minimodule/Interfaces/IEntity.cs     |  14 ++
 .../Scripting/Minimodule/Interfaces/IGraphics.cs   |  12 ++
 .../Scripting/Minimodule/Interfaces/IHeightmap.cs  |  69 +++++++
 .../Scripting/Minimodule/Interfaces/IHost.cs       |  41 ++++
 .../Scripting/Minimodule/Interfaces/IObject.cs     | 223 +++++++++++++++++++++
 .../Minimodule/Interfaces/IObjectAccessor.cs       |  39 ++++
 .../Scripting/Minimodule/Interfaces/IParcel.cs     |  42 ++++
 .../Minimodule/Interfaces/IPersistence.cs          |  56 ++++++
 .../Scripting/Minimodule/Interfaces/IScheduler.cs  |  43 ++++
 .../Minimodule/Interfaces/ISocialEntity.cs         |  41 ++++
 .../Scripting/Minimodule/Interfaces/IWorld.cs      |  57 ++++++
 .../Scripting/Minimodule/SOPObjectMaterial.cs      |   5 +-
 .../Test/DrunkenTextAppreciationModule.cs          |  18 +-
 25 files changed, 690 insertions(+), 642 deletions(-)
 delete mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/IAvatar.cs
 delete mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/IEntity.cs
 delete mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/IGraphics.cs
 delete mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/IHeightmap.cs
 delete mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/IHost.cs
 delete mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/IObject.cs
 delete mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/IObjectAccessor.cs
 delete mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/IParcel.cs
 delete mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/IPersistence.cs
 delete mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/ISocialEntity.cs
 delete mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/IWorld.cs
 create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatar.cs
 create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IEntity.cs
 create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IGraphics.cs
 create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IHeightmap.cs
 create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IHost.cs
 create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs
 create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObjectAccessor.cs
 create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IParcel.cs
 create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IPersistence.cs
 create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IScheduler.cs
 create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/ISocialEntity.cs
 create mode 100644 OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IWorld.cs

diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IAvatar.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/IAvatar.cs
deleted file mode 100644
index fef85dd..0000000
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IAvatar.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using OpenMetaverse;
-
-namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
-{
-    public interface IAvatar : IEntity
-    {
-        
-    }
-}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IEntity.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/IEntity.cs
deleted file mode 100644
index 94c53e3..0000000
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IEntity.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-using OpenMetaverse;
-
-namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
-{
-    public interface IEntity
-    {
-        string Name { get; set; }
-        UUID GlobalID { get; }
-        Vector3 WorldPosition { get; set; }
-    }
-}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IGraphics.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/IGraphics.cs
deleted file mode 100644
index f4bc12e..0000000
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IGraphics.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using System.Drawing;
-using OpenMetaverse;
-
-namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
-{
-    public interface IGraphics
-    {
-        UUID SaveBitmap(Bitmap data);
-        UUID SaveBitmap(Bitmap data, bool lossless, bool temporary);
-        Bitmap LoadBitmap(UUID assetID);
-    }
-}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IHeightmap.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/IHeightmap.cs
deleted file mode 100644
index 93cbc5b..0000000
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IHeightmap.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
-{
-    public interface IHeightmap
-    {
-        /// <summary>
-        /// Returns [or sets] the heightmap value at specified coordinates.
-        /// </summary>
-        /// <param name="x">X Coordinate</param>
-        /// <param name="y">Y Coordinate</param>
-        /// <returns>A value in meters representing height. Can be negative. Value correlates with Z parameter in world coordinates</returns>
-        /// <example>
-        /// double heightVal = World.Heightmap[128,128];
-        /// World.Heightmap[128,128] *= 5.0;
-        /// World.Heightmap[128,128] = 25;
-        /// </example>
-        double this[int x, int y]
-        {
-            get;
-            set;
-        }
-
-        /// <summary>
-        /// The maximum length of the region (Y axis), exclusive. (eg Height = 256, max Y = 255). Minimum is always 0 inclusive.
-        /// </summary>
-        /// <example>
-        /// Host.Console.Info("The terrain length of this region is " + World.Heightmap.Length);
-        /// </example>
-        int Length { get; }
-
-        /// <summary>
-        /// The maximum width of the region (X axis), exclusive. (eg Width = 256, max X = 255). Minimum is always 0 inclusive.
-        /// </summary>
-        /// <example>
-        /// Host.Console.Info("The terrain width of this region is " + World.Heightmap.Width);
-        /// </example>
-        int Width { get; }
-    }
-}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IHost.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/IHost.cs
deleted file mode 100644
index 6c76919..0000000
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IHost.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using log4net;
-
-namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
-{
-    public interface IHost
-    {
-        IObject Object { get; }
-        ILog Console { get; }
-        IGraphics Graphics { get; }
-    }
-}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IObject.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/IObject.cs
deleted file mode 100644
index dc2e3fa..0000000
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IObject.cs
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Drawing;
-using OpenMetaverse;
-using OpenSim.Region.OptionalModules.Scripting.Minimodule.Object;
-
-namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
-{
-    public class TouchEventArgs : EventArgs
-    {
-        public IAvatar Avatar;
-
-        public Vector3 TouchBiNormal;
-        public Vector3 TouchNormal;
-        public Vector3 TouchPosition;
-
-        public Vector2 TouchUV;
-        public Vector2 TouchST;
-
-        public int TouchMaterialIndex;
-    }
-
-    public delegate void OnTouchDelegate(IObject sender, TouchEventArgs e);
-
-    public interface IObject : IEntity
-    {
-        #region Events
-
-        event OnTouchDelegate OnTouch;
-
-        #endregion
-
-        /// <summary>
-        /// Returns whether or not this object is still in the world.
-        /// Eg, if you store an IObject reference, however the object
-        /// is deleted before you use it, it will throw a NullReference 
-        /// exception. 'Exists' allows you to check the object is still
-        /// in play before utilizing it.
-        /// </summary>
-        /// <example>
-        /// IObject deleteMe = World.Objects[0];
-        /// 
-        /// if (deleteMe.Exists) {
-        ///     deleteMe.Say("Hello, I still exist!");
-        /// }
-        /// 
-        /// World.Objects.Remove(deleteMe);
-        /// 
-        /// if (!deleteMe.Exists) {
-        ///     Host.Console.Info("I was deleted");
-        /// }
-        /// </example>
-        /// <remarks>
-        /// Objects should be near-guarunteed to exist for any event which
-        /// passes them as an argument. Storing an object for a longer period
-        /// of time however will limit their reliability.
-        /// 
-        /// It is a good practice to use Try/Catch blocks handling for
-        /// NullReferenceException, when accessing remote objects.
-        /// </remarks>
-        bool Exists { get; }
-
-        /// <summary>
-        /// The local region-unique ID for this object.
-        /// </summary>
-        uint LocalID { get; }
-
-        /// <summary>
-        /// The description assigned to this object.
-        /// </summary>
-        String Description { get; set; }
-
-        /// <summary>
-        /// Returns the root object of a linkset. If this object is the root, it will return itself.
-        /// </summary>
-        IObject Root { get; }
-
-        /// <summary>
-        /// Returns a collection of objects which are linked to the current object. Does not include the root object.
-        /// </summary>
-        IObject[] Children { get; }
-
-        /// <summary>
-        /// Returns a list of materials attached to this object. Each may contain unique texture 
-        /// and other visual information. For primitive based objects, this correlates with 
-        /// Object Faces. For mesh based objects, this correlates with Materials.
-        /// </summary>
-        IObjectMaterial[] Materials { get; }
-
-        /// <summary>
-        /// The bounding box of the object. Primitive and Mesh objects alike are scaled to fit within these bounds.
-        /// </summary>
-        Vector3 Scale { get; set; }
-
-        /// <summary>
-        /// The rotation of the object relative to the Scene
-        /// </summary>
-        Quaternion WorldRotation { get; set; }
-
-        /// <summary>
-        /// The rotation of the object relative to a parent object
-        /// If root, works the same as WorldRotation
-        /// </summary>
-        Quaternion OffsetRotation { get; set; }
-
-        /// <summary>
-        /// The position of the object relative to a parent object
-        /// If root, works the same as WorldPosition
-        /// </summary>
-        Vector3 OffsetPosition { get; set; }
-
-        Vector3 SitTarget { get; set; }
-        String SitTargetText { get; set; }
-
-        String TouchText { get; set; }
-
-        /// <summary>
-        /// Text to be associated with this object, in the 
-        /// Second Life(r) viewer, this is shown above the
-        /// object.
-        /// </summary>
-        String Text { get; set; }
-
-        bool IsRotationLockedX { get; set; } // SetStatus(!ROTATE_X)
-        bool IsRotationLockedY { get; set; } // SetStatus(!ROTATE_Y)
-        bool IsRotationLockedZ { get; set; } // SetStatus(!ROTATE_Z)
-        bool IsSandboxed { get; set; } // SetStatus(SANDBOX)
-        bool IsImmotile { get; set; } // SetStatus(BLOCK_GRAB)
-        bool IsAlwaysReturned { get; set; } // SetStatus(!DIE_AT_EDGE)
-        bool IsTemporary { get; set; } // TEMP_ON_REZ
-
-        bool IsFlexible { get; set; }
-
-        PrimType PrimShape { get; set; }
-        // TODO:
-        // PrimHole
-        // Repeats, Offsets, Cut/Dimple/ProfileCut
-        // Hollow, Twist, HoleSize,
-        // Taper[A+B], Shear[A+B], Revolutions,
-        // RadiusOffset, Skew
-
-        PhysicsMaterial PhysicsMaterial { get; set; }
-
-        IObjectPhysics Physics { get; }
-
-
-        /// <summary>
-        /// Causes the object to speak to its surroundings,
-        /// equivilent to LSL/OSSL llSay
-        /// </summary>
-        /// <param name="msg">The message to send to the user</param>
-        void Say(string msg);
-
-    }
-
-    public enum PhysicsMaterial
-    {
-        Default,
-        Glass,
-        Metal,
-        Plastic,
-        Wood,
-        Rubber,
-        Stone,
-        Flesh
-    }
-
-    public enum PrimType
-    {
-        NotPrimitive = 255,
-        Box = 0,
-        Cylinder = 1,
-        Prism = 2,
-        Sphere = 3,
-        Torus = 4,
-        Tube = 5,
-        Ring = 6,
-        Sculpt = 7
-    }
-
-    public enum TextureMapping
-    {
-        Default,
-        Planar
-    }
-
-    public interface IObjectMaterial
-    {
-        Color Color { get; set; }
-        UUID Texture { get; set; }
-        TextureMapping Mapping { get; set; } // SetPrimParms(PRIM_TEXGEN)
-        bool Bright { get; set; } // SetPrimParms(FULLBRIGHT)
-        double Bloom { get; set; } // SetPrimParms(GLOW)
-        bool Shiny { get; set; } // SetPrimParms(SHINY)
-        bool BumpMap { get; set; } // SetPrimParms(BUMPMAP) [DEPRECIATE IN FAVOUR OF UUID?]
-    }
-}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IObjectAccessor.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/IObjectAccessor.cs
deleted file mode 100644
index 7aed41b..0000000
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IObjectAccessor.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System.Collections.Generic;
-using OpenMetaverse;
-
-namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
-{
-    public interface IObjectAccessor : ICollection<IObject>
-    {
-        IObject this[int index] { get; }
-        IObject this[uint index] { get; }
-        IObject this[UUID index] { get; }
-    }
-}
\ No newline at end of file
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IParcel.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/IParcel.cs
deleted file mode 100644
index 759b26d..0000000
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IParcel.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using OpenMetaverse;
-
-namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
-{
-    public interface IParcel
-    {
-        string Name { get; set; }
-        string Description { get; set; }
-        ISocialEntity Owner { get; set; }
-        bool[,] Bitmap { get; }
-    }
-}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IPersistence.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/IPersistence.cs
deleted file mode 100644
index 17bb6e7..0000000
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IPersistence.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
-{
-    interface IPersistence
-    {
-        T Get<T>(Guid storageID);
-        T Get<T>();
-
-        /// <summary>
-        /// Stores 'data' into the persistence system
-        /// associated with this object, however saved
-        /// under the ID 'storageID'. This data may
-        /// be accessed by other scripts however.
-        /// </summary>
-        /// <param name="storageID"></param>
-        /// <param name="data"></param>
-        void Put<T>(Guid storageID, T data);
-
-        /// <summary>
-        /// Stores 'data' into the persistence system
-        /// using the default ID for this script.
-        /// </summary>
-        /// <param name="data"></param>
-        void Put<T>(T data);
-    }
-}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/ISocialEntity.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/ISocialEntity.cs
deleted file mode 100644
index 400367f..0000000
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/ISocialEntity.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using OpenMetaverse;
-
-namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
-{
-    public interface ISocialEntity
-    {
-        UUID GlobalID { get; }
-        string Name { get; }
-        bool IsUser { get; }
-    }
-}
\ No newline at end of file
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IWorld.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/IWorld.cs
deleted file mode 100644
index acb569f..0000000
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/IWorld.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of the OpenSimulator Project nor the
- *       names of its contributors may be used to endorse or promote products
- *       derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-
-namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
-{
-    public class NewUserEventArgs : EventArgs
-    {
-        public IAvatar Avatar;
-    }
-
-    public delegate void OnNewUserDelegate(IWorld sender, NewUserEventArgs e);
-
-    public class ChatEventArgs : EventArgs
-    {
-        public string Text;
-        public IEntity Sender;
-    }
-
-    public delegate void OnChatDelegate(IWorld sender, ChatEventArgs e);
-
-    public interface IWorld
-    {
-        IObjectAccessor Objects { get; }
-        IAvatar[] Avatars { get; }
-        IParcel[] Parcels { get; }
-        IHeightmap Terrain { get; }
-
-        event OnChatDelegate OnChat;
-        event OnNewUserDelegate OnNewUser;
-    }
-}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatar.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatar.cs
new file mode 100644
index 0000000..92ef490
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IAvatar.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of the OpenSimulator Project nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using OpenMetaverse;
+
+namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
+{
+    public interface IAvatar : IEntity
+    {
+        
+    }
+}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IEntity.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IEntity.cs
new file mode 100644
index 0000000..94c53e3
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IEntity.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using OpenMetaverse;
+
+namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
+{
+    public interface IEntity
+    {
+        string Name { get; set; }
+        UUID GlobalID { get; }
+        Vector3 WorldPosition { get; set; }
+    }
+}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IGraphics.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IGraphics.cs
new file mode 100644
index 0000000..f4bc12e
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IGraphics.cs
@@ -0,0 +1,12 @@
+using System.Drawing;
+using OpenMetaverse;
+
+namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
+{
+    public interface IGraphics
+    {
+        UUID SaveBitmap(Bitmap data);
+        UUID SaveBitmap(Bitmap data, bool lossless, bool temporary);
+        Bitmap LoadBitmap(UUID assetID);
+    }
+}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IHeightmap.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IHeightmap.cs
new file mode 100644
index 0000000..eea1baf
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IHeightmap.cs
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of the OpenSimulator Project nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
+{
+    public interface IHeightmap
+    {
+        /// <summary>
+        /// Returns [or sets] the heightmap value at specified coordinates.
+        /// </summary>
+        /// <param name="x">X Coordinate</param>
+        /// <param name="y">Y Coordinate</param>
+        /// <returns>A value in meters representing height. Can be negative. Value correlates with Z parameter in world coordinates</returns>
+        /// <example>
+        /// double heightVal = World.Heightmap[128,128];
+        /// World.Heightmap[128,128] *= 5.0;
+        /// World.Heightmap[128,128] = 25;
+        /// </example>
+        double this[int x, int y]
+        {
+            get;
+            set;
+        }
+
+        /// <summary>
+        /// The maximum length of the region (Y axis), exclusive. (eg Height = 256, max Y = 255). Minimum is always 0 inclusive.
+        /// </summary>
+        /// <example>
+        /// Host.Console.Info("The terrain length of this region is " + World.Heightmap.Length);
+        /// </example>
+        int Length { get; }
+
+        /// <summary>
+        /// The maximum width of the region (X axis), exclusive. (eg Width = 256, max X = 255). Minimum is always 0 inclusive.
+        /// </summary>
+        /// <example>
+        /// Host.Console.Info("The terrain width of this region is " + World.Heightmap.Width);
+        /// </example>
+        int Width { get; }
+    }
+}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IHost.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IHost.cs
new file mode 100644
index 0000000..8980b8f
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IHost.cs
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of the OpenSimulator Project nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using log4net;
+
+namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
+{
+    public interface IHost
+    {
+        IObject Object { get; }
+        ILog Console { get; }
+        IGraphics Graphics { get; }
+    }
+}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs
new file mode 100644
index 0000000..e17b716
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObject.cs
@@ -0,0 +1,223 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of the OpenSimulator Project nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Drawing;
+using OpenMetaverse;
+using OpenSim.Region.OptionalModules.Scripting.Minimodule.Object;
+
+namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
+{
+    public class TouchEventArgs : EventArgs
+    {
+        public IAvatar Avatar;
+
+        public Vector3 TouchBiNormal;
+        public Vector3 TouchNormal;
+        public Vector3 TouchPosition;
+
+        public Vector2 TouchUV;
+        public Vector2 TouchST;
+
+        public int TouchMaterialIndex;
+    }
+
+    public delegate void OnTouchDelegate(IObject sender, TouchEventArgs e);
+
+    public interface IObject : IEntity
+    {
+        #region Events
+
+        event OnTouchDelegate OnTouch;
+
+        #endregion
+
+        /// <summary>
+        /// Returns whether or not this object is still in the world.
+        /// Eg, if you store an IObject reference, however the object
+        /// is deleted before you use it, it will throw a NullReference 
+        /// exception. 'Exists' allows you to check the object is still
+        /// in play before utilizing it.
+        /// </summary>
+        /// <example>
+        /// IObject deleteMe = World.Objects[0];
+        /// 
+        /// if (deleteMe.Exists) {
+        ///     deleteMe.Say("Hello, I still exist!");
+        /// }
+        /// 
+        /// World.Objects.Remove(deleteMe);
+        /// 
+        /// if (!deleteMe.Exists) {
+        ///     Host.Console.Info("I was deleted");
+        /// }
+        /// </example>
+        /// <remarks>
+        /// Objects should be near-guarunteed to exist for any event which
+        /// passes them as an argument. Storing an object for a longer period
+        /// of time however will limit their reliability.
+        /// 
+        /// It is a good practice to use Try/Catch blocks handling for
+        /// NullReferenceException, when accessing remote objects.
+        /// </remarks>
+        bool Exists { get; }
+
+        /// <summary>
+        /// The local region-unique ID for this object.
+        /// </summary>
+        uint LocalID { get; }
+
+        /// <summary>
+        /// The description assigned to this object.
+        /// </summary>
+        String Description { get; set; }
+
+        /// <summary>
+        /// Returns the root object of a linkset. If this object is the root, it will return itself.
+        /// </summary>
+        IObject Root { get; }
+
+        /// <summary>
+        /// Returns a collection of objects which are linked to the current object. Does not include the root object.
+        /// </summary>
+        IObject[] Children { get; }
+
+        /// <summary>
+        /// Returns a list of materials attached to this object. Each may contain unique texture 
+        /// and other visual information. For primitive based objects, this correlates with 
+        /// Object Faces. For mesh based objects, this correlates with Materials.
+        /// </summary>
+        IObjectMaterial[] Materials { get; }
+
+        /// <summary>
+        /// The bounding box of the object. Primitive and Mesh objects alike are scaled to fit within these bounds.
+        /// </summary>
+        Vector3 Scale { get; set; }
+
+        /// <summary>
+        /// The rotation of the object relative to the Scene
+        /// </summary>
+        Quaternion WorldRotation { get; set; }
+
+        /// <summary>
+        /// The rotation of the object relative to a parent object
+        /// If root, works the same as WorldRotation
+        /// </summary>
+        Quaternion OffsetRotation { get; set; }
+
+        /// <summary>
+        /// The position of the object relative to a parent object
+        /// If root, works the same as WorldPosition
+        /// </summary>
+        Vector3 OffsetPosition { get; set; }
+
+        Vector3 SitTarget { get; set; }
+        String SitTargetText { get; set; }
+
+        String TouchText { get; set; }
+
+        /// <summary>
+        /// Text to be associated with this object, in the 
+        /// Second Life(r) viewer, this is shown above the
+        /// object.
+        /// </summary>
+        String Text { get; set; }
+
+        bool IsRotationLockedX { get; set; } // SetStatus(!ROTATE_X)
+        bool IsRotationLockedY { get; set; } // SetStatus(!ROTATE_Y)
+        bool IsRotationLockedZ { get; set; } // SetStatus(!ROTATE_Z)
+        bool IsSandboxed { get; set; } // SetStatus(SANDBOX)
+        bool IsImmotile { get; set; } // SetStatus(BLOCK_GRAB)
+        bool IsAlwaysReturned { get; set; } // SetStatus(!DIE_AT_EDGE)
+        bool IsTemporary { get; set; } // TEMP_ON_REZ
+
+        bool IsFlexible { get; set; }
+
+        PrimType PrimShape { get; set; }
+        // TODO:
+        // PrimHole
+        // Repeats, Offsets, Cut/Dimple/ProfileCut
+        // Hollow, Twist, HoleSize,
+        // Taper[A+B], Shear[A+B], Revolutions,
+        // RadiusOffset, Skew
+
+        PhysicsMaterial PhysicsMaterial { get; set; }
+
+        IObjectPhysics Physics { get; }
+
+
+        /// <summary>
+        /// Causes the object to speak to its surroundings,
+        /// equivilent to LSL/OSSL llSay
+        /// </summary>
+        /// <param name="msg">The message to send to the user</param>
+        void Say(string msg);
+
+    }
+
+    public enum PhysicsMaterial
+    {
+        Default,
+        Glass,
+        Metal,
+        Plastic,
+        Wood,
+        Rubber,
+        Stone,
+        Flesh
+    }
+
+    public enum PrimType
+    {
+        NotPrimitive = 255,
+        Box = 0,
+        Cylinder = 1,
+        Prism = 2,
+        Sphere = 3,
+        Torus = 4,
+        Tube = 5,
+        Ring = 6,
+        Sculpt = 7
+    }
+
+    public enum TextureMapping
+    {
+        Default,
+        Planar
+    }
+
+    public interface IObjectMaterial
+    {
+        Color Color { get; set; }
+        UUID Texture { get; set; }
+        TextureMapping Mapping { get; set; } // SetPrimParms(PRIM_TEXGEN)
+        bool Bright { get; set; } // SetPrimParms(FULLBRIGHT)
+        double Bloom { get; set; } // SetPrimParms(GLOW)
+        bool Shiny { get; set; } // SetPrimParms(SHINY)
+        bool BumpMap { get; set; } // SetPrimParms(BUMPMAP) [DEPRECIATE IN FAVOUR OF UUID?]
+    }
+}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObjectAccessor.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObjectAccessor.cs
new file mode 100644
index 0000000..cd27a6a
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IObjectAccessor.cs
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of the OpenSimulator Project nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System.Collections.Generic;
+using OpenMetaverse;
+
+namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
+{
+    public interface IObjectAccessor : ICollection<IObject>
+    {
+        IObject this[int index] { get; }
+        IObject this[uint index] { get; }
+        IObject this[UUID index] { get; }
+    }
+}
\ No newline at end of file
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IParcel.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IParcel.cs
new file mode 100644
index 0000000..3b229a7
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IParcel.cs
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of the OpenSimulator Project nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using OpenMetaverse;
+
+namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
+{
+    public interface IParcel
+    {
+        string Name { get; set; }
+        string Description { get; set; }
+        ISocialEntity Owner { get; set; }
+        bool[,] Bitmap { get; }
+    }
+}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IPersistence.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IPersistence.cs
new file mode 100644
index 0000000..bde51fe
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IPersistence.cs
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of the OpenSimulator Project nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
+{
+    interface IPersistence
+    {
+        T Get<T>(Guid storageID);
+        T Get<T>();
+
+        /// <summary>
+        /// Stores 'data' into the persistence system
+        /// associated with this object, however saved
+        /// under the ID 'storageID'. This data may
+        /// be accessed by other scripts however.
+        /// </summary>
+        /// <param name="storageID"></param>
+        /// <param name="data"></param>
+        void Put<T>(Guid storageID, T data);
+
+        /// <summary>
+        /// Stores 'data' into the persistence system
+        /// using the default ID for this script.
+        /// </summary>
+        /// <param name="data"></param>
+        void Put<T>(T data);
+    }
+}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IScheduler.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IScheduler.cs
new file mode 100644
index 0000000..cf45de7
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IScheduler.cs
@@ -0,0 +1,43 @@
+using System;
+
+namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
+{
+    interface IScheduler
+    {
+        /// <summary>
+        /// Schedule an event callback to occur
+        /// when 'time' is elapsed.
+        /// </summary>
+        /// <param name="time">The period to wait before executing</param>
+        void RunIn(TimeSpan time);
+
+        /// <summary>
+        /// Schedule an event callback to fire
+        /// every "time". Equivilent to a repeating
+        /// timer.
+        /// </summary>
+        /// <param name="time">The period to wait between executions</param>
+        void RunAndRepeat(TimeSpan time);
+
+        /// <summary>
+        /// Fire this scheduler only when the region has
+        /// a user in it.
+        /// </summary>
+        bool WhenRegionOccupied { get; set; }
+
+        /// <summary>
+        /// Fire this event only when the region is visible
+        /// to a child agent, or there is a full agent
+        /// in this region.
+        /// </summary>
+        bool WhenRegionVisible { get; set; }
+
+        /// <summary>
+        /// Determines whether this runs in the master scheduler thread, or a new thread
+        /// is spawned to handle your request. Running in scheduler may mean that your
+        /// code does not execute perfectly on time, however will result in a lower
+        /// processor cost to running your code.
+        /// </summary>
+        bool Schedule { get; set; }
+    }
+}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/ISocialEntity.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/ISocialEntity.cs
new file mode 100644
index 0000000..cbac123
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/ISocialEntity.cs
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of the OpenSimulator Project nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using OpenMetaverse;
+
+namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
+{
+    public interface ISocialEntity
+    {
+        UUID GlobalID { get; }
+        string Name { get; }
+        bool IsUser { get; }
+    }
+}
\ No newline at end of file
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IWorld.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IWorld.cs
new file mode 100644
index 0000000..9196acd
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Interfaces/IWorld.cs
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of the OpenSimulator Project nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+
+namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
+{
+    public class NewUserEventArgs : EventArgs
+    {
+        public IAvatar Avatar;
+    }
+
+    public delegate void OnNewUserDelegate(IWorld sender, NewUserEventArgs e);
+
+    public class ChatEventArgs : EventArgs
+    {
+        public string Text;
+        public IEntity Sender;
+    }
+
+    public delegate void OnChatDelegate(IWorld sender, ChatEventArgs e);
+
+    public interface IWorld
+    {
+        IObjectAccessor Objects { get; }
+        IAvatar[] Avatars { get; }
+        IParcel[] Parcels { get; }
+        IHeightmap Terrain { get; }
+
+        event OnChatDelegate OnChat;
+        event OnNewUserDelegate OnNewUser;
+    }
+}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObjectMaterial.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObjectMaterial.cs
index 94de09e..57d84e1 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObjectMaterial.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/SOPObjectMaterial.cs
@@ -1,7 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Text;
+using System.Drawing;
 using OpenMetaverse;
 using OpenSim.Region.Framework.Scenes;
 
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Test/DrunkenTextAppreciationModule.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Test/DrunkenTextAppreciationModule.cs
index 7e8db9c..755831c 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Test/DrunkenTextAppreciationModule.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Test/DrunkenTextAppreciationModule.cs
@@ -38,13 +38,21 @@ namespace OpenSim
 
         void World_OnChat(IWorld sender, ChatEventArgs e)
         {
-            if(!e.Text.Contains("hic!"))
+            if (e.Sender is IAvatar)
             {
-                e.Text = e.Text.Replace("s", "sh");
-                e.Text = e.Text.Replace("S", "Sh");
-                e.Text += " ...hic!";
+                if (!e.Text.Contains("hic!"))
+                {
+                    e.Text = e.Text.Replace("s", "sh");
+                    e.Text = e.Text.Replace("S", "Sh");
+                    e.Text += " ...hic!";
 
-                Host.Object.Say(e.Text);
+                    Host.Object.Say(e.Text);
+                }
+            }
+
+            if(e.Sender is IObject)
+            {
+                // Ignore
             }
         }
 
-- 
cgit v1.1