i113w's Camera Lib
ModA Lib that provides the RTS Style Camera System which is used by Better Mine Team.
Type
Mod
Modrinth Downloads
27
Modrinth ID
EW4xlj26
Last Updated
Jun 8, 2026
Description
i113w's Camera Lib
A NeoForge 1.21.1 client-side library that provides a complete RTS-style camera system — including camera movement, entity box-selection, right-click command zones, ray casting, and highlight rendering.
Designed to be consumed by other mods (e.g., Better Mine Team) via a thin API layer.
Requirements
Item Version Minecraft 1.21.1 NeoForge 21.1.209+ Java 21 Side Client-onlyImporting the Library
Local JAR (place the JAR in your mod's libs/ directory):
dependencies { implementation files('libs/i113w_camera_lib-0.0.1.jar') }Declare the dependency in META-INF/neoforge.mods.toml:
[[dependencies."your_mod_id"]] modId = "i113w_camera_lib" type = "required" versionRange = "[0.0.1,)" ordering = "BEFORE" side = "CLIENT"Key Interfaces & Classes
CameraLibAPI — singleton entry point
CameraLibAPI api = CameraLibAPI.get(); // Register your delegate api.setInteractionDelegate(new MyDelegate()); // Sync selected entity IDs to the library (drives outline rendering) api.setSelectedEntities(Set<Integer> ids); // Query hovered entity (-1 if none) int id = api.getHoveredEntityId(); // Clear selection and hover state api.clearSelection();IRTSInteractionDelegate — inject business logic
public interface IRTSInteractionDelegate { boolean isSelectable(Entity entity); ResourceLocation getCursorIcon(@Nullable Entity hoveredEntity, boolean isAttackDragging); }Register via CameraLibAPI.get().setInteractionDelegate(impl).
Events (fired on NeoForge.EVENT_BUS)
RTSBoxSelectEvent — left-click or drag-box completed
@SubscribeEvent public static void onSelect(RTSBoxSelectEvent event) { List<Entity> candidates = event.getCandidates(); // pre-filtered by isSelectable() }RTSRightClickEvent — right-click or right-drag completed
@SubscribeEvent public static void onRightClick(RTSRightClickEvent event) { if (event.isDrag()) { List<Entity> targets = event.getDragTargets(); } else { HitResult hit = event.getSingleHitResult(); // BlockHitResult or EntityHitResult } }RTSCameraController — camera state
RTSCameraController cam = RTSCameraController.get(); cam.toggleRTSMode(); // activate / deactivate cam.toggleCameraStyle(); // switch RTS <-> FREE (while active) cam.isActive(); // boolean cam.reset(); // force-exit, use on logout / level unloadCamera Modes
Mode FOV Zoom Yaw Rotation RTS 25° (fixed) Scroll wheel Hold Left Ctrl + drag (snaps by rtsSnapAngle) FREE Standard Scroll wheel (moves forward) Hold Left Ctrl + drag (continuous)Highlight Rendering
The library automatically draws entity outlines when the camera is active. No rendering code is needed in the consumer mod — just keep CameraLibAPI.setSelectedEntities(...) in sync.
Color Condition White Entity ID is in the selected set Yellow Hovered entity (not in selected set)Configuration
Player-adjustable values in .minecraft/config/i113w_camera_lib-client.toml:
Key Default Description rtsPitchMin / Max 35 / 45 Pitch clamp range in RTS mode freePitchMin / Max 10 / 90 Pitch clamp range in FREE mode rtsZoomMin / Max 10 / 80 Zoom distance clamp in RTS mode rtsZoomSpeedMultiplier 3.5 Scroll wheel zoom sensitivity rtsSnapAngle 90 Degrees per yaw snap step freeRotationSpeed 5.0 Mouse yaw sensitivity in FREE mode thresholdPx 20 Edge-pan trigger distance (pixels from screen edge) baseSpeed 1.0 WASD movement speed sprintMultiplier 2.0 Speed multiplier when sprint key is heldLicense
MIT — see LICENSE
Author: i113w
Compatibility
Mod Loaders
Game Versions
Similar Mods
Replication Upgrade
Adds improved versions of some replication components and the Energy Materializer.
The Workspace
A completely flat dimension that can be used as a testing world but in survival too.
True Oremistry
True oremestry its chemistry based mod what overhaul the vanilla ores quantity and add a compability with other mods.
Minimal Hitboxes
barebones mod that disables the eye level indicator and look vector
Entangled Crystals
Introduces a mystical way to bind locations to physical gems, allowing for one-time, cross-dimensional teleportation bac...
ArcadiaTweaks
Server-side Mixin optimizations for BotanyPots, Mekanism, RefinedStorage tick coalescing, hopper backoff & more — each s...