i113w's Camera Lib
Библиотека, предоставляющая систему камеры в стиле RTS, которую использует команда Better Mine.
- Загрузчики
- NeoForgeForge
- Скачиваний на Modrinth
- 567
- Подписчиков на Modrinth
- 0
- версий
- 7
- Обновлён
- 5 сентября 20265 сент.
- Опубликован
- в 2026
Коротко о моде
Ставится только в игру; на сервер ставить не нужно
i113w's Camera Lib
Клиентская библиотека для NeoForge 1.21.1, предоставляющая полноценную камеру в стиле RTS — включая перемещение камеры, выделение сущностей рамкой, зоны команд по правому клику, рейкаст и отрисовку подсветки.
Создана для использования другими модами (например, Better Mine Team) через тонкий слой API.
Требования
| Компонент | Версия |
|---|---|
| Minecraft | 1.21.1 |
| NeoForge | 21.1.209+ |
| Java | 21 |
| Сторона | Только клиент |
Подключение библиотеки
Локальный JAR (положите JAR в папку libs/ вашего мода):
dependencies {
implementation files('libs/i113w_camera_lib-0.0.1.jar')
}Объявите зависимость в META-INF/neoforge.mods.toml:
[[dependencies."your_mod_id"]]
modId = "i113w_camera_lib"
type = "required"
versionRange = "[0.0.1,)"
ordering = "BEFORE"
side = "CLIENT"Ключевые интерфейсы и классы
CameraLibAPI — единая точка входа
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 — внедрение игровой логики
public interface IRTSInteractionDelegate {
boolean isSelectable(Entity entity);
ResourceLocation getCursorIcon(@Nullable Entity hoveredEntity, boolean isAttackDragging);
}Регистрируется через CameraLibAPI.get().setInteractionDelegate(impl).
События (вызываются на NeoForge.EVENT_BUS)
RTSBoxSelectEvent — завершено выделение левым кликом или рамкой
@SubscribeEvent
public static void onSelect(RTSBoxSelectEvent event) {
List<Entity> candidates = event.getCandidates(); // pre-filtered by isSelectable()
}RTSRightClickEvent — завершён правый клик или протяжка правой кнопкой
@SubscribeEvent
public static void onRightClick(RTSRightClickEvent event) {
if (event.isDrag()) {
List<Entity> targets = event.getDragTargets();
} else {
HitResult hit = event.getSingleHitResult(); // BlockHitResult or EntityHitResult
}
}RTSCameraController — состояние камеры
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 unloadРежимы камеры
| Режим | FOV | Зум | Поворот рыскания |
|---|---|---|---|
| RTS | 25° (фиксированный) | Колесо мыши | Удерживайте Left Ctrl + тяните (с шагом rtsSnapAngle) |
| FREE | Стандартный | Колесо мыши (движение вперёд) | Удерживайте Left Ctrl + тяните (плавно) |
Отрисовка подсветки
Библиотека автоматически рисует контуры сущностей, когда камера активна. Никакого кода отрисовки в моде-потребителе не нужно — просто синхронизируйте CameraLibAPI.setSelectedEntities(...).
| Цвет | Условие |
|---|---|
| Белый | ID сущности в выделенном наборе |
| Жёлтый | Сущность под курсором (не в выделенном наборе) |
Конфигурация
Настраиваемые игроком значения в .minecraft/config/i113w_camera_lib-client.toml:
| Ключ | По умолчанию | Описание |
|---|---|---|
rtsPitchMin / Max | 35 / 45 | Диапазон ограничения наклона в режиме RTS |
freePitchMin / Max | 10 / 90 | Диапазон ограничения наклона в режиме FREE |
rtsZoomMin / Max | 10 / 80 | Ограничение дистанции зума в режиме RTS |
rtsZoomSpeedMultiplier | 3.5 | Чувствительность зума колесом мыши |
rtsSnapAngle | 90 | Градусов на шаг фиксации рыскания |
freeRotationSpeed | 5.0 | Чувствительность рыскания мышью в режиме FREE |
thresholdPx | 20 | Дистанция срабатывания панорамирования от края (пикселей от края экрана) |
baseSpeed | 1.0 | Скорость движения WASD |
sprintMultiplier | 2.0 | Множитель скорости при удержании клавиши спринта |
Лицензия
MIT — см. LICENSE
Автор: i113w
Частые вопросы
Как установить i113w's Camera Lib?
Установите NeoForge под свою версию Minecraft, скачайте i113w's Camera Lib под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть i113w's Camera Lib?
У i113w's Camera Lib есть сборки для Minecraft 1.20.1, 1.21.1, 26.1.2.
Нужен ли i113w's Camera Lib на сервере?
Ставится только в игру; на сервер ставить не нужно