Version history

From fCraft Wiki
Revision as of 06:51, 30 April 2017 by F (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search




27 January 2014 - r2327

  • Fix: Fixed a bug that caused character '@' in player names to be treated same as '_' (thanks Dingus)
  • Fix: Fixed a rare crash in /ZEdit when using the command improperly.
  • Fix: Fixed a DataError being thrown in ConfigGUI's "Worlds" tab after toggling rank prefixes on/off.
  • Fix: Improved error reporting.
  • Change: Improved reliability of external IP checks.


15 October 2013 - r2234

  • Fix: Fixed sometimes wrapping last word of a chat message to the next line, when the whole message could fit on one line (thanks AndrewPH).
  • Fix: Installing updates no longer causes UAC prompts under Windows Vista.
  • Fix: Fixed IRC periodically crashing if someone quits with an empty message.
  • Fix: Fixed IRC-related crashes not being submitted to the crash reporter.


27 August 2013 - r2180

  • Feature: Added /Fill3D.
  • Feature: Added caret (^), tilde (~), and grave accent (`) to emotes.
  • Fix: Emotes work via IRC once again.
  • Fix: ConfigGUI: Fixed "Add world" and "Edit world" popups sometimes locking up.
  • Fix: Fixed PlayerDB not saving LastFailedLoginIP properly.
  • Change: Made it easy to switch heartbeat servers ( to classicube or back) via ConfigGUI.
  • Change: Added an optional second parameter to /DumpStats, which allows specifying period of inactivity for filtering players.
  • Change: Improved startup and shutdown times, and reduced CPU use.
  • Change: /Hide and /Unhide now indicate when they are silent or not.


17 August 2013 - r2150

  • Feature: Improved the way /EllipsoidH works on flat surfaces. Instead of filled ellipses, it now makes rings.
  • Feature: Added /Reply (/re).
  • Feature: /Fill2D can now fill with any brush, not just solid color.
  • Feature: Added HeartbeatUrl config key, to allow alternative heartbeat/authentication services. Note: HeartbeatSaver only needs to be updated IF you plan on using something other than
  • Fix: Fixed a InvalidOperationException in ConfigGUI when re-drawing the map preview (thanks Jonty800).
  • Fix: Fixed "Realistic" MapGen help (thanks Jonty800).
  • Fix: Now correctly kicking custom premium-MC clients.
  • Fix: Fixed help messages in HeartbeatSaver and /MassRank.
  • Fix: Fixed a potential way of revealing hidden players by messaging them.
  • Change: ConfigGUI's port checker works again.
  • Change: IRC bot will now retry for its primary nick every 30 seconds (thanks Dankirk).


30 July 2013 - r2124

  • Feature: Mojang account (email) support. Added ViewEmails permission and a config option to disallow email users.
  • Feature: Overhauled map generation! Improved /Gen, new /SetGen command, more options, preset loading/saving, redesigned ConfigGUI interface, and two new map generation modes: Vanilla (from FemtoCraft) and FloatingIsland.
  • Feature: Optional RegEx filtering of filenames for MapRenderer and MapConverter, enabled by --regex flag.
  • Feature: Added "Player ___ logged in from an IP shared by frozen players..." announcement.
  • Feature: Added an optional parameter to toggle commands (grass, water, lava, solid, paint, static) — "on"/"1" or "off"/"0".
  • Feature: Added BackupOnMapChange config key, which automates backups when a world's map is replaced by /Gen or /WLoad (enabled by default).
  • Feature: Added /To as an alias of /TP, and /Flush as an alias for /WFlush.
  • Feature: MapRenderer is now much quicker, thanks to optimization and multithreading.
  • Feature: Added ability to change capitalization of player's name using /SetInfo.
  • Fix: Fixed MapGenerator sometimes locking up when working with tiny 16x16 maps (thanks 123DMWM).
  • Fix: Fixed world greetings not being saved between restarts (thanks Jonty800).
  • Fix: Fixed /WLoad showing incorrect map file names when prompting to replace files (thanks Smokeybacon).
  • Fix: Fixed online-only name prefix revealing hidden players in some commands (thanks Intertoothh and recon).
  • Fix: When a spectating player gets frozen, they are no longer stuck spectating (thanks ruggedbear and NuclearWaffle121).
  • Fix: IRC now handles two-number color codes and reset codes correctly (thanks Liam).
  • Fix: Fixed map changes sometimes leaving behind "ghost maps" for players with rank-specific main maps set (thanks Jonty800).
  • Fix: PlayerDB name autocompletion now correctly handles players with '.' in their names.
  • Fix: Timed backups no longer drift slightly every hour.
  • Fix: Players can now /Clear their chat even while deaf.
  • Fix: Fixed a rare serialization issue with PlayerDB's RankChangedBy field.
  • Fix: Players who were added to the database manually now correctly have FirstLoginDate and ID set on first login.
  • Change: MapRenderer/MapConverter: Now only allow either one directory, or one-or-more files to be specified. Multiple directories, and mixed directories/files are no longer allowed.
  • Change: MapRenderer/MapConverter: Disabled slow fallback conversion by default (which caused non-map files to take forever to skip in recursive mode). Old behavior can be reenabled with --tryhard flag.
  • Change: When auto-updating or restarting under Mono, fCraft no longer tries to use "mono-sgen", now just using "mono" and assuming that runtime is properly configured.
  • Change: /WBuild and /WAccess can optionally now take "@" in front of rank name.
  • Change: Removed BackupOnJoin config key.
  • Change: UpdateInstaller's --restart parameter is more flexible.
  • Change: Dropped Mono 2.6 support.
  • Change: Optimizations in player movement code, PlayerDB loading/saving, IP ban list loading, map generation, map rendering, /Ellipsoid, and /Sphere.


10 December 2012 - r1917

  • Feature: Added RankPrefixesOnDisplayedNames config key (default: false), which controls whether to prepend rank prefixes to names of players with a custom DisplayedName set.
  • Feature: Added BypassHttpsCertificateValidation config key (default: false), to ease HTTPS-related pains under Mono.
  • Feature: Added MoveEmoteDotToEndOfMessage config key (default: true), which slightly changes emote formatting, by BobKare's request.
  • Fix: Fixed a stability issue in the IRC bot.
  • Fix: Fixed incorrect runtime version detection for Mono versions older than 2.6.
  • Fix: Server now gives more informative messages when you try to do something disallowed to yourself (mute, unfreeze, ban, kick, etc).
  • Fix: Fixed being able to teleport to hidden players (thanks nope__avi).
  • Fix: Fixed /Unhide not faking a join message for hidden players (thanks ruggedbear).
  • Fix: Fixed IRC bot sending USER before NICK (fixes occasional error 451) (thanks Hellenion).
  • Change: Added ability to set players' BandwidthUseMode via /SetInfo.
  • Change: Improved /Env, /UndoAreaNot, and /Help messages.
  • Change: Players' connection messages in logs now include TimesVisited stat.
  • Change: /Help commands is no longer an alias for /Commands (thanks ruggedbear).


29 November 2012 - r1887

  • Feature: Emote keywords and their Unicode equivalents can now be included in announcement and rule files.
  • Feature: IRC bot now sends a quit message consisting of server name and shutdown reason.
  • Fix: Fixed a very small chance of PlayerInfo.TimeMutedLeft returning negative time spans.
  • Fix: Leading and trailing spaces are now trimmed from kick/ban/unban reasons.
  • Fix: Fixed some emotes getting trimmed from /Say, /Me, and /Staff (thanks Intertoothh)
  • Fix: Fixed RestartInterval starting two chat timers (thanks Hellenion)
  • Fix: Fixed ServerCLI using console colors for the first few messages even if --noconsolecolor command-line switch was given (thanks Hellenion)
  • Change: Added --noupdater command line switch, which stops fCraft from launching update installer binaries (although all other update-related behavior remains the same)
  • Change: Player's own name is no longer considered in autocompletion/searches for commands that are not applicable to self (e.g. /Ban, /Mute, /Ignore, /TP, etc)
  • Change: Logged global chat messages now have "(global)" prepended before player's name.
  • API: Updated trunk project files to VisualStudio 2010. Target runtime remains .NET 3.5 Client Profile.


16 October 2012 - r1847

  • Feature: Added /Emotes command, to list emotes and their keywords.
  • Fix: Fixed IRC bot cutting off very long messages.
  • Fix: Fixed /Info not working with some IP ranges (thanks _BjorN64_).
  • Fix: Fixed single-letter emote keywords not working (thanks Wundsalz).
  • Fix: Improved the way IRC bot handles nick conflicts (thanks Jonty800).
  • Fix: /DumpStats no longer dies when an invalid file name is given (thanks Hellenion).
  • Change: Added a new build configuration, DEBUG_NETWORKING, which traces all incoming and outgoing packets.
  • Change: IRC bot now logs all outgoing messages when built in DEBUG_IRC configuration.


10 October 2012 - r1832

  • Feature: Check your configs! New options were added to control display of colors and emotes to/from IRC.
  • Feature: Added {house} emote: ⌂ (0x7F).
  • Fix: Fixed newline codes %n/%N not being parsed properly.
  • Fix: Fixed a crash in Color.StripColors (thanks sukinorules).
  • Fix: Fixed random symbols appearing in stack traces in console (thanks sukinorules).
  • Fix: Fixed couple problems with Player.Moving event (thanks 00pol).
  • Fix: Spawn points of MCSharp map files are now loaded correctly (thanks 00pol).
  • Change: Players' DisplayedNames may no longer contains line breaks.


8 October 2012 - r1822

  • Feature: Added support for "emotes" (chat symbols). New permission (UseEmotes) and config key (IRCAllowEmotes) were added.
  • Fix: Fixed numbers sometimes being accepted as valid (e.g. by /Mute), although counted as 0-length time spans.
  • Fix: Fixed PlayerDB not saving strings with newlines properly.
  • Fix: Fixed IRC bot sometimes producing messages that are a couple characters over the IRC message size limit (512 chars).
  • Fix: Fixed players being able to use newline codes (&N/&n) on IRC.
  • Fix: Fixed problems with UpdaterMode and BackupOnStartup settings in ConfigGUI.
  • Fix: Fixed fCraft not building in DEBUG_IRC configuration.
  • Change: Added a workaround for TermInfoDriver-related exceptions under Mono (thanks Hellenion)
  • Change: Symbolic color codes (e.g. %S) can now be used in chat.
  • Change: Backslash can now be used to escape percent color codes (e.g. \%C).
  • Change: fCraft will now retry looking up the external IP up to 3 times.
  • Change: Lots of documentation, annotation, and API improvements.


30 September 2012 - r1796

  • Fix: Fixed an occasional InvalidOperationException when auto-updating in ServerGUI.
  • Fix: Fixed ConfigGUI showing misleading information in "unrecognized entry ignore" errors.
  • Fix: Fixed Logger trying to write to file in MapConverter and MapRenderer.
  • Fix: Fixed MapRenderer and MapConverter spamming zone-related errors (thanks Hellenion and AndrewPH)
  • Fix: Fixed /UndoPlayerNot help entry (thanks ruggedbear)
  • Change: Heartbeat code now uses HTTPS, as mandated by Mojang. If you use Mono, see
  • Change: Removed support for the malfunctioning WoM Direct heartbeat service.
  • Change: RankChangeReason is now shown as a "Rank note" in /Info, even if no other data (PreviousRank/RankChangedBy/RankChangeDate) exists (thanks Wundsalz)


26 September 2012 - r1788

  • Feature: Added checkbox for HeartbeatEnabled config key to ConfigGUI, on the advanced tab.
  • Fix: Fixed heartbeat/verification issues caused by "no-www" changes made by Mojang at
  • Fix: Fixed VisualStudio designer being unable to load ConfigGUI.MainForm.
  • Fix: Fixed /ZMark being spammy (thanks ruggedbear).
  • Fix: Binding "air" block to something now works as expected (deleted blocks are replaced with the binding) (thanks Hellenion).
  • Fix: Added missing tooltips to "Data Backup" checkbox in ConfigGUI (thanks PhoneBook_).
  • Fix: Added HeartbeatSaver to UpdateInstaller and list of protected filenames.
  • Fix: Fixed occasional startup crash in HeartbeatSaver.
  • Change: /Reload Autorank now triggers a re-scan of the whole PlayerDB.
  • Change: Added code to BlockDB to recover misaligned .fbdb files. BlockDB files are supposed to be aligned to 20 bytes. Misalignment might happen if writing didn't finish properly - e.g. power outage, or ungraceful shutdown.
  • Change: Improved consistency of exit codes in HeartbeatSaver, MapConverter, and MapRenderer.


14 September 2012 - r1765

  • Feature: Added standalone HeartbeatSaver utility, a heartbeat-sending daemon.
  • Feature: Added a way to specify scale/turbulence/seed for cloudy brush.
  • Feature: Renamed "IRC" LogType to "IRCStatus", and added "IRCChat" LogType. Check your configs.
  • Fix: Fixed the updater. You'll have to update from version 0.631 manually (thanks nope__avi).
  • Fix: Fixed a bug related to multiple players trying to join an almost-full server at the same time.
  • Fix: Fixed a rare InvalidOperationException crash in ConfigGUI.
  • Fix: Fixed reversed order in /BlockInfo (thanks recon_).
  • Fix: Fixed a few formatting errors in feedback messages.
  • Fix: Fixed a rare disconnect related to a spectator trying to follow a spectatee to a full world.
  • Fix: Fixed /Hide not showing a fake disconnect message when needed.
  • Fix: Fixed /WRename prompting for file overwrite when changing capitalization in a world name.
  • Fix: Fixed UndoArea/UndoAreaNot and UndoPlayer/UndoPlayerNot messages occasionally getting mixed up.
  • Fix: Fixed players being unable to join the server if access restrictions prevent them from joining the rank-specific main world.
  • Fix: /WRemove now correctly handles removing rank-main worlds.
  • Fix: Fixed a case where newlines in PlayerInfo or IPBanInfo fields would cause record corruption.
  • Fix: Fixed reversed messages in /DoNotMark (thanks Hellenion).
  • Fix: Fixed ServerCLI sometimes staying open, waiting on console input, when it's supposed to shut down or restart.
  • Change: Sped up "cloudy" brush when working with large draw commands.
  • Change: Crash reporter now submits list of names and versions of all loaded assemblies, to help identify mismatched or missing dependencies.
  • Change: Added logging to every confirmation prompt, "/ok", /BlockDB enabling/disabling/clearing, /ZRemove, /InfoSwap, and /Env.
  • Change: Any pending confirmations are now reset on world change.
  • Change: Added /I as an alias for /Info, and /CS as an alias for /CopySlot.
  • Change: Removed "marbled" brush ("cloudy" works just as well) and FCMv4 map format support (development canceled).
  • Change: /Where command now only requires ViewOthersInfo permission to see other players' whereabouts. It can be used by anyone on self.
  • API: Many more documentation improvements.


5 September 2012 - r1741

  • Feature: Added a way to restrict commands to match online players' names only, by prefixing the name with an exclamation mark (!). See Command Tips for more.
  • Feature: Added /DoNotMark command. When toggled on, clicking on blocks does not cause marks to be added to a selection.
  • Fix: Included MapConverter.exe and MapRenderer.exe in list of protected filenames.
  • Fix: Fixed a potential crash in Paths.FileExists when working in case-sensitive mode in a root directory.
  • Fix: Fixed ConfigGUI not loading permission limits properly (thanks recon_).
  • Fix: Added missing fake connection message when using non-silent /Unhide (thanks Wundsalz).
  • Change: Improvements to fCraft's built-in crash reporter.
  • Change: Blocks redone with /Redo are now flagged as "Redone" in /BlockInfo (instead of "UndoneSelf"), painted blocks as "Painted" (instead of "Manual, Replaced").
  • API: Many more documentation improvements.


4 September 2012 - r1727

  • Feature: New permissions! FlushWorlds (previously part of ManageWorlds), UseTimers (previously part of Say), and UndoAll.
  • Feature: Added ability to undo multiple players' actions at once, or EVERYONE's actions at once, using /UndoPlayer and /UndoArea. Command syntax changed, see wiki.
  • Feature: /Info now shows whether accounts are free or paid.
  • Feature: Added special "skip"/"none" blocktype, usable with brushes and draw commands.
  • Feature: Added ability to clear world/zone whitelists and blacklists. Use "-*" in place of player name to clear whitelist, and "+*" to clear blacklist.
  • Feature: Added a way to remove all zones in a world, /ZRemove *.
  • Feature: Added /UndoAreaNot (/uan) and /UndoPlayerNot (/upn), which reverse changes made by everyone EXCEPT the given player(s).
  • Feature: Added MapConverter and MapRenderer utilities.
  • Feature: /CuboidW now supports optionally filling sides and center with different blocktypes, e.g. "/cw white blue red".
  • Fix: Fixed ServerCLI launching the wrong fCraft binary after running the updater.
  • Fix: Fixed a missing warning in /Gen when map height is not a multiple of 16.
  • Fix: Fixed a rare case of players receiving desynchronized copies of maps where draw commands are in progress.
  • Fix: Fixed a crash in /Commands <Category>
  • Fix: Fixed potential crashes when working with files in root directories (e.g. C:/)
  • Fix: Improved /BanEx logging.
  • Fix: Improved support for Myne/MyneCraft/HyveBuild/iCraft maps.
  • Fix: Fixed "Add World" dialog in ConfigGUI defaulting to 20 minutes, instead of "(default)".
  • Fix: Fixed SaveInterval and BackupInterval being limited to just 100 seconds/minutes in ConfigGUI (thanks Hellenion).
  • Fix: Improved consistency of timestamp format in logs (thanks Hellenion).
  • Fix: Fixed being unable to remove world greetings via /WSet (thanks Hellenion).
  • Fix: Fixed IRC bot cutting off long messages (thanks Hellenion).
  • Change: Improved performance of /Gen, /WLoad, world loading, and all BlockDB-related commands.
  • Change: Adjustments to block names and aliases, as well as command aliases.
  • Change: Merged /Cancel and /Nvm commands.
  • Change: "&N" is now usable as a "newline" constant in all configurable strings (rules, announcements, greetings, etc), and "%N" is usable by players with UseColorCode permissions.
  • Change: Made /Say, /Me, and /Staff usable by frozen players.
  • Change: Added a warning to /Colors regarding the minimum rank required to use colorcodes in chat (thanks Jonty800).
  • Change: Ignoring a player no longer prevents you from seeing /Say messages written by them.
  • Change: /Paint, /Solid, /Grass, /Water, and /Lava are no longer usable by players without Build permission, and dont show up in /Commands for them.
  • Change: Clarified /ZEdit messages when trying to remove self from blacklist, or add yourself to whitelist.
  • Change: /Mute, /Unmute, /Freeze, and /Unfreeze are now also usable on offline players.
  • Change: Session threads are no longer marked as "background", to prevent unexpected side effects from session threads being aborted on shutdown. This might slow down shutdown a bit, but there is less to go wrong.
  • Change: World greetings can now support constants.
  • Change: Ctrl+C/Ctrl+Break are intercepted in ConfigCLI, and result in a graceful shutdown.
  • Change: Process exit code is now set to match ShutdownReason.
  • API: Added ChatTimer.Started and ChatTimer.Stopped events, rewrote BlockDB, MapConversion, and IsoCat APIs.
  • API: Many documentation improvements.


16 July 2012 - r1636

  • Fix: Fixed BlockDB time-limiting code trimming too much data from the database.
  • Fix: CommandBook ban import now accepts any filename that ends with ".csv", not just "bans.csv".
  • Fix: ServerCLI no longer crashes upon receiving EOF from console.
  • Fix: Fixed a rare case of hidden players being revealed (briefly) when their rank is changed.
  • Fix: Fixed /Spectate leaving ghost players behind on world change (thanks Hellenion).
  • Fix: Fixed a couple typos in /WLock and /WUnlock (thanks ImNoobSoWhat).
  • Change: Added server name to /ServerInfo
  • Change: If opening a link fails (from ConfigGUI or ServerGUI), the URL is copied to clipboard, instead of crashing.
  • Change: "/Import bans" no longer prints a message for every player who's already banned, instead showing a total number of already-banned players at the end.
  • Change: Added a missing "Copy" context menu to the ServerGUI's log box (thanks to Jonty800).
  • Change: fCraft front-ends now check fCraft.dll's assembly version, and refuse to start if there is a mismatch (Thanks Zaneo).


9 July 2012 - r1624

  • Fix: Fixed a crash in /PasteX and /PasteNotX.
  • Fix: Fixed /BanInfo crash when given a non-banned IP address.
  • Fix: Fixed a crash in Player.DetectChatSpam if AntiSpam was supposed to be disabled.
  • Fix: Fixed typos in comments and messages (thanks Jonty800).
  • Fix: Fixed a crash in /ZAdd (thanks thelonedrummer18).


6 July 2012 - r1619

  • Feature: ServerGUI message log is now color-coded, easier to select/copy/paste, and featuring clickable links.
  • Fix: Fixed several regressions in /Hide and /Spectate that were introduced in 0.620-0.621 (thanks mark_b).
  • Fix: Fixed /Deafen being usable from console (thanks phonebookguy).
  • Fix: Fixed a crash in Paste/PasteNot/PasteX/PasteNotX (thanks Grant).
  • Misc: Updated some draw command messages, credits, help entries, warnings.


5 July 2012 - r1612

  • Feature: Added CommandBook banlist (bans.csv) support to /Import.
  • Feature: Added a way to list all players of a certain rank with "/Info @ClassName".
  • Feature: Added {PLAYER_LIST} variable, for use in greetings/announcements/rules.
  • Fix: Fixed changes to DefaultBackupInterval config key not being applied.
  • Fix: Fixed /BanInfo showing "players on same IP" for players without a recorded IP address.
  • Fix: Fixed fCraft occasionally using localized datetime and number formatting.
  • Fix: Fixed /Cut storing the selected blocks before checking player's draw limit (thanks ruggedbear).
  • Fix: Fixed /Fill2D starting a selection even if command parameters could not be parsed (thanks David00143).
  • Fix: Fixed /Copy and /Cut reporting incorrect origin information (thanks nope__avi).
  • Fix: Players who are spectating or being spectated by you are no longer hidden from the tab player list (thanks ruggedbear).
  • Change: If multiple players are spectating the same player, they no longer see each other (thanks Hellenion).
  • Change: Small improvements and fixes to /WSet and to AntiSpam functionality.
  • Change: Sped up PlayerDB loading on startup.
  • Change: Added shortcuts for /SetInfo field names.


17 June 2012 - r1592

  • Feature: WoM Direct description and flags can now be set from config, without the need to go to WoM Direct website.
  • Feature: Added a new /WSet command, that allows hiding worlds, changing backup settings, and setting greeting messages.
  • Feature: More /WInfo information is persisted across server restarts: IsLocked, LockedBy, UnlockedBy, LoadedBy, LoadedOn, MapChangedBy, MapChangedOn.
  • Feature: Added IRCStripMinecraftColors config key (default: true). It determines whether Minecraft colorcodes (ampersand codes) entered on IRC should be removed before showing the message in-game.
  • Fix: Fixed incorrect percentages occasional being printed by /Measure, /Cancel, and /Undo.
  • Fix: Locked worlds remain locked after server restart.
  • Fix: Addressed many flaws and glitches in the backup system.
  • Fix: Fixed a case where draw commands that affected no blocks caused division by zero
  • Fix: Fixed a PlayerDB record corruption bug that affected numbers over 100,000,000.
  • Fix: Fixed a stability issue related to LineWrapper (thanks Kevinsweijen and Mc_MrCat).
  • Fix: Fixed IRC markup codes being forwarded to the server in IRC's channel-kick messages.
  • Fix: Fixed /Unmute not checking rank limits (thanks Jonty800).
  • Fix: Fixed "/BanIP <IP>" and "/BanAll <PlayerName>" not checking ban exemptions when kicking players (thanks BobKare).
  • Fix: Fixed "/BanIP <PlayerName>" not kicking all the players from IP address.
  • Fix: Fixed Undo/Redo messages (thanks Jonty800).
  • Fix: Fixed compatibility with Mono (thanks Hawkzeh).
  • Change: Removed /WHide and /WUnhide (obsoleted by /WSet).


22 April 2012 - r1568

  • Fix: Fixed a crash in ConfigGUI when trying to sort by map size and a map file is missing (thanks Moose).
  • Change: Ampersands are no longer allowed in chat, even escaped, due to unpredictable Minecraft client behavior.


21 April 2012 - r1564

  • Feature: /BInfo now accepts optional XYZ coordinates, like /Mark.
  • Fix: Added a workaround for "Internal error Flush" under Mono.
  • Fix: Fixed /WBring printing incorrect usage syntax (thanks recon_)
  • Fix: Fixed typo in /BlockDB (thanks xN8Gx)
  • Fix: Fixed IRC bots not binding to the specified local endpoint.
  • Fix: Fixed "PreviousRank" not getting updated by /SetInfo working (thanks nope__avi)
  • Fix: Fixed several rare stability issues (thanks Kevinsweijen).
  • Fix: Fixed /Undo and /Redo producing odd log messages if 0 blocks have been changed.
  • Change: Allowed '&' character (ampersand) to be entered in chat, which is now escaped.


10 March 2012 - r1498

  • Fix: Fixed /Import terminating when importing bans, if a player with the given name is already banned.
  • Fix: Fixed a formatting error in /Bring and /WBring confirmation messages.
  • Fix: Fixed mixed-up messages in /WAccess and /WBuild when removing players from blacklist/whitelist (thanks ruggedbear and xN8Gx)
  • Fix: Fixed /Static not turning off after switching worlds (thanks boblol0909)
  • Fix: Fixed /Rotate printing incorrect copyslot number (thanks Mc_MrCat)
  • Fix: Fixed a ServerGUI crash when pressing the down arrow key after typing in the first console message (thanks Jason)
  • Fix: /Me messages no longer count towards stats twice (thanks recon_)
  • Fix: /Mute and /Unmute now usable with "-" in place of player name (thanks thelonedrummer18)
  • Fix: Fixed README.txt typo (thanks Wolfmade)


2 February 2012 - r1445

  • Fix: Fixed /Patrol checking Spectate permission, and /SpecPatrol not checking it.
  • Fix: Fixed /WRename not updating player's last-used-world-name (thanks Hellenion)
  • Fix: Fixed colorcodes (%-codes) not getting applied consistently (thanks BobKare)
  • Fix: Fixed a rare name-verification issue that only affected players whose ranks have been imported (thanks Mc_MrCat)
  • Fix: ServerGUI now correctly interprets "Notify" and "Auto" updater settings.
  • Change: Data backups are now stored in ./databackups/ directory.


24 January 2012 - r1426

  • Fix: Fixed server crashing if PlayerDB.txt exists but is empty.
  • Fix: Fixed "/Join -" using player names, and "/TP -" using world names.
  • Fix: Solved File.Replace-related errors, which caused occasional save failures.
  • Fix: Fixed /SpecPatrol not checking caller's Spectate permission limit when selecting the next target.
  • Fix: Fixed "random" brush producing obvious repeating patterns.
  • Fix: Fixed auto-updater occasionally freezing when attempting to "Restart Now".
  • Fix: Added permission limit check to /Unfreeze (thanks Xb0x4d4m)
  • Fix: Improved the way /Bring and /WBring enforce access permissions (thanks Hellenion)
  • Change: Added more information about player connects/disconnects to log file.


11 January 2012 - r1401

  • Fix: Fixed ConfigGUI not saving changes to ShowConnectionMessages key.
  • Fix: Fixed a case where ConfigGUI could crash while attempting to rename a world.
  • Fix: All spectate permissions are now re-checked when someone gets promoted or demoted.
  • Fix: Fixed ConfigGUI Worlds tab crash when dealing with zoned maps.
  • Fix: Fixed IRC bot not retrying for desired nickname after reconnecting
  • Fix: Fixed a case where editing a world via ConfigGUI would clear security whitelists/blacklists.
  • Fix: Fixed spectating players not being treated as hidden (thanks Hellenion)
  • Fix: Fixed formatting in "Player ___ got auto-kicked" message (thanks BobKare)
  • Fix: Fixed auto-kick revealing hidden players (thanks BobKare)
  • Fix: Fixed RandomBrush-related /Undo artifacts in /Triangle (thanks Lunara_Noctis)


14 December 2011 - r1307

  • Fix: Fixed "/Worlds @Rank" not autocompleting rank names.
  • Fix: Fixed compatibility with legacy PlayerDB format versions. PlayerDB files created by fCraft 0.400+ will work again.
  • Fix: Fixed several syntax problems and crashes in /Gen.
  • Fix: Fixed a bug that reset a world's BackupInterval to default and IsLocked flag to false after changing the map (backport from 0.700).
  • Fix: Fixed a bug that prevented kicks/bans/promotions/demotions from being announced on IRC if no reason was given.
  • Change: Capped all user-entered time spans at 9999 days.
  • Change: Shortened and clarified some confirmation prompts (/Gen, /WLoad, /ZRemove, /Import, /MassRank).


3 December 2011 - r1282

  • Feature: Added information about periodic backups to /WInfo.
  • Fix: Fixed /Players not working properly if both world name and offset were given.
  • Fix: Fixed /WAccess, /WBuild, and /ZEdit not working with one-letter rank names.
  • Fix: Fixed /BanIP, /BanAll, /UnbanIP, and /UnbanAll treating fully numeric player names as IPs.
  • Fix: Fixed /SetInfo not resetting PlayerInfo.LastModified date.
  • Fix: Fixed "/Worlds populated" revealing worlds with hidden players.
  • Fix: Fixed /BringAll ignoring per-rank limits in some cases (thanks ferny530)
  • Fix: Fixed appearance of black and white blocks in /Env edges (thanks Jonty)
  • Fix: Fixed a bug in Position.Equals<Position>(), which may have caused unnecessary position updates in Player.UpdateVisibleEntities (thanks boblol0909)
  • Fix: Fixed a little crash in Chat.GetRawMessageType (thanks ruggedbear)
  • Fix: Fixed a case where Player.CanPlace checked permissions against the wrong world's BuildSecurity controller (thanks Xesdra)
  • Fix: Fixed "/Commands @Rank" showing hidden commands (thanks Hellenion)
  • Fix: Fixed a typo in /Worlds (thanks Kevinsweijen)
  • Fix: Fixed BlockDBAutoEnable and BlockDBAutoEnableRank config keys being placed in the "General" section.
  • Change: Improved config.xml format (now version 152). Configs created with fCraft 0.611+ will not be usable with older versions of fCraft.
  • Change: Rewrote ServerGUI startup code to make it more responsive (thanks to 800craft for the idea).
  • Change: Added information about command-line options to the README, and fixed some typos.
  • Change: MaxConnectionsPerIP restriction no longer applies to localhost.
  • Change: Increased block-ratio limit for "random", "cloudy", and "marbled" brushes from 1000 to 10,000.


18 November 2011 - r1240

  • Feature: Added /Fill2D (/f2d), /Triangle (/t), and /TriangleW (/tw) draw commands.
  • Feature: Added ability to filter /Worlds by rank.
  • Feature: Added /Static (a way to repeat selection commands).
  • Feature: Added MaxUndoStates config key (how many steps back can /Undo go), and ConfigGUI bindings.
  • Feature: Added experimental IP-range lookup to /Info (CIDR notation). Changed /Info pattern-matching single-character symbol from '.' to '?'
  • Feature: Added pagination to /Players.
  • Feature: /Spectate and /SpecPatrol now show what commands, PMs, and rank messages the target types in.
  • Feature: Added a way to change server salt without needing a restart, using /Reload Salt
  • Feature: /Measure now shows statistics about block types in the selection.
  • Feature: /Gen now has two new templates: "ocean" and "empty"
  • Fix: Many fixes in name-retyping functionality.
  • Fix: Addressed stability issues in LineWrapper and Undo/Redo.
  • Fix: Fixed /WLock not canceling all draw commands (as intended).
  • Fix: Fixed some outdated descriptions, links, and tooltips in ConfigGUI.
  • Fix: Fixed being able to BanIP/BanAll/UnbanIP/UnbanAll invalid IP addresses ( and
  • Fix: Fixed /Info printing a blank page (instead of the last page) if given offset is greater than the total number of matches.
  • Fix: Fixed rank prefixes being appended to players' names if DisplayedName is set.
  • Fix: Fixed a couple rare crashes/hangs in ServerGUI when parsing console commands.
  • Fix: Fixed /Ban and /Unban announcing when they're not supposed to.
  • Fix: Fixed a potential crash in /BanInfo when looking up an IP address directly (no player name).
  • Fix: Fixed another obscure way of revealing hidden players.
  • Fix: Fixed Beta client kick message (thanks Voziv).
  • Fix: Fixed /Commands defaulting to printing ALL commands.
  • Fix: Fixed /Undo trying to re-cancel canceled commands.
  • Fix: Fixed uncaught "Illegal characters in path." exception when trying to save a /Gen'erated map to an invalid filename.
  • Fix: Fixed typos in /ReplaceNot and /UndoArea.
  • Change: Added a warning on startup if name verification is disabled.
  • Change: Tweaks and improvements to /Info, /WInfo, /BanInfo, /SetInfo, and /Commands.
  • Change: Removed code that tries next port if the given one could not be used. Now fCraft either starts on the port specified in config, or dies.
  • Change: Commands now complain about being given too many parameters (in addition to complaining about too few parameters). This should help catch mistyped commands.
  • Change: Added an option to disable giant-tree generation in ConfigGUI's map generator.
  • Change: Changed log format for bans/kicks to include more information, and fixed log message format for "Player ____ logged in from an IP shared by banned players..."
  • Change: Included config.xml in the automated data backup.
  • Change: ConfigGUI tweaks and improvements.
  • Change: Changes some aliases:
    • Added /Whois and /WhoWas as aliases for /Info.
    • Set "/B" and "/About" to be aliases for /BInfo.
  • Change: Changed some ConfigKey defaults:
    • BlockDBEnabled defaults to "true"
    • WomEnableEnvExtensions defaults to "false"
    • IRCBotAnnounceServerEvents defaults to "true"
  • Change: Discontinued ServerWinService (formerly fCraftWinService) subproject.
  • API: Improved Vector3I, Vector3F, and Position classes a bit.
  • API: New events: DrawOperation.Beginning / Began / Ended
  • API: Changed the way PlayerInfo stores empty string fields. Instead of a 0-length string, it now uses nulls.
  • Optimization: Sped up PlayerDB loading/saving, and boolean ConfigKey lookup.


23 October 2011 - r1155

  • Feature: Added support for repeating previously-entered player and world names. Just put a dash (-) in place of the player/world name when using a command, and fCraft will fill in the most-recently-used name.
  • Fix: Fixed an occasional SecurityController-related crash in /Gen, /WLoad, and ConfigGUI world editor.
  • Fix: Fixed an very rare problem in shutdown/restart commands.
  • Fix: Fixed a rare crash that only happened if: MaxPlayers>128, MaxPlayersPerWorld=128, main is full, AND connecting player has a reserved slot.
  • Fix: Fixed naming of paste/pastenot and pastex/pastenotx
  • Fix: Fixed a permission exploit in /wbring (thanks to panda100123)
  • Fix: Fixed /Rules section finder accidentally being case-sensitive.
  • Fix: Fixed an issue with MCSharp/MCZall/MCLawl/MCQuai/MCStorm/MCForge/MCWhatever importer.
  • Change: Decreased shading strength in IsoCat renderer.
  • Change: Added /Who as an alias for /Players, by request.
  • Change: Clarified ConfigGUI description of name verification settings.
  • Change: Normalized command name capitalization. Command names must now start with an uppercase letter, for consistency.
  • API: Fixed inconsistencies in PlayerDB.txt header row format declaration.


20 October 2011 - r1142

  • Fix: /Cancel can no longer be repeated with "/" (no longer replaces previously-called command).
  • Fix: Fixed /Rotate and /Mirror messing up if a paste command is in progress.
  • Fix: Re-enabled crash interception and reporting.


18 October 2011 - r1135

  • Feature: One-click paste commands are now the default. Two-click aligned paste commands are now known as /PasteX (/PX) and /PasteNotX.
  • Feature: Added /ReplaceBrush (/RB) command (shortcut for /Brush ReplaceBrush + /Cuboid).
  • Feature: Added a way to change number of copy/paste slots per rank from ConfigGUI.
  • Fix: Fixed a few typos and missing help entries.
  • Fix: Fixed DrawOp completion message and log entry.
  • Fix: Fixed /Paste and /PasteNot not properly clipping against world boundaries.
  • Fix: Fixed ConfigGUI not preserving environment settings for worlds.
  • Fix: Fixed ConfigGUI losing some worlds and showing some errors when importing from 0.5xx.
  • Fix: Fixed /Bring not being usable from console.
  • Fix: Fixed /WRename crashing if invalid characters (from filesystem's point of view) are present in the new name.
  • Fix: Fixed /SpecPatrol not checking for Spectate permission.
  • Fix: Fixed /UndoArea'd and /UndoPlayer'ed blocks having "Restored" flag set in /bi
  • Fix: Fixed a detached checkbox on "Worlds" tab of ConfigGUI.
  • Fix: Fixed /Say, /Staff, and /Me getting logged twice.
  • Fix: Fixed per-world backup settings being cleared on server restart.
  • Fix: Fixed a rare NullReferenceException in WorldManager.LoadWorldList that occurred if the main world was missing, and the fallback world had access restrictions.
  • Fix: Fixed some issues with BlockDB settings in "Add World" and "Edit World" popups of ConfiGUI.
  • Fix: Fixed a rare ConfigGUI crash when resetting the rank tab whole one of the old ranks is selected.
  • Change: Sped up /EllipsoidH and /SphereH slightly (thanks to Redshift).
  • Change: Improved error handling in /Env when setting level.
  • Change: Double-buffered the preview on "Chat" tab of ConfigGUI, to get rid of flicker.
  • Change: Clarified auto-freeze message when trying to kick/ban someone without a required reason string.


15 October 2011 - r1135

  • Fixed several issues with /Undo and drawing commands.


14 October 2011 - r1107

See for a summary of changes, and upgrade notes.
  • Chat: Added a /Timer command for creating publicly-announced countdowns/timers.
  • Chat: Added a way to cancel partial messages: /Nvm.
  • Chat: Removed "Banned player ___ tried to log in" and "Player ___ tried to log in from a banned IP" messages.
  • Chat: /Say, /Staff, and /Me commands can no longer repeated using "/" shortcut.
  • Chat: Added a warning when trying to PM deafened players.
  • Chat: Added a shortcut for chatting to same rank: "@@ Message"
  • Chat: Increased the number of blank lines sent by /Clear to 30, to accommodate players with smaller-than-normal font sizes.
  • Chat Fix: Fixed /Say, /Roll, /Staff, and /Me sometimes bypassing Chat permission, mute check, or spam detection check.
  • Chat Fix: Fixed rank chat being logged twice.
  • Chat Fix: Fixed some system messages getting through to deafened players.
  • Chat Fix: /Deafen now clears the screen when toggled on.
  • Commands: Rank and zone names now autocomplete.
  • Commands: Players can no longer freeze, mute, kick, ban, unban, promote, or demote themselves.
  • Commands: /Players can now be called with an optional WorldName parameter, to only list players in a particular world.
  • Commands: /WLoad now takes two more optional parameters: build rank and access rank names.
  • Commands: /Info now shows last leave reason, idle time, freeze/mute information, and ban exemption status.
  • Commands: Augmented /Rules to support several rule categories.
  • Commands: Added /Spectate and /SpecPatrol (/SPat) commands.
  • Commands: Added /WBring (brings target player to a world);
  • Commands: Added /Spawn command (brings you to spawn). Typing "/TP" no longer does the same thing, and /TP now always requires Teleport permission.
  • Commands: Algorithm that /Patrol uses to pick the next target was improved.
  • Commands: Renamed Lock/Unlock commands to /WLock//WUnlock, for consistency.
  • Commands: Merged /ReloadConfig and /AutoRankReload into /Reload command. Merged /ImportRanks and /ImportBans into /Import command. Combined functionality of /LockAll into /WLock, and functionality of /UnlockAll into /WUnlock.
  • Commands: /Info and /Worlds now support pagination.
  • Commands: When world access permissions are changed with /WAccess, players who lost ability to join the world will automatically be moved to main.
  • Commands: Frozen player can no longer call most commands, with exception of: /Clear, /Info, /BanInfo, /RankInfo, /ServerInfo, /Ranks, /Rules, /Where, /Help, /Commands, /Colors, /Worlds, /Zones, and /ZInfo.
  • Commands: /Bring and /WBring now give the option of overriding worlds' access minimum-rank. Explicitly blacklisted players will continue to be barred.
  • Commands: Added /InfoSwap command, for swapping two players' ranks and PlayerDB records.
  • Commands: Added a way to abort a server shutdown or restart ("/Shutdown abort" or "/Restart abort").
  • Commands: /RankInfo now shows copy/paste slots, idle kick time, and permission limits.
  • Commands: Most time-related commands now take the compact format (e.g. 1m30s, 45s, 24h, etc).
  • Commands: Color-coded /Commands.
  • Commands: Limited /Mute duration to range between 1 second and 700 days (100 weeks).
  • Commands: /SetInfo now allows changing players' DisplayedName.
  • Commands: A warning is now shown when a player is kicked/banned, and other players are still connected from the IP.
  • Commands: Added a way to add IP ban exemptions using /BanEx (banning all players from IP except a particular one).
  • Commands: Added automatic countdowns to /Shutdown and /Restart.
  • Commands: Added more stats to /ServerInfo.
  • Commands: /MassRank now defaults to silent, and takes a "reason" parameter.
  • Commands: Added "/St" as an alias for /Staff. Changed "/L" from being alias for /Join, to being alias for /Lava. Removed "/Cub" alias for /Cuboid.
  • Commands Fix: Fixed /UnbanIP and /UnbanAll not announcing the unban reason.
  • Commands Fix: Fixed /Info not formatting names of offline players.
  • Commands Fix: Fixed /Restart breaking under Mono if working path contains spaces.
  • Commands Fix: Fixed freeze/unfreeze printing wrong ranks in "You can only freeze players ranked ____ or lower" messages.
  • Commands Fix: Fixed a rare crash in /Rules when used from console.
  • Commands Fix: /BanIP and /BanAll no longer allow to ban the IP if it's shared by any players whom caller is not allowed to ban.
  • Commands Fix: Fixed /Ignore and /Unignore printing all matches at once on autocompletion.
  • Commands Fix: Fixed a case where /BringAll could reveal hidden players.
  • Commands Fix: Fixed a few bugs in /DumpStats, expanded player listing to top-5/bottom-5, and added "BlocksDrawn" stat.
  • Commands Fix: Fixed /Rank and /TP commands showing up in /Commands for ALL players.
  • Commands Fix: Fixed a couple rare bugs in /Roll.
  • Commands Fix: Fixed broken /BringAll support for bringing multiple ranks at once.
  • Commands Fix: Fixed several obscure ways of revealing presence of hidden players via commands like /ServerInfo and /Worlds.
  • Config: New config keys: BackupDataOnStartup (default: true), RestartInterval (default: 0), HeartbeatToWoMDirect (default: true), BlockDBEnabled (default: true), BlockDBAutoEnable (default: true), and BlockDBAutoEnableRank (default: DefaultRank), WoMEnableEnvExtensions (default: false).
  • Config: Added Spectate permission that covers /Spectate and /SpecPatrol.
  • Config: Added DrawAdvanced permission that covers /Brush, {{cmd|Sphere, /SphereH, /Torus, and /Restore commands.
  • Config: Added ManageBlockDB permission that covers /BlockDB.
  • Config: Added UndoOthersActions permission that covers /UndoPlayer and /UndoArea.
  • Config: /Reload can now update more config keys without needing a restart: AutoRankEnabled, BandwidthUseMode, ConsoleName, DefaultRank, DefaultBuildRank, PatrolledRank.
  • Config: Removed obsolete ShowBannedConnectionMessages config key.
  • Config Fix: Fixed DefaultRank/DefaultBuildRank/PatrolledRank settings not being applied.
  • ConfigGUI: Added BlockDB settings to "Worlds" tab and "Add/Edit World" dialog.
  • ConfigGUI: Reorganized Rank tab.
  • ConfigGUI: Relaxed restrictions on rank prefixes.
  • ConfigGUI: Added "Insert Color" and "Insert Keyword" buttons to announce/rule/greeting editors in ConfigGUI, and a "Reset" button to revert edits.
  • ConfigGUI: Any errors/warnings that are produced while loading worlds.xml in ConfigGUI are now displayed at startup.
  • ConfigGUI Fix: ConfigGUI no longer loses worlds' whitelists/blacklists.
  • ConfigGUI Fix: Fixed several bugs related to renaming worlds.
  • ConfigGUI Fix: Fixed several "Reset" bugs.
  • ConfigGUI Fix: Fixed "Enable colors in IRC" checkbox remaining disabled in ConfigTool.
  • ConfigGUI Fix: Fixed ConfigTool's Chat tab not updating to reflect changes in rank colors/prefixes.
  • ConfigGUI Fix: Fixed sort order in Worlds tab when sorting by world size.
  • ConfigGUI Fix: Fixed some rank dropdown menus in ConfigGUI showing "(lowest rank)" instead of "(default rank)" as the default option.
  • Drawing: Introduced a brush/pattern system for draw commands. Rewrote (almost) all existing draw commands to take advantage of that new infrastructure. Brushes are: Normal (default), Checkered, Random, Cloudy, Marbled, Replace, ReplaceNot, ReplaceBrush.
  • Drawing: Added a way to /Undo up to five commands back. Use {{cmd|Redo to reverse it.
  • Drawing: Added /Torus drawing command, written and contributed by M1_Abrams.
  • Drawing: Added support for multiple copy/paste slots, using /CopySlot. Number of slots of configurable per-rank.
  • Drawing: /Replace and /ReplaceNot can now take just one blocktype. The replacement type is inferred from the type of block player is holding when clicking.
  • Drawing: /Undo now cancels the last drawing commands.
  • Drawing: Added a new block name aliases: "g" for grass, "w" for water, "a" for air.
  • Drawing Fix: Added a missing volume check to /Line, and fixed /CuboidW volume calculations.
  • Drawing Fix: Fixed /Copy and /Cut reporting incorrect orientation.
  • FrontEnd: Colored ConfigCLI log messages: red for errors, yellow for warnings, dark gray for debug, default (gray) for everything else. Call with "--noconsolecolor" parameter to disable.
  • FrontEnd: ServerCLI now handles all updater modes properly, and downloads updater/restarts if needed.
  • FrontEnd: Improved window titles.
  • FrontEnd Fix: Fixed ServerCLI writing errors to stdout instead of stderr.
  • Misc: Players who log out hidden will now log in silently, still hidden.
  • Misc: More keywords are now usable in announcements, rules, and greeting files: {SERVER_NAME}, {MOTD}, {RANK}, {PLAYER_NAME}, {TIME}, {WORLD}, {PLAYERS}, and {WORLDS}
  • Misc: Kicked or disconnected players no longer have their TotalTime increased for the time idled.
  • Misc: fCraft will refuse to start up if running old versions of mono (2.4 or earlier).
  • Misc: Crash reporter now prints a reference number for submitted reports.
  • Misc: AutoRank now only evaluates online players on a timer. A full database sweep will only be done on startup or on-demand. This should notably reduce average CPU use on large databases.
  • Misc: Added AutoRank pseudoplayer (similar to Console), who is now credited with all autorank promotions/demotions.
  • Misc: Increased the allowed clicking distance when manually clicking blocks, to account for lag.
  • Misc: IRC bot now announces channel kicks and nick changes.
  • Misc: When a player with a reserved slot tries to join a full world, the longest-idle player will be kicked to make room.
  • Misc: Frozen, demoted, and banned players are now automatically unhidden. Frozen players are undeafened. Banned players are also automatically unfrozen and unmuted.
  • Misc: When a player's rank is changed, their bindings are now reset (to avoid issues with /Water, /Lava, and /Solid), and any in-progress selection is canceled (draw commands, /Zone, /ZTest, /BInfo, /Measure, etc)
  • Misc: Frozen players now have a little blue star appended to their names, similar to the red star for banned players.
  • Misc: Moved all heartbeat-related operations to the background thread (fixes lag spikes when times out).
  • Misc: Added a dynamically updated compass at the top-right of the screen, visible to players who use WoM 1.8.8+
  • Misc: Added a check for libMonoPosix on server startup. This allows catching misconfigured Mono setups early.
  • Misc: Ranks now default to "white" color ("&f") instead of "none" color ("").
  • Misc: Edited the "failed to load main world" message to sound less menacing, since it's usually caused just by main world filling up.
  • Misc: Sped up /PruneDB, /MassRank, map generation. Reduced memory use of draw commands, undo buffers, and ConfigGUI.
  • Misc Fix: Fixed "duplicate metadata key" warning in FCMv3 maps.
  • Misc Fix: Fixed a zone-related race condition when exporting to Opticraft map format.
  • Misc Fix: Fixed fCraft being unable to start if fCraft.dll is in the root directory of a drive (e.g. in "C:/")
  • Misc Fix: Fixed a bug that caused bandwidth to sometimes be wasted on needlessly updating position of non-moving players.
  • Misc Fix: Fixed a clock drift problem in periodic SchedulerTasks.
  • Misc Fix: Fixed a case where, in some rank configurations, players would see themselves as offline when hidden (in /Info, /BInfo, /Players, etc).
  • PlayerDB: Added 46th column: PlayerInfo.IsHidden ('h' if hidden, otherwise blank).
  • PlayerDB: Added 47th column: PlayerInfo.LastModified (UTC unix timestamp). Accuracy is not yet guaranteed.
  • PlayerDB: Added 48th column: PlayerInfo.DisplayedName (string or blank). Overrides "Name" field for purposes of displaying formatted name (ClassyName).
  • PlayerDB: Removed 14th column (FailedLoginCount) due to disuse.
  • PlayerDB: PlayerDB now writes out changes to TotalTime incrementally for online players, instead of applying the change on-logout.
  • Worlds: Added a way to change some environment and texture settings per-map, using /Env.
  • Worlds: Per-world settings on backup intervals now work.
  • Worlds: Added BlockDB - a system for tracking edits per-block. Added related /BlockDB and /BInfo commands.
  • Worlds: Added /UndoPlayer and /UndoArea commands for undoing players' actions using BlockDB.
  • Worlds: If a world has a missing map file, a warning is now shown, and a default flatgrass map is created.
  • Worlds: Added a way to set per-rank main world, using /WMain.
  • Worlds: Added /Restore command, inspired by good old MinerCPP. Selectively loads a map from another file or backup.
  • Worlds: Allowed non-standard dimensions (neither multiples of 16, nor powers of 2). Added a warning about glitches when using nonstandard dimensions.
  • Worlds: Added LoadedBy, LoadedOn, MapChangedBy, and MapChangedOn to /WInfo and to worlds.xml.
  • Worlds: MapGenerator tweaks: "default" template is now known as "random," "mountains" template now has more cliffs and snow on mountaintops, "island" template is less rough and has nice beaches, and water is now automatically removed from "desert" maps.
  • Worlds Fix: Fixed a crash that occurred if worlds.xml existed but contained no worlds.
  • Worlds Fix: Fixed an exploit that allowed players to bypass world access permissions in certain rank configurations.
  • Worlds Fix: Fixed some rare crashes in /WLoad.
  • Worlds Fix: Fixed /WAccess and /WBuild occasionally not saving the world list after adding players to the access/build whitelists.
  • Worlds Fix: Fixed being unable to change just the capitalization when renaming worlds from ConfigGUI, under Windows.
  • Zones: Added /ZRename command to rename zones.
  • Zones: Added /ZMark command to use zone boundaries for drawing or making selections.
  • Zones Fix: Fixed /ZAdd crash when adding more than one personal zone for the same player (/ZAdd +Name).
  • Zones Fix: Fixed a rare case where two players could simultaneously create a zone with the same name on the same world, which would crash one of the players.
  • Zones Fix: /Zones no longer crashes if used on a world with a missing or corrupt map file.
  • Zones Fix: Tightened security checks of /ZAdd and /ZRemove to prevent a permission exploit.
  • API: Added specialized MetadataCollection class to manage per-map and per-player metadata, and ZoneCollection for zones.
  • API: Added ReSharper-compatible annotations and more argument checks throughout the codebase.
  • API: fCraft now consistently uses [X,Y,Z] for coordinates (where X/Y are horizontal, and Z is vertical), and [Width,Length,Height] for dimensions (Width/Length horizontal, Height vertical).
  • API: Merged Session and Player classes. All session-related functionality is in Player.Networking.cs file.
  • API: New line-wrapping algorithm provides better performance and safety. Now using "\n" instead of "&N" to force a newline.
  • API: Renamed World.PlayerList to World.Players, Server.PlayerList to Server.Players, and added PlayerDB.PlayerInfoList
  • API: New LINQ-style API for working with sets of players. This API is now used for all messaging and packet-sending. Old API (Server.Send* and World.Send*) was removed.
  • API: New unified API for handling player-generated chat (Chat static class), and new events (Chat.Sending and Chat.Sent).
  • API: All cancellable events now implement ICancellableEvent.
  • API: MapDAT and MapNBT now implement IMapConverter.LoadHeader.
  • API: Converted IClassy.GetClassyName(), Rank.GetFullName(), and Player.GetListName() to properties.
  • API: Renamed ConfigKey.GetBool() to ConfigKey.Enabled(). Added ConfigKey.TryGetInt() and ConfigKey.TryGetBool() methods.
  • API: CommandManager.RegisterCommand() now checks for reserved command names (currently "ok" and "nvm"), and does a better job at handling command name capitalization differences.
  • API: Added ability to override Player.MaxBlockPlacementRange, Player.SocketTimeout, Heartbeat.Delay, and Heartbeat.Timeout.
  • API: Renamed RankManager.ParseRank(string) to Rank.Parse(string)
  • API: All draw/undo/copy/paste commands have been moved to fCraft.Drawing namespace.
  • API: Added support for multiple /Help sections per command.
  • API: Added CommandCategory.Debug, removed CommandDescriptor.HelpHander and HelpHandler delegate.
  • API: Moved Server.Player* events to Player.* and Server.PlayerInfo* to PlayerInfo.*
  • API: Expanded the confirmation system (/OK) to allow custom callbacks, decoupled from the command system.
  • API Fix: "Bad heartbeat" reply from no longer triggers UrlChanged event.
  • API Fix: Fixed a couple bugs in BoundingBox.GetIntersection and BoundingBox.Contains.
  • API Fix: Fixed /Replace and /ReplaceNot not firing Player.PlacedBlock
  • events.
  • API Fix: Uncaught exceptions that occur while parsing player messages no longer send crash reports when in DEBUG configuration.



14 September 2011 - r991

  • Fixed another heartbeat-related issue caused by updates.


14 September 2011 - r988

  • Fix: Fixed a rare crash in DoChangeRank when promoting/demoting offline players.
  • Fix: Fixed a case where world access/build whitelist additions were not immediately saved.
  • Fix: Fixed several errors in the way time spans were displayed.
  • Fix: Unhandled exceptions in background task callbacks will no longer take down the server
  • Change: Changed the heartbeat handler to use GET instead of POST (workaround for problems).
  • Change: Removed AutoLauncher.


1 July 2011 - r702

  • Workaround for heartbeat changes.


18 June 2011 - r668

  • Feature: Added <RestartInterval> config key (in seconds). It should help people who are suffering from Mono memory leaks. This setting can only currently be modified by editing config.xml
  • Fix: Fixed /wload and /gen resetting the world's hidden status.
  • Fix: Fixed "Apply" button not getting enabled in ConfigTool when world list is changed.
  • Fix: Fixed /cw reporting incorrect volume (fixes #3308137).
  • Fix: Added a confirmation when /wrename will result in overwriting a map file, and fixed a related crash (fixes #3311994).
  • Fix: Fixed FormatException in error handling code in World.AcceptPlayer
  • Fix: Fixed /info not showing formatted names for players who appear offline.
  • Fix: Fixed several issues with renaming worlds from ConfigTool.
  • Fix: Fixed /restart breaking under Mono if path contains spaces.
  • Fix: Fixed /staff, /me, and /roll commands not requiring the Chat permission.
  • Fix: Fixed "Use IRC colors" checkbox remaining disabled in ConfigTool.
  • Change: Allowed all printable ASCII characters in chat except '&'.
  • Change: Heartbeat tweaks to prevent "Bad heartbeat" from popping up.
  • Optimization: ConfigTool starts up faster, and uses much less memory.


24 May 2011 - r614

  • Fix: Fixed a regression in 0.530 that erased some strings in PlayerInfo and IPBanInfo objects, such as ban reasons.
  • Change: Increased heartbeat interval to 27.5 seconds.
  • Change: Reduced jitter of player movement.


23 May 2011 - r611

  • Feature: Added "/worlds loaded" command.
  • Fix: Fixed a bug that prevented worlds from accepting any block changes after a map change (/wload or /gen)
  • Fix: Fixed "Player _____ joined main." displaying twice when players connect.
  • Change: Added /colours as an alias to /colors
  • Change: Adjusted /dumpstats security checks, and made it require EditPlayerDB permission (instead of Import).


20 May 2011 - r603

  • Feature: /SInfo now shows bandwidth use, fCraft version, and .NET/Mono version.
  • Feature: Added ability to use coordinates with mark (e.g. "/Mark 0 0 0").
  • Fix: Fixed non-default rank settings not saving properly from ConfigTool.
  • Fix: Fixed a serialization bug in IPBanList that happened if a ban reason was not given, or if an IP address was not associated with any player.
  • Fix: Fixed a few minor bugs in /WMain.
  • Change: Allowed the caret (^) in chat messages.
  • Change: Reduced movement lag.
  • Change: /version command has been removed due to redundancy with /sinfo.
  • Change: Detailed reasons of player disconnects are now logged better.
  • Change: Increased heartbeat interval slightly.
  • API: Added new events: Scheduler.TaskAdded, Scheduler.TaskExecuting, Scheduler.TaskExecuted, and Scheduler.TaskRemoved. These events are only available when fCraft.dll is built with DEBUG_SCHEDULER flag because of their performance impact.
  • Optimization: Removed the scheduler overhead from having unloaded worlds.
  • Optimization: Sped up MapGenerator by about 10%.


7 May 2011 - r583

  • Feature: New adaptive bandwidth-saving mechanism for updating player positions, controlled by the new BandwidthUseMode config key.
  • Feature: Added OptiCraft blocktype names and blocks' numeric IDs as aliases.
  • Fix: Fixed block bindings not being applied to drawing commands.
  • Fix: Fixed fCraft getting confused if worlds.xml contains duplicates.
  • Fix: Fixed "/" (repeat last command) not rewinding the command, which caused some issues with command arguments.
  • Fix: Fixed "Max connections per IP" setting not saving in ConfigTool.
  • Fix: Fixed AnnounceRankChangeReasons checkbox being erroneously tied to RequireRankChangeReasons key in ConfigTool.
  • Fix: Added some missing tooltips to ConfigTool.
  • Fix: Marked IP range as LAN.
  • Fix: Fixed an issue with balanced name verification (thanks wootalyzer).
  • Fix: Fixed server announcing hidden players' departure (#3292633). Thanks to Hellenion.
  • Fix: Fixed /bring not checking per-rank permissions (#3292303). Thanks to Denny
  • Fix: Fixed some header bugs in the D3 map converter.
  • Fix: Fixed /wload crashing instead of printing an error message under Mono if the path was malformed.
  • Fix: Fixed /banip not recognizing invalid IPs (e.g. broadcast).
  • Fix: Fixed antispam resetting players' mute time.
  • Fix: Fixed Scheduler being able to add tasks after the shutdown process started.
  • Fix: Reduced problems associated with players trying to connect while the server is shutting down.
  • Fix: Added autorank.xml to the list of protected files.
  • Fix: Fixed a crash in backup system that happened if two backups ran simultaneously and the total size or number of backup files was limited.
  • Fix: Fixed a case where duplicate worlds could be created.
  • Change: When players rejoin a world (e.g. /wflush or /wload), "joined world" message is no longer shown.
  • Change: /mute no longer allows shortening players' mute time, only to extend it.
  • Change: Allowed player names with periods.
  • Change: Removed SaveOnShutdown config key, tweaked range checks on some keys, grouped key tags into section tags.
  • Change: When saving config.xml, keys with default values are now commented out.
  • API: New events! PlayerHideChanged, PlayerInfoCreating, PlayerInfoCreated, PlayerInfoRankChanging, and PlayerInfoRankChanged.
  • API: Server.StartServer() now throws specific exceptions on failure, instead of returning false.
  • API: Removed some obsolete Server events.
  • API: Switched to 100% Utc dates/times internally. PlayerDB now uses UTC Unix timestamps to serialize all dates/times.
  • Optimization: Sped up map generation.
  • Optimization: Reduced PlayerDB saving interval, reduced PlayerDB filesize, reduced CPU and memory use of PlayerDB saving, reduced memory footprint of loaded PlayerDB, improved IPAddress lookup performance in PlayerDB.


16 April 2011 - r546

  • Feature: Added more functionality to hollow ellipsoid and sphere, thanks to Redshift. Now it is possible to define outer/inner blocktypes.
  • Feature: Added OptiCraft map format support, courtesy of LgZ-optical
  • Fix: Fixed a serious error that caused a crash when main world became full. This bug affected 0.520 and 0.521.
  • Fix: Fixed AutoLauncher not working under Mono (thanks to ven000m for spotting).
  • Fix: Fixed "Add World" dialog crashing if closed while generating a world.
  • Fix: Fixed /restart using ShutdownReason.ShuttingDown (instead of ShutdownReason.Restarting)
  • Fix: Fixed a crash in ConfigTool if MaxPlayers was set to be less than MaxPlayersPerWorld.
  • Fix: When loading old configs (pre-0.520), MaxPlayersPerWorld is automatically set to match MaxPlayers, to avoid unexpected side effects.
  • API: Added WorldCreating and WorldCreated events.
  • API: Moved world-related commands from Server to a new class, WorldManager.
  • API: Renamed RankList to RankManager, and CommandList to CommandManager, for consistency.


12 April 2011 - r534

  • Feature: Added a /Clear command, to clear in-game chat. Also works from fCraftConsole and fCraftUI.
  • Fix: Added missing chat commands.
  • Fix: Cosmetic fixes in /ZRemove.


12 April 2011 - r532

  • Feature: Removed the server-wide 128 player limit. Now the limit is per-world.
  • Feature: You can now repeat the last command by typing "/"
  • Feature: Added a way to use color codes in chat (with % instead of &), a UseColorCodes permission, and a /colors command.
  • Feature: Added support for multi-line messages or commands. Add " /" to the end of a line to continue typing it.
  • Feature: Added "/commands", to replace "/help commands". It allows filtering commands by rank, category, permissions, etc. Aliases: /cmdlist, /cmds
  • Feature: New permissions: ViewPlayerIPs, BringAll
  • Feature: New config switches: AnnounceRankChangeReasons and RequireKickReason.
  • Feature: Replaced LimitOneConnectionPerIP config key (boolean) with a more flexible MaxConnectionsPerIP (int).
  • Feature: Added /bringall command, for moving everyone (or only certain ranks) from your world (or optionally all worlds, or a list of other worlds) to your location.
  • Feature: /bring can be limited per-rank
  • Feature: When file is not found on case-sensitive filesystems, fCraft tries to syggest similar filenames.
  • Feature: Added new constants to use in greeting.txt: {TIME}, {PLAYER_NAME}, {WORLD}, {PLAYERS}, {WORLDS}, {MOTD}
  • Feature: Improved compatibility with SurvivalTest clients.
  • Fix: Fixed /banip not kicking other players from the same IP (besides the named player)
  • Fix: Added missing blocktype validation to MapFCMv2, MapFCMv3, MapMyne, and MapNBT.
  • Fix: Fixed a rare shutdown crash in fCraftUI.
  • Fix: Improved the way PlayerDB.Load handles errors in individual records. A single corrupted entry will no longer prevent the rest from loading.
  • Fix: Fixed fCraftUI abruptly quitting on crash / failure to start, instead of showing the error message. Use "--exitoncrash" command-line switch to reproduce old behavior.
  • Fix: Fixed ConfigTool's World tab not prompting to delete map files when deleting worlds.
  • Fix: Fixed a bug in MCSharp importer (#3281305)
  • Fix: Fixed a list of permissions in /rinfo not being sorted.
  • Fix: Fixed /mute rank limit dropdown sometimes getting out of sync.
  • Fix: Fixed IRC bot redundantly announcing kicks when someone has been banned.
  • Fix: Fixed a bug where fCraft would fail to start if PlayerDB.txt was truncated/empty.
  • Change: Moved "IP" config key from General to Advanced.
  • Change: Added /spin as an alias to /rotate (for MCLawl users)
  • API: New events: PlayerClicking, PlayerClicked, PlayerPlacingBlock, PlayerPlacedBlock, PlayerListChanged, PlayerBeingKicked, PlayerKicked
  • Optimization: Reduced CPU use of draw commands by ~30%. Sped up PlayerDB loading by ~8%, and reduced memory use when saving. Also reduced PlayerDB filesize by about 15%


2 April 2011 - r508

  • Feature: /zones can now be used from console, and can be used on any world (active or inactive).
  • Feature: Improved D3 map importer.
  • Fix: Added missing filename sanity/safety checks to /dumpstats (#3267362, thanks to Hellenion)
  • Fix: Fixed mixed up messages shown in /waccess and /wbuild (#3179189)
  • Fix: Fixed crash reports sometimes failing to submit.
  • Fix: Fixed /dumpstats crashing if a rank had 0 players.
  • Fix: Made Mono version detection less crashy (#3267476, thanks to Hellenion again)
  • Fix: Fixed MapUtility.LoadHeader terminating early, before going through all fallback converters.
  • Fix: Fixed ConfigTool tab order.
  • Fix: Fixed fCraft reporting inaccurate CPU usage figures.
  • Fix: Fixed a NullReferenceException in /rank if an invalid player name was given.
  • Fix: Fixed fCraft project not building under Windows if path contains spaces.
  • Change: Added "/serverreport" as an alias for "/sinfo"
  • Change: Improved the way fCraft handles and reports map loading errors.
  • API Change: Moved all filename constants (e.g. "PlayerDB.txt") to Paths class.


31 March 2011 - r497

  • Feature: Further improvements to Mono support. fCraft will now utilize mono-sgen whenever possible.
  • Fix: Fixed fCraftUI ignoring command-line arguments.
  • Fix: Fixed broken /paste and /pastenot volume checks.
  • Fix: Fixed crash reports failing to submit.
  • Fix: Fixed a timezone-related bug that messed up players' "total time on server" stat.
  • Change: Added a warning if running on old versions of Mono (2.6 or lower).


29 March 2011 - r489

  • Fix: Fixed unnecessary GDI+ dependence in fCraftConsole under Mono
  • Fix: Fixed EnumKeyAttribute not taking blank values (as in case of ProcessPriority config key).


29 March 2011 - r488

  • Feature: The fCraft updater has been rewritten and expanded. It now works under all OSes, and provides more features.
  • Feature: fCraft now handles differences between case-sensitive and case-insensitive filesystems much better. /wrename and /wload are also aware of the filesystem.
  • Feature: fCraft now checks presence, filename capitalization, and integrity of all map files on the world list at startup.
  • Feature: New ConfigTool settings for updater, checkbox for showing "player connected/left" messages, and "/mute" permission settings.
  • Feature: Added "/credits" command to ConfigUI.
  • Feature: Implemented "--norestart" and "--exitoncrash" command-line switches for fCraft.
  • Feature: fCraft event system is being rewritten with modding support in mind.
  • Feature: Improved MCSharp/MCZall/MCLawl map support.
  • Fix: Software errors that happen while parsing player and console commands will no longer cause disconnects/crashes.
  • Fix: IPBanList will attempt to recover records lost due to a recent regression in 0.505.
  • Fix: Fixed /wrename errors in cases where names differ only in capitalization.
  • Fix: Fixed "Copy Existing World" showing the current world on the list in AddWorldPopup.
  • Fix: Fixed "Chat" tab preview not updating when settings are reset.
  • Fix: Fixed per-world whitelist/blacklist not saving when worlds are edited with AddWorldPopup.
  • Fix: Fixed non-verified connections that get kicked from affecting that name's PlayerInfo.
  • Fix: Server.GenerateSalt() now uses a cryptographically secure PRNG.
  • Fix: Fixed verification problems on servers with HeartbeatEnabled=false.
  • Fix: Fixed a wrong message being shown by /rank if the target is already same or higher/lower rank.
  • Fix: Fixed /winfo showing incorrect information for last lock/unlock event.
  • Fix: Fixed tabbing order on ConfigUI.
  • Fix: Improved the way Server.InitLibrary and Logger.Log errors are handled.
  • Fix: Added missing validation checks to LoadHeader in several map converters.
  • Fix: Fixed players being able to complete a draw command or /zadd, if they were demoted before clicking for the second time.
  • Fix: Added missing /paste and /pastenot volume checks.
  • Fix: Fixed a bug in /zinfo that showed incorrect creation/editing times.
  • Fix: Better error messages for unrecognized block names in command parameters.
  • Fix: /restart now works from ConfigUI under Mono (but still broken in fCraftConsole).
  • Fix: Fixed handling of command-line arguments surrounded with quotes.
  • Fix: Fixed a bug at ConfigTool.ConfigUI.xAllowSecurityCircumvention_CheckedChanged (#3181907, thanks to clhdrums87).
  • Fix: Fixed /winfo counting hidden players (#3237877, thanks to Hellenion).
  • Fix: Fixed MCSharp map exporter mixing up map dimensions (#3159501, thanks to dogwatch).
  • Change: Improved the way fCraft project is built. Now all binaries are copied to /trunk/bin/Release or /trunk/bin/Debug.
  • Change: Improved error tolerance of Scheduler.EndShutdown().
  • Change: Expanded Logger.CheckForCommonErrors().
  • Change: Renamed config keys (old ones can still be loaded): IRCBot to IRCBotEnabled, AutomaticUpdates to UpdaterMode.
  • Change: Added /wadd as an alias for /wload.
  • Change: Renamed Mcc namespace to fCraft.MapConversion.
  • Change: Decreased timeout for fCraft update check.
  • Change: Added a confirmation prompt to /rank when adding an unrecognized player name to the database.
  • Optimization: Sped up heartbeat sending and world-related operations, increased world saving interval to 90 seconds, reduced per-player idle CPU usage, halved CPU usage of draw commands.


11 February 2011 - r427

  • Feature: Added hollow ellipsoid drawing (/eh) and hollow sphere drawing (/sph), contributed by Conrad "Redshift" Morgan.
  • Fix: Fixed a regression in 0.503 that caused some IP ban records to be lost. I am terribly sorry!
  • Fix: Fixed a path-related error in Map.SaveBackup
  • Fix: Fixed a possible disconnect in Player.CheckBlockSpam is antigrief was not configured properly.
  • Fix: Fixed a bug in ConfigTool.SaveWorldList.
  • Fix: Fixed "Limit the number of blocks that can be undone" checkbox misbehaving (thanks to ven000m for bug report).
  • Change: By popular demand /sphere2 is now the default behavior of /sphere.
  • Change: Removed "oldSalt" check for name verification, to avoid having the server write to config.xml unnecessarily.
  • Change: Removed ".backup" file creation, by popular demand. It was kinda useless.


8 February 2011 - r422

  • Feature: All draw commands now inform player if any blocks were skipped due to local permission issues (e.g. zones).
  • Fix: Fixed a regression that caused backups to be saved in the wrong path. Backups were being saved to ./backups/ instead of ./maps/backups/
  • Fix: Fixed a permission issue in /replace and /replacenot.
  • Fix: Fixed /info not displaying a list of players from same IP.
  • Fix: Addressed a security issue with salt generation.


3 February 2011 - r419

  • Fixed a crash bug related to SecurityController.MinRank


3 February 2011 - r418

  • Feature: Added /deafen command. It temporarily blocks all incoming messages (makes you go "deaf"), to allow taking screenshots, recording videos, or just playing without the wall of text.
  • Feature: Added ShowBannedConnectionMessages config key (default: true). When disabled, no "banned player tried to log in" messages are shown.
  • Fix: Fixed PlayerInfo.frozenOn not being set.
  • Fix: Fixed kick messages for players affected by /banall
  • Fix: Fixed /unbanall reason not being shown.
  • Fix: /where now shows what world you are on.
  • Fix: Fixed a couple minor bugs in /waccess and /wbuild.
  • Fix: Fixed a NullReferenceException in SecurityController constructor.
  • Fix: Made several tweaks to improve the first-run experience.


31 January 2011 - r411

  • Fix: Adjusted for yet another change in the way replies to heartbeats (should fix all heartbeat issues for now).
  • Fix: Added a check to /zremove to prevent players from deleting zones to gain access to areas from which they're barred.
  • Fix: Fixed being able to use /me or /staff to write empty messages.
  • Fix: Fixed frozen players not getting defrosted when kicked.
  • Fix: Formatting fixes in "___ was previously frozen" message
  • Fix: Fixed a mini-bug in Map.ValidateHeader()
  • Change: Renamed /wremove to /wunload for consistency. "/wremove" is still usable as an alias.


30 January 2011 - r408

  • Feature: Added /sphere and /sphere2, based on code contributed by SystemX17.
  • Feature: Added new config setting: ShowConnectedMessages (default: true)
  • Feature: Added a notification for players who logged in frozen.
  • Fix: Fixed frozen players twitching.
  • Fix: Fixed IRC bot not stripping color codes in messages relayed from IRC to the game.
  • Fix: Fixed lastSeen and lastLoginDate not being set for first-time players who failed to log in (e.g. IP-banned).
  • Fix: Fixed /bring not working properly on frozen players.
  • Fix: Fixed a case where it was possible to add access restrictions to main map.
  • Fix: Fixed per-world whitelists/blacklists being lost when editing worlds.xml via ConfigTool.
  • Fix: Fixed AutoRankAll showing wrong number of players promoted/demoted (just a formatting bug, no promotions were affected)


25 January 2011 - r399

  • Commands: Added /line drawing command, kindly contributed by SystemX17
  • Commands: Added /restart command, to restart the server remotely (NOTE: does not work for fCraftWinService yet)
  • Commands: Added /unmute command (same as "/mute name 0")
  • Commands: Added an option to silently hide (no disconnect/connect message).
  • Commands: Added /ignore and /unignore commands to block chat from another player (for the duration of your visit).
  • Commands: /whide and /wunhide commands added to hide/unhide worlds from the list.
  • Commands: /worlds now takes an optional param: "/worlds all" lists visible+hidden worlds, and "/worlds hidden" lists hidden worlds only.
  • Commands: List of player names from the same IP is now shown in /info.
  • Commands: /help now shows what rank you need to be to use a command (for most commands).
  • Commands: /bring now works on frozen players.
  • Commands: /bring now takes an optional second name/parameter, to teleport someone to someone
  • Commands: /info now shows whether a player is hidden (if the command caller has permission to see).
  • Commands: Fixed a case where teleporting to a player who is currently changing worlds brings one to a wrong location.
  • Commands: Fixed bindings (/water, /lava, /solid, and /bind) not being applied to draw commands.
  • Commands: /wsave and /gen can now create directories if needed.
  • Commands: Fixed a bug in /roll
  • Commands: Sped up /paste, /pastenot, /replace, and /replacenot slightly.
  • ConfigTool: New "Chat" tab for controlling appearance and content of in-game chat.
  • ConfigTool: Added ability to customize MeColor (for /me messages, default: purple) and WarningColor (for major errors/warnings, default: red) in config.
  • ConfigTool: AddWorldPopup can now show detailed info for maps of all supported formats.
  • ConfigTool: Improved tooltips for several items in ConfigUI.
  • FrontEnd: Uncaught exceptions that happen while executing commands from fCraftUI console are now handled by the crash reporter (instead of actually crashing).
  • FrontEnd: Added /clear command for fCraftUI and fCraftConsole - clears log screen.
  • FrontEnd: The URL is no longer highlighted after first heartbeat, to avoid stealing focus from console.
  • Generator: Fixed "flatgrass" template
  • Generator: Fixed alphabetical order in the list of templates
  • Generator: MapGenerator now embeds generation parameters into the map file metadata
  • Generator: Fixed several template loading bugs.
  • Generator: Optimized AddBeaches to be about 2x faster
  • Generator: Added a missing dimension check to /gen
  • IRC: Messages relayed from game to IRC now have color codes preserved.
  • IRC: Kicks, Bans, unbans, promotions, and demotions can now be relayed to IRC.
  • IRC: IRC bot now relays /say messages, and /me messages (both /me on IRC and /me on the server).
  • IRC: IRC Error handling is greatly improved.
  • IRC: (Threaded) If one of the bots loses connection, one of the other bots take over parsing input.
  • IRC: Increased IRC reconnect delay to 15 seconds.
  • Maps: Switched to a new file format (FCMv3) that allows for future additions like block tracking and physics.
  • Maps: Much of MCC (map conversion) API was rewritten for better consistency and performance.
  • Maps: Improved support for loading indev (pre-infinite) maps, including Omen-generated maps.
  • Maps: Improved resilience for loading maps with unknown blocktypes. Instead of failing, it just replaces any unknown blocks with air.
  • Maps: Added consistent header validation to all map format loaders.
  • Maps: Fixed maps not autosaving when zones are added or removed.
  • Maps: Zone definitions are now serialized to XML. Zones saved with this revision of fCraft will no longer be readable by older version of fCraft.
  • Maps: Fixed a bug when loading JTE's format maps.
  • Maps: Fixed format of backup filenames.
  • PlayerDB: Added new fields: bannedUntil, frozenOn, frozenBy, mutedUntil, mutedBy, IRCPassword, online, leaveReason
  • PlayerDB: Fixed PlayerInfo.ID not being assigned for new players until sever restart / DB reload.
  • PlayerDB: Fixed off-by-one error with PlayerInfo.timesVisited
  • PlayerDB: Fixed /me, /say, rank chat, and /staff not counting towards PlayerInfo.linesWritten
  • PlayerDB: Made PlayerDB more resilient to errors. Reduced filesize slightly by omitting default values for more date fields, and removing milliseconds from "totalTime"
  • PlayerDB: Improved forwards compatibility of PlayerDB by removing maximum-field-count check.
  • Security: Worlds can now have player whitelists and blacklists (just like zones) for access and build permissions.
  • Security: Added a security check to /wsave, /wload, and /gen to prevent reading or overwriting files outside the map folder.
  • Security: Added a per-rank security option to prevent players from whitelisting themselves, removing themselves from blacklists, or lowering their rank's restrictions on worlds and zones.
  • Security: /mute and /freeze are now persistent even if the player reconnects.
  • Security: Relaxed SetTile packet checks. Players will no longer be kicked due to Minecraft client bugs.
  • Security: Fixed an exploit that allowed changing steps to doublesteps even inside zoned areas.
  • Security: Improved consistency of permission dependencies.
  • Security: Fixed a security exploit in /wmain that allowed players with ManageWorlds permission to gain access to restricted worlds.
  • Security: Fixed a bug that prevented banning players who were not yet in PlayerDB.
  • Security: Added an option to only allow paid players (PaidPlayersOnly)
  • Stability: Made crash reporting more reliable. A failed crash report will no longer prevent error message from being logged and displayed.
  • Stability: Fixed a crash in AddWorldPopup if dialog is closed while a map is still loading.
  • Stability: To improve compatibility with some bots, removed "almost there..." message on the loading screen
  • Stability: Disabled error reporting of common non-fCraft-related errors (like wrong runtime versions, or wrong Mono permissions).
  • Stability: Added "" and "UnauthorizedAccessException" to Logger.CheckForCommonErrors, and made "Could not load file or assembly" check locale-independent.
  • Stability: A backup file is now created whenever PlayerDB, IP ban list, config, or world list are saved (e.g. PlayerDB.txt.backup)
  • Stability: Crash reporter now sends last 25 lines of the log.
  • Stability: Added a fallback overload for Player.Message() that bypasses string format, to make the whole thing less prone to format errors.
  • System: fCraft now takes command-line arguments (at startup) to override the following:
    • working directory (--path=/your/path/here)
    • log directory (--logpath=/your/path/here)
    • map directory (--logpath=/your/path/here) - also overridable in a more user-friendly way via ConfigTool (MapPath key)
    • config file location (--config=/your/path/and/filename.xml)
  • System: Added an option to change the name of Console pseudoplayer in the config.
  • System: Player.GetClassyName() and PlayerInfo.GetClassyName() now add an asterisk after banned players' names
  • System: Fixed hidden players remaining hidden in some cases.
  • System: Fixed PacketWriter.MakeWrappedMessage ignoring uppercase hex colorcodes
  • System: Implemented NoPartialPositionUpdates and RelayAllUpdates config keys.
  • System: Several little glitches and inefficiencies fixed in movement handling code.
  • System: Fixed "player connected" and other messages showing up too early in-game (before map loaded).
  • System: Fixed kick message for players affected by /banall
  • System: Added HeartbeatEnabled config key (default: true)
  • System: Fixed a case where heartbeat could be sent from a different IP than the listening port on systems with multiple NICs/IPs and no configured static IP.
  • System: Increased the write buffer for writing out PlayerDB, reducing I/O time by ~20% on .NET, and ~35% on Mono
  • System: New Scheduler API.
  • System: Modified /wload to avoid loading the map twice in case confirmation is needed.
  • System: Changes to AutoRankEnabled will now be applied when /reloadconfig is called.
  • System: Fixed unnecessary confirmation being asked when world name matches file name in /wload
  • System: Eliminated the heartbeat thread by switching to async i/o.
  • System: Improved startup and shutdown speed.
  • System: Added a "how to promote yourself" message for fresh installations of fCraft.
  • System: Fixed Server.OnPlayerDisconnected event firing for unregistered sessions.
  • System: Made Color.Parse() and Color.GetName() translate fCraft-specific color assignments (e.g "&S" for "System")
  • System: Added better detection for SMP/Alpha clients trying to connect.
  • System: Sped up AutoRankAll



6 November 2010 - r311

  • Feature: Added an option to disable name verification for players connecting from LAN.
  • Feature: Added 'flat' template to MapGenerator, allowing to make flat maps with any theme.
  • Feature: Added 'grass' pseudotheme to /gen command, which is basically the 'Forest' theme with trees disabled.
  • Fix: Fixed /wflush leaving ghosts/clones behind.
  • Fix: Fixed muted players being able to use /say and /staff
  • Fix: Fixed /baninfo ignoring permission checks.
  • Fix: Fixed "draw limit" checkbox getting disabled in ConfigTool if a player had 'CopyAndPaste' permission but no 'Draw' permission.
  • Fix: Fixed several off-by-1 errors involving random number generation, notably in MapGenerator and Server.GenerateSalt()
  • Fix: Fixed potential crash in MapGenerator.SealLiquids
  • Fix: Fixed a potential crash in Map.SaveBackup() if the map filename contained brackets.
  • Fix: Fixed a forced disconnect when trying to feed /gen a theme or template with brackets in the name.


4 November 2010 - r308

  • Change: Disabled zlib support due to more potential memory leaks. fffuuuuu....
  • Fix: Fixed Island, Bay, and Ice templates broken by the last patch.
  • Fix: MapGeneratorArgs: snowTransition was interpreted as absolute (instead of relative) altitude, and marbledHeightmap incorrectly defaulted to 'true'.
  • Change: Updated readme and changelog.


4 November 2010 - r306

  • Feature: Added accurate progress reporting from MapGenerator. Coming soon: cancellation.
  • Feature: New MapGenerator options: BeachHeight, CliffSmoothing, LandSlope, UnderwaterSlope, MaxHeightVariation, MaxDepthVariation.
  • Feature: Added UI controls for snow/cliff/beach settings to AddWorldPopup.
  • Feature: Added a list of popular IRC networks to ConfigTool.
  • Change: Improved PlayerDB lookup performance by reducing locking.
  • Fix: Fixed MapGenerator calculating slope incorrectly at the water boundary.
  • Fix: Fixed "Add Ore" requiring "Add Caves" in MapGenerator.
  • Fix: Fixed water/lava caves not sealing liquids properly.
  • Change: Set MapGenerator to default to 256x256x96
  • Change: AddWorldPopup Generator tab layout overhaul
  • Change: Organized MapGeneratorArgs and added serialization/deserialization for all the new options.


3 November 2010 - r301

  • Fix: Fixed File.Replace() failing if fCraft was set up on a partition/volume other than the one where temp folder is.
  • Fix: Added missing tooltip for "Edit Greeting"
  • Fix: Fixed /sinfo including hidden players in the player count.


2 November 2010 - r300

  • Feature: Added a way to edit the greeting message, by editing "greeting.txt"
  • Feature: When a player gets banned, any previously-banned accounts from same IP are listed.
  • Fix: Fixed renaming worlds from ConfigTool's "worlds" tab not always working.
  • Fix: Fixed several filesystem-related errors on non-Windows systems by using Path.Combine() instead of string concatenation.
  • Fix: Possible workaround for missing heartbeats.
  • Fix: Fixed detached "default build rank" controls in ConfigTools.
  • Fix: Fixed overwrite confirmation popping up for /wload when loading map into an unloaded world with the same name.
  • Fix: Fixed a case where Forester could get into an infinite loop when there's not enough room to place requested number of trees.


31 October 2010 - r297

  • Feature: New map generator features:
    • Adjustable water level.
    • Realistic trees (powered by Forester)
    • Snow on mountaintops
    • Realistic cliffs
    • Beaches
    • New template (peninsula) and theme (swamp).
    • Option to delay heightmap bias until after marbling/inversion.
  • Feature: Added a way to load .mine maps.
  • Feature: Added confirmation for potentially destructive commands: /importranks, /importbans, /massrank, /wload overwrites, /gen overwrites, /wsave overwrites, /zremove.
  • Feature: Added /staff chat and ReadStaffChat permission.
  • Feature: Added wireframe cuboid (/cw)
  • Feature: Added an optional second param for /ch (cuboid hollow) that specifies the blocktype of the "filling".
  • Feature: Added a way to specify default build permission for new worlds.
  • Fix: Fixed /info, /baninfo, and /banip not handling players whose name contain only digits.
  • Fix: Fixed DoChangeRank mixing up RankChangeType.
  • Fix: Added missing fields to MapGeneratorArgs serializer.
  • Fix: Fixed per-rank draw limits not being calculated correctly in some cases.
  • Fix: Replaced File.Delete/File.Move calls with a more reliable File.Replace call. This should slightly improve reliability of map/playerdb.txt/ipbans.txt/worlds.xml saving.
  • Fix: Fixed a little ConfigTool bug that did not properly reset PatrolledRank after a rank deletion.
  • Fix: Fixed terminal colors not resetting in fCraftConsole after a fatal crash under Mono.
  • Fix: Fixed detached "Play" button in fCraftUI.
  • Fix: Added some basic error reporting to fCraftWinService.
  • Change: Tweaked AddWorldPopup layout to accommodate more options.


27 October 2010 - r290

  • Feature: /info now supports autocompletion, wildcards, and IP search.
  • Feature: Experimental service wrapper for fCraft.
  • Feature: Added more editable properties to /setinfo: RankChangeType, BanReason, UnbanReason, RankChangeReason, LastKickReason
  • Feature: Various improvements to /info, including hide-aware "online" indicator.
  • Feature: Made Player.NoAccessMessage() print the minimum required rank, instead of just permission name(s).
  • Feature: Added wootalyzer's chunk rendering code to IsoCat.
  • Fix: Fixed ConfigTool not taking advantage of ZLibStream
  • Fix: Fixed a very improbable case of a thread getting spinlocked when calling IRC.Send() is preemptied, and if there are at least 2 IRC threads.
  • Fix: Fixed kick packets occasionally not being delivered due to a missing Flush() - thanks to wootalyzer for catching.
  • Fix: Excluded banned and inactive players from DumpStats
  • Fix: Fixed PlayerDB.Save() not escaping LastKickReason
  • Fix: Cleaned up extra messages sent by /unhide.
  • Fix: Fixed LastSeen not updating on-login (only on-logout).
  • Fix: Improved the way fCraft checks for ghost/leftover sessions. Thanks to wootalyzer.
  • Fix: If a player's name starts with a number, and you try to /tp to a coordinate that starts with the same number, you are no longer teleported to that player instead.
  • Fix: Fixed hidden players being detectable by checking LastSeen in /info.
  • Fix: To avoid performance degradation, GC calls have been centralized, delayed, limited to 1/minute, and moved to the tasks thread.
  • Fix: Added delay between recurring calls to PlayerDB.Save, AutoRankAll, and DoGC - to balance load.
  • Fix: Fixed rankChangeType not being updated.
  • Fix: Fixed some typos reported by tvc.
  • Change: Added "/uf" as an alias for "/unfreeze", by popular demand.
  • Change: Modified PlayerDB not to use ReaderWriterLockSlim, to avoid Mono issues with recursion.
  • Change: Renamed /editplayerinfo to /setinfo
  • Change: Made enum values in AutoRank (CriterionType, ConditionField, ComparisonOperation, ConditionScopeType, RankChangeType) case-insensitive.
  • Change: Added a reference to /baninfo in /info
  • Change: Made DetectMovementPacketSpam warn players instead of kicking.


19 October 2010 - r280

  • Feature: Added EditPlayerDB permission. This permission affects the upcoming AutoRank commands, /editplayerinfo, and ability to promote/demote/ban unrecognized players.
  • Feature: When you kick a player, you are now shown the number of kicks they already have.
  • Feature: More stats are now logged! RankType, TimeSinceLastKick, LastSeen, BlocksDrawn, LastKickBy, LastKickReason.
  • Feature: Added "MaxUndo" config key for changing the default undo limit of 2,000,000 blocks per player.
  • Feature: /info command is augmented with new stats (if available).
  • Fix: Fixed ellipsoid command calculating volume incorrectly for draw limit checks.
  • Fix: Fixed overflowing color code in "Player logged in from an IP previously used by banned players" message.
  • Fix: Fixed PM recipient's name not getting logged properly.
  • Fix: Previously-unseen players no longer have their FirstLoginDate, LastLoginDate, or TimesVisited set.
  • Fix: /importranks now works correctly on players who are online at the time of import.
  • Change: Added block aliases by popular demand: "bedrock" as an alias for admincrete, "cotton" as alias for "white", and "aire" as alias for "air"
  • Change: PlayerDB.txt format changes:
    • MaxFieldCount raised to 36
    • New fields added: UID (Int32), RankChangeType (enum, serialized as Int32), LastKickDate (DateTime), LastSeen (DateTime), BlocksDrawn (Int64), LastKickBy (string), LastKickReason (string).
    • RankChangeBy, BannedBy, UnbannedBy, BanReason, UnbanReason, and RankChangeReason now default to empty string instead of "-" or null.
    • If LastIP==IPAddress.None, empty string is saved instead of "".
    • DateTime and TimeSpan format shortened to exclude microseconds. See PlayerDB.ToCompactString() for details.
  • Change: AutoRank improvements (disabled in stable builds):
    • Added /editplayerinfo command for easy editing of PlayerDB.
    • Made AutoRank check players in-login (to accelerate promotion).
    • AutoRank now runs on a scheduler.
    • Fixed ConditionPreviousRank crash for played with default rank.
    • Fixed banned players getting promoted by AutoRank.
    • Fixed several serialization/loading issues in AutoRank.
    • New fields added to ConditionIntRange: LastSeen, BlocksDrawn, TimeSinceRankChange, TimeSinceLastKick
    • ConditionRankStatus renamed to ConditionRankChangeType


17 October 2010 - r274

  • Feature: Added ability to run multiple parallel IRC bots, to help high-traffic servers deal with IRC lag. This also makes it possible to connect to multiple networks in the future.
  • Feature: Added new block aliases, by popular demand: "emerald"=teal, "fuchsia"=magenta, "cloth"=white, "lightgray"=gray, "lightgrey"=gray, "darkgray"=black, "darkgrey"=black, "brass"=gold
  • Fix: Temporarily disabled 64-bit zlib support while I track down memory leaks. Should fix OutOfMemoryException, I'm very sorry about overlooking that.
  • Fix: Fixed a bug in /info that displayed incorrect "total time on server".
  • Fix: Per-rank permission checks for /freeze now apply as intended
  • Fix: Fixed several improbable (but not impossible) threading deadlocks/crashes. Thanks to wootalyzer for catching these.
  • Change: Added IRCThreads config key (default: 1, allowed range: 1-3)


14 October 2010 - r264

  • Feature: Testing a new map compressor/decompressor: ZLibStream. It should provide 50-200% speed increase, smaller map sizes, lower bandwidth use, and faster map loading.
  • Fix: Fixed /shutdown not waiting the right amount and mixing up seconds/milliseconds.
  • Fix: Fixed "No world found with the name..." showing player's own name.
  • Fix: Added a fail-safe exception handler to Player.WaitForKick() - a temporary fix.
  • Change: Previous verification salt is now stored, to allow players to validate even right after the server restarts.
  • Change: Restructured SVN. Stable code is now always in /trunk/


12 October 2010 - r255

  • Feature: Added contextual help (tooltips) for all of ConfigTool. Help for "Add World" popup is coming in next version.
  • Feature: Added rank limits for Freeze permission
  • Fix: Fixed /mute being unusable from console.
  • Change: Removed ViewOthersInfo requirement from /sinfo
  • Change: Added ViewOthersInfo requirement to /where
  • Change: Improvements to IRC tab layout in ConfigTool.


11 October 2010 - r250

  • Quick fix for IRC Bot bug that made server unconnectable.


11 October 2010 - r249

  • Feature: Added optional "delay" parameter to /shutdown (default: 5)
  • Feature: World names can now be autocompleted for many commands (like /join and /lock)
  • Fix: Fixed /unhide failing to reveal the player in certain situations.
  • Fix: Fixed /setspawn being usable on players from other worlds.
  • Fix: Fixed player names appearing white for all players.
  • Fix: Fixed a recursion loop in NoWorldMessage()
  • Fix: Fixed help entries for /setspawn and /shutdown
  • Fix: Fixed potential crash in Server.Shutdown() if called after failed initialization/startup.
  • Fix: Fixed potential deadlock/freeze in fCraftUI on shutdown.
  • Change: Improved crash reporting for TargetInvokationException and TypeInitializerException errors.
  • Change: All assemblies are now once again x86/x86_64/IA64 compatible.
  • Change: Server.OnPlayerConnected event now supports cancellation.


10 October 2010 - r245

  • Feature: Added a way for IRC bot to use registered nicknames.
  • Feature: /banall-related kicks are now announced in chat.
  • Feature: /setspawn now actually changes player's spawn. Also, an optional PlayerName param allows temporarily changing other players' spawn point.
  • Feature: Several improvements to /info. Info now shows whether player's nick or IP was banned, and hides undefined information for players who haven't ever logged in.
  • Fix: Fixed crash in ConfigTool if announcements were disabled.
  • Fix: Fixed /banall not matching IPs properly, and not counting kicks towards PlayerInfo.
  • Fix: Fixed ConfigUI not shutting down properly if Server.Init() or Server.Start() failed.
  • Fix: Fixed Config.LoadLogOptions() always leaving Debug enabled.
  • Fix: Added Process.GetCurrentProcess().Refresh() to ServerInfo to improve accuracy of /sinfo stat reporting.
  • Fix: Improved /wsave and /wload path handling on non-Windows platforms.
  • Fix: Replaced some potentially unsafe string concatenation in Player.Message() with proper formatting.
  • Fix: Attempting a workaround for Mono memory leak in World.UnloadMap
  • Fix: Fixed ranks from pre-0.480 configs being loaded in wrong order. Sorry!
  • Change: Added a brief delay before reconnecting IRC bot after getting kicked from a channel.
  • Change: PlayerDB is now saved every 60 seconds (instead of every 30).
  • Change: Removed unused IRCBotQuitMsg config key, and added IRCRegisteredNick, IRCNickServ, and IRCNickServMessage keys.
  • Change: Added a popup with crash information to ConfigTool.
  • Change: Made announcements disabled by default.


8 October 2010 - r242

  • Feature: Myne/MyneCraft/Hyvebuild/iCraft maps can now be loaded from ConfigTool's "Add World" dialog.
  • Fix: Fixed incorrect range checks for AnnouncementInterval and SaveInterval config keys (thanks to Shcaap for reporting).
  • Fix: Fixed /hide showing a slightly different "player left" message compared to normal disconnect (thanks to Silverrock for reporting).
  • Change: Added MC#-style "/z" alias for cuboid, by popular demand.
  • Change: Hidden players can now receive PMs. The sender still gets the "No player found" message, but PMs are actually sent.


7 October 2010 - r241

  • Feature: Added new command aliases: "f" for "freeze", and "pat" for "patrol".
  • Fix: Fixed typos in mute-related messages.
  • Fix: Added missing triggers for OnPlayerListChanged event.
  • Fix: Fixed /reloadconfig not changing several variables (like colors).
  • Fix: Fixed antigrief defaulting to 35/5 (instead of unmetered).
  • Fix: Fixed heartbeat counting hidden players.
  • Fix: Fixed a rare ObjectDisposedException crash on shutdown when running fCraftUI.
  • Change: Added a more informative disconnect message to players connecting with Alpha client.
  • Change: Improved the way player disconnects are handled to be more reliable, and to drop disconnected players sooner.
  • Change: Improved the way PlayerDB saving is triggered. New schedule reduces overall disk use and reduces possible data loss in case of crashes.


2 October 2010 - r237

  • Fixed a bug in Rank deserializer that set antiGriefBlock=antiGriefSeconds (messing up antigrief permissions).
  • Fixed a few more references to "player class" terminology instead of "rank".


2 October 2010 - r236

  • Feature: Changed all "player classes" terminology to "ranks" for consistency with other servers. Several commands have been renamed to reflect that: /classes to /ranks, /user to /rank, /class to /rankinfo. All rank-related messages have also been updated.
  • Feature: Added "Raise"/"Lower" buttons to Ranks tab in ConfigTool, and made some other adjustments to the tab. You no longer need to assign a "rank" number to reorder ranks.
  • Fix: Fixed a crash in ConfigTool that happened if classes were added/renamed/deleted while PatrolledClass was not set.
  • Fix: Improved fCraftUI responsiveness on-startup.
  • Fix: Fixed several cases of Worlds tab going out-of-sync with the ranks tab.
  • Fix: /wremove now always saves the map before unloading.
  • Fix: Fixed Console being affected by chat spam/flood checks.
  • Fix: Fixed /zinfo not showing any separators between player names.
  • Fix: Fixed an extra comma appearing in the log entries for /replace and /replacenot calls.
  • Fix: Fixed Security and IRC tabs not being reset by "Reset All Defaults"
  • Fix: Fixed bugged error messages in /tp and /bring when world access permission check fails.
  • Fix: If any class limits were set to default/"(own class)", the setting is now preserved.
  • Fix: Fixed a bug that didn't reset Hide limit if it was set to a deleted rank.
  • Change: Removed legacy zone loading code for pre-0.420 maps (due to changes in rank definition format).
  • Change: Added a more informative disconnect message for players trying to connect with Minecraft Alpha clients.
  • Change: Improved rank-based coloring in world list to check both access and build permissions.
  • Change: Added "/fetch" as alias for /bring, and renamed "/save" to "/wsave".
  • Change: Deleted some obsolete/disabled controls from ConfigTool, removed PingInterval config key, and removed placeholder ControlPhysics and AddLandmarks permissions.
  • Change: Made several changes to improve disconnect detection:
    • Added occasional pings (every 5 seconds or so, depending on activity/inactivity).
    • Reduced socket send/receive timeout from 12 to 10 seconds.
    • Increased socket polling interval to improve performance.
  • Change: If a player tries to connect to a server twice, the FIRST connection is dropped instead of the LAST connection.
  • Refactor: Major changes were made to the way ranks are stored, and to RankList (formerly ClassList) API.
  • Optimization: Made IsoCat rendering faster, and made draw commands use less CPU.


17 September 2010 - r229

  • Feature: /ztest now distinguishes between being allowed/denied by rank/class vs by whitelist/blacklist.
  • Fix: Fixed being unable to change rank/class restrictions with /zedit
  • Fix: Fixed a bug that reported wrong average CPU usage
  • Fix: Fixed a crash on saving in ConfigTool, related to new PatrolledClass config key.


16 September 2010 - r228

  • Feature: "/mute" command to temporarily stop players from chatting. A new class permission (Mute) is added, granted to op+ by default.
  • Feature: "/shutdown" command to gracefully shutdown the server remotely. A new class permission (ShutdownServer) is added, granted to owner by default.
  • Feature: Added CPU usage information and loaded world count to /sinfo.
  • Fix: Added a way to edit "PatrolledClass" from ConfigTool.
  • Fix: Fixed zone whitelist/blacklist not updated correctly when edited.
  • Fix: Made teleporting to spawn (with /spawn or /tp, no parameters) accessible to all classes.
  • Fix: Adjusted for Notch's errors in handling player positions in teleport packets. Slightly improves accuracy of /tp, /bring, initial spawning, /patrol, frozen players, and speedhack detection.
  • Fix: Removed "/tp" bounds check when used with typed-in coordinates numbers.
  • Fix: Fixed an extremely unlikely case of PlayerDB/IPBanList overwriting on shutdown if server initialization failed.
  • Fix: Made "server shutting down" packets deliver more reliably (but still not guaranteed).
  • Fix: Fixed Console possibly not seeing hidden players.
  • Change: Added a basic file check to AutoLauncher
  • Change: Added error logging and crash reporting to Server.Shutdown
  • API: Renamed Server.ShutdownStart to Server.ShutdownBegin (for consistency).


15 September 2010 - r227

  • Feature: Added zone coordinates to /zinfo
  • Fix: Fixed cross-world /tp teleporting the wrong player.
  • Fix: Fixed odd date formatting in /zinfo


15 September 2010 - r226

  • Feature: Added /cut command
  • Feature: Added a new /patrol command. It allows cycling through low-ranked players on a map (with teleportation). The order is determined by how long it's been since someone checked on a player. A "Patrol" permission and "PatrolledClass" config key were added.
  • Feature: Added a shorthand notation to /zone for making personal zones: "/zone +PlayerName" creates a zone named after the player, with rank limit just above player's, and with player whitelisted.
  • Feature: Zone whitelist/blacklist now support player name autocompletion, and show rank colors.
  • Fix: Fixed server always binding to IPAddress.Any regardless of config settings.
  • Fix: TP/Bring no longer allow teleporting to hidden players on other worlds.
  • Fix: Server.GetPlayerList(string) now stops searching the list when it finds an exact match.
  • Fix: Fixed client-crash in /zedit when changing class.
  • Fix: Fixed possible corruption of edited zones upon map saving.
  • Fix: Fixed a range of improbable synchronization issues in the way Zone whitelist/blacklist is updated. As a fortunate side-effect, significantly reduced Zone.CanBuild() overhead.
  • Fix: Temporarily added mainThread.Abort() to Server.Shutdown() that's kicked in if mainThread does not stop within 5s of being notified of shutdown. I am investigating the real cause of the hang.
  • Fix: Fixed hidden players being revealed by promotion/demotion.
  • Change: Added less threatening error messages to IRC bot on network errors (SocketException and IOException).
  • Change: Disabled movement handling code while changing maps.
  • Refactor: Merged StandardCommands and ImportCommands into AdminCommands


14 September 2010 - r224

  • Feature: Added ability to specify the server's IP (to bind to) manually, for machines with multiple NICs. A new config key "IP" (default: is added. This will also fix problems with heartbeats being sent from a different IP.
  • Fix: Fixed a bug with player ghosts being left behind when switching worlds.
  • Fix: Fixed a case with kicked players' connections not being terminated at once (thanks to wootalyzer).
  • Fix: Fixed several bugs in hide/unhide functionality.
  • Fix: Fixed a rare crash in AddWorldPopup related to missing maps for existing worlds.
  • Fix: AddWorldPopup will no longer allow adding a world with a duplicate name.
  • Fix: Capped maximum players at the newly-discovered protocol limit of 128 (thanks to wootalyzer).
  • Change: ConfigTool fields now provide better feedback if validation fails.
  • Change: Changed heartbeat interval to 40 seconds (down from 50).
  • Change: Added a special error handler for rare/impossible case of mainWorld not being joinable.
  • Change: Made fatal error messages in fCraftConsole print in red. Better color support coming soon.


13 September 2010 - r223

  • Feature: Personal zones - per-zone whitelist and blacklist of individual players. The lists can now be defined with /zadd and edited with /zedit.
  • Feature: Added cave/ore generator from Omen (BETA).
  • Feature: Added "/maps" and "/levels" as aliases for "/worlds".
  • Feature: Added a way to limit the "Hide" permission per-class. Now you can specify whom can a class hide from.
  • Feature: Zones now remember date/time of creation and last edit, and names of original creator and last editor.
  • Fix: Unauthorized players can no longer PM or use bring/freeze/unfreeze/kick/tp/where on hidden players. They get the standard "player not found" message.
  • Fix: Fixed hidden players being counter towards /players total.
  • Fix: Fixed a potential crash in /wflush when using on unloaded maps.
  • Fix: Doing /banip or /banall on unrecognized players no longer ip-bans Old IPBanList entries relating to will be automatically discarded.
  • Fix: Fixed /replace command uses not being logged.
  • Fix: Fixed /worlds command not showing world count.
  • Fix: Fixed a client-disconnect when trying to unban a player who is not in the database.
  • Fix: Fixed "/join PlayerName" not translating to "/tp PlayerName" correctly.
  • Fix: Fixed a very unlikely client-disconnect in ChangeClass if the entered class name contains curved braces.
  • Change: Changed default name for "/flip" command to "/mirror", and fixed command's help. Either term still works.
  • Change: Added more block name aliases:
    • Air: delete, erase
    • Stone: cement, concrete
    • Grass: gras (common typo)
    • Obsidian: onyx
  • Change: Improved formatting of /players, /worlds, and draw command messages.


9 September 2010 - r218

  • Fix: Fixed special colors showing up even if ClassColorsInChat is disabled.
  • Fix: Fixed potential client-crash in World.SendToAll(), and related client-crash in lock/unlock.


8 September 2010 - r217

  • Fix: The "OK" button in AddWorldPopup no longer stays grayed out.
  • Fix: Fixed "Error occured while loading" in the file information dialog for non-FCM files.
  • Fix: Fixed a crash in /bring when used without any parameters.
  • Fix: Fixed Server.UrlEncode not escaping 0x00-0x0F characters properly.
  • Change: Slightly reduced default tree density in MapGenerator.


8 September 2010 - r216

  • Feature: New EXPERIMENTAL "/reloadconfig" command, and associated ReloadConfig permission. Use with caution!
  • Fix: Fixed a case where AddWorldPopup would allow clicking "OK" with a null map.
  • Fix: Fixed player crash if /freeze or /unfreeze is used without arguments.
  • Fix: Fixed player crash on FormatException in /zones and Server.ShowPlayerConnectedMessage.
  • Fix: Fixed potential player crash if LimitOneConnectionPerIP is enabled.


8 September 2010 - r214

  • Feature: Added ShowPlayerConnectedMessage and ClassColorsInWorldNames settings to config.
  • Feature: Added /measure command.
  • Feature: Class colors and prefixes are now applied consistently EVERYWHERE.
  • Feature: Banned players now see their ban reason/memo when they get kicked.
  • Feature: A special error message is shown to players trying to connect with Alpha/SMP client.
  • Feature: IsoCat (ConfigTool isometric preview) rendering quality improved: better shadows and slight altitude-based gradient.
  • Feature: Added new blocktype name aliases: "solid", "golden", "halfstep", "halfblock", "steps".
  • Feature: Added player count for each class in /classes
  • Fix: Fixed wrong "MaxBackupsSize" range in ConfigTool.
  • Fix: MaxBackupsSize setting is now applied correctly.
  • Fix: IRC color codes are now stripped from forwarded messages.
  • Fix: IRC bot now uses ServerName for "real name".
  • Fix: Formatting improved in many error messages.
  • Fix: Commas in ban/unban/promote/demote reasons no longer cause problems with PlayerDB.
  • Fix: Removed extra comma from /worlds list that showed in place of hidden/inaccessible worlds.
  • Change: Added 5-second delay between retries in AutoLauncher
  • Change: "Player connected" message condensed to a single line by absorbing "joined world" message.
  • Change: Removed ChangeName permission (and the ability to change names) due to possibility of abuse and confusion. Related /nick and /whois commands were also removed.
  • Change: /tp can now fall back to behave like /join if player name is not found (for all those times when you mistype /tp instead of /join). Conversely, /join falls back to /tp if player was not found.
  • Optimization: Reduced bandwidth use with an adaptive movement packet skipping algorithm. Should reduced outbound traffic by at least 15%.
  • Optimization: BlockUpdate memory usage slightly reduced.


8 September 2010 - r213

  • Feature: AutoLauncher (BETA) allows restarting the fCraftConsole server if it crashed. Although it honestly shouldn't crash at all!
  • Fix: Allowed renaming worlds in cases where only capitalization is different.
  • Fix: If an ip-banned player has more than one connection, all connections are now terminated.
  • Fix: Fixed nonrectangular MCSharp maps getting messed up by the loader.
  • Fix: Increased the default timeout from 10 to 12 seconds, to help people with extremely laggy connections.
  • Fix: When autocompletion finds more than one player name matching a pattern, server now prints the list of names (instead of "no player found" message). Affects PMs, /TP, /Bring, /Freeze, /Unfreeze, /Kick.
  • Change: Improved OS detection in crash reporter.


  • Feature: /replace, /replacenot, /paste, and /pastenot can now work with multiple blocks. See /help for details.
  • Fix: Replace no longer behaves same as replacenot.
  • Fix: Spaces in IRC messages are now preserved.
  • Fix: Help entries for paste/pastenot corrected.
  • Fix: /cinfo (without parameters) now shows player's own class info.


  • Feature: It is now possible to reverse last /undo (by typing /undo again).
  • Change: IRC message colors are applied slightly differently now.
  • Change: Added more automated crash reporting hooks - to MainLoop and Tasks.
  • Change: More help messages improved.
  • Change: Added a more informative message for people running outdated versions of Mono and .Net runtime.
  • Optimization: Slightly reduced memory usage of /undo, /paste, and PlayerDB.Load()


  • Feature: New /replacenot command allows replacing all blocks EXCEPT the specified one.
  • Feature: New /flip and /rotate commands to manipulate copied blocks.
  • Feature: /players list is now in alphabetical order.
  • Fix: Trying to specify an unrecognized block type for draw commands (e.g. "/c ai" instead of "/c air") now shows a proper error message.
  • Fix: Fixed /gen command crashing players if coordinates are typed in before theme/template.
  • Fix: Fixed /e ellipsoids coming out crooked.
  • Fix: "joined for the first time" messages are now shown correctly.
  • Fix: Fixed /replace not working correctly with /undo
  • Fix: Made IRC bot strip nonprintable characters from messages, and ignore empty messages.
  • Fix: World permissions are no longer reset when doing /wload. Also a permission reminder is now shown when creating new worlds.
  • Change: Improved some help messages.
  • Change: Improved IRC error reporting.
  • Change: Added world name back to "Almost there..." join screen.
  • Change: /pasteonly is now called /paste, and /paste is now called /pastenot (for consistency with other custom servers)
  • Optimization: Slightly reduced memory usage of massive drawing commands (over undo limit).


  • Feature: Improved the way fCraft handles fatal errors (crashes). Crash logs are now created more reliably.
  • Feature: Added automated crash reporting to (opt-out).
  • Feature: Added an announcement for players logging in from IPs associated with other previously-banned players.
  • Fix: Curved braces - "{}" - in server name no longer cause problems.
  • Fix: "Leaving the map" kick disabled temporarily, will be made configurable per-class soon.
  • Fix: banall/unbanall commands produce less chat spam.
  • Fix: AFK kicks no longer count towards /info number-of-times-kicked.
  • Change: Added class colors to /info, and fixed formatting bug.
  • Change: Cleaned up "Advanced" tab in ConfigTool.
    • Removed obsolete config keys: PolicyColorCodesInChat, PolicyIllegalCharacters, and RunOnStartup
    • Added SubmitCrashReports and IRCDelay config keys.


26 August 2010

  • Feature: IRC bot rewritten for better performance, flexibility, and safety.
  • Feature: New IRC options: IRCBotAnnounceIRCJoins and IRCBotAnnounceServerJoins.
  • Fix: Fixed messages containing only a single slash ('/') crashing client thread.
  • Change: Removed obsolete IRCBotMsgs config key.
  • Change: Added OnPlayerSentMessage event to Server.
  • Change: IRC bot's commands (e.g. !status) are temporarily unavailable.


25 August 2010

  • IMPORTANT! Please update ASAP, a security issue was identified in previous version.
  • Fix: If you need to start message with a slash, you can now escape the slash (type "//")
  • Fix: Fixed endless update loop (if automatic updates were enabled)
  • Fix: Private messages with a space between '@' and the player name now work.
  • Fix: Hacking-related kicks are not announced globally.
  • Fix: Fixed "/help" giving wrong message if help entry was not found.
  • Change: Minor changes in MapGenerator/Noise


24 August 2010

  • Feature: New stat command, /sinfo (server info).
  • Fix: Ban reason/memo now shown for normal bans.
  • Fix: /cinfo for unlimited classes no longer shows "draw limit: 0"
  • Fix: Fixed IRC message colors, and removed IRC color codes from log.


24 August 2010

  • FEATURE: New /WFlush command. It allows finishing all in-progress draw commands at maximum speed (over 100k blocks/second) then forces a map rejoin.
  • Feature: Added more customization options for colors: PrivateMessageColor and IRCMessageColor in Config.
  • Feature: /Players list is now sorted alphabetically.
  • Feature: Added "Check Port" button to ConfigTool to see if port is open. Uses
  • Feature: Added "Play" button to fCraftUI to open server URL in the browser
  • Feature: World names in /Worlds list are now colored according to each world's build permission.
  • Feature: Added speedhack detection & prevention (BETA) and corresponding Permission.UseSpeedHack. All your classes will be granted this permission by default. Edit the config to customize it.
  • Fix: When using /Mark outside of map boundaries, draw limits are no longer calculated incorrectly (thanks to Darnest).
  • Fix: Fixed possible crash in Map.CheckZones() on maps created with /Gen
  • Fix: Fixed compilation issue with "tileset.png" on case-sensitive filesystems.
  • Fix: Fixed class-wide messages not wrapping correctly.
  • Optimization: antigrief and antispam checking overhead reduced.


22 August 2010

  • Fix: Addresses a security issue.
  • Fix: "OK" button in AddWorldPopup is now always disabled if no map is set.
  • Fix: "Feature size" label is now updater correctly when map dimensions are changed.
  • Fix: Added missing player notifications for /Undo and /Cancel commands.
  • Change: MapGenerator's default map size changed to 128x128x80


22 August 2010

  • Feature: Added cuboid limits to /cinfo
  • Fix: Fixed a bug in BoundingBox that made /paste and zones behave incorrectly
  • Fix: Fixed ban/unban commands not kicking the player if entered name capitalization did not match actual capitalization
  • Fix: Fixed "flatgrass" being broken when using /Gen
  • Fix: Fixed /Ban rank checks affecting /Unban
  • Change: Optimized zone permission checks


22 August 2010

  • FEATURE: New MapGenerator with tons of options. You can also save/load custom templates for it.
  • FEATURE: AddWorldPopup interface overhaul.
  • FEATURE: JTE, D3, and Myne/Mynecraft/Hyvebuild/iCraft map format converters added.
  • Feature: Improved syntax of the /Gen command. See "/Help gen" for details.
  • Feature: Reason/memo is now shown publicly when someone gets banned, unbanned, or kicked.
  • Feature: Teleport and Bring work across worlds - world permissions still apply.
  • Feature: Added 4 new Config keys: RequireBanReason, RequireClassChangeReason, AnnounceKickAndBanReasons, AnnounceClassChanges. By default "AnnounceKickAndBanReasons" and "AnnounceClassChanges" are enabled.
  • Feature: Added 5 new fields to PlayerDB: previousClass, classChangeReason, timesKicked, timesKickedOthers, timesBannedOthers.
  • Feature: Added a lot of new information to /Info.
  • Feature: You can now save map preview images (isometric) from AddWorldPopup.
  • Feature: ConfigTool now shows warnings about any errors logged during Config.Load
  • Fix: Yet another workaround for VerifyNames false negatives (thanks to SpaceManiac).
  • Fix: Fixed being able to paste admincrete/water/lava without permission (part of Player.CanPlace overhaul).
  • Fix: Trying to go over class draw limit no longer causes "Another drawing command is in progress" error.
  • Fix: Mcc.MapUtility.TryLoading() and Map.LoadHeaderOnly() now release file handles as soon as possible. This should fix some "file is being used by another process" errors.
  • Fix: Map spawn should be parsed correctly for MCSharp/MCZall maps
  • Fix: If a map doesn't start with a gzip header, it no longer has a chance to abort the whole load process.
  • Fix: Fixed blocktype names being case-sensitive.
  • Fix: Added a more informative message when idle players are kicked.
  • Fix: Fixed undo buffer not getting cleared when doing paste/pasteonly
  • Fix: Fixed /WAccess exception kicking players.
  • Fix: 100% Empty maps no longer crash AddWorldPopup with OutOfMemoryException
  • Fix: Fixed "player is already banned" message when doing /BanAll
  • Fix: Fixed no public message appearing when doing /BanAll
  • Fix: Fixed cuboid/ellipsoid/cuboidh logging blocktype code instead of blocktype name.
  • Fix: Improved the message that's shown when idle players are kicked.
  • Fix: Documented ability to /TP to specific coordinates.
  • Fix: AddWorldPopup no longer crashes if user closes "Load Map" dialog before selecting any file.
  • Fix: When drawing affects (in part or in full) a restricted zone, the zone is left untouched, and the rest of draw command finishes (part of Player.CanPlace overhaul).
  • Fix: Fixed crash in AddWorldPopup.AsyncLoad() if map loading failed.
  • Fix: LegacyRankMapping is now parsed correctly
  • Fix: Renaming a class no longer causes "Worlds" tab dropdown menus to go out-of-sync.
  • Change: AddWorldPopup preview image quality improved.
  • Change: Updated to newest version of NBTag library.
  • Change: Frozen players can no longer build/delete.
  • Change: Removed public /Undo message, added log message instead.
  • Change: Removed AnnounceUnverifiedNames settings.
  • Change: When building/deleting permission is denied, the exact reason is given (instead of a vague "you cannot do that" message) (part of Player.CanPlace overhaul).


12 August 2010

  • Feature: Added /Copy, /Paste, and /PasteOnly commands. Rotation coming soon.
  • Feature: Added CopyAndPaste permission, granted to op and owner by default.
  • Feature: Added MapGenType.Cliffs - similar to Mountains type, but with cliffs!
  • Fix: Fixed /Paint command
  • Fix: Fixed /BanInfo now showing any information if used without parameters.
  • Change: Replaced surface rocks in MapGenTheme.Hell with Obsidian.


11 August 2010

  • Feature: new /Bind command allows mapping any block to any other. Now you can place those unbuildable blocks (water, lava, grass, double-step) in any way you wish. For compatibility, old commands (/Water, /Solid, /Lava, /Grass) have been preserved.
  • Change: "step" added as an alias for Stair block. "doublestep" added as an alias for DoubleStair.


8 August 2010

  • Feature: /WInfo now shows who locked/unlocked the map, and how long ago.
  • Fix: Fixed a error message that showed up when announcements.txt was blank.
  • Fix: Permission check added back to lock/unlock commands.
  • Fix: "mapinfo" added back as alias for /WInfo
  • Fix: Fixed locked maps not getting unloaded when all players left


6 August 2010

  • Fix: List of worlds printed by /Worlds is now sorted alphabetically.
  • Fix: Fixed an obscure half-disconnect bug that left players with id=0 who happened to be on the main world in a semi-disconnected state IF someone else was kicked halfway through the login process before it was assigned an id.


5 August 2010 - r146

  • Fix: Fixed still messed-up /Worlds command.
  • Change: Downgraded standard Session.IoLoop messages that occur on player disconnect from Warning to Debug.


4 August 2010 - r144

  • Fix: Fixed messed-up /Worlds command. Sorry about that.
  • Change: Downgraded standard Session.IoLoop messages that occur on player disconnect from Warning to Debug.


  • Feature: Command-handler infrastructure has been redesigned. This will allow much more flexibility for devs and plugin makers later.
  • Feature: "/help commands" now only shows available commands by default. Type "/help commands all" to see all commands.
  • Feature: /worlds command now only available worlds by default. Type "/worlds all" to include worlds inaccessible to you.
  • Feature: Help entries added for /zedit, /mark, /version, /rules, and /say.
  • Feature: ConfigTool World tab columns are now sortable.
  • Fix: Fixed "max backups" in ConfigTool being limited to 100. Now it's at a more reasonable limit of 100000.
  • Fix: Fixed Map.Backup() deleting the newest (instead of the oldest) backup if the total number of files was limited.
  • Fix: Fixed an ERROR that popped up if a player got disconnected during the login process (while player=null).
  • Fix: FormatException crash fixed that caused whole server to go down instead of a player thread.
  • Fix: Several draw-related bugs and crashes fixed.
  • Fix: Fixed crash in /winfo when used on unloaded worlds.
  • Fix: Fixed a bug in Config that caused antigrief to be re-enabled every load.
  • Fix: Fixed a bug in ConfigTool that didn't update AntiGriefSeconds properly when changing between classes.
  • Change: Many /help entries have been improved.
  • Change: Split /class command into two: /classes (aka /ranks) shows a list of classes, and /class (aka /cinfo or /classinfo) shows permission list (missed from last release notes).
  • Change: Added /spawn as an alias for /tp (missed from last release notes).


  • Feature: Line wrapping. Yes, finally.
  • Feature: Per-class draw limits. Defaults are: owner unlimited, op unlimited, regular 4096 (16x16x16), guest 512 (8*8*8)
  • Feature: Per-class antigrief detection. Defaults are: owner unmetered, op umetered, regular 45/6 (7.5 blocks/second), guest 35/5 (7 blocks/second)
  • Feature: Memory usage of draw commands has been reduced by 6 bytes per block (37% improvement).
  • Fix: Extra color codes fixed in /players command.
  • Fix: Fixed a bug with /undo that caused more than one command to be undone at once.
  • Fix: Fixed maps generated with "Realistic terrain" (MapGenerator) having an empty layer at the bottom of the map.
  • Change: Default classes have been tweaked:
    • regular can now use draw commands
    • op can now lock/unlock
  • Change: Improved arrangement of Permission list items.
  • Change: Removed obsolete ConfigKey variables AntigriefBlockCount and AntigriefBlockInterval


  • Feature: Added /zedit command for changing zone permissions after creation
  • Feature: New aliases for drawing commands: /c /e /h /r /m
  • Fix: Fix for cuboid command kicking players with "Block.Undefined" if called with no optional BlockType parameter
  • Fix: Fixed zone definitions getting corrupted.
  • Fix: Allowed /save command to be used from console and from remote worlds. Previously you had to join the world to save it.
  • Fix: Fixed potential crash in /winfo when looking up unloaded worlds.
  • Fix: Fixed /zone allowing duplicate names, then kicking the client.
  • Fix: Fixed /ztest showing the standard "you are not allowed to build in this zone" message instead of the expected zone list.
  • Fix: Fixed incorrect description of draw log messages, and backup error messages
  • Fix: Fixed false triggering of "Player asked to be released from its world, but the world did not contain the player" error
  • Change: Fruitified fragmer's name


  • Feature: Announcements! You can define a list of announcements to show periodically. A random line from announcements.txt will be shown to all players at specified interval (in minutes).
  • Feature: /replace command.
  • Feature: /undo command has been improved for more flexibility and better performance.
  • Feature: /winfo (alias: /mapinfo) is added for displaying world name, player count, map dimensions, and access/build permissions.
  • Fix: Fixed a bug that caused duplicate entries to be added to PlayerDB when doing /importranks or /importbans.
  • Change: New ConfigKeys: AnnouncementColor (default: green) and AnnouncementInterval (default: 5 minutes).
  • Change: Draw command stride increased to 16x16x16, for better theoretical performance.


  • Feature: Added hollow draw command (/cubh) and aliases (/cuboidh and /bhb)
  • Feature: /players now shows class colors and a total number of players. Breakdown of /players by world is coming soon
  • Feature: Added "Joined world WorldName" message that shows when changing worlds
  • Fix: Improved several /help entries
  • Fix: Fixed a bug in Map.SaveBackup() that could cause a crash if MaxBackups was set
  • Fix: Fixed a bug in ConfigUI where "Delete World" button could leave the map file behind and/or cause an error
  • Fix: Calling lock/unlock from console without a WorldName now shows a nicer error message
  • Change: Improved safety checks of /join command
  • Change: Added a catch-all exception handler into Server.MainLoop
  • Change: Added exception handlers for EVERY single piece of code that requires file access
  • Change: Added more thread safety in MapCommands.WorldRename that resolves a potential race condition with Map.Save
  • Change: Modified IPBanList to use the standard temp folder (instead of fCraft working path) for its temp files


  • Fix: Fixed /unhide and normal connection getting different messages
  • Fix: Fixed client crash when viewing /rules if the rule file has blank lines
  • Fix: Worlds with capital letters in the name are joinable again
  • Fix: Potential crash in DoClassChange() if target player is already same rank AND is not currently on the server
  • Change: Moved the command list to /help commands
  • Change: Performance and thread-safety improvements to PlayerDB
  • Change: Disabled some more debugging code to avoid taking up unnecessary resources


  • Feature: /importbans now also supports "banned-ip.txt"
  • Feature: Logs are now stored in /logs/ folder. Your fCraft.log file will be moved there automatically and renamed to "_OldLog.log"
  • Feature: Log splitting now works by day or by session. Set "LogMode" key in config.xml or see Logging tab in ConfigTool.
  • Feature: All maps are now stored in /maps/ folder. Your map files will be moved automatically first time you start ConfigTool/fCraftConsole/fCraftUI
  • Feature: Reserved slots now work
  • Fix: Fixed a bug in fCraft.Server.LoadWorldListXML that could make all worlds hidden.
  • Fix: "player connected" message shown when someone connects, instead of just "player joined world"
  • Fix: "player left the server" message is not shown if the player got kicked before LoginSequence finished (e.g. if server was full)
  • Fix: Added back IP logging for incoming connections
  • Fix: Fixed ConfigTool-generated maps not having correct spawn point
  • Fix: Fixed /user showing both promote and demote messages at once
  • Fix: Removed references to old "/drawundo" command name in "/undo" messages
  • Fix: Fixed "Unrecognized entry ignored: LegacyRankMapping =" warning
  • Change: Made /importbans and /importranks save PlayerDB at once
  • Change: fCraft now forcibly resets its working directory to the same path where the executable is
  • Change: Removed "delete old file?" prompt when renaming worlds in AddWorldPopup. Now it just does it, to match tabWorlds' DataGridView behavior
  • Change: Added additional error checks to Map.Backup()


  • Feature: Further improved network performance by introducing nonblocking (lock-free) data structure to packet output buffer
  • Fix: Fixed "world creation failed" error if worlds.xml defined a non-existing world to be main
  • Fix: Added back missing messages when doing /user on offline users
  • Fix: Fixed player name color not being updated when their class changes
  • Fix: Added missing /help entries for /importbans and /importranks
  • Change: Improved help messages for /lock, /unban, /unbanip, /undo, /wload, /wmain, and /wremove
  • Change: Tweaked default values of BlockUpdateThrottling and maxBlockUpdatesPerTick for maximum lag-free performance


  • Feature: Added the ability to promote/demote offline and unseen (not in PlayerDB) players
  • Feature: Added the ability to ban unseen players
  • Feature: Added ability to import bans and ranks from MCSharp/MCZall formats. An associated "Import" permission was added. See "/help importbans" and "/help importranks" for more information. Importer for ip-bans and iCraft/Hyvebuild/Myne format are coming soon.
  • Feature: Improved BlockUpdateQueue performance (faster drawing commands!) by switching to a lock-free data structure
  • Fix: Fixed startup errors not being logged if config.xml has not been parsed yet
  • Fix: Fixed ConfigUI input box not aligning properly when window is resized
  • Fix: Fixed "flatgrass" generated maps being 1 block off vertically
  • Change: Updated PlayerDB and IPBanList to use standard temporary folder (instead of dumping temp files into fCraft directory)
  • Change: Added "logging starts" marker that's written to console and log on-startup
  • Change: fCraftUI log now displays the last 2000 lines (up from 1000 lines)


  • Feature: New "Worlds" tab in ConfigTool for managing your world list
  • Feature: Isometric map previews and map generation in ConfigTool
  • Feature: Implemented a class-ID system that allows adding/renaming/deleting classes without breaking compatibility. DeleteClassPopup was added for this
  • Feature: Added LimitOneConnectionPerIP option to config & configtool
  • Feature: Worlds can now be hidden from the /worlds list
  • Feature: Added /whois command for checking if a player is using real name or nickname. BE CAREFUL WITH "ChangeName" PERMISSION!
  • Feature: fCraft now generates crash.txt on unhandled fatal errors
  • Feature: Implemented theme support, and added 2 new terrain types (Coast and River) for MapGenerator. See "/help gen" for details, or use ConfigTool.
  • Feature: Pressing Up/Down keys in fCraftUI will show previously typed commands.
  • Fix: Fixed a bug in /wmain and /wload that sometimes made the server unconnectable after changing map
  • Fix: Limits on the /kick command now apply correctly
  • Fix: Fixed /wbuild and /waccess showing wrong messages
  • Fix: Fixed hidden players unable to build due to grief protection
  • Fix: Added /nick and /whois entries to /help
  • Fix: Removed the ability to call draw commands from console (caused crash)
  • Fix: Fixed /lava checking PlaceWater permission instead of PlaceLava
  • Fix: A debug message about "attempting to unregister an non-existent player" is no longer logged every time VerifyNames fails
  • Fix: When using /where command on other players, correct coordinates are now shown]
  • Fix: Player's classes are now updated in fCraftUI list when promoted/demoted
  • Fix: PMs are now logged as LogType.PrivateChat (instead of generic LogType.WorldChat)
  • Fix: /hide and /unhide now use Color.Sys instead of hardcoded Color.Yellow
  • Fix: Player's nicknames (as set by /nick) are applied correctly and preserved when changing worlds
  • Fix: Added missing checks for "Chat" permissions
  • Fix: Color buttons in ConfigTool now show correct background color under Mono
  • Fix: Fixed help entry to /freeze showing incorrect information
  • Fix: Corrected tab order in all ConfigTool forms
  • Change: Added /blb as another alias for /cuboid
  • Change: Removed ReservedSlotBehavior config key
  • Change: Disabled word wrapping in rules.txt editor popup
  • Change: /unhide now resets the player's nick
  • Change: Both player's real name and nickname (if any) are now recorded in the log
  • Change: Added a warning to /info when looking up nicknames (instead of real names)
  • Change: Heartbeat salt generation (used to verify names) is now more secure
  • Change: Removed CanPlaceHardenedBlocks from permission list
  • Change: All map generator terrain types have been tweaked for improved appearence
  • Change: Centered all ConfigTool popup windows (AddWorldPopup, ColorPicker, DeleteClassPopup, TextEditorPopup)
  • Change: Hid unneeded icons and buttons from ConfigTool popups
  • Change: Changed the way zones store rank restriction (as part of the compatibility assurance), and added versioning to zone definitions
  • Change: Map.Save() now creates temporary files in the OS-specific temporary folder, not in same folder where fCraft is installed
  • Change: World permissions are now updated automatically when a class is deleted
  • Refactor: Improved consistency in code naming conventions, especially in IRC code
  • Refactor: Improved code organization in many areas


  • Implemented per-world access and build permissions.
  • Changed worlds.txt format to worlds.xml. Your old worlds.txt file will be converted automatically.
  • New world-related commands:
    • /wmain changes the main world
    • /waccess and /wbuild allow setting per-world permissions
    • /wremove allows deleting worlds
    • /wrename allows renaming worlds without reloading
    • /wload command is significantly improved (see /help wload for more info). The functionality of the old /load command has been merged with /wload. Now /load is an alias for /join, together with /l, /j, and /goto.
  • Removed SaveAndLoad permission - it became redundant with ManageWorlds. Please check your config to ensure that permissions remain consistent.
  • Added new and previously-missing (/lockall, /unlockall, /where, /me, /rules, /setspawn) commands to /help.
  • Disabled verify-names check for localhost ( when running in Balanced mode.
  • When player is denied access to some command, server now names the specific permission that's needed.
  • Fixed a potential desync issue when one player rejoins a world, and another joins it simultaneously.
  • Removed /genh command and /compass alias for the /where command.
  • Added a fail-safe exception check when executing console commands. Now the server will stay up even if an exception occurs while executing console command.
  • Improved the way server reacts to fatal errors on startup. Now there is a clear indication that server cannot start.
  • "default map" is now referred to as "main world" for consistency.
  • Improved garbage collection.


  • Added back support for vanilla (server_level.dat) maps.
  • Fixed MCSharp importer leaving nonstandard blocks in the map, causing client crashes. Now all MCSharp-specific blocks are converted to normal types.
  • Fixed visual player list not updating in fCraftUI.
  • Added /players command to list ALL players on the server (in all worlds)
  • Made the BlockType parameter optional for /cuboid and /ellipsoid. Now it takes blocktype of the second click (or last-previously-used-blocktype when using /mark) in the absence of the optional parameter.
  • ConfigTool: Added a new tab for IRC setting.
  • ConfigTool: Fixed a bug that prevented the last 2 checkboxes on the permission list from being saved properly.
  • IRC: Split IRCForwardAll into IRCForwardFromServer and IRCForwardFromIRC to make it easier to manage which messages you want to see.
  • IRC: Added IRCBotQuitMsg to allow users to define their own quit message for the bot.
  • IRC: Fixed a bug with infinite reconnects on receiving error 433 Nickname already in use.
  • Zones: Changed behavior of overlapping zones:
    • Before: To touch a block, AT LEAST ONE zone has to allow it
    • Now: To touch a block, ALL ZONES have to allow it
  • Zones: Added /ztest command that lists all zones affecting a particular block. It can be used to detect and resolve zone overlaps.
  • Zones: Added proper /help entries for /zone, /zones, /zremove, and /ztest, and contextual help for /zone and /zones.
  • Zones: Made zone commands inaccessible from console (it would cause a crash, since zones are world-specific).
  • Fixed OnPlayerDisconnected and OnPlayerListChanged sometimes firing at the wrong time.
  • Added better error handling to Map.Save() in case the target file is not writable.
  • Updated /help entries for /lock, /unlock, and /load commands.


  • Fixed zone borders being off by 1 block.
  • Fixed a rare crash on shutdown.
  • Fixed heartbeat reporting incorrect port number to heartbeat if the port specified in config was not available.
  • Adjusted default class permissions slightly, by popular demand:
    • regulars can now place Water and Lava
    • ops can now use draw commands
  • IRC: Added a config option 'IRCMsgs' to toggle join/leave messages on/off. Default is disabled to prevent massive spam.
  • IRC: Fixed a possible crash in IRCComm, related to static initializers.
  • ConfigTool: Fixed many bugs in permission checkbox list.
  • ConfigTool: Added visual editor for rules.txt
  • ConfigTool: Added stub tab for IRC settings (coming soon).


  • Fixed spawnpoint being read incorrectly when using /load.
  • Added a note to ban*/unban* commands that's shown when player name is not found: "Use the FULL player name for ban/unban commands."
  • Fixed a thread crash (not server-wide crash) in Session.IoLoop that can be caused by corrupted or malicious handshake packets.
  • Fixed a potential crash when using /info on offline players from console.
  • Fixed a potential crash when using /gen from console.
  • Added more fail-safe checks that ensure that map spawn point is always within the map boundaries.
  • Started logging IPs of connections that try sending corrupted or malicious handshake packets.


  • Added back /load command, and hooked up MCC. Currenly supported: fCraft/fcm, MCSharp/lvl, indev/mclevel, MinerCPP and LuaCraft (dat). Vanilla support coming soon.
  • Fixed worlds being unloaded before all block updates are processed (thus aborting draw commands).
  • Fixed several potential multiworld-related crashes and freezes.
  • Made Server.UnregisterPlayer check ALL worlds to remove the player, not just most recent one.
  • IRC: Added an information message to notify users of the IRC Bot's online status when joining the server.
  • IRC: Added the ability to send NOTICES.
  • IRC: !status/!help can both be sent to the bot in channel now and it will respond appropriately.
  • IRC: Added a check to see if the IRC Bot is actually enabled and online before sending a notification that it IS online.
  • Drawing-related state is now reset when changing worlds.
  • Added a limiter to the number of block updates that can be processed per tick (even if there are no players in a world). Fixes server becoming unresponsive when doing enormous drawing commands (millions of blocks).
  • Allowed players to /join the world that they are already on.


  • IDLE/AFK CHECKING This is configurable per-class.
  • Added /version command, and added revision to the version string.
  • Added an option parameter to /lock and /unlock to target a specific world, and added global /lockall and /unlockall commands.
  • Removed all references to the old pre-multiworld "map.fcm." Backups now work again.
  • Fixed players not spawning in the right place when changing worlds.
  • IRC Bot will now handle terminations by the IRCd and restart itself upon any errors.
  • IRC Bot can now send from inside the server TO IRC! Use the prefix '#' in-game to send any message to IRC. Forwarding all server chat may be added if requested. To send from the bot to the server, use the bot's nickname and either ':', ',' or nothing, then your message.
  • Improved performance of the IRC bot and the task scheduler.
  • Fixed a bug with getting the server url from the externalurl.txt file crashing the IRC MessageHandler() when the file didn't exist. FORWARD_ALL is now enabled for both SERVER and IRC for 100% transparent chatting.
  • Fixed a bug in the server-to-irc code that forwarded a blank message if there was nothing after '#' in server chat.
  • Handshake packet is now written when doing /join, to replace MOTD with a more informative "Now loading [worldname]".


  • MULTIWORLD It's finally here. See /help for information on new commands: /worlds, /wload, /join
  • Added a persistent world list, saved in worlds.txt - this is subject to change. The file contains a list of world names, each corresponding to an .fcm file. The first world listed at the top of worlds.txt is the default/main one.
  • IRC BOT Thanks to the efforts by Destroyer661, fCraft now has an optional IRC bot for relaying chat and commands.
  • A field has been added in the config to allow forwarding ALL IRC CHANNEL TRAFFIC to the server. This will override the prefix and make it inactive. 'IRCBotForwardAll' is set to false by default.
  • ZONES It is now possible to make guest zones and op zones (and anything in-between) on any map. See /help for information on new commands: /zones, /zone, /zremove.
  • Added 2 new permissions: ManageZones and ManageWorlds. You might need to update your config.xml to add these permissions to appropriate classes.
  • Added /compass command (aka /where).
  • Fixed players sometimes not seeing their /kick message.
  • Added a way to teleport to specific coordinates (/tp x y h)
  • Fixed heartbeats timing out when running fCraft under Mono.
  • Fixed Config.ApplyConfig setting the wrong server throttling variables.
  • Fixed air blocks appearing underwater when using /gen
  • Tweaked /gen parameters to make "island" a bit less ugly.
  • Updated text in fCraftConsole.



  • Added /cuboid and /ellipsoid drawing commands.
  • Improved memory usage.
  • Added "Draw" permission, and made /draw check "DeleteAdmincrete" permission when replacing blocks, and removed unused "PlaceGlitchedSand" permission.
  • Added "Port" and "BackupOnlyWhenChanged" config lines, and corresponding ConfigTool fields.
  • Fixed bug that deleted ALL backups when you check "don't delete old backups." That was embarrassing.


  • Added an experimental low-latency mode (faster server response, but more bandwidth required).
  • Improved hacking detection: added anti-chat-spam and anti-grief (block spam) checks.
  • New more aggressive anti-hacking checks for incoming movement and SetTile packets.
  • Fixed an issue with fCraftUI console log getting truncated in the wrong places.
  • Improved Mono compatibility (fixes HttpWebRequest failures).


  • Added /me command.
  • Added step stacking.
  • Fixed a case where disconnected players would leave a ghost behind.
  • Improved shutdown speed.
  • Implemented ProcessPriority setting.


  • Fixed players not being able to delete admincrete after promotion.
  • Fixed a bug that allowed players to noclip into walls when using /tp or /bring.
  • Fixed a security issue with "VerifyNames: Balanced"
  • Added prototype of the security tab in ConfigTool (work in progress).


  • Added a range check to Player.SetTile, to prevent certain types of grief bots.
  • Fixed a bug where map spawnpoint did not change after doing /load.
  • Fixed some typos.


  • Fixed welcome messages not showing.
  • Renamed /alias to /nick, and added a permission check.


  • Finally last fix for the disconnect problem. Sorry about that.


  • Quick fix for disconnect problem.


  • Fixed VerifyNames not saving properly when using ConfigTool.
  • Fixed several potential crashers in Session and World.
  • Fixed a bug that sometimes wrongly showed "class name not recognized".
  • Added class name autocompletion for class chat (@@classname blah)
  • Started working on the new /load mode that allows loading different sized maps, and loading much faster (not done yet).


  • Optimized handling of player movement and some block/tile updates, making servers more responsive and less laggy.
  • Fixed a possible crash that sometimes happened when server has 1 slot left and 2 people tried to join at once.
  • Fixed a case where a Session object was not properly disposed.
  • Fixed resizing issue in UpdateWindow and reduced connection timeout in Updater
  • Disabled ShowPrefixesInChat and ShowPrefixesInList by default (breaks skin support)
  • Added Player.Send, a safe wrapper for Player.session.Send
  • Fixed /tp, /bring, and /setspawn commands that were broken in the last revision.
  • Fixed ConfigTool not saving "IsPublic" setting correctly.


  • Added partial class-name matching for /class and /user commands.
  • Fixed /banip and /banall not kicking the banned players immediately.
  • Added /rules command. Create "rules.txt" in the server folder to specify.
  • Fixed a bug where player movement sometimes got a little out of sync.
  • Optimized /load speed a bit.
  • Added nicer application icons.


  • Added visual color picker to ConfigTool
  • Added lightweight console interface for fCraft
  • Refactored the main update loop


  • Added AutomaticUpdates option.
  • Integrated the color picker to ConfigTool.
  • Improved hacking detection.


  • Fixed a few glitches left after switching file formats.
  • Improved memory usage when saving maps.
  • Fixed an updater-related crash.


  • New map format (FCM v2) should provide faster loading times.
  • server_level.dat loader is now functional.
  • Fixed possible crash if the default port was not available.
  • Automatic updater should now work properly. More update options to come.


  • Preview version of automatic updater.


  • Cleaned up some VC# crapfiles.
  • Added class prefixes and colors.
  • Added PlaceWater and PlaceLava back to permissions.
  • Fixed rank-limited permissions.
  • Other assorted glitches fixed.


  • removed config.xml from svn.


  • More potential crashes fixed.


  • Fixed a couple potential crashes in ConfigTool and Config.DefineClass


  • Fixed a few minor ConfigTool bugs.


  • Forgot to save config from World.cs after parsing. Minor update.


  • ConfigTool finished. Note that some of the options do not have an effect yet.

Before 0.3xx

  • Version history was not kept before this point.
Personal tools

Google AdSense