CC: Optical
Всё, что нужно для твоих турелей!
- Загрузчики
- NeoForge
- Скачиваний на Modrinth
- 4 тыс.
- Подписчиков на Modrinth
- 12
- версии
- 2
- Обновлён
- 14 августа 202614 авг.
- Опубликован
- в 2026
Коротко о моде
Нужен и в игре, и на сервере
CC:Optical
Добавляет периферию для управления сенсорами и пушками в CC:Tweaked, совместимо с Create:Aeronautics.

Сенсоры
Четыре варианта с динамическим зумом FOV, фильтрацией целей и методами сканирования:
Оптический сенсор (optical_sensor) — по умолчанию всенаправленный (FOV 360°) с базовой дальностью 96 блоков. Позволяет сужать FOV вплоть до 15° для увеличения дальности зума (до 192 блоков). Требует прямой линии видимости (только реальные блоки ландшафта; terrain подуровня прозрачен).
Направленный оптический сенсор (directional_optical_sensor) — направленное конусное поле зрения (по умолчанию 125°, регулируется вплоть до 10°), базовая дальность 90 блоков при полном FOV, зум до 512 блоков при минимальном FOV.
Дальнобойный оптический сенсор (long_range_optical_sensor) — направленное конусное поле зрения (по умолчанию 125°, регулируется вплоть до 10°), базовая дальность 96 блоков при полном FOV, зум до 900 блоков при минимальном FOV.
Радар (entity_radar) — всенаправленный, базовая дальность 64 блока, игнорирует линию видимости. Размещение рядом блоков Radar Booster (radar_booster) добавляет +224 блока за каждый бустер (до 2 бустеров, суммарно 512 блоков). Добавление 2-блочной антенны (громоотводы или железные прутья) сверху радара или на любом из его бустеров умножает эффект бустера, увеличивая дальность радара до ~900 блоков. Показания позиции имеют гауссов шум (растёт с расстоянием, зависит от высоты сенсора относительно уровня моря).
Обнаружение работает через границы подуровней. Сенсор на дирижабле может засечь другой дирижабль и сущностей внутри него. Каждое обнаружение несёт UUID подуровня, когда цель находится внутри него. Декоративные не-сущности (картины, рамки, дисплеи, маркеры) автоматически игнорируются.
Точность обнаружения снижается с дальностью, но дистанции распознавания динамически масштабируются с зумом FOV и улучшениями бустеров. За пределами точности цели классифицируются только по размеру (object_small/object_mid/object_large). Шум позиции радара растёт линейно с расстоянием и зависит от высоты сенсора относительно уровня моря.
Масштабирование дальности и распознавания
| Сенсор / Конфигурация | FOV / Дополнения | Макс. дальность | Точный тип (type) | Имя игрока (name) |
|---|---|---|---|---|
| Оптический сенсор | 360° (всенаправленный) | 96 м | ≤ 56 м | ≤ 40 м |
| Оптический сенсор | 15° (зум) | 192 м | ≤ 112 м | ≤ 80 м |
| Направленный оптический | 125° (полный FOV) | 90 м | ≤ 56 м | ≤ 40 м |
| Направленный оптический | 10° (макс. зум) | 512 м | ≤ 318 м | ≤ 227 м |
| Дальнобойный оптический | 125° (полный FOV) | 96 м | ≤ 56 м | ≤ 40 м |
| Дальнобойный оптический | 10° (макс. зум) | 900 м | ≤ 525 м | ≤ 375 м |
| Радар | Базовый (0 бустеров) | 64 м | ≤ 28 м | ≤ 18 м |
| Радар | 1 бустер | 288 м | ≤ 126 м | ≤ 81 м |
| Радар | 2 бустера (полный буст) | 512 м | ≤ 224 м | ≤ 144 м |
| Радар | 1 бустер + антенна | 482 м | ≤ 211 м | ≤ 135 м |
| Радар | 2 бустера + антенна | 900 м | ≤ 394 м | ≤ 253 м |
Lua API
Методы сенсоров, доступные в CC:Tweaked:
| Метод | Параметры | Возвращает | Описание |
|---|---|---|---|
scan | relativeCoords: boolean (опционально) | table | Выполняет немедленное сканирование. Если true, возвращённые позиции поворачиваются в локальную систему подуровня сенсора. |
setFov | fov: number | number | Задаёт оптическое поле зрения в градусах (ограничивается [minFov, maxFov]). Более узкий FOV увеличивает эффективную дальность. Только для оптических. |
getFov | — | number | Возвращает текущее поле зрения в градусах. |
getMinFov | — | number | Возвращает минимально допустимое поле зрения в градусах. |
getMaxFov | — | number | Возвращает максимально допустимое поле зрения в градусах. |
getRange | — | number | Возвращает текущую эффективную дальность обнаружения в блоках (динамически масштабируется с FOV). |
setFilter | typeOrList: string|table (опционально) | string[] | Задаёт активный фильтр целей (по точному ID, короткому имени, "sublevel" или классу размера "object_small"/"object_mid"/"object_large"). Несовпавшие сущности не учитываются в лимитах целей. Передайте nil для сброса. |
getFilter | — | string[] | Возвращает массив текущих активных фильтров целей. |
clearFilter | — | boolean | Сбрасывает все активные фильтры. |
isOptical | — | boolean | Возвращает true, если это оптический сенсор, поддерживающий FOV/зум/фильтрацию, false для радара. |
Возвращаемая таблица scan()
| Поле | Тип | Описание |
|---|---|---|
count | number | Количество обнаружений |
lastScanTick | number | Тик сервера, на котором выполнялось сканирование |
relativeCoords | boolean | Использовались ли относительные координаты |
detections | table[] | Массив объектов обнаружения |
Поля обнаружения
| Поле | Тип | Описание |
|---|---|---|
id | string | UUID сущности (или UUID подуровня для ограничивающих рамок подуровня) |
type | string | Регистровое имя сущности (например, "minecraft:zombie"), класс размера ("object_small"/"object_mid"/"object_large") или "sublevel" |
name | string или nil | Имя игрока в таблице очков (если в пределах дистанции точности имени) |
x, y, z | number | Смещение от источника сенсора (в блоках) |
distance | number | Расстояние по прямой |
subLevelUUID | string или nil | UUID подуровня, внутри которого находится сущность |
subLevelName | string или nil | Название подуровня |
Пример
local sensor = peripheral.wrap("left")
-- Narrow FOV to boost range and focus only on sublevels
if sensor.isOptical() then
sensor.setFov(15)
sensor.setFilter("sublevel")
end
while true do
local res = sensor.scan(true)
print("Targets: " .. res.count)
for _, t in ipairs(res.detections) do
print(("%s @ %.1f m (x=%.1f, y=%.1f, z=%.1f)"):format(t.type, t.distance, t.x, t.y, t.z))
end
sleep(0.25)
endCBC Cannon Mount
Оборачивает орудийные крепления из Create Big Cannons как периферийные устройства cbc_cannon_mount (дополнительный тип cannon_mount). Наводите, стреляйте и запрашивайте состояние из Lua.
| Метод | Параметры | Возвращает | Описание |
|---|---|---|---|
assemble | — | boolean | Собирает орудийную конструкцию |
disassemble | — | boolean | Разбирает |
fire | — | boolean | Производит выстрел из пушки |
isRunning | — | boolean | Собрана ли и работает ли |
isAssembled | — | boolean | То же, что и isRunning |
isLoaded | — | boolean | Может ли пушка стрелять |
setPitch | pitch: number | boolean | Задать целевой тангаж (в градусах) |
setYaw | yaw: number | boolean | Задать целевой рыскание (в градусах) |
getPitch | — | number | Текущий тангаж |
getYaw | — | number | Текущее смещение рыскания |
getX | — | number или nil | Позиция контроллера по X |
getY | — | number или nil | Позиция контроллера по Y |
getZ | — | number или nil | Позиция контроллера по Z |
getMaxDepress | — | number или nil | Максимальный угол склонения |
getMaxElevate | — | number или nil | Максимальный угол возвышения |
getDirection | — | string или nil | Направление (north/south/east/west) |
getCannonWeight | — | number или nil | Нагрузочный вес пушки |
Вращение может быть ограничено конфигом (cbcFreeRotationEnabled, cbcFreeRotationMaxWeight). При блокировке выбрасывает LuaException.
Полностью совместимо с CannonMountPeripheral из VS: Addition — тот же дополнительный тип "cannon_mount", те же формы методов.
Для владельцев серверов
Все функции настраиваются. Отключите периферийное устройство орудийного крепления CBC (cbcPeripheralEnabled: false), чтобы избежать конфликтов с другими модами, добавляющими такое же периферийное устройство (CC:CBC в качестве примера).
Если вы хотите перевести мод, нашли баг или хотите предложить что-то новое:
Discord: Cyber_Jellyfish
Частые вопросы
Как установить CC: Optical?
Установите NeoForge под свою версию Minecraft, скачайте CC: Optical под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть CC: Optical?
У CC: Optical есть сборки для Minecraft 1.21.1.
Нужен ли CC: Optical на сервере?
Нужен и в игре, и на сервере