Server Plugins
Customizing Camera Controls
Intro to custom camera modding.
The Basics
Hytale provides great camera customizability! Heres the essentials to get started.
Camera is controlled by sending a SetServerCamera packet with ServerCameraSettings:
ServerCameraSettings settings = new ServerCameraSettings();
settings.distance = 10.0f; // Zoom distance from player
settings.isFirstPerson = false; // Third-person mode
settings.positionLerpSpeed = 0.2f; // Smooth camera follow
playerRef.getPacketHandler().writeNoCache(
new SetServerCamera(ClientCameraView.Custom, true, settings)
);This gives you a simple third-person camera. The presets below show more complete configurations.
Reset to default:
playerRef.getPacketHandler().writeNoCache(
new SetServerCamera(ClientCameraView.Custom, false, null)
);Camera Presets
Top-Down (RTS/ARPG Style)
Source: com.hypixel.hytale.server.core.command.commands.player.camera.PlayerCameraTopdownCommand
ServerCameraSettings settings = new ServerCameraSettings();
settings.positionLerpSpeed = 0.2f;
settings.rotationLerpSpeed = 0.2f;
settings.distance = 20.0f;
settings.displayCursor = true;
settings.isFirstPerson = false;
settings.movementForceRotationType = MovementForceRotationType.Custom;
// Align movement with camera yaw (horizontal rotation only)
settings.movementForceRotation = new Direction(-0.7853981634f, 0.0f, 0.0f); // 45° left
settings.eyeOffset = true;
settings.positionDistanceOffsetType = PositionDistanceOffsetType.DistanceOffset;
settings.rotationType = RotationType.Custom;
settings.rotation = new Direction(0.0f, -1.5707964f, 0.0f); // Look straight down
settings.mouseInputType = MouseInputType.LookAtPlane;
settings.planeNormal = new Vector3f(0.0f, 1.0f, 0.0f); // Ground planeSide-Scroller (2D Platformer Style)
Source: com.hypixel.hytale.server.core.command.commands.player.camera.PlayerCameraSideScrollerCommand
ServerCameraSettings settings = new ServerCameraSettings();
settings.positionLerpSpeed = 0.2f;
settings.rotationLerpSpeed = 0.2f;
settings.distance = 15.0f;
settings.displayCursor = true;
settings.isFirstPerson = false;
settings.movementForceRotationType = MovementForceRotationType.Custom;
settings.movementMultiplier = new Vector3f(1.0f, 1.0f, 0.0f); // Lock Z-axis
settings.eyeOffset = true;
settings.positionDistanceOffsetType = PositionDistanceOffsetType.DistanceOffset;
settings.rotationType = RotationType.Custom;
settings.mouseInputType = MouseInputType.LookAtPlane;
settings.planeNormal = new Vector3f(0.0f, 0.0f, 1.0f); // Side planeCommon Settings Explained
Position & Rotation
positionLerpSpeed(0.0-1.0): How smoothly the camera follows the player. Lower = smoother but slower response.rotationLerpSpeed(0.0-1.0): How smoothly the camera rotates. Lower = smoother but slower response.distance: Camera distance from player. Higher = zoomed out more.rotation: Camera angle asDirection(yaw, pitch, roll)in radians.rotationType: How rotation is calculated.RotationType.Customuses yourrotationvalue.
Movement Alignment
movementForceRotationType:MovementForceRotationType.AttachedToHead= movement follows where player looksMovementForceRotationType.Custom= usemovementForceRotationvaluemovementForceRotation: When usingCustom, this sets the direction for W/S movement. Match yaw with camera but keep pitch at 0.
Input & Display
displayCursor: Show/hide mouse cursor.mouseInputType:MouseInputType.LookAtPlane= mouse moves cursor on a plane (good for top-down)MouseInputType.LookAtTarget= mouse rotates cameraplaneNormal: ForLookAtPlane, defines which plane the mouse moves on.(0,1,0)= ground plane.
Advanced
positionDistanceOffsetType:DistanceOffset= simple distance offsetDistanceOffsetRaycast= prevents camera clipping through wallseyeOffset: Offset camera from player's eye position.movementMultiplier: Scale movement on each axis.(1,1,0)= lock Z-axis for 2D movement.
Imports
import com.hypixel.hytale.protocol.ClientCameraView;
import com.hypixel.hytale.protocol.Direction;
import com.hypixel.hytale.protocol.MouseInputType;
import com.hypixel.hytale.protocol.MovementForceRotationType;
import com.hypixel.hytale.protocol.PositionDistanceOffsetType;
import com.hypixel.hytale.protocol.RotationType;
import com.hypixel.hytale.protocol.ServerCameraSettings;
import com.hypixel.hytale.protocol.Vector3f;
import com.hypixel.hytale.protocol.packets.camera.SetServerCamera;Tips
- Zoom: Adjust
distance(higher = further out) - Smoothness:
positionLerpSpeedandrotationLerpSpeedcontrol how quickly the camera catches up to its target - Wall clipping: Use
PositionDistanceOffsetType.DistanceOffsetRaycast - Lock camera: Set
isLocked = truein the packet to prevent player changes - 2D movement: Set
movementMultiplierto zero out an axis - Isometric cameras: Always set
movementForceRotationto match camera yaw for proper movement alignment - Angle calculations: Use
Math.toRadians(degrees)ordegrees * Math.PI / 180.0to convert degrees to radians
From Hytale Server build 2026.01.13-dcad8778f
Автор Vibe Theory