diff --git a/ConfigGUI/AddWorldPopup.cs b/ConfigGUI/AddWorldPopup.cs index e8f4ab7..0b4d821 100644 --- a/ConfigGUI/AddWorldPopup.cs +++ b/ConfigGUI/AddWorldPopup.cs @@ -411,7 +411,7 @@ static void MapDimensionValidating( object sender, CancelEventArgs e ) { void tName_Validating( object sender, CancelEventArgs e ) { if( fCraft.World.IsValidName( tName.Text ) && (!MainForm.IsWorldNameTaken( tName.Text ) || - (originalWorldName != null && tName.Text.ToLower() == originalWorldName.ToLower())) ) { + (originalWorldName != null && tName.Text.Equals(originalWorldName, StringComparison.OrdinalIgnoreCase))) ) { tName.ForeColor = SystemColors.ControlText; } else { tName.ForeColor = System.Drawing.Color.Red; diff --git a/ConfigGUI/MainForm.Adapter.cs b/ConfigGUI/MainForm.Adapter.cs index 6eab874..8c57f7e 100644 --- a/ConfigGUI/MainForm.Adapter.cs +++ b/ConfigGUI/MainForm.Adapter.cs @@ -96,7 +96,7 @@ void LoadWorldList() { XAttribute mainWorldAttr = root.Attribute( "main" ); if( mainWorldAttr != null ) { foreach( WorldListEntry world in Worlds ) { - if( world.Name.ToLower() == mainWorldAttr.Value.ToLower() ) { + if( world.Name.Equals(mainWorldAttr.Value, StringComparison.OrdinalIgnoreCase) ) { cMainWorld.SelectedItem = world.Name; break; } diff --git a/fCraft/Commands/BuildingCommands.cs b/fCraft/Commands/BuildingCommands.cs index cc12c8f..e5eeeb2 100644 --- a/fCraft/Commands/BuildingCommands.cs +++ b/fCraft/Commands/BuildingCommands.cs @@ -183,7 +183,7 @@ static void Door ( Player player, Command cmd ) { Door doorFound = null; lock ( player.World.Map.Doors.SyncRoot ) { foreach ( Door door in player.World.Map.Doors ) { - if ( door.Name.ToLower().Equals( doorName.ToLower() ) ) { + if ( door.Name.Equals( doorName, StringComparison.OrdinalIgnoreCase ) ) { doorFound = door; found = true; break; @@ -209,7 +209,7 @@ static void Door ( Player player, Command cmd ) { bool found = false; lock ( player.World.Map.Doors.SyncRoot ) { foreach ( Door door in player.World.Map.Doors ) { - if ( door.Name.ToLower().Equals( doorName.ToLower() ) ) { + if ( door.Name.Equals( doorName, StringComparison.OrdinalIgnoreCase ) ) { World doorWorld = WorldManager.FindWorldExact( door.World ); player.Message( "Door '{0}&S' was created by {1}&S at {2}", door.Name, door.Creator, door.Created ); @@ -336,7 +336,7 @@ static void DrawImageHandler ( Player player, Command cmd ) { static void DrawImgCallback ( Player player, Vector3I[] marks, object tag ) { string Url = ( string )tag; if ( Url.StartsWith( "++" ) ) Url = Url.Replace( "++", "i.imgur.com/" ); - if ( !Url.ToLower().StartsWith( "http://" ) ) Url = "http://" + Url; + if ( !Url.StartsWith( "http://", StringComparison.OrdinalIgnoreCase ) ) Url = "http://" + Url; player.MessageNow( "&HDrawImg: Downloading image from {0}", Url ); diff --git a/fCraft/Commands/MaintenanceCommands.cs b/fCraft/Commands/MaintenanceCommands.cs index efe3801..ad24678 100644 --- a/fCraft/Commands/MaintenanceCommands.cs +++ b/fCraft/Commands/MaintenanceCommands.cs @@ -112,17 +112,20 @@ DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY }; static void FixRealms ( Player player, Command cmd ) { - var Players = PlayerDB.PlayerInfoList; int Count = 0; - foreach ( World w in WorldManager.Worlds ) { - foreach ( PlayerInfo p in Players ) { - if ( p.Name == w.Name ) { - w.IsHidden = false; - w.IsRealm = true; - Count++; + player.Message( "Managing worlds..." ); + new System.Threading.Thread( new System.Threading.ThreadStart( delegate { + foreach ( World w in WorldManager.Worlds ) { + foreach ( PlayerInfo p in PlayerDB.PlayerInfoList ) { + if ( p == null || w == null ) return; + if ( p.Name == w.Name ) { + w.IsHidden = false; + w.IsRealm = true; + Count++; + } } } - } + } ) ).Start(); player.Message( "Converted {0} worlds to Realms", Count.ToString() ); } diff --git a/fCraft/Commands/WorldCommands.cs b/fCraft/Commands/WorldCommands.cs index 7855107..1a862ff 100644 --- a/fCraft/Commands/WorldCommands.cs +++ b/fCraft/Commands/WorldCommands.cs @@ -402,7 +402,7 @@ static void MessageBlock ( Player player, Command cmd ) { lock ( player.World.Map.MessageBlocks.SyncRoot ) { foreach ( MessageBlock MessageBlock in player.World.Map.MessageBlocks ) { - if ( MessageBlock.Name.ToLower().Equals( MessageBlockName.ToLower() ) ) { + if ( MessageBlock.Name.Equals( MessageBlockName, StringComparison.OrdinalIgnoreCase ) ) { MessageBlockFound = MessageBlock; found = true; break; @@ -420,7 +420,7 @@ static void MessageBlock ( Player player, Command cmd ) { player.Message( "Could not find MessageBlock as this world doesn't contain a MessageBlock." ); } } - } else if ( option.ToLower().Equals( "info" ) ) { + } else if ( option.Equals( "info", StringComparison.OrdinalIgnoreCase ) ) { string MessageBlockName = cmd.Next(); if ( MessageBlockName == null ) { @@ -431,7 +431,7 @@ static void MessageBlock ( Player player, Command cmd ) { lock ( player.World.Map.MessageBlocks.SyncRoot ) { foreach ( MessageBlock MessageBlock in player.World.Map.MessageBlocks ) { - if ( MessageBlock.Name.ToLower().Equals( MessageBlockName.ToLower() ) ) { + if ( MessageBlock.Name.Equals( MessageBlockName, StringComparison.OrdinalIgnoreCase ) ) { World MessageBlockWorld = WorldManager.FindWorldExact( MessageBlock.World ); player.Message( "MessageBlock '{0}&S' was created by {1}&S at {2}", MessageBlock.Name, MessageBlock.Creator, MessageBlock.Created ); diff --git a/fCraft/Network/Player.Networking.cs b/fCraft/Network/Player.Networking.cs index 92321a4..8f8e980 100644 --- a/fCraft/Network/Player.Networking.cs +++ b/fCraft/Network/Player.Networking.cs @@ -493,6 +493,10 @@ bool LoginSequence () { GentlyKickBetaClients(); return false; + case 250: + GentlyKickBetaClients(); + return false; + case ( byte )'G': ServeCfg(); return false; diff --git a/fCraft/Portals/Portal.cs b/fCraft/Portals/Portal.cs index 54da8dd..681c785 100644 --- a/fCraft/Portals/Portal.cs +++ b/fCraft/Portals/Portal.cs @@ -188,7 +188,7 @@ public static bool DoesNameExist ( World world, String name ) { if ( world.Map.Portals != null ) { if ( world.Map.Portals.Count > 0 ) { foreach ( Portal portal in world.Map.Portals ) { - if ( portal.Name.Equals( name ) ) { + if ( portal.Name.Equals( name, StringComparison.OrdinalIgnoreCase ) ) { return true; } } diff --git a/fCraft/System/Scheduler.cs b/fCraft/System/Scheduler.cs index e3510d3..a66f149 100644 --- a/fCraft/System/Scheduler.cs +++ b/fCraft/System/Scheduler.cs @@ -220,7 +220,7 @@ internal static void BeginShutdown() { #if DEBUG_SCHEDULER Logger.Log( LogType.Debug, "Scheduler: BeginShutdown..." ); #endif - if (ConfigKey.HbSaverKey.Enabled()) + if ( ConfigKey.HbSaverKey.Enabled() && ConfigKey.IsPublic.Enabled() ) { if (!Server.IsRestarting) { diff --git a/fCraft/System/Server.cs b/fCraft/System/Server.cs index 35c640e..ff5af41 100644 --- a/fCraft/System/Server.cs +++ b/fCraft/System/Server.cs @@ -381,7 +381,7 @@ public static bool StartServer() { // list loaded worlds WorldManager.UpdateWorldList(); Logger.Log( LogType.SystemActivity, - "{0} available worlds: {0}", + "{0} available worlds", WorldManager.Worlds.Length ); Logger.Log( LogType.SystemActivity, @@ -475,6 +475,7 @@ static void ShutdownNow( [NotNull] ShutdownParams shutdownParams ) { // kick all players lock( SessionLock ) { if( Sessions.Count > 0 ) { + Logger.Log( LogType.SystemActivity, "Shutdown: Kicking {0} players...", Sessions.Count ); foreach( Player p in Sessions ) { // NOTE: kick packet delivery here is not currently guaranteed p.Kick( "Server shutting down (" + shutdownParams.ReasonString + Color.White + ")", LeaveReason.ServerShutdown ); @@ -488,7 +489,7 @@ static void ShutdownNow( [NotNull] ShutdownParams shutdownParams ) { IRC.Disconnect(); if ( WorldManager.Worlds != null ) { - Logger.Log( LogType.SystemActivity, "Shutdown: Saving worlds..." ); + Logger.Log( LogType.SystemActivity, "Shutdown: Saving {0} worlds...", WorldManager.Worlds.Length ); lock ( WorldManager.SyncRoot ) { // unload all worlds (includes saving) foreach ( World world in WorldManager.Worlds ) { @@ -503,7 +504,7 @@ static void ShutdownNow( [NotNull] ShutdownParams shutdownParams ) { Scheduler.EndShutdown(); if ( IsRunning ) { - Logger.Log( LogType.SystemActivity, "Shutdown: Saving databases..." ); + Logger.Log( LogType.SystemActivity, "Shutdown: Saving databases... ({0} players and {1} IP bans)", PlayerDB.PlayerInfoList.Length, IPBanList.Count ); if ( PlayerDB.IsLoaded ) PlayerDB.Save(); if ( IPBanList.IsLoaded ) IPBanList.Save(); } @@ -525,7 +526,7 @@ public static void Shutdown( [NotNull] ShutdownParams shutdownParams, bool waitF lock( ShutdownLock ) { if( !CancelShutdown() ) return; shutdownThread = new Thread( ShutdownThread ) { - Name = "fCraft.Shutdown" + Name = "800Craft.Shutdown" }; if( shutdownParams.Delay >= ChatTimer.MinDuration ) { string timerMsg = String.Format( "Server {0} ({1})",