Controls
Freecam uses standard movement controls:- W/A/S/D - Move camera horizontally
- Space - Ascend camera
- Shift - Descend camera
- Sprint - Double movement speed
- Mouse - Look around
Movement keys are captured by freecam and won’t move your actual player. Your player entity remains in place while the camera moves freely.
Configuration
Speed Settings
Speed- Horizontal movement speed (0.1-4.0)
- Default: 1.0
- Affected by sprint multiplier (2x when sprinting)
- Up/down movement speed (0.1-2.0)
- Default: 0.5
- Independent from horizontal speed
Freecam.java:172-211
Rotate
When enabled, your player will rotate to face your crosshair target when you interact:- Triggers on attack or use key press
- Rotates player to crosshair position
- Useful for interacting with blocks/entities while in freecam
Freecam.java:152-155
Camera Mechanics
Position Tracking
Freecam maintains separate position state:Freecam.java:52-58
Interpolation
Smooth rendering uses tick-delta interpolation:Freecam.java:312-335
Movement Calculation
Camera movement respects diagonal speed normalization:Freecam.java:202-207
This prevents faster diagonal movement, maintaining consistent speed in all directions.
State Management
On Enable
Freecam saves and modifies several settings:Freecam.java:67-101
On Disable
All settings are restored:Freecam.java:118-134
Freecam temporarily disables FOV effects and view bobbing for a smoother spectator-like experience. All settings are restored when disabled.
Perspective Lock
Freecam forces first-person perspective:Freecam.java:162
This prevents perspective cycling while in freecam mode.
NoClip
Camera automatically enables noclip when inside blocks:Freecam.java:161
GUI Compatibility
Freecam respects GUI movement settings:Freecam.java:337-345
When a screen is open:
- Movement keys are unpressed if GUI movement is disabled
- Camera position and rotation are preserved
- Integration with NoSlow module’s GUI movement feature
Input Handling
Keyboard Events
Freecam intercepts and cancels movement key inputs:Freecam.java:223-258
This prevents your player from moving when controlling the camera.
Mouse Events
Mouse buttons are also intercepted for bound movement keys:Freecam.java:262-298
Look Direction
Mouse movement updates camera rotation:Freecam.java:300-309
Integration Points
Freecam is referenced by other modules: Nametags- Shows your own nametag when freecam is active
Freecam.INSTANCE.isEnabled()
Nametags.java:257
Chams
- Renders self chams in freecam mode
- Allows seeing your player model from camera position
Chams.java:347
Visual Tips
Usage Scenarios:Base Inspection:
- Speed: 2.0
- Vertical Speed: 1.0
- Rotate: false
- Fast exploration without interaction
- Speed: 0.5
- Vertical Speed: 0.3
- Rotate: true
- Slow, controlled movement with interaction
- Speed: 1.5
- Vertical Speed: 0.75
- Rotate: false
- Balanced speed for spectating fights
Technical Details
Freecam operates by:- Position Override - Camera uses freecam position instead of player position
- Rotation Override - Camera uses freecam rotation instead of player rotation
- Input Interception - Movement keys control camera, not player
- State Preservation - Player entity remains in original position
- Tick Interpolation - Smooth movement using
prevPosandposlerping
Freecam.java:1-353