Jump to content

Version history: Difference between revisions

From fCraft Wiki
No edit summary
No edit summary
Line 4: Line 4:
=0.6xx=
=0.6xx=
===0.602===
===0.602===
Feature: One-click paste commands are now the default. Two-click aligned paste commands are now known as pastex/pastenotx (or px/pnx)
*Feature: One-click paste commands are now the default. Two-click aligned paste commands are now known as pastex/pastenotx (or px/pnx)
Feature: Added /rb command (shortcut for /brush replacebrush + /c).
*Feature: Added /rb command (shortcut for /brush replacebrush + /c).
Feature: Added a way to change number of copy/paste slots per rank from ConfigGUI.
*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 a few typos and missing help entries.
Fix: Fixed DrawOp completion message and log entry.
*Fix: Fixed DrawOp completion message and log entry.
Fix: Fixed /paste and /pastenot not properly clipping against world boundaries.
*Fix: Fixed /paste and /pastenot not properly clipping against world boundaries.
Fix: Fixed ConfigGUI not preserving environment settings for worlds.
*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 ConfigGUI losing some worlds and showing some errors when importing from 0.5xx.
Fix: Fixed /bring not being usable from console.
*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 /wrename crashing if invalid characters (from filesystem's point of view) are present in the new name.
Fix: Fixed /specpatrol (/spat) not checking for Spectate permission.
*Fix: Fixed /specpatrol (/spat) not checking for Spectate permission.
Fix: Fixed /undoarea'd and /undoplayer'ed blocks having "Restored" flag set in /bi
*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 a detached checkbox on "Worlds" tab of ConfigGUI.
Fix: Fixed /say, /staff, and /me getting logged twice.
*Fix: Fixed /say, /staff, and /me getting logged twice.
Fix: Fixed per-world backup settings being cleared on server restart.
*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 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 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.
*Fix: Fixed a rare ConfigGUI crash when resetting the rank tab whole one of the old ranks is selected.
Change: Sped up /eh and /sph slightly (thanks to Redshift).
*Change: Sped up /eh and /sph slightly (thanks to Redshift).
Change: Improved error handling in /env when setting level.
*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: 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.
*Change: Clarified auto-freeze message when trying to kick/ban someone without a required reason string.


===0.601===
===0.601===
Fixed several issues with /undo and drawing commands.
*Fixed several issues with /undo and drawing commands.


===0.600===
===0.600===
Chat: Added a /Timer command for creating publicly-announced countdowns/timers.
*Chat: Added a /Timer command for creating publicly-announced countdowns/timers.
Chat: Added a way to cancel partial messages: /Nvm
*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: 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: /Say, /Staff, and /Me commands can no longer repeated using "/" shortcut.
Chat: Added a warning when trying to PM deafened players.
*Chat: Added a warning when trying to PM deafened players.
Chat: Added a shortcut for chatting to same rank: "@@ Message"
*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: 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 /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 rank chat being logged twice.
Chat Fix: Fixed some system messages getting through to deafened players.
*Chat Fix: Fixed some system messages getting through to deafened players.
Chat Fix: /Deafen now clears the screen when toggled on.
*Chat Fix: /Deafen now clears the screen when toggled on.
Commands: Rank and zone names now autocomplete.
*Commands: Rank and zone names now autocomplete.
Commands: Players can no longer freeze, mute, kick, ban, unban, promote, or demote themselves.
*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: /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: /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: /Info now shows last leave reason, idle time, freeze/mute information, and ban exemption status.
Commands: Augmented /Rules to support several rule categories.
*Commands: Augmented /Rules to support several rule categories.
Commands: Added /Spectate and /SpecPatrol (/SPat) commands.
*Commands: Added /Spectate and /SpecPatrol (/SPat) commands.
Commands: Added /WBring (brings target player to a world);
*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: 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 next target was improved.
*Commands: Algorithm that /Patrol uses to pick next target was improved.
Commands: Renamed Lock/Unlock to WLock/WUnlock, for consistency.
*Commands: Renamed Lock/Unlock 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: 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: /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: 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: 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: /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 /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: 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: /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: Most time-related commands now take the compact format (e.g. 1m30s, 45s, 24h, etc).
Commands: Color-coded /Commands.
*Commands: Color-coded /Commands.
Commands: Limited /Mute duration to range between 1 second and 700 days (100 weeks).
*Commands: Limited /Mute duration to range between 1 second and 700 days (100 weeks).
Commands: /SetInfo now allows changing players' DisplayedName.
*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: 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 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 automatic countdowns to /Shutdown and /Restart.
Commands: Added more stats to /ServerInfo.
*Commands: Added more stats to /ServerInfo.
Commands: /MassRank now defaults to silent, and takes a "reason" parameter.
*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: 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 /UnbanIP and /UnbanAll not announcing the unban reason.
Commands Fix: Fixed /Info not formatting names of offline players.
*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 /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 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: 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: /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 /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 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 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 /Rank and /TP commands showing up in /Commands for ALL players.
Commands Fix: Fixed a couple rare bugs in /Roll
*Commands Fix: Fixed a couple rare bugs in /Roll
Commands Fix: Fixed broken /BringAll support for bringing multiple ranks at once.
*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.
*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: 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 Spectate permission that covers /Spectate and /SpecPatrol.
Config: Added DrawAdvanced permission that covers /Brush, /Sphere, /SphereH, /Torus, and /Restore commands.
*Config: Added DrawAdvanced permission that covers /Brush, /Sphere, /SphereH, /Torus, and /Restore commands.
Config: Added ManageBlockDB permission that covers /BlockDB.
*Config: Added ManageBlockDB permission that covers /BlockDB.
Config: Added UndoOthersActions permission that covers /UndoPlayer and /UndoArea.
*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: /Reload can now update more config keys without needing a restart: AutoRankEnabled, BandwidthUseMode, ConsoleName, DefaultRank, DefaultBuildRank, PatrolledRank.
Config: Removed obsolete ShowBannedConnectionMessages config key.
*Config: Removed obsolete ShowBannedConnectionMessages config key.
Config Fix: Fixed DefaultRank/DefaultBuildRank/PatrolledRank settings not being applied.
*Config Fix: Fixed DefaultRank/DefaultBuildRank/PatrolledRank settings not being applied.
ConfigGUI: Added BlockDB settings to "Worlds" tab and "Add/Edit World" dialog.
*ConfigGUI: Added BlockDB settings to "Worlds" tab and "Add/Edit World" dialog.
ConfigGUI: Reorganized Rank tab.
*ConfigGUI: Reorganized Rank tab.
ConfigGUI: Relaxed restrictions on rank prefixes.
*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: 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: 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: ConfigGUI no longer loses worlds' whitelists/blacklists.
ConfigGUI Fix: Fixed several bugs related to renaming worlds.
*ConfigGUI Fix: Fixed several bugs related to renaming worlds.
ConfigGUI Fix: Fixed several "Reset" bugs.
*ConfigGUI Fix: Fixed several "Reset" bugs.
ConfigGUI Fix: Fixed "Enable colors in IRC" checkbox remaining disabled in ConfigTool.
*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 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 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.
*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: 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 /Redo to reverse it.
*Drawing: Added a way to /Undo up to five commands back. Use /Redo to reverse it.
Drawing: Added /Torus drawing command, written and contributed by M1_Abrams.
*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: 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: /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: /Undo now cancels the last drawing commands.
Drawing: Added a new block name aliases: "g" for grass, "w" for water, "a" for air.
*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: Added a missing volume check to /Line, and fixed /CuboidW volume calculations.
Drawing Fix: Fixed /Copy and /Cut reporting incorrect orientation.
*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: 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: ServerCLI now handles all updater modes properly, and downloads updater/restarts if needed.
FrontEnd: Improved window titles.
*FrontEnd: Improved window titles.
FrontEnd Fix: Fixed ServerCLI writing errors to stdout instead of stderr.
*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: 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: 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: 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: 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: 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: 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: 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: Increased the allowed clicking distance when manually clicking blocks, to account for lag.
Misc: IRC bot now announces channel kicks and nick changes.
*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: 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: 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, /bi, /measure, etc)
*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, /bi, /measure, etc)
Misc: Frozen players now have a little blue star appended to their names, similar to the red star for banned players.
*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 minecraft.net times out).
*Misc: Moved all Heartbeat-related operations to the background thread (fixes lag spikes when minecraft.net 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 dynamically updated compass at the top-right of the screen, visible to players who use WoM 1.8.8+
Misc: Made fCraft.sln default to "Release" configuration when loaded.
*Misc: Made fCraft.sln default to "Release" configuration when loaded.
Misc: Added a check for libMonoPosix on server startup. This allows catching misconfigured Mono setups early.
*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: 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: 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 ConfigTool.
*Misc: Sped up /PruneDB, /MassRank, map generation. Reduced memory use of draw commands, undo buffers, and ConfigTool.
Misc Fix: Fixed "duplicate metadata key" warning in FCMv3 maps.
*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 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 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 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 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).
*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 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 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: 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: 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.
*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: Added a way to change some environment and texture settings per-map, using /Env.
Worlds: Per-world settings on backup intervals now work.
*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 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: 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: 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 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: 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: 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: 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: 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 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 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 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 /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 ConfigTool, under Windows.
*Worlds Fix: Fixed being unable to change just the capitalization when renaming worlds from ConfigTool, under Windows.
Zones: Added /ZRename command to rename zones.
*Zones: Added /ZRename command to rename zones.
Zones: Added /ZMark command to use zone boundaries for drawing or making selections.
*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 /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: 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: /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.
*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 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: 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: 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: 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: 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: 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 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: 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: All cancellable events now implement ICancellableEvent.
API: MapDAT and MapNBT now implement IMapConverter.LoadHeader.
*API: MapDAT and MapNBT now implement IMapConverter.LoadHeader.
API: Converted IClassy.GetClassyName(), Rank.GetFullName(), and Player.GetListName() to properties.
*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: 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: 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: Added ability to override Player.MaxBlockPlacementRange, Player.SocketTimeout, Heartbeat.Delay, and Heartbeat.Timeout.
API: Renamed RankManager.ParseRank(string) to Rank.Parse(string)
*API: Renamed RankManager.ParseRank(string) to Rank.Parse(string)
API: All draw/undo/copy/paste commands have been moved to fCraft.Drawing namespace.
*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 support for multiple /help sections per command.
API: Added CommandCategory.Debug, removed CommandDescriptor.HelpHander and HelpHandler delegate.
*API: Added CommandCategory.Debug, removed CommandDescriptor.HelpHander and HelpHandler delegate.
API: Moved Server.Player* events to Player.* and Server.PlayerInfo* to PlayerInfo.*
*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: Expanded the confirmation system (/OK) to allow custom callbacks, decoupled from the command system.
API Fix: "Bad heartbeat" reply from minecraft.net no longer triggers UrlChanged event.
*API Fix: "Bad heartbeat" reply from minecraft.net no longer triggers UrlChanged event.
API Fix: Fixed a couple bugs in BoundingBox.GetIntersection and BoundingBox.Contains.
*API Fix: Fixed a couple bugs in BoundingBox.GetIntersection and BoundingBox.Contains.
API Fix: Fixed /Replace and /ReplaceNot not firing Player.PlacedBlock
*API Fix: Fixed /Replace and /ReplaceNot not firing Player.PlacedBlock
events.
*events.
API Fix: Uncaught exceptions that occur while parsing player messages no longer send crash reports when in DEBUG configuration.
*API Fix: Uncaught exceptions that occur while parsing player messages no longer send crash reports when in DEBUG configuration.


=0.5xx=
=0.5xx=
===0.537===
===0.537===
Fixed another heartbeat-related issue caused by minecraft.net updates.
*Fixed another heartbeat-related issue caused by minecraft.net updates.


===0.536===
===0.536===
Fix: Fixed a rare crash in DoChangeRank when promoting/demoting offline players.
*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 a case where world access/build whitelist additions were not immediately saved.
Fix: Fixed several errors in the way time spans were displayed.
*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
*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 minecraft.net problems).
*Change: Changed the heartbeat handler to use GET instead of POST (workaround for minecraft.net problems).
Change: Removed AutoLauncher.
*Change: Removed AutoLauncher.


===0.535===
===0.535===
Workaround for minecraft.net heartbeat changes.
*Workaround for minecraft.net heartbeat changes.


===0.534===
===0.534===
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
*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 /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 "Apply" button not getting enabled in ConfigTool when world list is changed.
Fix: Fixed /cw reporting incorrect volume (fixes #3308137).
*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: 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 FormatException in error handling code in World.AcceptPlayer
Fix: Fixed /info not showing formatted names for players who appear offline.
*Fix: Fixed /info not showing formatted names for players who appear offline.
Fix: Fixed several issues with renaming worlds from ConfigTool.
*Fix: Fixed several issues with renaming worlds from ConfigTool.
Fix: Fixed /restart breaking under Mono if path contains spaces.
*Fix: Fixed /restart breaking under Mono if path contains spaces.
Fix: Fixed /staff, /me, and /roll commands not requiring the Chat permission.
*Fix: Fixed /staff, /me, and /roll commands not requiring the Chat permission.
Fix: Fixed "Use IRC colors" checkbox remaining disabled in ConfigTool.
*Fix: Fixed "Use IRC colors" checkbox remaining disabled in ConfigTool.
Change: Allowed all printable ASCII characters in chat except '&'.
*Change: Allowed all printable ASCII characters in chat except '&'.
Change: Heartbeat tweaks to prevent "Bad heartbeat" from popping up.
*Change: Heartbeat tweaks to prevent "Bad heartbeat" from popping up.
Optimization: ConfigTool starts up faster, and uses much less memory.
*Optimization: ConfigTool starts up faster, and uses much less memory.


===0.533===
===0.533===
Fix: Fixed a regression in 0.530 that erased some strings in PlayerInfo and IPBanInfo objects, such as ban reasons.
*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: Increased heartbeat interval to 27.5 seconds.
Change: Reduced jitter of player movement.
*Change: Reduced jitter of player movement.


===0.532===
===0.532===
Feature: Added "/worlds loaded" command.
*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 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.
*Fix: Fixed "Player _____ joined main." displaying twice when players connect.
Change: Added /colours as an alias to /colors
*Change: Added /colours as an alias to /colors
Change: Adjusted /dumpstats security checks, and made it require EditPlayerDB permission (instead of Import).
*Change: Adjusted /dumpstats security checks, and made it require EditPlayerDB permission (instead of Import).


===0.531===
===0.531===
Feature: /sinfo now shows bandwidth use, fCraft version, and .NET/Mono version.
*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").
*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 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 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.
*Fix: Fixed a few minor bugs in /wmain.
Change: Allowed the caret (^) in chat messages.
*Change: Allowed the caret (^) in chat messages.
Change: Reduced movement lag.
*Change: Reduced movement lag.
Change: /version command has been removed due to redundancy with /sinfo.
*Change: /version command has been removed due to redundancy with /sinfo.
Change: Detailed reasons of player disconnects are now logged better.
*Change: Detailed reasons of player disconnects are now logged better.
Change: Increased Minecraft.net heartbeat interval slightly.
*Change: Increased Minecraft.net 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.
*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: Removed the scheduler overhead from having unloaded worlds.
Optimization: Sped up MapGenerator by about 10%.
*Optimization: Sped up MapGenerator by about 10%.


===0.530===
===0.530===
Feature: New adaptive bandwidth-saving mechanism for updating player positions, controlled by the new BandwidthUseMode config key.
*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.
*Feature: Added OptiCraft blocktype names and blocks' numeric IDs as aliases.
Fix: Fixed block bindings not being applied to drawing commands.
*Fix: Fixed block bindings not being applied to drawing commands.
Fix: Fixed fCraft getting confused if worlds.xml contains duplicates.
*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 "/" (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 "Max connections per IP" setting not saving in ConfigTool.
Fix: Fixed AnnounceRankChangeReasons checkbox being erroneously tied to RequireRankChangeReasons key in ConfigTool.
*Fix: Fixed AnnounceRankChangeReasons checkbox being erroneously tied to RequireRankChangeReasons key in ConfigTool.
Fix: Added some missing tooltips to ConfigTool.
*Fix: Added some missing tooltips to ConfigTool.
Fix: Marked 10.0.0.0/8 IP range as LAN.
*Fix: Marked 10.0.0.0/8 IP range as LAN.
Fix: Fixed an issue with balanced name verification (thanks wootalyzer).
*Fix: Fixed an issue with balanced name verification (thanks wootalyzer).
Fix: Fixed server announcing hidden players' departure (#3292633). Thanks to Hellenion.
*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 /bring not checking per-rank permissions (#3292303). Thanks to Denny
Fix: Fixed some header bugs in the D3 map converter.
*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 /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 /banip not recognizing invalid IPs (e.g. broadcast).
Fix: Fixed antispam resetting players' mute time.
*Fix: Fixed antispam resetting players' mute time.
Fix: Fixed Scheduler being able to add tasks after the shutdown process started.
*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: 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: 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 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.
*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: 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: /mute no longer allows shortening players' mute time, only to extend it.
Change: Allowed player names with periods.
*Change: Allowed player names with periods.
Change: Removed SaveOnShutdown config key, tweaked range checks on some keys, grouped key tags into section tags.
*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.
*Change: When saving config.xml, keys with default values are now commented out.
API: New events! PlayerHideChanged, PlayerInfoCreating, PlayerInfoCreated, PlayerInfoRankChanging, and PlayerInfoRankChanged.
*API: New events! PlayerHideChanged, PlayerInfoCreating, PlayerInfoCreated, PlayerInfoRankChanging, and PlayerInfoRankChanged.
API: Server.StartServer() now throws specific exceptions on failure, instead of returning false.
*API: Server.StartServer() now throws specific exceptions on failure, instead of returning false.
API: Removed some obsolete Server events.
*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.
*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: 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.
*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.


===0.522===
===0.522===
Feature: Added more functionality to hollow ellipsoid and sphere, thanks to Redshift. Now it is possible to define outer/inner blocktypes.
*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
*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 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 AutoLauncher not working under Mono (thanks to ven000m for spotting).
Fix: Fixed "Add World" dialog crashing if closed while generating a world.
*Fix: Fixed "Add World" dialog crashing if closed while generating a world.
Fix: Fixed /restart using ShutdownReason.ShuttingDown (instead of ShutdownReason.Restarting)  
*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: 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.
*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: Added WorldCreating and WorldCreated events.
API: Moved world-related commands from Server to a new class, WorldManager.
*API: Moved world-related commands from Server to a new class, WorldManager.
API: Renamed RankList to RankManager, and CommandList to CommandManager, for consistency.
*API: Renamed RankList to RankManager, and CommandList to CommandManager, for consistency.


===0.521===
===0.521===
Feature: Added a /clear command, to clear in-game chat. Also works from fCraftConsole and fCraftUI.
*Feature: Added a /clear command, to clear in-game chat. Also works from fCraftConsole and fCraftUI.
Fix: Added missing chat commands.
*Fix: Added missing chat commands.
Fix: Cosmetic fixes in /zremove.
*Fix: Cosmetic fixes in /zremove.


===0.520===
===0.520===
Feature: Removed the server-wide 128 player limit. Now the limit is per-world.
*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: 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 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 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: 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 permissions: ViewPlayerIPs, BringAll
Feature: New config switches: AnnounceRankChangeReasons and RequireKickReason.
*Feature: New config switches: AnnounceRankChangeReasons and RequireKickReason.
Feature: Replaced LimitOneConnectionPerIP config key (boolean) with a more flexible MaxConnectionsPerIP (int).
*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: 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: /bring can be limited per-rank
Feature: When file is not found on case-sensitive filesystems, fCraft tries to syggest similar filenames.
*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: Added new constants to use in greeting.txt: {TIME}, {PLAYER_NAME}, {WORLD}, {PLAYERS}, {WORLDS}, {MOTD}
Feature: Improved compatibility with SurvivalTest clients.
*Feature: Improved compatibility with SurvivalTest clients.
Fix: Fixed /banip not kicking other players from the same IP (besides the named player)
*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: Added missing blocktype validation to MapFCMv2, MapFCMv3, MapMyne, and MapNBT.
Fix: Fixed a rare shutdown crash in fCraftUI.
*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: 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 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 ConfigTool's World tab not prompting to delete map files when deleting worlds.
Fix: Fixed a bug in MCSharp importer (#3281305)
*Fix: Fixed a bug in MCSharp importer (#3281305)
Fix: Fixed a list of permissions in /rinfo not being sorted.
*Fix: Fixed a list of permissions in /rinfo not being sorted.
Fix: Fixed /mute rank limit dropdown sometimes getting out of sync.
*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 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.
*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: Moved "IP" config key from General to Advanced.
Change: Added /spin as an alias to /rotate (for MCLawl users)
*Change: Added /spin as an alias to /rotate (for MCLawl users)
API: New events: PlayerClicking, PlayerClicked, PlayerPlacingBlock, PlayerPlacedBlock, PlayerListChanged, PlayerBeingKicked, PlayerKicked
*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%
*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%


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


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


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


===0.510===
===0.510===
Feature: The fCraft updater has been rewritten and expanded. It now works under all OSes, and provides more features.
*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 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: 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: New ConfigTool settings for updater, checkbox for showing "player connected/left" messages, and "/mute" permission settings.
Feature: Added "/credits" command to ConfigUI.
*Feature: Added "/credits" command to ConfigUI.
Feature: Implemented "--norestart" and "--exitoncrash" command-line switches for fCraft.
*Feature: Implemented "--norestart" and "--exitoncrash" command-line switches for fCraft.
Feature: fCraft event system is being rewritten with modding support in mind.
*Feature: fCraft event system is being rewritten with modding support in mind.
Feature: Improved MCSharp/MCZall/MCLawl map support.
*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: 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: 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 /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 "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 "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 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: Fixed non-verified connections that get kicked from affecting that name's PlayerInfo.
Fix: Server.GenerateSalt() now uses a cryptographically secure PRNG.
*Fix: Server.GenerateSalt() now uses a cryptographically secure PRNG.
Fix: Fixed verification problems on servers with HeartbeatEnabled=false.
*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 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 /winfo showing incorrect information for last lock/unlock event.
Fix: Fixed tabbing order on ConfigUI.
*Fix: Fixed tabbing order on ConfigUI.
Fix: Improved the way Server.InitLibrary and Logger.Log errors are handled.
*Fix: Improved the way Server.InitLibrary and Logger.Log errors are handled.
Fix: Added missing validation checks to LoadHeader in several map converters.
*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: 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: Added missing /paste and /pastenot volume checks.
Fix: Fixed a bug in /zinfo that showed incorrect creation/editing times.
*Fix: Fixed a bug in /zinfo that showed incorrect creation/editing times.
Fix: Better error messages for unrecognized block names in command parameters.
*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: /restart now works from ConfigUI under Mono (but still broken in fCraftConsole).
Fix: Fixed handling of command-line arguments surrounded with quotes.
*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 a bug at ConfigTool.ConfigUI.xAllowSecurityCircumvention_CheckedChanged (#3181907, thanks to clhdrums87).
Fix: Fixed /winfo counting hidden players (#3237877, thanks to Hellenion).
*Fix: Fixed /winfo counting hidden players (#3237877, thanks to Hellenion).
Fix: Fixed MCSharp map exporter mixing up map dimensions (#3159501, thanks to dogwatch).
*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 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: Improved error tolerance of Scheduler.EndShutdown().
Change: Expanded Logger.CheckForCommonErrors().
*Change: Expanded Logger.CheckForCommonErrors().
Change: Renamed config keys (old ones can still be loaded): IRCBot to IRCBotEnabled, AutomaticUpdates to UpdaterMode.
*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: Added /wadd as an alias for /wload.
Change: Renamed Mcc namespace to fCraft.MapConversion.
*Change: Renamed Mcc namespace to fCraft.MapConversion.
Change: Decreased timeout for fCraft update check.
*Change: Decreased timeout for fCraft update check.
Change: Added a confirmation prompt to /rank when adding an unrecognized player name to the database.
*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.
*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.


===0.506===
===0.506===
Feature: Added hollow ellipsoid drawing (/eh) and hollow sphere drawing (/sph), contributed by Conrad "Redshift" Morgan.
*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 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 path-related error in Map.SaveBackup
Fix: Fixed a possible disconnect in Player.CheckBlockSpam is antigrief was not configured properly.
*Fix: Fixed a possible disconnect in Player.CheckBlockSpam is antigrief was not configured properly.
Fix: Fixed a bug in ConfigTool.SaveWorldList.
*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).
*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: 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 "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.
*Change: Removed ".backup" file creation, by popular demand. It was kinda useless.


===0.505===
===0.505===
Feature: All draw commands now inform player if any blocks were skipped due to local permission issues (e.g. zones).
*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 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 a permission issue in /replace and /replacenot.
Fix: Fixed /info not displaying a list of players from same IP.
*Fix: Fixed /info not displaying a list of players from same IP.
Fix: Addressed a security issue with salt generation.
*Fix: Addressed a security issue with salt generation.


===0.504===
===0.504===
Fixed a crash bug related to SecurityController.MinRank
*Fixed a crash bug related to SecurityController.MinRank


===0.503===
===0.503===
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 /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.
*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 PlayerInfo.frozenOn not being set.
Fix: Fixed kick messages for players affected by /banall
*Fix: Fixed kick messages for players affected by /banall
Fix: Fixed /unbanall reason not being shown.
*Fix: Fixed /unbanall reason not being shown.
Fix: /where now shows what world you are on.
*Fix: /where now shows what world you are on.
Fix: Fixed a couple minor bugs in /waccess and /wbuild.
*Fix: Fixed a couple minor bugs in /waccess and /wbuild.
Fix: Fixed a NullReferenceException in SecurityController constructor.
*Fix: Fixed a NullReferenceException in SecurityController constructor.
Fix: Made several tweaks to improve the first-run experience.
*Fix: Made several tweaks to improve the first-run experience.


===0.502===
===0.502===
Fix: Adjusted for yet another change in the way minecraft.net replies to heartbeats (should fix all heartbeat issues for now).
*Fix: Adjusted for yet another change in the way minecraft.net 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: 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 being able to use /me or /staff to write empty messages.
Fix: Fixed frozen players not getting defrosted when kicked.
*Fix: Fixed frozen players not getting defrosted when kicked.
Fix: Formatting fixes in "___ was previously frozen" message
*Fix: Formatting fixes in "___ was previously frozen" message
Fix: Fixed a mini-bug in Map.ValidateHeader()
*Fix: Fixed a mini-bug in Map.ValidateHeader()
Change: Renamed /wremove to /wunload for consistency. "/wremove" is still usable as an alias.
*Change: Renamed /wremove to /wunload for consistency. "/wremove" is still usable as an alias.


===0.501===
===0.501===
Feature: Added /sphere and /sphere2, based on code contributed by SystemX17.
*Feature: Added /sphere and /sphere2, based on code contributed by SystemX17.
Feature: Added new config setting: ShowConnectedMessages (default: true)
*Feature: Added new config setting: ShowConnectedMessages (default: true)
Feature: Added a notification for players who logged in frozen.
*Feature: Added a notification for players who logged in frozen.
Fix: Fixed frozen players twitching.
*Fix: Fixed frozen players twitching.
Fix: Fixed IRC bot not stripping color codes in messages relayed from IRC to the game.
*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 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 /bring not working properly on frozen players.
Fix: Fixed a case where it was possible to add access restrictions to main map.
*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 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)
*Fix: Fixed AutoRankAll showing wrong number of players promoted/demoted (just a formatting bug, no promotions were affected)


===0.500===
===0.500===
Commands: Added /line drawing command, kindly contributed by SystemX17
*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 /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 /unmute command (same as "/mute name 0")
Commands: Added an option to silently hide (no disconnect/connect message).
*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: 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: /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: /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: 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: /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 works on frozen players.
Commands: /bring now takes an optional second name/parameter, to teleport someone to someone
*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: /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 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: Fixed bindings (/water, /lava, /solid, and /bind) not being applied to draw commands.
Commands: /wsave and /gen can now create directories if needed.
*Commands: /wsave and /gen can now create directories if needed.
Commands: Fixed a bug in /roll
*Commands: Fixed a bug in /roll
Commands: Sped up /paste, /pastenot, /replace, and /replacenot slightly.
*Commands: Sped up /paste, /pastenot, /replace, and /replacenot slightly.
ConfigTool: New "Chat" tab for controlling appearance and content of in-game chat.
*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: 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: AddWorldPopup can now show detailed info for maps of all supported formats.
ConfigTool: Improved tooltips for several items in ConfigUI.
*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: 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: 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.
*FrontEnd: The URL is no longer highlighted after first heartbeat, to avoid stealing focus from console.
Generator: Fixed "flatgrass" template
*Generator: Fixed "flatgrass" template
Generator: Fixed alphabetical order in the list of templates
*Generator: Fixed alphabetical order in the list of templates
Generator: MapGenerator now embeds generation parameters into the map file metadata
*Generator: MapGenerator now embeds generation parameters into the map file metadata
Generator: Fixed several template loading bugs.
*Generator: Fixed several template loading bugs.
Generator: Optimized AddBeaches to be about 2x faster
*Generator: Optimized AddBeaches to be about 2x faster
Generator: Added a missing dimension check to /gen
*Generator: Added a missing dimension check to /gen
IRC: Messages relayed from game to IRC now have color codes preserved.
*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: 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 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: 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: (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.
*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: 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: 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 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: 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: Added consistent header validation to all map format loaders.
Maps: Fixed maps not autosaving when zones are added or removed.
*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: 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 a bug when loading JTE's format maps.
Maps: Fixed format of backup filenames.
*Maps: Fixed format of backup filenames.
PlayerDB: Added new fields: bannedUntil, frozenOn, frozenBy, mutedUntil, mutedBy, IRCPassword, online, leaveReason
*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 PlayerInfo.ID not being assigned for new players until sever restart / DB reload.
PlayerDB: Fixed off-by-one error with PlayerInfo.timesVisited
*PlayerDB: Fixed off-by-one error with PlayerInfo.timesVisited
PlayerDB: Fixed /me, /say, rank chat, and /staff not counting towards PlayerInfo.linesWritten
*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: 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.
*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: 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 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: 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: /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: 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: Fixed an exploit that allowed changing steps to doublesteps even inside zoned areas.
Security: Improved consistency of permission dependencies.
*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 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: Fixed a bug that prevented banning players who were not yet in PlayerDB.
Security: Added an option to only allow paid players (PaidPlayersOnly)
*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: 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: 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: 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: Disabled error reporting of common non-fCraft-related errors (like wrong runtime versions, or wrong Mono permissions).
Stability: Added "libMonoPosixHelper.so" and "UnauthorizedAccessException" to Logger.CheckForCommonErrors, and made "Could not load file or assembly" check locale-independent.
*Stability: Added "libMonoPosixHelper.so" 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: 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: 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.
*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:
*System: fCraft now takes command-line arguments (at startup) to override the following:
  - working directory (--path=/your/path/here)
  - working directory (--path=/your/path/here)
  - log directory (--logpath=/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)
  - 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)
  - config file location (--config=/your/path/and/filename.xml)
System: Added an option to change the name of Console pseudoplayer in the config.
*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: Player.GetClassyName() and PlayerInfo.GetClassyName() now add an asterisk after banned players' names
System: Fixed hidden players remaining hidden in some cases.
*System: Fixed hidden players remaining hidden in some cases.
System: Fixed PacketWriter.MakeWrappedMessage ignoring uppercase hex colorcodes
*System: Fixed PacketWriter.MakeWrappedMessage ignoring uppercase hex colorcodes
System: Implemented NoPartialPositionUpdates and RelayAllUpdates config keys.
*System: Implemented NoPartialPositionUpdates and RelayAllUpdates config keys.
System: Several little glitches and inefficiencies fixed in movement handling code.
*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 "player connected" and other messages showing up too early in-game (before map loaded).
System: Fixed kick message for players affected by /banall
*System: Fixed kick message for players affected by /banall
System: Added HeartbeatEnabled config key (default: true)
*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: 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: 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: New Scheduler API.
System: Modified /wload to avoid loading the map twice in case confirmation is needed.
*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: 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: 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: Eliminated the heartbeat thread by switching to async i/o.
System: Improved startup and shutdown speed.
*System: Improved startup and shutdown speed.
System: Added a "how to promote yourself" message for fresh installations of fCraft.
*System: Added a "how to promote yourself" message for fresh installations of fCraft.
System: Fixed Server.OnPlayerDisconnected event firing for unregistered sessions.
*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: 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: Added better detection for SMP/Alpha clients trying to connect.
System: Sped up AutoRankAll
*System: Sped up AutoRankAll


=0.4xx=
=0.4xx=
===0.499===
===0.499===
Feature: Added an option to disable name verification for players connecting from LAN.
*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 '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.
*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 /wflush leaving ghosts/clones behind.
Fix: Fixed muted players being able to use /say and /staff
*Fix: Fixed muted players being able to use /say and /staff
Fix: Fixed /baninfo ignoring permission checks.
*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 "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 several off-by-1 errors involving random number generation, notably in MapGenerator and Server.GenerateSalt()
Fix: Fixed potential crash in MapGenerator.SealLiquids
*Fix: Fixed potential crash in MapGenerator.SealLiquids
Fix: Fixed a potential crash in Map.SaveBackup() if the map filename contained brackets.
*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.
*Fix: Fixed a forced disconnect when trying to feed /gen a theme or template with brackets in the name.


===0.498===
===0.498===
Change: Disabled zlib support due to more potential memory leaks. fffuuuuu....
*Change: Disabled zlib support due to more potential memory leaks. fffuuuuu....
Fix: Fixed Island, Bay, and Ice templates broken by the last patch.
*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'.
*Fix: MapGeneratorArgs: snowTransition was interpreted as absolute (instead of relative) altitude, and marbledHeightmap incorrectly defaulted to 'true'.
Change: Updated readme and changelog.
*Change: Updated readme and changelog.


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


===0.496===
===0.496===
Fix: Fixed File.Replace() failing if fCraft was set up on a partition/volume other than the one where temp folder is.
*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: Added missing tooltip for "Edit Greeting"
Fix: Fixed /sinfo including hidden players in the player count.
*Fix: Fixed /sinfo including hidden players in the player count.


===0.495===
===0.495===
Feature: Added a way to edit the greeting message, by editing "greeting.txt"
*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.
*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 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: Fixed several filesystem-related errors on non-Windows systems by using Path.Combine() instead of string concatenation.
Fix: Possible workaround for missing heartbeats.
*Fix: Possible workaround for missing heartbeats.
Fix: Fixed detached "default build rank" controls in ConfigTools.
*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 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.
*Fix: Fixed a case where Forester could get into an infinite loop when there's not enough room to place requested number of trees.


===0.494===
===0.494===
Feature: New map generator features:
*Feature: New map generator features:
   - Adjustable water level.
   - Adjustable water level.
   - Realistic trees (powered by Forester)
   - Realistic trees (powered by Forester)
Line 614: Line 614:
   - New template (peninsula) and theme (swamp).
   - New template (peninsula) and theme (swamp).
   - Option to delay heightmap bias until after marbling/inversion.
   - Option to delay heightmap bias until after marbling/inversion.
Feature: Added a way to load .mine maps.
*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 confirmation for potentially destructive commands: /importranks, /importbans, /massrank, /wload overwrites, /gen overwrites, /wsave overwrites, /zremove.
Feature: Added /staff chat and ReadStaffChat permission.
*Feature: Added /staff chat and ReadStaffChat permission.
Feature: Added wireframe cuboid (/cw)
*Feature: Added wireframe cuboid (/cw)
Feature: Added an optional second param for /ch (cuboid hollow) that specifies the blocktype of the "filling".
*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.
*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 /info, /baninfo, and /banip not handling players whose name contain only digits.
Fix: Fixed DoChangeRank mixing up RankChangeType.
*Fix: Fixed DoChangeRank mixing up RankChangeType.
Fix: Added missing fields to MapGeneratorArgs serializer.
*Fix: Added missing fields to MapGeneratorArgs serializer.
Fix: Fixed per-rank draw limits not being calculated correctly in some cases.
*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: 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 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 terminal colors not resetting in fCraftConsole after a fatal crash under Mono.
Fix: Fixed detached "Play" button in fCraftUI.
*Fix: Fixed detached "Play" button in fCraftUI.
Fix: Added some basic error reporting to fCraftWinService.
*Fix: Added some basic error reporting to fCraftWinService.
Change: Tweaked AddWorldPopup layout to accommodate more options.
*Change: Tweaked AddWorldPopup layout to accommodate more options.


===0.493===
===0.493===
Feature: /info now supports autocompletion, wildcards, and IP search.
*Feature: /info now supports autocompletion, wildcards, and IP search.
Feature: Experimental service wrapper for fCraft.
*Feature: Experimental service wrapper for fCraft.
Feature: Added more editable properties to /setinfo: RankChangeType, BanReason, UnbanReason, RankChangeReason, LastKickReason
*Feature: Added more editable properties to /setinfo: RankChangeType, BanReason, UnbanReason, RankChangeReason, LastKickReason
Feature: Various improvements to /info, including hide-aware "online" indicator.
*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: Made Player.NoAccessMessage() print the minimum required rank, instead of just permission name(s).
Feature: Added wootalyzer's chunk rendering code to IsoCat.
*Feature: Added wootalyzer's chunk rendering code to IsoCat.
Fix: Fixed ConfigTool not taking advantage of ZLibStream  
*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 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: 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: Excluded banned and inactive players from DumpStats
Fix: Fixed PlayerDB.Save() not escaping LastKickReason  
*Fix: Fixed PlayerDB.Save() not escaping LastKickReason  
Fix: Cleaned up extra messages sent by /unhide.
*Fix: Cleaned up extra messages sent by /unhide.
Fix: Fixed LastSeen not updating on-login (only on-logout).
*Fix: Fixed LastSeen not updating on-login (only on-logout).
Fix: Improved the way fCraft checks for ghost/leftover sessions. Thanks to wootalyzer.
*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: 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: 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: 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: Added delay between recurring calls to PlayerDB.Save, AutoRankAll, and DoGC - to balance load.
Fix: Fixed rankChangeType not being updated.
*Fix: Fixed rankChangeType not being updated.
Fix: Fixed some typos reported by tvc.  
*Fix: Fixed some typos reported by tvc.  
Change: Added "/uf" as an alias for "/unfreeze", by popular demand.  
*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: Modified PlayerDB not to use ReaderWriterLockSlim, to avoid Mono issues with recursion.
Change: Renamed /editplayerinfo to /setinfo
*Change: Renamed /editplayerinfo to /setinfo
Change: Made enum values in AutoRank (CriterionType, ConditionField, ComparisonOperation, ConditionScopeType, RankChangeType) case-insensitive.
*Change: Made enum values in AutoRank (CriterionType, ConditionField, ComparisonOperation, ConditionScopeType, RankChangeType) case-insensitive.
Change: Added a reference to /baninfo in /info
*Change: Added a reference to /baninfo in /info
Change: Made DetectMovementPacketSpam warn players instead of kicking.
*Change: Made DetectMovementPacketSpam warn players instead of kicking.


===0.492===
===0.492===
Feature: Added EditPlayerDB permission. This permission affects the upcoming AutoRank commands, /editplayerinfo, and ability to promote/demote/ban unrecognized players.
*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: 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: 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: 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).
*Feature: /info command is augmented with new stats (if available).
Fix: Fixed ellipsoid command calculating volume incorrectly for draw limit checks.
*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 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: Fixed PM recipient's name not getting logged properly.
Fix: Previously-unseen players no longer have their FirstLoginDate, LastLoginDate, or TimesVisited set.
*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.
*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: 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:
*Change: PlayerDB.txt format changes:
   - MaxFieldCount raised to 36
   - MaxFieldCount raised to 36
   - New fields added: UID (Int32), RankChangeType (enum, serialized as Int32), LastKickDate (DateTime), LastSeen (DateTime), BlocksDrawn (Int64), LastKickBy (string), LastKickReason (string).
   - New fields added: UID (Int32), RankChangeType (enum, serialized as Int32), LastKickDate (DateTime), LastSeen (DateTime), BlocksDrawn (Int64), LastKickBy (string), LastKickReason (string).
Line 677: Line 677:
   - If LastIP==IPAddress.None, empty string is saved instead of "255.255.255.255".
   - If LastIP==IPAddress.None, empty string is saved instead of "255.255.255.255".
   - DateTime and TimeSpan format shortened to exclude microseconds. See PlayerDB.ToCompactString() for details.
   - DateTime and TimeSpan format shortened to exclude microseconds. See PlayerDB.ToCompactString() for details.
Change: AutoRank improvements (disabled in stable builds):
*Change: AutoRank improvements (disabled in stable builds):
   - Added /editplayerinfo command for easy editing of PlayerDB.
   - Added /editplayerinfo command for easy editing of PlayerDB.
   - Made AutoRank check players in-login (to accelerate promotion).
   - Made AutoRank check players in-login (to accelerate promotion).
Line 688: Line 688:


===0.491===
===0.491===
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 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
*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: 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: Fixed a bug in /info that displayed incorrect "total time on server".
Fix: Per-rank permission checks for /freeze now apply as intended
*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.
*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)
*Change: Added IRCThreads config key (default: 1, allowed range: 1-3)


===0.490===
===0.490===
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.
*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 /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: 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.
*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: 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/
*Change: Restructured SVN. Stable code is now always in /trunk/


===0.487===
===0.487===
Feature: Added contextual help (tooltips) for all of ConfigTool. Help for "Add World" popup is coming in next version.
*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
*Feature: Added rank limits for Freeze permission
Fix: Fixed /mute being unusable from console.
*Fix: Fixed /mute being unusable from console.
Change: Removed ViewOthersInfo requirement from /sinfo
*Change: Removed ViewOthersInfo requirement from /sinfo
Change: Added ViewOthersInfo requirement to /where
*Change: Added ViewOthersInfo requirement to /where
Change: Improvements to IRC tab layout in ConfigTool.
*Change: Improvements to IRC tab layout in ConfigTool.


===0.486===
===0.486===
Quick fix for IRC Bot bug that made server unconnectable.
*Quick fix for IRC Bot bug that made server unconnectable.


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


===0.484===
===0.484===
Feature: Added a way for IRC bot to use registered nicknames.
*Feature: Added a way for IRC bot to use registered nicknames.
Feature: /banall-related kicks are now announced in chat.
*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: /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.
*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 crash in ConfigTool if announcements were disabled.
Fix: Fixed /banall not matching IPs properly, and not counting kicks towards PlayerInfo.
*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 ConfigUI not shutting down properly if Server.Init() or Server.Start() failed.
Fix: Fixed Config.LoadLogOptions() always leaving Debug enabled.
*Fix: Fixed Config.LoadLogOptions() always leaving Debug enabled.
Fix: Added Process.GetCurrentProcess().Refresh() to ServerInfo to improve accuracy of /sinfo stat reporting.
*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: Improved /wsave and /wload path handling on non-Windows platforms.
Fix: Replaced some potentially unsafe string concatenation in Player.Message() with proper formatting.
*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: Attempting a workaround for Mono memory leak in World.UnloadMap
Fix: Fixed ranks from pre-0.480 configs being loaded in wrong order. Sorry!
*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: 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: 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: Removed unused IRCBotQuitMsg config key, and added IRCRegisteredNick, IRCNickServ, and IRCNickServMessage keys.
Change: Added a popup with crash information to ConfigTool.
*Change: Added a popup with crash information to ConfigTool.
Change: Made announcements disabled by default.
*Change: Made announcements disabled by default.


===0.483===
===0.483===
Feature: Myne/MyneCraft/Hyvebuild/iCraft maps can now be loaded from ConfigTool's "Add World" dialog.
*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 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).
*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: 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.
*Change: Hidden players can now receive PMs. The sender still gets the "No player found" message, but PMs are actually sent.


===0.482===
===0.482===
Feature: Added new command aliases: "f" for "freeze", and "pat" for "patrol".
*Feature: Added new command aliases: "f" for "freeze", and "pat" for "patrol".
Fix: Fixed typos in mute-related messages.
*Fix: Fixed typos in mute-related messages.
Fix: Added missing triggers for OnPlayerListChanged event.
*Fix: Added missing triggers for OnPlayerListChanged event.
Fix: Fixed /reloadconfig not changing several variables (like colors).
*Fix: Fixed /reloadconfig not changing several variables (like colors).
Fix: Fixed antigrief defaulting to 35/5 (instead of unmetered).
*Fix: Fixed antigrief defaulting to 35/5 (instead of unmetered).
Fix: Fixed heartbeat counting hidden players.
*Fix: Fixed heartbeat counting hidden players.
Fix: Fixed a rare ObjectDisposedException crash on shutdown when running fCraftUI.
*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: 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 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.
*Change: Improved the way PlayerDB saving is triggered. New schedule reduces overall disk use and reduces possible data loss in case of crashes.


===0.481===
===0.481===
Fixed a bug in Rank deserializer that set antiGriefBlock=antiGriefSeconds (messing up antigrief permissions).
*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".
*Fixed a few more references to "player class" terminology instead of "rank".


===0.480===
===0.480===
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: 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.
*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: 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: Improved fCraftUI responsiveness on-startup.
Fix: Fixed several cases of Worlds tab going out-of-sync with the ranks tab.
*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: /wremove now always saves the map before unloading.
Fix: Fixed Console being affected by chat spam/flood checks.
*Fix: Fixed Console being affected by chat spam/flood checks.
Fix: Fixed /zinfo not showing any separators between player names.
*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 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 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: 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: 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.
*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: 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: 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: 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: 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: 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:
*Change: Made several changes to improve disconnect detection:
   - Added occasional pings (every 5 seconds or so, depending on activity/inactivity).
   - Added occasional pings (every 5 seconds or so, depending on activity/inactivity).
   - Reduced socket send/receive timeout from 12 to 10 seconds.
   - Reduced socket send/receive timeout from 12 to 10 seconds.
   - Increased socket polling interval to improve performance.
   - 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.
*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.
*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.
*Optimization: Made IsoCat rendering faster, and made draw commands use less CPU.


===0.475===
===0.475===
Feature: /ztest now distinguishes between being allowed/denied by rank/class vs by whitelist/blacklist.
*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 being unable to change rank/class restrictions with /zedit
Fix: Fixed a bug that reported wrong average CPU usage
*Fix: Fixed a bug that reported wrong average CPU usage
Fix: Fixed a crash on saving in ConfigTool, related to new PatrolledClass config key.
*Fix: Fixed a crash on saving in ConfigTool, related to new PatrolledClass config key.


===0.474===
===0.474===
Feature: "/mute" command to temporarily stop players from chatting. A new class permission (Mute) is added, granted to op+ by default.
*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: "/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.
*Feature: Added CPU usage information and loaded world count to /sinfo.
Fix: Added a way to edit "PatrolledClass" from ConfigTool.
*Fix: Added a way to edit "PatrolledClass" from ConfigTool.
Fix: Fixed zone whitelist/blacklist not updated correctly when edited.
*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: 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: 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: 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: 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: Made "server shutting down" packets deliver more reliably (but still not guaranteed).
Fix: Fixed Console possibly not seeing hidden players.
*Fix: Fixed Console possibly not seeing hidden players.
Change: Added a basic file check to AutoLauncher
*Change: Added a basic file check to AutoLauncher
Change: Added error logging and crash reporting to Server.Shutdown
*Change: Added error logging and crash reporting to Server.Shutdown
API: Renamed Server.ShutdownStart to Server.ShutdownBegin (for consistency).
*API: Renamed Server.ShutdownStart to Server.ShutdownBegin (for consistency).


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


===0.472===
===0.472===
Feature: Added /cut command
*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 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: 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.
*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: 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: 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: 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 client-crash in /zedit when changing class.
Fix: Fixed possible corruption of edited zones upon map saving.
*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: 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: 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.
*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: Added less threatening error messages to IRC bot on network errors (SocketException and IOException).
Change: Disabled movement handling code while changing maps.
*Change: Disabled movement handling code while changing maps.
Refactor: Merged StandardCommands and ImportCommands into AdminCommands
*Refactor: Merged StandardCommands and ImportCommands into AdminCommands


===0.471===
===0.471===
Feature: Added ability to specify the server's IP (to bind to) manually, for machines with multiple NICs. A new config key "IP" (default: 0.0.0.0/automatic) is added. This will also fix problems with heartbeats being sent from a different IP.
*Feature: Added ability to specify the server's IP (to bind to) manually, for machines with multiple NICs. A new config key "IP" (default: 0.0.0.0/automatic) 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 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 a case with kicked players' connections not being terminated at once (thanks to wootalyzer).
Fix: Fixed several bugs in hide/unhide functionality.
*Fix: Fixed several bugs in hide/unhide functionality.
Fix: Fixed a rare crash in AddWorldPopup related to missing maps for existing worlds.
*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: 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).
*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: ConfigTool fields now provide better feedback if validation fails.
Change: Changed heartbeat interval to 40 seconds (down from 50).
*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: 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.
*Change: Made fatal error messages in fCraftConsole print in red. Better color support coming soon.


===0.470===
===0.470===
Feature: Personal zones - per-zone whitelist and blacklist of individual players. The lists can now be defined with /zadd and edited with /zedit.
*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 cave/ore generator from Omen (BETA).
Feature: Added "/maps" and "/levels" as aliases for "/worlds".
*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: 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.
*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: 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 hidden players being counter towards /players total.
Fix: Fixed a potential crash in /wflush when using on unloaded maps.
*Fix: Fixed a potential crash in /wflush when using on unloaded maps.
Fix: Doing /banip or /banall on unrecognized players no longer ip-bans 255.255.255.255. Old IPBanList entries relating to 255.255.255.255 will be automatically discarded.
*Fix: Doing /banip or /banall on unrecognized players no longer ip-bans 255.255.255.255. Old IPBanList entries relating to 255.255.255.255 will be automatically discarded.
Fix: Fixed /replace command uses not being logged.
*Fix: Fixed /replace command uses not being logged.
Fix: Fixed /worlds command not showing world count.
*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 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 "/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.
*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: Changed default name for "/flip" command to "/mirror", and fixed command's help. Either term still works.
Change: Added more block name aliases:
*Change: Added more block name aliases:
   - Air: delete, erase
   - Air: delete, erase
   - Stone: cement, concrete
   - Stone: cement, concrete
   - Grass: gras (common typo)
   - Grass: gras (common typo)
   - Obsidian: onyx
   - Obsidian: onyx
Change: Improved formatting of /players, /worlds, and draw command messages.
*Change: Improved formatting of /players, /worlds, and draw command messages.


===0.463===
===0.463===
Fix: Fixed special colors showing up even if ClassColorsInChat is disabled.
*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.
*Fix: Fixed potential client-crash in World.SendToAll(), and related client-crash in lock/unlock.


===0.462===
===0.462===
Fix: The "OK" button in AddWorldPopup no longer stays grayed out.
*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 "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 a crash in /bring when used without any parameters.
Fix: Fixed Server.UrlEncode not escaping 0x00-0x0F characters properly.
*Fix: Fixed Server.UrlEncode not escaping 0x00-0x0F characters properly.
Change: Slightly reduced default tree density in MapGenerator.
*Change: Slightly reduced default tree density in MapGenerator.


===0.461===
===0.461===
Feature: New EXPERIMENTAL "/reloadconfig" command, and associated ReloadConfig permission. Use with caution!
*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 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 if /freeze or /unfreeze is used without arguments.
Fix: Fixed player crash on FormatException in /zones and Server.ShowPlayerConnectedMessage.
*Fix: Fixed player crash on FormatException in /zones and Server.ShowPlayerConnectedMessage.
Fix: Fixed potential player crash if LimitOneConnectionPerIP is enabled.
*Fix: Fixed potential player crash if LimitOneConnectionPerIP is enabled.


===0.460===
===0.460===
Feature: Added ShowPlayerConnectedMessage and ClassColorsInWorldNames settings to config.
*Feature: Added ShowPlayerConnectedMessage and ClassColorsInWorldNames settings to config.
Feature: Added /measure command.
*Feature: Added /measure command.
Feature: Class colors and prefixes are now applied consistently EVERYWHERE.
*Feature: Class colors and prefixes are now applied consistently EVERYWHERE.
Feature: Banned players now see their ban reason/memo when they get kicked.
*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: 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: 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 new blocktype name aliases: "solid", "golden", "halfstep", "halfblock", "steps".
Feature: Added player count for each class in /classes
*Feature: Added player count for each class in /classes
Fix: Fixed wrong "MaxBackupsSize" range in ConfigTool.
*Fix: Fixed wrong "MaxBackupsSize" range in ConfigTool.
Fix: MaxBackupsSize setting is now applied correctly.
*Fix: MaxBackupsSize setting is now applied correctly.
Fix: IRC color codes are now stripped from forwarded messages.
*Fix: IRC color codes are now stripped from forwarded messages.
Fix: IRC bot now uses ServerName for "real name".
*Fix: IRC bot now uses ServerName for "real name".
Fix: Formatting improved in many error messages.
*Fix: Formatting improved in many error messages.
Fix: Commas in ban/unban/promote/demote reasons no longer cause problems with PlayerDB.
*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.
*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: Added 5-second delay between retries in AutoLauncher
Change: "Player connected" message condensed to a single line by absorbing "joined world" message.
*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: 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.
*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: Reduced bandwidth use with an adaptive movement packet skipping algorithm. Should reduced outbound traffic by at least 15%.
Optimization: BlockUpdate memory usage slightly reduced.
*Optimization: BlockUpdate memory usage slightly reduced.


===0.455===
===0.455===
Feature: AutoLauncher (BETA) allows restarting the fCraftConsole server if it crashed. Although it honestly shouldn't crash at all!
*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: 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: 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: 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: 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.
*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.
*Change: Improved OS detection in crash reporter.


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


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


===0.452===
===0.452===
Feature: New /replacenot command allows replacing all blocks EXCEPT the specified one.
*Feature: New /replacenot command allows replacing all blocks EXCEPT the specified one.
Feature: New /flip and /rotate commands to manipulate copied blocks.
*Feature: New /flip and /rotate commands to manipulate copied blocks.
Feature: /players list is now in alphabetical order.
*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: 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 /gen command crashing players if coordinates are typed in before theme/template.
Fix: Fixed /e ellipsoids coming out crooked.
*Fix: Fixed /e ellipsoids coming out crooked.
Fix: "joined for the first time" messages are now shown correctly.
*Fix: "joined for the first time" messages are now shown correctly.
Fix: Fixed /replace not working correctly with /undo
*Fix: Fixed /replace not working correctly with /undo
Fix: Made IRC bot strip nonprintable characters from messages, and ignore empty messages.
*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.
*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 some help messages.
Change: Improved IRC error reporting.
*Change: Improved IRC error reporting.
Change: Added world name back to "Almost there..." join screen.
*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)
*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).
*Optimization: Slightly reduced memory usage of massive drawing commands (over undo limit).


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


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


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


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


===0.443===
===0.443===
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: 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: Added more customization options for colors: PrivateMessageColor and IRCMessageColor in Config.
Feature: /players list is now sorted alphabetically.
*Feature: /players list is now sorted alphabetically.
Feature: Added "Check Port" button to ConfigTool to see if port is open. Uses www.utorrent.com/testport
*Feature: Added "Check Port" button to ConfigTool to see if port is open. Uses www.utorrent.com/testport
Feature: Added "Play" button to fCraftUI to open server URL in the browser
*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: 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.
*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: 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 possible crash in Map.CheckZones() on maps created with /gen
Fix: Fixed compilation issue with "tileset.png" on case-sensitive filesystems.
*Fix: Fixed compilation issue with "tileset.png" on case-sensitive filesystems.
Fix: Fixed class-wide messages not wrapping correctly.
*Fix: Fixed class-wide messages not wrapping correctly.
Optimization: antigrief and antispam checking overhead reduced.
*Optimization: antigrief and antispam checking overhead reduced.


===0.442===
===0.442===
Fix: Addresses a security issue.
*Fix: Addresses a security issue.
Fix: "OK" button in AddWorldPopup is now always disabled if no map is set.
*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: "Feature size" label is now updater correctly when map dimensions are changed.
Fix: Added missing player notifications for /undo and /cancel commands.
*Fix: Added missing player notifications for /undo and /cancel commands.
Change: MapGenerator's default map size changed to 128x128x80
*Change: MapGenerator's default map size changed to 128x128x80


===0.441===
===0.441===
Feature: Added cuboid limits to /cinfo
*Feature: Added cuboid limits to /cinfo
Fix: Fixed a bug in BoundingBox that made /paste and zones behave incorrectly
*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 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 "flatgrass" being broken when using "/gen"
Fix: Fixed "/ban" rank checks affecting "/unban"
*Fix: Fixed "/ban" rank checks affecting "/unban"
Change: Optimized zone permission checks
*Change: Optimized zone permission checks


===0.440===
===0.440===
FEATURE: New MapGenerator with tons of options. You can also save/load custom templates for it.
*FEATURE: New MapGenerator with tons of options. You can also save/load custom templates for it.
FEATURE: AddWorldPopup interface overhaul.
*FEATURE: AddWorldPopup interface overhaul.
FEATURE: JTE, D3, and Myne/Mynecraft/Hyvebuild/iCraft map format converters added.
*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: 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: 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: 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 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 5 new fields to PlayerDB: previousClass, classChangeReason, timesKicked, timesKickedOthers, timesBannedOthers.
Feature: Added a lot of new information to /info.
*Feature: Added a lot of new information to /info.
Feature: You can now save map preview images (isometric) from AddWorldPopup.
*Feature: You can now save map preview images (isometric) from AddWorldPopup.
Feature: ConfigTool now shows warnings about any errors logged during Config.Load
*Feature: ConfigTool now shows warnings about any errors logged during Config.Load
Fix: Yet another workaround for VerifyNames false negatives (thanks to SpaceManiac).
*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: 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: 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: 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: 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: 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: Fixed blocktype names being case-sensitive.
Fix: Added a more informative message when idle players are kicked.
*Fix: Added a more informative message when idle players are kicked.
Fix: Fixed undo buffer not getting cleared when doing paste/pasteonly
*Fix: Fixed undo buffer not getting cleared when doing paste/pasteonly
Fix: Fixed /waccess exception kicking players.
*Fix: Fixed /waccess exception kicking players.
Fix: 100% Empty maps no longer crash AddWorldPopup with OutOfMemoryException
*Fix: 100% Empty maps no longer crash AddWorldPopup with OutOfMemoryException
Fix: Fixed "player is already banned" message when doing /BanAll
*Fix: Fixed "player is already banned" message when doing /BanAll
Fix: Fixed no public message appearing 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: Fixed cuboid/ellipsoid/cuboidh logging blocktype code instead of blocktype name.
Fix: Improved the message that's shown when idle players are kicked.
*Fix: Improved the message that's shown when idle players are kicked.
Fix: Documented ability to /tp to specific coordinates.
*Fix: Documented ability to /tp to specific coordinates.
Fix: AddWorldPopup no longer crashes if user closes "Load Map" dialog before selecting any file.
*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: 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: Fixed crash in AddWorldPopup.AsyncLoad() if map loading failed.
Fix: LegacyRankMapping is now parsed correctly
*Fix: LegacyRankMapping is now parsed correctly
Fix: Renaming a class no longer causes "Worlds" tab dropdown menus to go out-of-sync.
*Fix: Renaming a class no longer causes "Worlds" tab dropdown menus to go out-of-sync.
Change: AddWorldPopup preview image quality improved.
*Change: AddWorldPopup preview image quality improved.
Change: Updated to newest version of NBTag library.
*Change: Updated to newest version of NBTag library.
Change: Frozen players can no longer build/delete.
*Change: Frozen players can no longer build/delete.
Change: Removed public "undo" message, added log message instead.
*Change: Removed public "undo" message, added log message instead.
Change: Removed AnnounceUnverifiedNames settings.
*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).
*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).


===0.435===
===0.435===
Feature: Added /copy, /paste, and /pasteonly commands. Rotation coming soon.
*Feature: Added /copy, /paste, and /pasteonly commands. Rotation coming soon.
Feature: Added CopyAndPaste permission, granted to op and owner by default.
*Feature: Added CopyAndPaste permission, granted to op and owner by default.
Feature: Added MapGenType.Cliffs - similar to Mountains type, but with cliffs!
*Feature: Added MapGenType.Cliffs - similar to Mountains type, but with cliffs!
Fix: Fixed /paint command
*Fix: Fixed /paint command
Fix: Fixed /baninfo now showing any information if used without parameters.
*Fix: Fixed /baninfo now showing any information if used without parameters.
Change: Replaced surface rocks in MapGenTheme.Hell with Obsidian.
*Change: Replaced surface rocks in MapGenTheme.Hell with Obsidian.


===0.434===
===0.434===
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.
*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.
*Change: "step" added as an alias for Stair block. "doublestep" added as an alias for DoubleStair.


===0.433===
===0.433===
Feature: /winfo now shows who locked/unlocked the map, and how long ago.
*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: Fixed a error message that showed up when announcements.txt was blank.
Fix: Permission check added back to lock/unlock commands.
*Fix: Permission check added back to lock/unlock commands.
Fix: "mapinfo" added back as alias for /winfo
*Fix: "mapinfo" added back as alias for /winfo
Fix: Fixed locked maps not getting unloaded when all players left
*Fix: Fixed locked maps not getting unloaded when all players left


===0.432===
===0.432===
Fix: List of worlds printed by /worlds is now sorted alphabetically.
*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.
*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.


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


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


===0.429===
===0.429===
Feature: Command-handler infrastructure has been redesigned. This will allow much more flexibility for devs and plugin makers later.
*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: "/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: /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: Help entries added for /zedit, /mark, /version, /rules, and /say.
Feature: ConfigTool World tab columns are now sortable.
*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 "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 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: 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: FormatException crash fixed that caused whole server to go down instead of a player thread.
Fix: Several draw-related bugs and crashes fixed.
*Fix: Several draw-related bugs and crashes fixed.
Fix: Fixed crash in /winfo when used on unloaded worlds.
*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 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.
*Fix: Fixed a bug in ConfigTool that didn't update AntiGriefSeconds properly when changing between classes.
Change: Many /help entries have been improved.
*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: 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).
*Change: Added /spawn as an alias for /tp (missed from last release notes).




===0.428===
===0.428===
Feature: Line wrapping. Yes, finally.
*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 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: 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).
*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: 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 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.
*Fix: Fixed maps generated with "Realistic terrain" (MapGenerator) having an empty layer at the bottom of the map.
Change: Default classes have been tweaked:
*Change: Default classes have been tweaked:
         - regular can now use draw commands
         - regular can now use draw commands
         - op can now lock/unlock
         - op can now lock/unlock
Change: Improved arrangement of Permission list items.
*Change: Improved arrangement of Permission list items.
Change: Removed obsolete ConfigKey variables AntigriefBlockCount and AntigriefBlockInterval
*Change: Removed obsolete ConfigKey variables AntigriefBlockCount and AntigriefBlockInterval




===0.427===
===0.427===
Feature: Added /zedit command for changing zone permissions after creation
*Feature: Added /zedit command for changing zone permissions after creation
Feature: New aliases for drawing commands: /c /e /h /r /m
*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: Fix for cuboid command kicking players with "Block.Undefined" if called with no optional BlockType parameter
Fix: Fixed zone definitions getting corrupted.
*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: 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 potential crash in /winfo when looking up unloaded worlds.
Fix: Fixed /zone allowing duplicate names, then kicking the client.
*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 /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 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
*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  
*Change: Fruitified fragmer's name  




===0.426===
===0.426===
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: 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: /replace command.
Feature: /undo command has been improved for more flexibility and better performance.
*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.
*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.
*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: New ConfigKeys: AnnouncementColor (default: green) and AnnouncementInterval (default: 5 minutes).
Change: Draw command stride increased to 16x16x16, for better theoretical performance.
*Change: Draw command stride increased to 16x16x16, for better theoretical performance.




===0.425===
===0.425===
Feature: Added hollow draw command (/cubh) and aliases (/cuboidh and /bhb)
*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: /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
*Feature: Added "Joined world WorldName" message that shows when changing worlds
Fix: Improved several /help entries
*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 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: 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
*Fix: Calling lock/unlock from console without a WorldName now shows a nicer error message
Change: Improved safety checks of /join command
*Change: Improved safety checks of /join command
Change: Added a catch-all exception handler into Server.MainLoop
*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 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: 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
*Change: Modified IPBanList to use the standard temp folder (instead of fCraft working path) for its temp files




===0.424===
===0.424===
Fix: Fixed /unhide and normal connection getting different messages
*Fix: Fixed /unhide and normal connection getting different messages
Fix: Fixed client crash when viewing /rules if the rule file has blank lines
*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: 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
*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: Moved the command list to /help commands
Change: Performance and thread-safety improvements to PlayerDB
*Change: Performance and thread-safety improvements to PlayerDB
Change: Disabled some more debugging code to avoid taking up unnecessary resources
*Change: Disabled some more debugging code to avoid taking up unnecessary resources




===0.423===
===0.423===
Feature: /importbans now also supports "banned-ip.txt"
*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: 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: 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: 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
*Feature: Reserved slots now work
Fix: Fixed a bug in fCraft.Server.LoadWorldListXML that could make all worlds hidden.
*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 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: "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: Added back IP logging for incoming connections
Fix: Fixed ConfigTool-generated maps not having correct spawn point
*Fix: Fixed ConfigTool-generated maps not having correct spawn point
Fix: Fixed /user showing both promote and demote messages at once
*Fix: Fixed /user showing both promote and demote messages at once
Fix: Removed references to old "/drawundo" command name in "/undo" messages
*Fix: Removed references to old "/drawundo" command name in "/undo" messages
Fix: Fixed "Unrecognized entry ignored: LegacyRankMapping =" warning
*Fix: Fixed "Unrecognized entry ignored: LegacyRankMapping =" warning
Change: Made /importbans and /importranks save PlayerDB at once
*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: 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: 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()  
*Change: Added additional error checks to Map.Backup()  




===0.422===
===0.422===
Feature: Further improved network performance by introducing nonblocking (lock-free) data structure to packet output buffer
*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: 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: Added back missing messages when doing /user on offline users
Fix: Fixed player name color not being updated when their class changes
*Fix: Fixed player name color not being updated when their class changes
Fix: Added missing /help entries for /importbans and /importranks
*Fix: Added missing /help entries for /importbans and /importranks
Change: Improved help messages for /lock, /unban, /unbanip, /undo, /wload, /wmain, and /wremove
*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
*Change: Tweaked default values of BlockUpdateThrottling and maxBlockUpdatesPerTick for maximum lag-free performance




===0.421===
===0.421===
Feature: Added the ability to promote/demote offline and unseen (not in PlayerDB) players
*Feature: Added the ability to promote/demote offline and unseen (not in PlayerDB) players
Feature: Added the ability to ban unseen 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: 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
*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 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 ConfigUI input box not aligning properly when window is resized
Fix: Fixed "flatgrass" generated maps being 1 block off vertically
*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: 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: 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)
*Change: fCraftUI log now displays the last 2000 lines (up from 1000 lines)




===0.420===
===0.420===
Feature: New "Worlds" tab in ConfigTool for managing your world list
*Feature: New "Worlds" tab in ConfigTool for managing your world list
Feature: Isometric map previews and map generation in ConfigTool
*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: 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: Added LimitOneConnectionPerIP option to config & configtool
Feature: Worlds can now be hidden from the /worlds list
*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: 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: 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: 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.
*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: 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: Limits on the /kick command now apply correctly
Fix: Fixed /wbuild and /waccess showing wrong messages
*Fix: Fixed /wbuild and /waccess showing wrong messages
Fix: Fixed hidden players unable to build due to grief protection
*Fix: Fixed hidden players unable to build due to grief protection
Fix: Added /nick and /whois entries to /help
*Fix: Added /nick and /whois entries to /help
Fix: Removed the ability to call draw commands from console (caused crash)
*Fix: Removed the ability to call draw commands from console (caused crash)
Fix: Fixed /lava checking PlaceWater permission instead of PlaceLava
*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: 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: 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: 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: 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: /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: Player's nicknames (as set by /nick) are applied correctly and preserved when changing worlds
Fix: Added missing checks for "Chat" permissions
*Fix: Added missing checks for "Chat" permissions
Fix: Color buttons in ConfigTool now show correct background color under Mono
*Fix: Color buttons in ConfigTool now show correct background color under Mono
Fix: Fixed help entry to /freeze showing incorrect information
*Fix: Fixed help entry to /freeze showing incorrect information
Fix: Corrected tab order in all ConfigTool forms
*Fix: Corrected tab order in all ConfigTool forms
Change: Added /blb as another alias for /cuboid
*Change: Added /blb as another alias for /cuboid
Change: Removed ReservedSlotBehavior config key
*Change: Removed ReservedSlotBehavior config key
Change: Disabled word wrapping in rules.txt editor popup
*Change: Disabled word wrapping in rules.txt editor popup
Change: /unhide now resets the player's nick
*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: 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: 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: Heartbeat salt generation (used to verify names) is now more secure
Change: Removed CanPlaceHardenedBlocks from permission list
*Change: Removed CanPlaceHardenedBlocks from permission list
Change: All map generator terrain types have been tweaked for improved appearence
*Change: All map generator terrain types have been tweaked for improved appearence
Change: Centered all ConfigTool popup windows (AddWorldPopup, ColorPicker, DeleteClassPopup, TextEditorPopup)
*Change: Centered all ConfigTool popup windows (AddWorldPopup, ColorPicker, DeleteClassPopup, TextEditorPopup)
Change: Hid unneeded icons and buttons from ConfigTool popups
*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: 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: 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
*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 consistency in code naming conventions, especially in IRC code
Refactor: Improved code organization in many areas
*Refactor: Improved code organization in many areas




===0.410===
===0.410===
Implemented per-world access and build permissions.
*Implemented per-world access and build permissions.
Changed worlds.txt format to worlds.xml. Your old worlds.txt file will be converted automatically.
*Changed worlds.txt format to worlds.xml. Your old worlds.txt file will be converted automatically.
New world-related commands:
*New world-related commands:
   /wmain changes the main world
   /wmain changes the main world
   /waccess and /wbuild allow setting per-world permissions
   /waccess and /wbuild allow setting per-world permissions
Line 1,277: Line 1,277:
   /wrename allows renaming worlds without reloading
   /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.
  /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.
*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.
*Added new and previously-missing (/lockall, /unlockall, /where, /me, /rules, /setspawn) commands to /help.
Disabled verify-names check for localhost (127.0.0.1) when running in Balanced mode.
*Disabled verify-names check for localhost (127.0.0.1) when running in Balanced mode.
When player is denied access to some command, server now names the specific permission that's needed.
*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.
*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.
*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.
*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.
*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.  
  "default map" is now referred to as "main world" for consistency.  
Improved garbage collection.
*Improved garbage collection.




===0.405===
===0.405===
Added back support for vanilla (server_level.dat) maps.
*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 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.
*Fixed visual player list not updating in fCraftUI.
Added /players command to list ALL players on the server (in all worlds)
*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.
*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: 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.
*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: 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: 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.
*IRC: Fixed a bug with infinite reconnects on receiving error 433 Nickname already in use.
Zones: Changed behavior of overlapping zones:
*Zones: Changed behavior of overlapping zones:
   - Before: To touch a block, AT LEAST ONE zone has to allow it
   - Before: To touch a block, AT LEAST ONE zone has to allow it
   - Now: To touch a block, ALL ZONES have 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 /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: 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).
*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.
*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.
*Added better error handling to Map.Save() in case the target file is not writable.
Updated /help entries for /lock, /unlock, and /load commands.
*Updated /help entries for /lock, /unlock, and /load commands.




===0.404===
===0.404===
Fixed zone borders being off by 1 block.
*Fixed zone borders being off by 1 block.
Fixed a rare crash on shutdown.
*Fixed a rare crash on shutdown.
Fixed heartbeat reporting incorrect port number to heartbeat if the port specified in config was not available.
*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:
*Adjusted default class permissions slightly, by popular demand:
  - regulars can now place Water and Lava
  - regulars can now place Water and Lava
  - ops can now use draw commands
  - 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: 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.
*IRC: Fixed a possible crash in IRCComm, related to static initializers.
ConfigTool: Fixed many bugs in permission checkbox list.
*ConfigTool: Fixed many bugs in permission checkbox list.
ConfigTool: Added visual editor for rules.txt
*ConfigTool: Added visual editor for rules.txt
ConfigTool: Added stub tab for IRC settings (coming soon).
*ConfigTool: Added stub tab for IRC settings (coming soon).




===0.403===
===0.403===
Fixed spawnpoint being read incorrectly when using /load.
*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."
*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 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 /info on offline players from console.
Fixed a potential crash when using /gen 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.
*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.
*Started logging IPs of connections that try sending corrupted or malicious handshake packets.




===0.402===
===0.402===
Added back /load command, and hooked up MCC. Currenly supported: fCraft/fcm, MCSharp/lvl, indev/mclevel, MinerCPP and LuaCraft (dat). Vanilla support coming soon.
*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 worlds being unloaded before all block updates are processed (thus aborting draw commands).
Fixed several potential multiworld-related crashes and freezes.
*Fixed several potential multiworld-related crashes and freezes.
Made Server.UnregisterPlayer check ALL worlds to remove the player, not just most recent one.
*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 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: 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: !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.
*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.
*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).
*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.
*Allowed players to /join the world that they are already on.




===0.401===
===0.401===
  *IDLE/AFK CHECKING* This is configurable per-class.
  *IDLE/AFK CHECKING* This is configurable per-class.
Added /version command, and added revision to the version string.
*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.  
*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.  
*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.
*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 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.
*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.
*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 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.
*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]".
*Handshake packet is now written when doing /join, to replace MOTD with a more informative "Now loading [worldname]".




===0.400===
===0.400===
  *MULTIWORLD*. It's finally here. See /help for information on new commands: /worlds, /wload, /join
  *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.
*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.
  *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.
*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.
  *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 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).
*Added /compass command (aka /where).
Fixed players sometimes not seeing their /kick message.
*Fixed players sometimes not seeing their /kick message.
Added a way to teleport to specific coordinates (/tp x y h)
*Added a way to teleport to specific coordinates (/tp x y h)
Fixed heartbeats timing out when running fCraft under Mono.
*Fixed heartbeats timing out when running fCraft under Mono.
Fixed Config.ApplyConfig setting the wrong server throttling variables.
*Fixed Config.ApplyConfig setting the wrong server throttling variables.
Fixed air blocks appearing underwater when using /gen
*Fixed air blocks appearing underwater when using /gen
Tweaked /gen parameters to make "island" a bit less ugly.
*Tweaked /gen parameters to make "island" a bit less ugly.
Updated text in fCraftConsole.
*Updated text in fCraftConsole.


=0.3xx=
=0.3xx=
===0.330===
===0.330===
Added /cuboid and /ellipsoid drawing commands.
*Added /cuboid and /ellipsoid drawing commands.
Improved memory usage.
*Improved memory usage.
Added "Draw" permission, and made /draw check "DeleteAdmincrete" permission when replacing blocks, and removed unused "PlaceGlitchedSand" permission.
*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.
*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.
*Fixed bug that deleted ALL backups when you check "don't delete old backups." That was embarrassing.


===0.325===
===0.325===
Added an experimental low-latency mode (faster server response, but more bandwidth required).
*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.
*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.
*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.
*Fixed an issue with fCraftUI console log getting truncated in the wrong places.
Improved Mono compatibility (fixes HttpWebRequest failures).
*Improved Mono compatibility (fixes HttpWebRequest failures).


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


===0.323===
===0.323===
Fixed players not being able to delete admincrete after promotion.
*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 bug that allowed players to noclip into walls when using /tp or /bring.
Fixed a security issue with "VerifyNames: Balanced"
*Fixed a security issue with "VerifyNames: Balanced"
Added prototype of the security tab in ConfigTool (work in progress).
*Added prototype of the security tab in ConfigTool (work in progress).


===0.322===
===0.322===
Added a range check to Player.SetTile, to prevent certain types of grief bots.
*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 a bug where map spawnpoint did not change after doing /load.
Fixed some typos.
*Fixed some typos.


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


===0.320===
===0.320===
Finally last fix for the disconnect problem. Sorry about that.
*Finally last fix for the disconnect problem. Sorry about that.


===0.319===
===0.319===
Quick fix for disconnect problem.
*Quick fix for disconnect problem.


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


===0.317===
===0.317===
Optimized handling of player movement and some block/tile updates, making servers more responsive and less laggy.
*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 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 a case where a Session object was not properly disposed.
Fixed resizing issue in UpdateWindow and reduced connection timeout in Updater
*Fixed resizing issue in UpdateWindow and reduced connection timeout in Updater
Disabled ShowPrefixesInChat and ShowPrefixesInList by default (breaks skin support)
*Disabled ShowPrefixesInChat and ShowPrefixesInList by default (breaks skin support)
Added Player.Send, a safe wrapper for Player.session.Send
*Added Player.Send, a safe wrapper for Player.session.Send
Fixed /tp, /bring, and /setspawn commands that were broken in the last revision.
*Fixed /tp, /bring, and /setspawn commands that were broken in the last revision.
Fixed ConfigTool not saving "IsPublic" setting correctly.
*Fixed ConfigTool not saving "IsPublic" setting correctly.


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


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


===0.314===
===0.314===
Added AutomaticUpdates option.
*Added AutomaticUpdates option.
Integrated the color picker to ConfigTool.
*Integrated the color picker to ConfigTool.
Improved hacking detection.
*Improved hacking detection.


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


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


===0.311===
===0.311===
Preview version of automatic updater.
*Preview version of automatic updater.


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


===0.305===
===0.305===
removed config.xml from svn.
*removed config.xml from svn.


===0.304===
===0.304===
More potential crashes fixed.
*More potential crashes fixed.


===0.303===
===0.303===
Fixed a couple potential crashes in ConfigTool and Config.DefineClass
*Fixed a couple potential crashes in ConfigTool and Config.DefineClass


===0.302===
===0.302===
Fixed a few minor ConfigTool bugs.
*Fixed a few minor ConfigTool bugs.


===0.301===
===0.301===
Forgot to save config from World.cs after parsing. Minor update.
*Forgot to save config from World.cs after parsing. Minor update.


===0.300===
===0.300===
ConfigTool finished. Note that some of the options do not have an effect yet.
*ConfigTool finished. Note that some of the options do not have an effect yet.


=Before 0.3xx=
=Before 0.3xx=
Version history was not kept before this point.
*Version history was not kept before this point.

Revision as of 02:26, 20 October 2011

0.6xx

0.602

  • Feature: One-click paste commands are now the default. Two-click aligned paste commands are now known as pastex/pastenotx (or px/pnx)
  • Feature: Added /rb command (shortcut for /brush replacebrush + /c).
  • 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 (/spat) 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 /eh and /sph 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.

0.601

  • Fixed several issues with /undo and drawing commands.

0.600

  • 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 next target was improved.
  • Commands: Renamed Lock/Unlock 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, /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 /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, /bi, /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 minecraft.net 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: Made fCraft.sln default to "Release" configuration when loaded.
  • 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 ConfigTool.
  • 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 ConfigTool, 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 minecraft.net 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.

0.5xx

0.537

  • Fixed another heartbeat-related issue caused by minecraft.net updates.

0.536

  • 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 minecraft.net problems).
  • Change: Removed AutoLauncher.

0.535

  • Workaround for minecraft.net heartbeat changes.

0.534

  • 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.

0.533

  • 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.

0.532

  • 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).

0.531

  • 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 Minecraft.net 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%.

0.530

  • 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 10.0.0.0/8 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.

0.522

  • 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.

0.521

  • 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.

0.520

  • 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%

0.512

  • 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.

0.511

  • 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).

0.510_r489

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

0.510

  • 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.

0.506

  • 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.

0.505

  • 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.

0.504

  • Fixed a crash bug related to SecurityController.MinRank

0.503

  • 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.

0.502

  • Fix: Adjusted for yet another change in the way minecraft.net 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.

0.501

  • 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)

0.500

  • 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 "libMonoPosixHelper.so" 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

0.4xx

0.499

  • 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.

0.498

  • 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.

0.497

  • 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.

0.496

  • 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.

0.495

  • 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.

0.494

  • 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.

0.493

  • 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.

0.492

  • 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 "255.255.255.255".
 - 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

0.491

  • 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)

0.490

  • 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/

0.487

  • 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.

0.486

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

0.485

  • 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.

0.484

  • 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.

0.483

  • 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.

0.482

  • 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.

0.481

  • 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".

0.480

  • 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.

0.475

  • 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.

0.474

  • 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).

0.473

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

0.472

  • 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

0.471

  • Feature: Added ability to specify the server's IP (to bind to) manually, for machines with multiple NICs. A new config key "IP" (default: 0.0.0.0/automatic) 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.

0.470

  • 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 255.255.255.255. Old IPBanList entries relating to 255.255.255.255 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.

0.463

  • 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.

0.462

  • 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.

0.461

  • 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.

0.460

  • 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.

0.455

  • 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.

0.454

  • 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.

0.453

  • 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()

0.452

  • 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).

0.451

  • Feature: Improved the way fCraft handles fatal errors (crashes). Crash logs are now created more reliably.
  • Feature: Added automated crash reporting to fragmer.net (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.

0.450

  • 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.

0.445

  • IMPORTANT! Please update ASAP, a security 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

0.444

  • 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.

0.443

  • 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 www.utorrent.com/testport
  • 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.

0.442

  • 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

0.441

  • 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

0.440

  • 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).

0.435

  • 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.

0.434

  • 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.

0.433

  • 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

0.432

  • 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.

0.431

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

0.430

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

0.429

  • 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).


0.428

  • 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


0.427

  • 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


0.426

  • 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.


0.425

  • 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


0.424

  • 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


0.423

  • 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()


0.422

  • 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


0.421

  • 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)


0.420

  • 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


0.410

  • 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 (127.0.0.1) 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.


0.405

  • 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.


0.404

  • 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).


0.403

  • 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.


0.402

  • 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.


0.401

*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]".


0.400

*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.

0.3xx

0.330

  • 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.

0.325

  • 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).

0.324

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

0.323

  • 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).

0.322

  • 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.

0.321

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

0.320

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

0.319

  • Quick fix for disconnect problem.

0.318

  • 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).

0.317

  • 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.

0.316

  • 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.

0.315

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

0.314

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

0.313

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

0.312

  • 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.

0.311

  • Preview version of automatic updater.

0.310

  • 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.

0.305

  • removed config.xml from svn.

0.304

  • More potential crashes fixed.

0.303

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

0.302

  • Fixed a few minor ConfigTool bugs.

0.301

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

0.300

  • 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.