Server Plugins
Customizing Camera Controls
Intro to custom camera modding.
Customizing Camera Controls Guide
Hytale provides great camera customizability! Heres the essentials to get started.
The Basics
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