diff --git a/ClassicalSharp/2D/Screens/BlockSelectScreen.Scrolling.cs b/ClassicalSharp/2D/Screens/BlockSelectScreen.Scrolling.cs index d6d253958..7af6a823a 100644 --- a/ClassicalSharp/2D/Screens/BlockSelectScreen.Scrolling.cs +++ b/ClassicalSharp/2D/Screens/BlockSelectScreen.Scrolling.cs @@ -35,8 +35,7 @@ namespace ClassicalSharp { } return true; } - int scrollY; - + int scrollY; void UpdateScrollY() { scrollY = selIndex / blocksPerRow; diff --git a/ClassicalSharp/2D/Screens/BlockSelectScreen.cs b/ClassicalSharp/2D/Screens/BlockSelectScreen.cs index 1ae4ff677..323931bfc 100644 --- a/ClassicalSharp/2D/Screens/BlockSelectScreen.cs +++ b/ClassicalSharp/2D/Screens/BlockSelectScreen.cs @@ -93,7 +93,8 @@ namespace ClassicalSharp { RecreateBlockTable(); Block held = game.Inventory.HeldBlock; selIndex = Array.IndexOf( blocksTable, held ); - UpdateScrollY(); + scrollY = (selIndex / blocksPerRow) - (maxRows - 1); + ClampScrollY(); MoveCursorToSelected(); game.Keyboard.KeyRepeat = true; diff --git a/ClassicalSharp/Entities/LocalPlayer.Physics.cs b/ClassicalSharp/Entities/LocalPlayer.Physics.cs index ea535fd77..fdc02ff65 100644 --- a/ClassicalSharp/Entities/LocalPlayer.Physics.cs +++ b/ClassicalSharp/Entities/LocalPlayer.Physics.cs @@ -10,7 +10,10 @@ namespace ClassicalSharp { bool useLiquidGravity = false; // used by BlockDefinitions. bool canLiquidJump = true; - void UpdateVelocityYState() { + void UpdateVelocityState( float xMoving, float zMoving ) { + if( noClip && xMoving == 0 && zMoving == 0 ) + Velocity = Vector3.Zero; + if( flying || noClip ) { Velocity.Y = 0; // eliminate the effect of gravity if( flyingUp || jumping ) { diff --git a/ClassicalSharp/Entities/LocalPlayer.cs b/ClassicalSharp/Entities/LocalPlayer.cs index c2d29d8ba..f54f706d7 100644 --- a/ClassicalSharp/Entities/LocalPlayer.cs +++ b/ClassicalSharp/Entities/LocalPlayer.cs @@ -100,7 +100,7 @@ namespace ClassicalSharp { lastPitch = nextPitch; HandleInput( ref xMoving, ref zMoving ); - UpdateVelocityYState(); + UpdateVelocityState( xMoving, zMoving ); PhysicsTick( xMoving, zMoving ); nextPos = Position;