<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://fcraft.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=75.70.0.0%2F16</id>
	<title>fCraft Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://fcraft.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=75.70.0.0%2F16"/>
	<link rel="alternate" type="text/html" href="https://fcraft.net/wiki/Special:Contributions/75.70.0.0/16"/>
	<updated>2026-08-13T13:10:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://fcraft.net/w/index.php?title=Mod_Examples&amp;diff=1363</id>
		<title>Mod Examples</title>
		<link rel="alternate" type="text/html" href="https://fcraft.net/w/index.php?title=Mod_Examples&amp;diff=1363"/>
		<updated>2012-03-27T17:53:32Z</updated>

		<summary type="html">&lt;p&gt;75.70.55.0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page demonstrates examples of modifying and extending fCraft.&lt;br /&gt;
&lt;br /&gt;
==Hooking up custom code==&lt;br /&gt;
{{warning|This method of modding fCraft&#039;s code directly will be obsoleted when the plugin system is done}}&lt;br /&gt;
Until the proper Plugin API is finished, I recommend minimizing edits to fCraft&#039;s existing files, and trying to contain all custom code in your own namespace/files. You will need to make at least one change to Server.cs though, to add your code to run on startup. Use that very first call to subscribe to various events. For detailed information about the startup procedure, see [[API: Startup]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
// Add this to beginning of Server.InitServer&lt;br /&gt;
ClassWithMyMods.Init();&lt;br /&gt;
&lt;br /&gt;
// Meanwhile, in ClassWithMyMods:&lt;br /&gt;
// Use this to hook up events. Dont do anything else quite yet.&lt;br /&gt;
public static void Init(){&lt;br /&gt;
    Server.Initialized += MyServerInitializedHandler;&lt;br /&gt;
    Server.Started += MyServerStartedHandler;&lt;br /&gt;
    // etc events&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// This is where you can go ahead and register custom commands, brushes, etc&lt;br /&gt;
// Server.Initialized is invoked after everything else in Server.InitServer() is done&lt;br /&gt;
static void MyServerInitializedHandler( object sender, EventArgs e ){&lt;br /&gt;
    CommandManager.RegisterCustomCommand( CdMyCommandStuff );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// This is where you can start timers, open up ports, manipulate world list, etc&lt;br /&gt;
// Server.Started is invoked just after server fully finished its startup routine&lt;br /&gt;
static void MyServerStartedHandler( object sender, EventArgs e ){&lt;br /&gt;
    Scheduler.NewTask( MyTask ).RunForever( myTaskInterval );&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Calling custom code at regular intervals==&lt;br /&gt;
The following example will call &#039;&#039;&#039;BleepTask&#039;&#039;&#039; method every 10 seconds.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
// Interval at which your callback is called&lt;br /&gt;
TimeSpan bleepInterval = TimeSpan.FromSeconds( 10 );&lt;br /&gt;
&lt;br /&gt;
// Adding your callback&lt;br /&gt;
Scheduler.NewTask( BleepTask ).RunForever( bleepInterval );&lt;br /&gt;
&lt;br /&gt;
// Your callback. Implements SchedulerCallback delegate.&lt;br /&gt;
void BleepTask( SchedulerTask task ){&lt;br /&gt;
    Chat.Say( Player.Console, &amp;quot;bleep&amp;quot; );&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Besides &#039;&#039;&#039;RunForever(TimeSpan)&#039;&#039;&#039;, SchedulerTask has many &#039;&#039;&#039;Run*&#039;&#039;&#039; methods for running a task once, several times, or forever - with different delays and at different intervals.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Checking incoming players==&lt;br /&gt;
There are many events fired while the player is connecting. For a full explanation, see [[API: Login]]. For example &#039;&#039;&#039;Player.Connected&#039;&#039;&#039; event is fired after fCraft looks player up in the database/verifies name/checks bans, but just before a handshake reply is sent to the player. This event allows addition more checks before player is allowed into the server.&lt;br /&gt;
Here we&#039;re using &#039;&#039;&#039;Player.Ready&#039;&#039;&#039; event, which is fired when a player is fully connected, and just after they join the main map. This is where all announcement code should go.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
// Subscribing to the event&lt;br /&gt;
Player.Ready += OnPlayerReady;&lt;br /&gt;
&lt;br /&gt;
// Event handler&lt;br /&gt;
void OnPlayerReady( object sender, PlayerEventArgs e ) {&lt;br /&gt;
    // if connecting player is of highest rank (presumably owner)&lt;br /&gt;
    if( e.Player.Info.Rank == RankManager.HighestRank ) {&lt;br /&gt;
        // Get a list of players who can see them join&lt;br /&gt;
        // (to avoid accidentally revealing hidden owners)&lt;br /&gt;
        var playersToMsg = Server.Players.CanSee( e.Player );&lt;br /&gt;
        // Spam them (use &amp;amp;Y colorcode, which maps to SayColor)&lt;br /&gt;
        playersToMsg.Message( &amp;quot;&amp;amp;YOMG THE OWNER IS HERE! EVERYONE SAY \&amp;quot;HEY {0}\&amp;quot;&amp;quot;,&lt;br /&gt;
                              e.Player.Name );&lt;br /&gt;
&lt;br /&gt;
        // or, if player&#039;s name contains the word &amp;quot;grief&amp;quot;&lt;br /&gt;
    } else if( e.Player.Name.Contains( &amp;quot;grief&amp;quot;, StringComparison.OrdinalIgnoreCase ) ) {&lt;br /&gt;
        // Spam everyone some more!&lt;br /&gt;
        Server.Message( &amp;quot;&amp;amp;YLOOK OUT! GRIEFERS ARE COMING!&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Adding a new command==&lt;br /&gt;
New commands can be added by calling &#039;&#039;&#039;CommandManager.RegisterCustomCommand&#039;&#039;&#039;. You need to provide a &#039;&#039;&#039;CommandDescriptor&#039;&#039;&#039; object. If there is any conflict between your command and existing ones, or if some aspect of your command&#039;s descriptor is unacceptible, a &#039;&#039;&#039;CommandRegistrationException&#039;&#039;&#039; will be thrown.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
// Command descriptor&lt;br /&gt;
CommandDescriptor CdBleep = new CommandDescriptor {&lt;br /&gt;
    Name = &amp;quot;bleep&amp;quot;,&lt;br /&gt;
    Aliases = new[] { &amp;quot;bloop&amp;quot; },&lt;br /&gt;
    Category = CommandCategory.Chat,&lt;br /&gt;
    Permissions = new[] { Permission.Chat },&lt;br /&gt;
    Help = &amp;quot;Prints a number of bleeps in chat.&amp;quot;,&lt;br /&gt;
    Usage = &amp;quot;/bleep [Times]&amp;quot;,&lt;br /&gt;
    Handler = BleepHandler&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Command handler - must implement CommandHandler delegate&lt;br /&gt;
void BleepHandler( Player player, Command cmd ) {&lt;br /&gt;
    int numberOfBleeps = 10;&lt;br /&gt;
&lt;br /&gt;
    // if a param is given&lt;br /&gt;
    if( cmd.HasNext ) {&lt;br /&gt;
        // try to parse it as a number, and save to numberOfBleeps&lt;br /&gt;
        if( !cmd.NextInt( out numberOfBleeps ) ) {&lt;br /&gt;
            // if that fails (not a number), print usage&lt;br /&gt;
            CdBleep.PrintUsage( player );&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // check the range&lt;br /&gt;
    if( numberOfBleeps &amp;lt; 1 || numberOfBleeps &amp;gt; 32 ) {&lt;br /&gt;
        player.Message( &amp;quot;Specify between 1 and 32 bleeps.&amp;quot; );&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    for( int i = 0; i &amp;lt; numberOfBleeps; i++ ) {&lt;br /&gt;
        Chat.SendGlobal( player, &amp;quot;bleep&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Registering your command with the server&lt;br /&gt;
CommandManager.RegisterCustomCommand( CdBleep );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reacting to server shutdown==&lt;br /&gt;
There are two events associated with shutdown: &#039;&#039;&#039;Server.ShutdownBegan&#039;&#039;&#039; and &#039;&#039;&#039;Server.ShutdownEnded&#039;&#039;&#039;. Both supply a &#039;&#039;&#039;ShutdownEventArgs&#039;&#039;&#039; object that provides information about the shutdown parameters. For more information about how server shutdown works, see [[API: Shutdown]].&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
// Subscribing to the event&lt;br /&gt;
Server.ShutdownBegan += OnShutdownBegan;&lt;br /&gt;
&lt;br /&gt;
// Event handler&lt;br /&gt;
void OnShutdownBegan( object sender, ShutdownEventArgs e ){&lt;br /&gt;
    Console.Write( &amp;quot;The end is near!&amp;quot; );&lt;br /&gt;
    if( e.Restart ){&lt;br /&gt;
        Console.Write( &amp;quot;But we will be back shortly.&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Dev]]&lt;/div&gt;</summary>
		<author><name>75.70.55.0</name></author>
	</entry>
	<entry>
		<id>https://fcraft.net/w/index.php?title=Installation_instructions&amp;diff=826</id>
		<title>Installation instructions</title>
		<link rel="alternate" type="text/html" href="https://fcraft.net/w/index.php?title=Installation_instructions&amp;diff=826"/>
		<updated>2011-10-31T00:09:03Z</updated>

		<summary type="html">&lt;p&gt;75.70.55.0: /* I made changed to the config/world list, but changes didn&amp;#039;t apply */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{alert|When first starting fCraft, type this in the console of your running server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/promote YourUserName DesiredClassName&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to promote yourself.}}&lt;br /&gt;
&lt;br /&gt;
=Windows=&lt;br /&gt;
# fCraft requires Microsoft .NET Framework 3.5. Your system may already have it installed, and you can [http://www.microsoft.com/download/en/details.aspx?id=22 download it from microsoft.com].&lt;br /&gt;
# Download a current copy of fCraft here: {{LatestVersion}}&lt;br /&gt;
# Extract the zip file into the directory where you wish to keep all the server data (maps, logs, config, etc).&lt;br /&gt;
# Run &amp;lt;code&amp;gt;ConfigTool.exe&amp;lt;/code&amp;gt; before starting the server and carefully configure the options. Your configuration will be stored in &amp;lt;code&amp;gt;config.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
# After configuring the server, you can run either &amp;lt;code&amp;gt;fCraftUI.exe&amp;lt;/code&amp;gt; (GUI version) OR &amp;lt;code&amp;gt;fCraftConsole.exe&amp;lt;/code&amp;gt; (command-line version) to start the server. Do not run both at the same time.&lt;br /&gt;
&lt;br /&gt;
=Linux, Unix, MacOS X (Mono)=&lt;br /&gt;
# Download a current copy of fCraft here: {{LatestVersion}}. Use &amp;lt;code&amp;gt;gunzip&amp;lt;/code&amp;gt; to extract it.&lt;br /&gt;
# fCraft requires Mono 2.6.4 (minumum) or Mono 2.10.2 (recommended) runtime. You can [http://www.go-mono.com/mono-downloads/download.html download from www.mono-project.org], or (on some Linux distributions) install it through your package manager (like &amp;lt;code&amp;gt;yum&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;apt-get&amp;lt;/code&amp;gt;).&lt;br /&gt;
#: To be able to use graphical fCraft components (ServerGUI and ConfigGUI) you will also need GDI+ library (libgdiplus).&lt;br /&gt;
# Before starting fCraft, make sure that it has read/write permissions in the fCraft directory. I do not recommend running fCraft as root - it is always safer to run servers under their own limited user accounts.&lt;br /&gt;
# To run &amp;quot;.exe&amp;quot; files with Mono, use the following syntax:&lt;br /&gt;
#: Mono 2.6.4: &amp;lt;code&amp;gt;mono SomeFile.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
#: Mono 2.8+:  &amp;lt;code&amp;gt;mono -gc=sgen SomeFile.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
# From here on out is roughly the same as on Windows. You can run &amp;lt;code&amp;gt;ConfigTool.exe&amp;lt;/code&amp;gt; to configure your server, and then either &amp;lt;code&amp;gt;fCraftUI.exe&amp;lt;/code&amp;gt; OR &amp;lt;code&amp;gt;fCraftConsole.exe&amp;lt;/code&amp;gt; to start the server.&lt;br /&gt;
#: If you want to run console-only on a headless server, the ConfigTool GUI probably won&#039;t work for you to configure things. You can run ConfigTool on your local machine and upload edited config.xml/worlds.xml. Alternatively, edit &amp;lt;code&amp;gt;config.xml&amp;lt;/code&amp;gt; manually with your favorite text editor. Detailed information about config.xml keys can be found [[Config|here]].&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
===Port Forwarding===&lt;br /&gt;
If you have a router, you will need to [http://portforward.com/ forward the port] to allow external players to connect. &#039;&#039;&#039;Default port is 25565&#039;&#039;&#039;. ConfigTool includes a little tool for checking whether the port is forwarded properly - click the [Check] button next to port number setting, on &amp;quot;General&amp;quot; tab.&lt;br /&gt;
&lt;br /&gt;
===I made changed to the config/world list, but changes didn&#039;t apply===&lt;br /&gt;
* fCraft can read most changes on the fly using [[/Reload]] command. However, some things require a full restart:&lt;br /&gt;
** Ranks&lt;br /&gt;
** Worlds&lt;br /&gt;
** IRC settings&lt;br /&gt;
** Enabling/disabling BlockDB&lt;br /&gt;
* Make sure that ServerCLI and ServerGUI are NOT running while you run ConfigGUI. fCraft may overwrite your changes if it&#039;s still running.&lt;br /&gt;
* Changes are not saved until you hit &amp;quot;OK&amp;quot; or &amp;quot;Apply&amp;quot; in ConfigGUI.&lt;br /&gt;
* Make sure that ConfigGUI is in the same folder as the rest of the server files.&lt;br /&gt;
&lt;br /&gt;
===Other players cannot connect from LAN===&lt;br /&gt;
Minecraft client has a lot of trouble working on LAN. You probably will not be able to connect via the public URL. Fortunately, there is a workaround:&lt;br /&gt;
# Enable &amp;quot;Allow connections from LAN without verification&amp;quot; checkbox in ConfigTool (&amp;lt;[[AllowUnverifiedLAN]]&amp;gt; in config.xml).&lt;br /&gt;
# Find your local IP address.&lt;br /&gt;
#* In Windows XP+, go to Start -&amp;gt; type &amp;quot;cmd&amp;quot; to open a terminal -&amp;gt; type &amp;quot;ipconfig&amp;quot;. The address you need is labeled &amp;quot;IPv4 Address&amp;quot; under &amp;quot;Local Area Connection&amp;quot;.&lt;br /&gt;
#* In Unix/Linux, use &amp;quot;ifconfig&amp;quot; utility.&lt;br /&gt;
# Connect to [http://www.minecraft.net/classic/play?ip=_____&amp;amp;port=_____ http://www.minecraft.net/classic/play?ip=_____&amp;amp;port=_____] (fill in blanks with your server&#039;s IP address and port).&lt;br /&gt;
&lt;br /&gt;
===How do I promote myself to the highest rank/class?===&lt;br /&gt;
Type the following in console (either fCraftConsole or fCraftUI): &amp;lt;code&amp;gt;/promote YourName DesiredClass&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===System.DllNotFoundException: libMonoPosixHelper.so===&lt;br /&gt;
Install &amp;lt;code&amp;gt;libmono-posix2.0-cil&amp;lt;/code&amp;gt; package, if available.&lt;br /&gt;
This is also a known issue with compiling Mono from source on CentOS. Update to 2.10+ (recommended), or try [http://go-mono.com/forums/#nabble-td1537921 this workaround].&lt;br /&gt;
&lt;br /&gt;
===Memory usage keeps going up under Mono===&lt;br /&gt;
If you are using Mono 2.6.x or earlier, you are out of luck. If you are running 2.8+, try running mono with &amp;quot;--gc=sgen&amp;quot; switch, like this: &amp;lt;code&amp;gt;mono --gc=sgen ServerGUI.exe&amp;lt;/code&amp;gt;.&lt;br /&gt;
If you&#039;ve tried everything and cannot get Mono memory usage under control, try setting the [[RestartInterval]] config key to make the server restart itself every once in a while.&lt;br /&gt;
&lt;br /&gt;
===CentOS problems===&lt;br /&gt;
&#039;&#039;&#039;fCraft is not officially supported on CentOS due to numerous reported problems.&#039;&#039;&#039; If you still want to continue, try these solutions:&lt;br /&gt;
* [http://www.go-mono.com/mono-downloads/download.html Use the official package from the Mono website]. The version available via yum may be outdated.&lt;br /&gt;
* You may have to add mono directory (&amp;lt;code&amp;gt;/opt/novell/mono/&amp;lt;/code&amp;gt;) to your paths. Adding something like this to your startup script should do it:&lt;br /&gt;
 #echo export PKG_CONFIG_PATH=/opt/novell/mono/lib/pkgconfig:$PKG_CONFIG_PATH&amp;gt;&amp;gt;~/.bash_profile&lt;br /&gt;
 #echo export PATH=/opt/novell/mono/bin:$PATH&amp;gt;&amp;gt;~/.bash_profile&lt;br /&gt;
 #source ~/.bash_profile&lt;/div&gt;</summary>
		<author><name>75.70.55.0</name></author>
	</entry>
	<entry>
		<id>https://fcraft.net/w/index.php?title=Installation_instructions&amp;diff=825</id>
		<title>Installation instructions</title>
		<link rel="alternate" type="text/html" href="https://fcraft.net/w/index.php?title=Installation_instructions&amp;diff=825"/>
		<updated>2011-10-31T00:06:41Z</updated>

		<summary type="html">&lt;p&gt;75.70.55.0: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{alert|When first starting fCraft, type this in the console of your running server:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/promote YourUserName DesiredClassName&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to promote yourself.}}&lt;br /&gt;
&lt;br /&gt;
=Windows=&lt;br /&gt;
# fCraft requires Microsoft .NET Framework 3.5. Your system may already have it installed, and you can [http://www.microsoft.com/download/en/details.aspx?id=22 download it from microsoft.com].&lt;br /&gt;
# Download a current copy of fCraft here: {{LatestVersion}}&lt;br /&gt;
# Extract the zip file into the directory where you wish to keep all the server data (maps, logs, config, etc).&lt;br /&gt;
# Run &amp;lt;code&amp;gt;ConfigTool.exe&amp;lt;/code&amp;gt; before starting the server and carefully configure the options. Your configuration will be stored in &amp;lt;code&amp;gt;config.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
# After configuring the server, you can run either &amp;lt;code&amp;gt;fCraftUI.exe&amp;lt;/code&amp;gt; (GUI version) OR &amp;lt;code&amp;gt;fCraftConsole.exe&amp;lt;/code&amp;gt; (command-line version) to start the server. Do not run both at the same time.&lt;br /&gt;
&lt;br /&gt;
=Linux, Unix, MacOS X (Mono)=&lt;br /&gt;
# Download a current copy of fCraft here: {{LatestVersion}}. Use &amp;lt;code&amp;gt;gunzip&amp;lt;/code&amp;gt; to extract it.&lt;br /&gt;
# fCraft requires Mono 2.6.4 (minumum) or Mono 2.10.2 (recommended) runtime. You can [http://www.go-mono.com/mono-downloads/download.html download from www.mono-project.org], or (on some Linux distributions) install it through your package manager (like &amp;lt;code&amp;gt;yum&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;apt-get&amp;lt;/code&amp;gt;).&lt;br /&gt;
#: To be able to use graphical fCraft components (ServerGUI and ConfigGUI) you will also need GDI+ library (libgdiplus).&lt;br /&gt;
# Before starting fCraft, make sure that it has read/write permissions in the fCraft directory. I do not recommend running fCraft as root - it is always safer to run servers under their own limited user accounts.&lt;br /&gt;
# To run &amp;quot;.exe&amp;quot; files with Mono, use the following syntax:&lt;br /&gt;
#: Mono 2.6.4: &amp;lt;code&amp;gt;mono SomeFile.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
#: Mono 2.8+:  &amp;lt;code&amp;gt;mono -gc=sgen SomeFile.exe&amp;lt;/code&amp;gt;&lt;br /&gt;
# From here on out is roughly the same as on Windows. You can run &amp;lt;code&amp;gt;ConfigTool.exe&amp;lt;/code&amp;gt; to configure your server, and then either &amp;lt;code&amp;gt;fCraftUI.exe&amp;lt;/code&amp;gt; OR &amp;lt;code&amp;gt;fCraftConsole.exe&amp;lt;/code&amp;gt; to start the server.&lt;br /&gt;
#: If you want to run console-only on a headless server, the ConfigTool GUI probably won&#039;t work for you to configure things. You can run ConfigTool on your local machine and upload edited config.xml/worlds.xml. Alternatively, edit &amp;lt;code&amp;gt;config.xml&amp;lt;/code&amp;gt; manually with your favorite text editor. Detailed information about config.xml keys can be found [[Config|here]].&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
===Port Forwarding===&lt;br /&gt;
If you have a router, you will need to [http://portforward.com/ forward the port] to allow external players to connect. &#039;&#039;&#039;Default port is 25565&#039;&#039;&#039;. ConfigTool includes a little tool for checking whether the port is forwarded properly - click the [Check] button next to port number setting, on &amp;quot;General&amp;quot; tab.&lt;br /&gt;
&lt;br /&gt;
===I made changed to the config/world list, but changes didn&#039;t apply===&lt;br /&gt;
* Make sure that fCraftConsole and fCraftUI are NOT running while you run ConfigTool. fCraft may overwrite your changes if it&#039;s still running.&lt;br /&gt;
* Changes are not saved until you hit &amp;quot;OK&amp;quot; or &amp;quot;Apply&amp;quot; in ConfigTool.&lt;br /&gt;
* Make sure that ConfigTool is in the same folder as the rest of the server files. If you compiled fCraft from source, copy binaries from separate project folders.&lt;br /&gt;
&lt;br /&gt;
===Other players cannot connect from LAN===&lt;br /&gt;
Minecraft client has a lot of trouble working on LAN. You probably will not be able to connect via the public URL. Fortunately, there is a workaround:&lt;br /&gt;
# Enable &amp;quot;Allow connections from LAN without verification&amp;quot; checkbox in ConfigTool (&amp;lt;[[AllowUnverifiedLAN]]&amp;gt; in config.xml).&lt;br /&gt;
# Find your local IP address.&lt;br /&gt;
#* In Windows XP+, go to Start -&amp;gt; type &amp;quot;cmd&amp;quot; to open a terminal -&amp;gt; type &amp;quot;ipconfig&amp;quot;. The address you need is labeled &amp;quot;IPv4 Address&amp;quot; under &amp;quot;Local Area Connection&amp;quot;.&lt;br /&gt;
#* In Unix/Linux, use &amp;quot;ifconfig&amp;quot; utility.&lt;br /&gt;
# Connect to [http://www.minecraft.net/classic/play?ip=_____&amp;amp;port=_____ http://www.minecraft.net/classic/play?ip=_____&amp;amp;port=_____] (fill in blanks with your server&#039;s IP address and port).&lt;br /&gt;
&lt;br /&gt;
===How do I promote myself to the highest rank/class?===&lt;br /&gt;
Type the following in console (either fCraftConsole or fCraftUI): &amp;lt;code&amp;gt;/promote YourName DesiredClass&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===System.DllNotFoundException: libMonoPosixHelper.so===&lt;br /&gt;
Install &amp;lt;code&amp;gt;libmono-posix2.0-cil&amp;lt;/code&amp;gt; package, if available.&lt;br /&gt;
This is also a known issue with compiling Mono from source on CentOS. Update to 2.10+ (recommended), or try [http://go-mono.com/forums/#nabble-td1537921 this workaround].&lt;br /&gt;
&lt;br /&gt;
===Memory usage keeps going up under Mono===&lt;br /&gt;
If you are using Mono 2.6.x or earlier, you are out of luck. If you are running 2.8+, try running mono with &amp;quot;--gc=sgen&amp;quot; switch, like this: &amp;lt;code&amp;gt;mono --gc=sgen ServerGUI.exe&amp;lt;/code&amp;gt;.&lt;br /&gt;
If you&#039;ve tried everything and cannot get Mono memory usage under control, try setting the [[RestartInterval]] config key to make the server restart itself every once in a while.&lt;br /&gt;
&lt;br /&gt;
===CentOS problems===&lt;br /&gt;
&#039;&#039;&#039;fCraft is not officially supported on CentOS due to numerous reported problems.&#039;&#039;&#039; If you still want to continue, try these solutions:&lt;br /&gt;
* [http://www.go-mono.com/mono-downloads/download.html Use the official package from the Mono website]. The version available via yum may be outdated.&lt;br /&gt;
* You may have to add mono directory (&amp;lt;code&amp;gt;/opt/novell/mono/&amp;lt;/code&amp;gt;) to your paths. Adding something like this to your startup script should do it:&lt;br /&gt;
 #echo export PKG_CONFIG_PATH=/opt/novell/mono/lib/pkgconfig:$PKG_CONFIG_PATH&amp;gt;&amp;gt;~/.bash_profile&lt;br /&gt;
 #echo export PATH=/opt/novell/mono/bin:$PATH&amp;gt;&amp;gt;~/.bash_profile&lt;br /&gt;
 #source ~/.bash_profile&lt;/div&gt;</summary>
		<author><name>75.70.55.0</name></author>
	</entry>
	<entry>
		<id>https://fcraft.net/w/index.php?title=/WLoad&amp;diff=198</id>
		<title>/WLoad</title>
		<link rel="alternate" type="text/html" href="https://fcraft.net/w/index.php?title=/WLoad&amp;diff=198"/>
		<updated>2011-05-21T03:42:03Z</updated>

		<summary type="html">&lt;p&gt;75.70.55.0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{CommandBox&lt;br /&gt;
|name=wload&lt;br /&gt;
|purpose=Loads maps and creates new worlds.&lt;br /&gt;
|uses=/wload FileName&lt;br /&gt;
/wload FileName WorldName&lt;br /&gt;
/wload SourceWorld TargetWorld&lt;br /&gt;
|cat=World&lt;br /&gt;
|aliases=wadd&lt;br /&gt;
|perm=ManageWorlds&lt;br /&gt;
|console=Yes&lt;br /&gt;
|}}&lt;br /&gt;
Load map from file into a world. Can be used to create new worlds. Asks for confirmation in case anything is about to be overwritten.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;code&amp;gt;/wload FileName&amp;lt;/code&amp;gt;==&lt;br /&gt;
:Replaces the current world&#039;s map with contents of the given map file. The current map is lost. Cannot be used from console.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;code&amp;gt;/wload FileName WorldName&amp;lt;/code&amp;gt;==&lt;br /&gt;
:If a world with the given name exists, its map is replaced. Otherwise, a new world is created using this name and map.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;code&amp;gt;/wload SourceWorld TargetWorld&amp;lt;/code&amp;gt;==&lt;br /&gt;
:Copies map from SourceWorld to TargetWorld, or creates a new world using this name and the map from SourceWorld. Since maps are named after their worlds, this is essentially same as loading SourceWorld.fcm&lt;br /&gt;
&lt;br /&gt;
==Supported map formats==&lt;br /&gt;
* fCraft (.fcm) - format versions 2 and 3&lt;br /&gt;
* MCSharp, MCZall, and MCLawl (.lvl)&lt;br /&gt;
* D3 (.map)&lt;br /&gt;
* Default/vanilla server (.dat)&lt;br /&gt;
* MinerCPP, and LuaCraft (.dat)&lt;br /&gt;
* JTE&#039;s (.gz)&lt;br /&gt;
* Indev (.mclevel) - finite maps only&lt;br /&gt;
* Myne, MyneCraft, Hyvebuild, and iCraft (directory)&lt;br /&gt;
* Opticraft (.save)&lt;br /&gt;
* XMap (.xmap)&lt;br /&gt;
{{LastUpdated|458}}&lt;/div&gt;</summary>
		<author><name>75.70.55.0</name></author>
	</entry>
	<entry>
		<id>https://fcraft.net/w/index.php?title=/WLoad&amp;diff=97</id>
		<title>/WLoad</title>
		<link rel="alternate" type="text/html" href="https://fcraft.net/w/index.php?title=/WLoad&amp;diff=97"/>
		<updated>2011-03-14T21:30:17Z</updated>

		<summary type="html">&lt;p&gt;75.70.55.0: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Commands]]{{LastUpdated|370}}&lt;br /&gt;
Load map from file into a world. Can be used to create new worlds. Asks for confirmation in case anything is about to be overwritten.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;code&amp;gt;/wload FileName&amp;lt;/code&amp;gt;==&lt;br /&gt;
:Replaces the current world&#039;s map with contents of the given map file. The current map is lost. Cannot be used from console.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;code&amp;gt;/wload FileName WorldName&amp;lt;/code&amp;gt;==&lt;br /&gt;
:If a world with the given name exists, its map is replaced. Otherwise, a new world is created using this name and map.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;code&amp;gt;/wload SourceWorld TargetWorld&amp;lt;/code&amp;gt;==&lt;br /&gt;
:Copies map from SourceWorld to TargetWorld, or creates a new world using this name and the map from SourceWorld. Since maps are named after their worlds, this is essentially same as loading SourceWorld.fcm&lt;br /&gt;
&lt;br /&gt;
==Supported map formats==&lt;br /&gt;
* fCraft (.fcm) - format versions 2 and 3&lt;br /&gt;
* MCSharp, MCZall, and MCLawl (.lvl)&lt;br /&gt;
* D3 (.map)&lt;br /&gt;
* Default/vanilla server (.dat)&lt;br /&gt;
* MinerCPP, and LuaCraft (.dat)&lt;br /&gt;
* JTE&#039;s (.gz)&lt;br /&gt;
* Indev (.mclevel) - finite maps only&lt;br /&gt;
* Myne, MyneCraft, Hyvebuild, and iCraft (directory)&lt;/div&gt;</summary>
		<author><name>75.70.55.0</name></author>
	</entry>
</feed>