diff --git a/TrueCraft.Client/Input/MouseMoveEventArgs.cs b/TrueCraft.Client/Input/MouseMoveEventArgs.cs index 4687b37..d0c742a 100644 --- a/TrueCraft.Client/Input/MouseMoveEventArgs.cs +++ b/TrueCraft.Client/Input/MouseMoveEventArgs.cs @@ -28,7 +28,7 @@ namespace TrueCraft.Client.Input : base(x, y) { DeltaX = deltaX; - DeltaY = DeltaY; + DeltaY = deltaY; } } } diff --git a/TrueCraft.Client/Modules/PlayerControlModule.cs b/TrueCraft.Client/Modules/PlayerControlModule.cs index 84fe5ab..01d6c26 100644 --- a/TrueCraft.Client/Modules/PlayerControlModule.cs +++ b/TrueCraft.Client/Modules/PlayerControlModule.cs @@ -215,9 +215,13 @@ namespace TrueCraft.Client.Modules return false; var centerX = Game.GraphicsDevice.Viewport.Width / 2; var centerY = Game.GraphicsDevice.Viewport.Height / 2; - Mouse.SetPosition(centerX, centerY); + if (e.X < 10 || e.X > Game.GraphicsDevice.Viewport.Width - 10 || + e.Y < 10 || e.Y > Game.GraphicsDevice.Viewport.Height - 10) + { + Mouse.SetPosition(centerX, centerY); + } - var look = new Vector2((centerX - e.X), (centerY - e.Y)) + var look = new Vector2((-e.DeltaX), (-e.DeltaY)) * (float)(gameTime.ElapsedGameTime.TotalSeconds * 30); Game.Client.Yaw -= look.X; diff --git a/TrueCraft/Commands/DebugCommands.cs b/TrueCraft/Commands/DebugCommands.cs index d752398..80eae93 100644 --- a/TrueCraft/Commands/DebugCommands.cs +++ b/TrueCraft/Commands/DebugCommands.cs @@ -425,4 +425,45 @@ namespace TrueCraft.Commands client.SendMessage("/reinv: Resends your inventory."); } } + + public class RelightCommand : Command + { + public override string Name + { + get { return "relight"; } + } + + public override string Description + { + get { return "Relights the chunk you're standing in."; } + } + + public override string[] Aliases + { + get { return new string[0]; } + } + + public override void Handle(IRemoteClient client, string alias, string[] arguments) + { + if (arguments.Length != 0) + { + Help(client, alias, arguments); + return; + } + var server = client.Server as MultiplayerServer; + var chunk = client.World.FindChunk((Coordinates3D)client.Entity.Position); + var lighter = server.WorldLighters.SingleOrDefault(l => l.World == client.World); + if (lighter != null) + { + lighter.InitialLighting(chunk, true); + (client as RemoteClient).UnloadChunk(chunk.Coordinates); + (client as RemoteClient).LoadChunk(chunk.Coordinates); + } + } + + public override void Help(IRemoteClient client, string alias, string[] arguments) + { + client.SendMessage("/reinv: Resends your inventory."); + } + } } \ No newline at end of file diff --git a/TrueCraft/MultiplayerServer.cs b/TrueCraft/MultiplayerServer.cs index d917234..2324998 100644 --- a/TrueCraft/MultiplayerServer.cs +++ b/TrueCraft/MultiplayerServer.cs @@ -170,6 +170,11 @@ namespace TrueCraft void HandleChunkLoaded(object sender, ChunkLoadedEventArgs e) { ChunksToSchedule.Add(new Tuple(sender as IWorld, e.Chunk)); + if (Program.ServerConfiguration.EnableLighting) + { + var lighter = WorldLighters.SingleOrDefault(l => l.World == sender); + lighter.InitialLighting(e.Chunk, false); + } } void HandleBlockChanged(object sender, BlockChangeEventArgs e)