{"id":37958,"date":"2026-06-01T22:28:44","date_gmt":"2026-06-01T19:28:44","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/ccoptical\/"},"modified":"2026-06-01T22:28:44","modified_gmt":"2026-06-01T19:28:44","slug":"ccoptical","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/ccoptical\/","title":{"rendered":"CC:Optical"},"content":{"rendered":"<p># CC:Optical<\/p>\n<p>Adds sensor and cannon control peripherals to CC:Tweaked, compatible with Create:Aeronautics.<\/p>\n<p>![All blocks](https:\/\/cdn.modrinth.com\/data\/cached_images\/74a98e2208a42fc17a18100857c01a356899a871.jpeg)<\/p>\n<p>## Sensors<\/p>\n<p>Three variants, one method \u2014 `scan()`:<\/p>\n<p>**Optical Sensor** (`optical_sensor`) \u2014 detects entities up to 96 blocks. Requires direct line of sight (real terrain blocks only; sublevel terrain is transparent).<\/p>\n<p>**Directional Optical Sensor** (`directional_optical_sensor`) \u2014 same but with a cone-shaped field of view (configurable, default 110\u00b0), range 80 blocks.<\/p>\n<p>**Radar** (`entity_radar`) \u2014 omni-directional, range 64 blocks, ignores line of sight. Position readings have Gaussian noise (increases with distance, varies by sensor altitude relative to sea level).<\/p>\n<p>Detections work across sublevel boundaries. A sensor on an airship can spot another airship and the entities inside it. Each detection carries the sublevel UUID when the target is inside one.<\/p>\n<p>Detection fidelity decreases with range. Optical sensors report exact entity types up to 56 blocks and player names up to 40 blocks. Radar does the same within 28 and 18 blocks \u2014 beyond that, targets are classified only by size (`object_small`\/`object_mid`\/`object_large`). Radar position noise grows linearly with distance and varies with the sensor&#8217;s altitude relative to sea level.<\/p>\n<p>### Lua API<\/p>\n<p>All three expose the same single method:<\/p>\n<p>| Method | Parameters | Returns | Description |<br \/>\n|&#8212;|&#8212;|&#8212;|&#8212;|<br \/>\n| `scan` | `relativeCoords: boolean` (optional) | `table` | Run an immediate scan. If `true`, returned positions are rotated into the sensor&#8217;s sublevel local frame. |<\/p>\n<p>### `scan()` return table<\/p>\n<p>| Field | Type | Description |<br \/>\n|&#8212;|&#8212;|&#8212;|<br \/>\n| `count` | `number` | Number of detections |<br \/>\n| `lastScanTick` | `number` | Server tick when scan ran |<br \/>\n| `detections` | `table[]` | Array of detection objects |<\/p>\n<p>### Detection fields<\/p>\n<p>| Field | Type | Description |<br \/>\n|&#8212;|&#8212;|&#8212;|<br \/>\n| `id` | `string` | Entity UUID (or sublevel UUID for sublevel bounding boxes) |<br \/>\n| `type` | `string` | Entity registry name (e.g. `&#8221;minecraft:zombie&#8221;`), size class (`&#8221;object_small&#8221;`\/`&#8221;object_mid&#8221;`\/`&#8221;object_large&#8221;`), or `&#8221;sublevel&#8221;` |<br \/>\n| `name` | `string` or `nil` | Player scoreboard name (if within name-precision distance) |<br \/>\n| `x`, `y`, `z` | `number` | Offset from sensor origin (blocks) |<br \/>\n| `distance` | `number` | Straight-line distance |<br \/>\n| `subLevelUUID` | `string` or `nil` | UUID of the sublevel the entity is inside |<br \/>\n| `subLevelName` | `string` or `nil` | Name of the sublevel |<\/p>\n<p>### Example<\/p>\n<p>&#8220;`lua<br \/>\nlocal sensor = peripheral.wrap(&#8220;left&#8221;)<\/p>\n<p>while true do<br \/>\n  local res = sensor.scan()<br \/>\n  print(&#8220;Targets: &#8221; .. res.count)<br \/>\n  for _, t in ipairs(res.detections) do<br \/>\n    print((&#8220;%s @ %.1f m&#8221;):format(t.type, t.distance))<br \/>\n  end<br \/>\n  sleep(0.25)<br \/>\nend<br \/>\n&#8220;`<\/p>\n<p>## CBC Cannon Mount<\/p>\n<p>Wraps cannon mounts from Create Big Cannons as `cbc_cannon_mount` peripherals (additional type `cannon_mount`). Aim, fire, and query state from Lua.<\/p>\n<p>| Method | Parameters | Returns | Description |<br \/>\n|&#8212;|&#8212;|&#8212;|&#8212;|<br \/>\n| `assemble` | \u2014 | `boolean` | Assembles the cannon contraption |<br \/>\n| `disassemble` | \u2014 | `boolean` | Disassembles |<br \/>\n| `fire` | \u2014 | `boolean` | Fires the cannon |<br \/>\n| `isRunning` | \u2014 | `boolean` | Whether assembled and running |<br \/>\n| `isAssembled` | \u2014 | `boolean` | Same as `isRunning` |<br \/>\n| `isLoaded` | \u2014 | `boolean` | Whether cannon can fire |<br \/>\n| `setPitch` | `pitch: number` | `boolean` | Set target pitch (degrees) |<br \/>\n| `setYaw` | `yaw: number` | `boolean` | Set target yaw (degrees) |<br \/>\n| `getPitch` | \u2014 | `number` | Current pitch |<br \/>\n| `getYaw` | \u2014 | `number` | Current yaw offset |<br \/>\n| `getX` | \u2014 | `number` or `nil` | Controller X position |<br \/>\n| `getY` | \u2014 | `number` or `nil` | Controller Y position |<br \/>\n| `getZ` | \u2014 | `number` or `nil` | Controller Z position |<br \/>\n| `getMaxDepress` | \u2014 | `number` or `nil` | Maximum depression angle |<br \/>\n| `getMaxElevate` | \u2014 | `number` or `nil` | Maximum elevation angle |<br \/>\n| `getDirection` | \u2014 | `string` or `nil` | Facing direction (`north`\/`south`\/`east`\/`west`) |<br \/>\n| `getCannonWeight` | \u2014 | `number` or `nil` | Cannon stress-weight |<\/p>\n<p>Rotation can be restricted by config (`cbcFreeRotationEnabled`, `cbcFreeRotationMaxWeight`). Throws `LuaException` when blocked.<\/p>\n<p>Fully compatible with CannonMountPeripheral from VS: Addition &#8211; same `&#8221;cannon_mount&#8221;` additional type, same method shapes.<\/p>\n<p>## For Server Owners<\/p>\n<p>All features are configurable. Disable the CBC cannon mount peripheral (`cbcPeripheralEnabled: false`) to avoid conflicts with other mods that add the same peripheral (CC:CBC as example).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>All you need for your turrets!<\/p>\n","protected":false},"featured_media":37959,"template":"","meta":{"_minecraft_slug":"ccoptical","_minecraft_project_id":"c7C6aO0y","_minecraft_author":"Cyber_Jellyfish","_minecraft_license":"LicenseRef-All-Rights-Reserved","_minecraft_downloads":19,"_minecraft_follows":2,"_minecraft_client_side":"required","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"ccoptical.zip","_minecraft_size_bytes":96805,"_minecraft_version_count":1,"_minecraft_updated_at":"2026-05-16T15:21:23.852637Z","_minecraft_date_created":"2026-05-15T21:43:38.253415Z","_minecraft_date_modified":"2026-05-15T00:27:30.676759Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/ccoptical","_minecraft_icon_attachment_id":37959,"_minecraft_imported_at":"2026-06-01T19:28:45+00:00","_minecraft_import_hash":"155c2592042df726fd5a79b250feda80","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[89,158,123,92],"mod_loader":[160],"minecraft_version":[37],"class_list":["post-37958","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-game-mechanics","mod_category-neoforge","mod_category-technology","mod_category-utility","mod_loader-neoforge","minecraft_version-1-21-1"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>CC:Optical - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/ccoptical\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CC:Optical - Minecraft\" \/>\n<meta property=\"og:description\" content=\"All you need for your turrets!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/ccoptical\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ccoptical\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ccoptical\\\/\",\"name\":\"CC:Optical - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ccoptical\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ccoptical\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ccoptical-icon-0b4943768ef394803c7d3730f5af79da7cbbdd8e.png\",\"datePublished\":\"2026-06-01T19:28:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ccoptical\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ccoptical\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ccoptical\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ccoptical-icon-0b4943768ef394803c7d3730f5af79da7cbbdd8e.png\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/ccoptical-icon-0b4943768ef394803c7d3730f5af79da7cbbdd8e.png\",\"width\":512,\"height\":512},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ccoptical\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"CC:Optical\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CC:Optical - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/ccoptical\/","og_locale":"en_US","og_type":"article","og_title":"CC:Optical - Minecraft","og_description":"All you need for your turrets!","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/ccoptical\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/ccoptical\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/ccoptical\/","name":"CC:Optical - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/ccoptical\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/ccoptical\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/ccoptical-icon-0b4943768ef394803c7d3730f5af79da7cbbdd8e.png","datePublished":"2026-06-01T19:28:44+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/ccoptical\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/ccoptical\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/ccoptical\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/ccoptical-icon-0b4943768ef394803c7d3730f5af79da7cbbdd8e.png","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/ccoptical-icon-0b4943768ef394803c7d3730f5af79da7cbbdd8e.png","width":512,"height":512},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/ccoptical\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"CC:Optical"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/37958","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/37959"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=37958"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=37958"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=37958"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=37958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}