<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://opensimulator.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://opensimulator.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=KMeist+Hax</id>
		<title>OpenSimulator - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://opensimulator.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=KMeist+Hax"/>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Special:Contributions/KMeist_Hax"/>
		<updated>2026-05-16T05:36:45Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.9</generator>

	<entry>
		<id>http://opensimulator.org/wiki/User:KMeist_Hax</id>
		<title>User:KMeist Hax</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/User:KMeist_Hax"/>
				<updated>2008-05-30T21:44:11Z</updated>
		
		<summary type="html">&lt;p&gt;KMeist Hax: /* Contact info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;soup /opensim/ KMeist Hax, part time opensim developer and /b/tard here. Makes region modules and doesn't afraid of anything.&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
I am currently responsible for the following projects:&lt;br /&gt;
&lt;br /&gt;
* [[OpenSim.Region.DataSnapshot|Data Snapshot Module and Format]] - Search the open metaverse -- and beyond!&lt;br /&gt;
* That's pretty much it&lt;br /&gt;
&lt;br /&gt;
== Contact info ==&lt;br /&gt;
&lt;br /&gt;
If I accidentally broke your sims with my code, you have a feature request, or just want to talk, you can contact me via the following ways:&lt;br /&gt;
&lt;br /&gt;
=== MAIN CONTACT METHODS ===&lt;br /&gt;
* Freenode IRC - '''kmeisthax''' / '''kmeisthax_afk''' has been known to lurk #opensim and #opensim-dev from time to time.&lt;br /&gt;
: Please private-message any questions as I often have the IRC window on my secondary machine and I might miss chat lines.&lt;br /&gt;
* AIM - '''lotsostuff1''' - I've had this username since my underage b&amp;amp; days!&lt;br /&gt;
* MSN - '''km767 YOUKNOWWHATGOESHERE hotmail EARTHBOUND com''' - Replace &amp;quot;YOUKNOWWHATGOESHERE&amp;quot; with that little A in a circle symbol. Replace &amp;quot;EARTHBOUND&amp;quot; with a dot.&lt;br /&gt;
* (in korea, only old people use) E-mail - '''dcrkid YOUKNOWWHATGOESHERE yahoo EARTHBOUND com''' - Same as the MSN account, let's hope the spambots don't just grab stuff with yahoo in it nowadays.&lt;br /&gt;
&lt;br /&gt;
=== GAMES (and things that pretend to not be games) ===&lt;br /&gt;
* Linden Lab's grid - username '''KMeist Hax'''.&lt;br /&gt;
* OSGrid - Again, '''KMeist Hax'''.&lt;br /&gt;
* Steam - I know it's against RMS's wishes to play proprietary games, but [http://steamcommunity.com/id/kmeisthax '''Little Strawberry'''] just can't get enough Team Fortress 2.&lt;br /&gt;
&lt;br /&gt;
=== ETC ===&lt;br /&gt;
* Blog - [http://jadestern.blogspot.com Track my life with unending detail!] --- whenever I update it&lt;/div&gt;</summary>
		<author><name>KMeist Hax</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/Developer_Documentation</id>
		<title>Developer Documentation</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/Developer_Documentation"/>
				<updated>2008-04-14T23:49:21Z</updated>
		
		<summary type="html">&lt;p&gt;KMeist Hax: /* Developer Documentation */ added link to OS.R.DS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Quicklinks}}&lt;br /&gt;
== Communication ==&lt;br /&gt;
&lt;br /&gt;
A good first point of contact is the OpenSim IRC, on irc.freenode.net channels #opensim / #opensim-dev.&lt;br /&gt;
&lt;br /&gt;
The OpenSim developers hold [[office hours]] once a week in-world on Tuesdays at &amp;quot;Wright Plaza&amp;quot; on OSGrid. &lt;br /&gt;
&lt;br /&gt;
There is a &amp;quot;Test Hour&amp;quot; on Saturdays, also generally on &amp;quot;Wright Plaza&amp;quot;. Both these weekly events are held at 1900UTC.&lt;br /&gt;
&lt;br /&gt;
Check on the #opensim IRC channel on Freenode just before each of these events if there is any confusion.&lt;br /&gt;
&lt;br /&gt;
== Developer Documentation ==&lt;br /&gt;
You can view the current [[Top 10 Bugs|top 10 bugs]] blocking forward development.&lt;br /&gt;
&lt;br /&gt;
* [[OpenSim: Debugging - profiler dumps]] &amp;amp;mdash; Dumps of OpenSim profiles to aid in tracking memory leaks.&lt;br /&gt;
* [[OpenSim: Testing]] &amp;amp;mdash; What is tested.&lt;br /&gt;
* [[OpenSim: TechRef]] &amp;amp;mdash; A technical description of the simulator operation.&lt;br /&gt;
* [[OpenSim: Grids]] &amp;amp;mdash; Known Public grids currently available.&lt;br /&gt;
* [[Opensim: 0.5 Release Target Discussion]]&lt;br /&gt;
* [[Opensim: 0.6 Release Target Discussion]]&lt;br /&gt;
* [[Opensim: Future Release Discussion]]&lt;br /&gt;
* [[OpenSim: Class Diagrams]]&lt;br /&gt;
* [[Grid Architecture Diagram]]&lt;br /&gt;
* [[OpenSim: Scripting]] &amp;amp;mdash; How to use scripts and what limitations apply.&lt;br /&gt;
* [[Webinterface]] &amp;amp;mdash; How to mashup with the web.&lt;br /&gt;
* [[RemoteAdmin]] &amp;amp;mdash; How to use the remote admin plug-in.&lt;br /&gt;
* [[OpenSim: Prim Inventory Persistence]] &amp;amp;mdash; Information on the current state of prim inventory persistence.&lt;br /&gt;
* [[PhysicsEngines]]   &amp;amp;mdash; Options for physics engines in OpenSim.&lt;br /&gt;
* [[MonoSqlite]] &amp;amp;mdash; How the database model currently works.&lt;br /&gt;
* [[Monodevelop]] &amp;amp;mdash; How to use the [[monodevelop]] IDE for editing C# solutions.&lt;br /&gt;
* [[LSL Status]] &amp;amp;mdash; LSL implementation progress.&lt;br /&gt;
* [[LSL:PrimitiveParams]] Notes on converting SL Edit GUI values and LSL PrimitiveParams to OpenSim PrimitiveBaseShape fields&lt;br /&gt;
* [[OpenSim.Region.ScriptEngine]] &amp;amp;mdash; How the ScriptEngine looks internally.&lt;br /&gt;
* [[RegionModules]] &amp;amp;mdash; The various modules that are used in the RegionServer and how to write new ones.&lt;br /&gt;
* [[OpenSim: Screenshots]] &amp;amp;mdash; Various OpenSim screenshots.&lt;br /&gt;
* [[OpenSim: Threading strategy]] &amp;amp;mdash; How threading is implemented and handled.&lt;br /&gt;
* [[OpenSim: Permissions]] &amp;amp;mdash; Notes on object permissions &amp;amp; definition of the ObjectFlags variable.&lt;br /&gt;
* [[: Installation|Installing OpenSim]] - Instructions for compiling and running OpenSim on various platforms.&lt;br /&gt;
* [[Special Building]] &amp;amp;mdash; Special building instructions.&lt;br /&gt;
* [[OpenSim Load Balancing and Region Splitting]] - Instructions for using load balancing and region splitting features.&lt;br /&gt;
* [[Asset Server problems]] - list of known problems with the asset server&lt;br /&gt;
* [[OpenID]] - Proposal for using OpenID in OpenSim&lt;br /&gt;
* [[OpenSim.Region.DataSnapshot]] - Shiny new data gathering/search system&lt;br /&gt;
&lt;br /&gt;
== SVN Access ==&lt;br /&gt;
You can browse the source code for OpenSim [http://opensimulator.org/cgi-bin/viewcvs.cgi using a web browser] or via SVN.&lt;br /&gt;
&lt;br /&gt;
=== Anonymous Checkout ===&lt;br /&gt;
 svn co http://opensimulator.org/svn/opensim/trunk&lt;br /&gt;
&lt;br /&gt;
=== Developer Checkout ===&lt;br /&gt;
 svn co svn+ssh://USERNAME@opensimulator.org/var/svn/opensim/trunk&lt;br /&gt;
&lt;br /&gt;
== Recent SVN Commits ==&lt;br /&gt;
&amp;lt;rss&amp;gt;http://cia.vc/stats/project/opensim/.rss|max=5|title=none&amp;lt;/rss&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Main]]&lt;br /&gt;
[[Category:Getting Started]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
&amp;lt;cleanpage title=hide cats=hide /&amp;gt;&lt;/div&gt;</summary>
		<author><name>KMeist Hax</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/OpenSim.Region.DataSnapshot</id>
		<title>OpenSim.Region.DataSnapshot</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/OpenSim.Region.DataSnapshot"/>
				<updated>2008-04-14T23:48:18Z</updated>
		
		<summary type="html">&lt;p&gt;KMeist Hax: initial dox for datasnapshot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The DataSnapshot module is an [[RegionModules|IRegionModule]] that takes data from various parts of the OpenSim Scene and spits out a custom-format XML file. From this you can have web services mashup with the output data. Consider it analogous to a &amp;quot;Search API&amp;quot;, although it's not limited to simple Search. It was birthed after a discussion on the mailing list several months ago about search when Diva contacted me and gave me her ideas. Throughout the course of about a month off and on we worked on this proof-of-concept module. I'm calling it a proof-of-concept for now&lt;br /&gt;
&lt;br /&gt;
== Module inner workings ==&lt;br /&gt;
The module is implemented as any other Region Module. The IRegionModule class itself is DataSnapshotManager.&lt;br /&gt;
&lt;br /&gt;
=== DataSnapshotManager ===&lt;br /&gt;
This is the 'main' class for the module - it handles registering the IDataSnapshotProvider objects, creates the DataRequestHandler, and contains functions for generating snapshots. Notable functions:&lt;br /&gt;
&lt;br /&gt;
* Initialise - Obtained from IRegionModule. Checks if the config is loaded, and adds each scene being simulated to it's internal list of regions to scrape for data.&lt;br /&gt;
* PostInitialise - The second most important function. Registers the timer callback, and searches the containing Assembly for IDataSnapshotProvider objects. Creates an IDataSnapshotProvider for each Scene and IDataSnapshotProvider combination. When the format and interface stabilises, we can then let this start checking other Assemblies for IDataSnapshotProviders. Then it makes the DataRequestHandler object and hands it the first scene. Finally, it checks to see if it needs to ping any external servers (as determined by configuration).&lt;br /&gt;
* Snapshot (private) - Spits out an XmlDocument from a Scene. Each XmlDocument can be sent directly as a response to a data request, but GetSnapshot can also merge them into a single response for every Scene being simulated by the host.&lt;br /&gt;
* GetSnapshot - Called from DataSnapshotManager. Should really be a part of DataRequestHandler.&lt;br /&gt;
* MakeRegionNode - Creates some of the XML in the format, would be in a IDataSnapshotProvider but currently the way their output goes into the format doesn't mesh with the interface well. Might want to rework the format later or something.&lt;br /&gt;
* NotifyDataServices - Responsible for pinging an external server defined in our configuration options.&lt;br /&gt;
* SnapshotTimerCallback - Notable for being useless. All it does is call MakeNewSnapshot. If you want anything else to happen when the snapshot timer elapses, add it here. I really should have just added MakeNewSnapshot to the timer directly.&lt;br /&gt;
* GetErrorMessage - Makes an error for GetSnapshot in case of an exception (missing file, etc)&lt;br /&gt;
* GetGridSnapshotData - Takes key-value pairs from GridData and makes it into XML, populated during the first Initialise call.&lt;br /&gt;
* GetRegionCategory - Helper function, only notable because originally when the Scene had no Mature or PG flag set it would return &amp;quot;PN Testing Sandbox&amp;quot;, aka griefer heaven. Now returns a completely boring &amp;quot;Unknown&amp;quot;, hence the comment.&lt;br /&gt;
&lt;br /&gt;
...I think that's everything worth mentioning.&lt;br /&gt;
&lt;br /&gt;
=== DataRequestHandler ===&lt;br /&gt;
A very small class that makes responses to requests for data.... All it does is register a callback to Scene.AddHTTPHandler - a function we added to Scene just for this module. Yes you can register handlers to BaseHTTPServer from a RegionModule now.&lt;br /&gt;
&lt;br /&gt;
Really deserves to have the GetSnapshot function instead of DataSnapshotManager.&lt;br /&gt;
&lt;br /&gt;
=== IDataSnapshotProvider ===&lt;br /&gt;
You'll find it in the interfaces folder. This nice little class provides most of the data for our module. The Interface exposed is analogous to IRegionModule, and is loaded in the same way except that we currently only load from the same Assembly.&lt;br /&gt;
&lt;br /&gt;
 public interface IDataSnapshotHandler {&lt;br /&gt;
  XmlNode RequestSnapshotData (XmlDocument document);&lt;br /&gt;
  void Initialize (Scene scene, DataSnapshotManager parent);&lt;br /&gt;
  Scene GetParentScene { get; }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
* Initialize - Gives you a scene and parent object. Also you can establish some callbacks if you want.&lt;br /&gt;
* RequestSnapshotData - Gives you an XmlDocument to use as a node factory. Return an XmlNode here, one made from the factory. (Otherwise exceptions will result)&lt;br /&gt;
* GetParentScene - Return the parent scene here.&lt;br /&gt;
&lt;br /&gt;
== XML Format ==&lt;br /&gt;
Write this later (should be evident from code)&lt;br /&gt;
&lt;br /&gt;
== Config options ==&lt;br /&gt;
You need to have a &amp;lt;nowiki&amp;gt;[DataSnapshot]&amp;lt;/nowiki&amp;gt; section in your OpenSim.ini configuration and index_sims set to true before DataSnapshot will do anything.&lt;br /&gt;
Other interesting options:&lt;br /&gt;
&lt;br /&gt;
* snapshot_cache_directory - Folder to save snapshots to. Default is &amp;quot;DataSnapshot&amp;quot;.&lt;br /&gt;
* data_services - Server to ping to alert of snapshots.&lt;br /&gt;
* disable_modules - Option to disable a module by name. Not actually working yet.&lt;br /&gt;
&lt;br /&gt;
== Todos ==&lt;br /&gt;
* Script-provided Snapshot data. Would require adding a function to the common builtin commands _OR_ reworking the script engine to allow RegionModules to register their own functions to ScriptEngines. The first one is easy but WRONG, the second one is right but HARD.&lt;br /&gt;
* Regression test with 3Di's [[OpenSim Load Balancing and Region Splitting]] work. Theoretically, this shouldn't create any problems since we don't make any permenant data that needs to be transferred with a simulator. MAYBE the data services option, since that would probably be the choice of the region owner and should float with the region.&lt;br /&gt;
* Make disable_modules work&lt;br /&gt;
* Etc&lt;/div&gt;</summary>
		<author><name>KMeist Hax</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/User:KMeist_Hax</id>
		<title>User:KMeist Hax</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/User:KMeist_Hax"/>
				<updated>2008-04-14T22:42:24Z</updated>
		
		<summary type="html">&lt;p&gt;KMeist Hax: imma chargin mah userpage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;soup /opensim/ KMeist Hax, part time opensim developer and /b/tard here. Makes region modules and doesn't afraid of anything.&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
I am currently responsible for the following projects:&lt;br /&gt;
&lt;br /&gt;
* [[OpenSim.Region.DataSnapshot|Data Snapshot Module and Format]] - Search the open metaverse -- and beyond!&lt;br /&gt;
* That's pretty much it&lt;br /&gt;
&lt;br /&gt;
== Contact info ==&lt;br /&gt;
&lt;br /&gt;
If I accidentally broke your sims with my code, you have a feature request, or just want to talk, you can contact me via the following ways:&lt;br /&gt;
&lt;br /&gt;
* Linden Lab's grid - username '''KMeist Hax'''.&lt;br /&gt;
* OSGrid - Again, '''KMeist Hax'''.&lt;br /&gt;
* Steam - Play a game of Team Fortress 2 with '''KMeist_Hax''' sometime.&lt;br /&gt;
* Freenode IRC - '''kmeisthax''' / '''kmeisthax_afk''' has been known to lurk #opensim and #opensim-dev from time to time&lt;br /&gt;
* AIM - '''lotsostuff1''' - I've had this username since my underage b&amp;amp; days!&lt;br /&gt;
* MSN - '''km767 YOUKNOWWHATGOESHERE hotmail EARTHBOUND com''' - Replace &amp;quot;YOUKNOWWHATGOESHERE&amp;quot; with that little A in a circle symbol. Replace &amp;quot;EARTHBOUND&amp;quot; with a dot.&lt;br /&gt;
* (in korea, only old people use) E-mail - '''dcrkid YOUKNOWWHATGOESHERE yahoo EARTHBOUND com''' - Same as the MSN account, let's hope the spambots don't just grab stuff with yahoo in it nowadays.&lt;/div&gt;</summary>
		<author><name>KMeist Hax</name></author>	</entry>

	<entry>
		<id>http://opensimulator.org/wiki/IRegionModule</id>
		<title>IRegionModule</title>
		<link rel="alternate" type="text/html" href="http://opensimulator.org/wiki/IRegionModule"/>
				<updated>2008-02-12T23:19:48Z</updated>
		
		<summary type="html">&lt;p&gt;KMeist Hax: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
A key design principle of OpenSim is the heavy use of plug-ins. All the key components of OpenSim are designed to be replaceable or extensible at runtime.&lt;br /&gt;
&lt;br /&gt;
* Database engines can be replaced (currently OpenSim has full support for)&lt;br /&gt;
** SQLite&lt;br /&gt;
** MySQL&lt;br /&gt;
** db4o is partially implemented&lt;br /&gt;
** MS-SQL Server is fairly complete but largely untested.&lt;br /&gt;
* Backend servers can be replaced by changing a url, currently there are servers for:&lt;br /&gt;
** User authentication&lt;br /&gt;
** Grid registration&lt;br /&gt;
** Asset storage&lt;br /&gt;
** Script execution&lt;br /&gt;
* Script languages can be replaced&lt;br /&gt;
* ''Region modules can be added''&lt;br /&gt;
&lt;br /&gt;
Region modules are .net/mono dlls. During initialization of the simulator, the current directory (/bin) and the scriptengines (/ScriptEngines) directory are scanned for dlls, in an attempt to load region modules stored there.&lt;br /&gt;
&lt;br /&gt;
Region modules execute within the heart of the simulator. Typically region modules register for a number of events, e.g. chat messages, user logins, texture transfers, and take what ever steps are appropriate for the purposes of the module.&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
All region modules must implement this interface:&lt;br /&gt;
&lt;br /&gt;
 public interface IRegionModule&lt;br /&gt;
 {&lt;br /&gt;
     void Initialise(Scene scene);&lt;br /&gt;
     void PostInitialise();&lt;br /&gt;
     void Close();&lt;br /&gt;
     string Name { get; }&lt;br /&gt;
     bool IsSharedModule { get; }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Initialize&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This method is called immediately after the region module has been loaded by the sim. At this time the module is passed a reference to the scene contained within the sim. The region module should store this reference for later use. Care should be taken, not to depend on the scene and/or sim being fully loaded and running at this time.&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;PostInitialize&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Once the sim is fully initialized and all region modules have been loaded, the sim will invoke PostInitialize on all loaded region modules. At this point the sim will be fully operational, and it should be safe to invoke any method on the scene.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Close&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This method will be invoked when the sim is closing down.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Name&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;This name is shown when the console command &amp;quot;show modules&amp;quot; is ran. It's should be a nice name like &amp;quot;Sim Chat Module&amp;quot; or &amp;quot;The Best Region Module Ever&amp;quot;.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;IsSharedModule&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;The simulator process (OpenSim.exe) supports running multiple regions (internally, a Scene object) on a single simulator process. If this returns True, the module will only be loaded once and Initialize will be called for each Scene being simulated. If false, a separate copy of your RegionModule will be created for each Scene.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to write a new region module ==&lt;br /&gt;
=== Walk through on Windows ===&lt;br /&gt;
On Windows, using Visual studio, this is what you need to do, to create a new region module:&lt;br /&gt;
&lt;br /&gt;
#Create a new project&lt;br /&gt;
##File, New, Project&lt;br /&gt;
##Select &amp;quot;Visual C#&amp;quot;, &amp;quot;Class Library&amp;quot;&lt;br /&gt;
##Give the region module some good name, like: &amp;quot;MyRegionModule&amp;quot;&lt;br /&gt;
#Reference the required OpenSim assemblies&lt;br /&gt;
##Right click on &amp;quot;References&amp;quot; and choose &amp;quot;Add Reference...&amp;quot;&lt;br /&gt;
##Choose the browse tab&lt;br /&gt;
##Navigate to the bin folder of OpenSim&lt;br /&gt;
##Select &amp;quot;OpenSim.Framework.dll&amp;quot;&lt;br /&gt;
##Click Ok&lt;br /&gt;
##Right click once more on &amp;quot;References&amp;quot; and choose &amp;quot;Add Reference...&amp;quot;&lt;br /&gt;
##Select &amp;quot;OpenSim.Region.Environment.dll&amp;quot;&lt;br /&gt;
##Click Ok&lt;br /&gt;
#Change default class, to a meaningfull name&lt;br /&gt;
##Right click on &amp;quot;Class1.cs&amp;quot; and rename the file to &amp;quot;MyRegionModuleMain.cs&lt;br /&gt;
&lt;br /&gt;
Now the code should look something like this:&lt;br /&gt;
&lt;br /&gt;
 using System;&lt;br /&gt;
 using System.Collections.Generic;&lt;br /&gt;
 using System.Text;&lt;br /&gt;
 &lt;br /&gt;
 namespace MyRegionModule&lt;br /&gt;
 {&lt;br /&gt;
     public class MyRegionModuleMain&lt;br /&gt;
     {&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
delete the unwanted &amp;lt;tt&amp;gt;using&amp;lt;/tt&amp;gt; lines:&lt;br /&gt;
&lt;br /&gt;
 using System.Collections.Generic;&lt;br /&gt;
 using System.Text;&lt;br /&gt;
&lt;br /&gt;
now, the program should contain:&lt;br /&gt;
&lt;br /&gt;
 using System;&lt;br /&gt;
 &lt;br /&gt;
 namespace MyRegionModule&lt;br /&gt;
 {&lt;br /&gt;
     public class MyRegionModuleMain&lt;br /&gt;
     {&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
add references to the main OpenSim modules:&lt;br /&gt;
&lt;br /&gt;
 using OpenSim.Region.Environment.Interfaces;&lt;br /&gt;
 using OpenSim.Region.Environment.Scenes;&lt;br /&gt;
&lt;br /&gt;
specify that &amp;lt;tt&amp;gt;MyRegionModuleMain&amp;lt;/tt&amp;gt; should inherit from the &amp;lt;tt&amp;gt;IRegionModule&amp;lt;/tt&amp;gt; interface:&lt;br /&gt;
&lt;br /&gt;
 using System;&lt;br /&gt;
 using OpenSim.Region.Environment.Interfaces;&lt;br /&gt;
 using OpenSim.Region.Environment.Scenes;&lt;br /&gt;
 &lt;br /&gt;
 namespace MyRegionModule&lt;br /&gt;
 {&lt;br /&gt;
     public class MyRegionModuleMain : IRegionModule&lt;br /&gt;
     {&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Right click on the &amp;quot;IRegionModule&amp;quot; name, and select &amp;quot;Implement interface&amp;quot;, &amp;quot;Implement Interface&amp;quot;; this will add an empty implementation of the interface required for a region module. If you compile the module, and ensure that the resulting .dll file is stored in the /bin directory of OpenSim, the region module will be loaded and exected the next time you start the sim.&lt;br /&gt;
&lt;br /&gt;
The close observer will have noticed that this region module will not do anything worthwhile; in fact it will cause OpenSim to log a warning about exceptions in a loaded module.&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>KMeist Hax</name></author>	</entry>

	</feed>