Create: Radionautics

A mod that adds radio links for create mod for inifinte range transmissions

# Create: Radionautics CC:Tweaked Guide

Create: Radionautics adds radio peripherals for CC:Tweaked computers. These radios let computers send messages over long distances using Create-themed antenna blocks.

## Requirements

- Minecraft 1.21.1
- NeoForge
- Create
- Create Aeronautics
- CC:Tweaked
- Create: Radionautics

## Radio Blocks

Radionautics adds three CC:Tweaked radio antenna peripherals:

| Block | Range | Active bound frequencies |
| --- | ---: | ---: |
| Andesite Radio Antenna | 2000 blocks | 1 |
| Copper Radio Antenna | 5000 blocks | 2 |
| Brass Radio Antenna | Infinite | 5 |

Place a radio antenna directly next to a CC:Tweaked computer.

## Getting The Peripheral

Use `peripheral.find`:

```lua
local radio = peripheral.find("radionautics_radio")
```

Or wrap a known side:

```lua
local radio = peripheral.wrap("left")
```

You can check the radio tier:

```lua
print(radio.tier())
print(radio.range())
print(radio.maxBinds())
```

## Sending A Message

Sender:

```lua
local radio = peripheral.find("radionautics_radio")

radio.send("145.500", "chat:hello from base")
```

The first argument is the frequency. The second argument is the message.

## Receiving Messages

Receiver:

```lua
local radio = peripheral.find("radionautics_radio")

radio.udpBind("145.500")

while true do
  local event, frequency, senderId, message = os.pullEvent("radio_message")
  print("Frequency: " .. frequency)
  print("Sender: " .. senderId)
  print("Message: " .. message)
end
```

The receiver must bind the frequency first:

```lua
radio.udpBind("145.500")
```

Incoming messages fire a `radio_message` event:

```lua
local event, frequency, senderId, message = os.pullEvent("radio_message")
```

## Chat Example

Run this on the receiving computer:

```lua
local radio = peripheral.find("radionautics_radio")
radio.udpBind("145.500")

print("Listening on 145.500")

while true do
  local event, frequency, senderId, message = os.pullEvent("radio_message")
  print("[" .. frequency .. "] " .. senderId .. ": " .. message)
end
```

Run this on the sending computer:

```lua
local radio = peripheral.find("radionautics_radio")

while true do
  write("Message: ")
  local message = read()
  radio.send("145.500", "chat:" .. message)
end
```

## Encryption Helpers

Radionautics includes helper methods for encoding/encryption.

Available crypto types:

- `none`
- `xor`
- `aes`
- `base64`

Encrypted sender:

```lua
local radio = peripheral.find("radionautics_radio")

local key = "secret-key"
local message = "chat:encrypted hello"
local encrypted = radio.cryptoEncrypt("aes", message, key)

radio.send("145.500", encrypted)
```

Encrypted receiver:

```lua
local radio = peripheral.find("radionautics_radio")

radio.udpBind("145.500")

local key = "secret-key"

while true do
  local event, frequency, senderId, encrypted = os.pullEvent("radio_message")
  local ok, message = pcall(function()
    return radio.cryptoDecrypt("aes", encrypted, key)
  end)

  if ok then
    print(message)
  end
end
```

If the wrong key is used, decrypting may fail. Use `pcall` if you want to ignore bad packets safely.

## Frequencies

Frequencies are text. They can be numbers or names:

```lua
radio.udpBind("145.500")
radio.udpBind("AIRSHIP")
radio.udpBind("main_base")
```

The sender and receiver must use the same frequency.

## Bind Limits

Each antenna tier has a maximum number of active bound frequencies.

```lua
radio.udpBind("145.500")
radio.udpBind("fleet")
```

If the antenna is out of bind slots, binding returns `false`.

Close a frequency when finished:

```lua
radio.close("145.500")
```

List active binds:

```lua
for _, frequency in ipairs(radio.boundFrequencies()) do
  print(frequency)
end
```

## Queued Messages

You can poll messages manually:

```lua
local packet = { radio.receive() }

if packet[1] then
  local frequency = packet[1]
  local senderId = packet[2]
  local message = packet[3]
  print(message)
end
```

Usually, `os.pullEvent("radio_message")` is easier.

Check queued message count:

```lua
print(radio.queuedMessages())
```

## Sable / Ship Helpers

Radionautics exposes early Sable/Create Aeronautics helper methods:

```lua
radio.sableContinousLoad(true)
radio.sableContinousLoad(false)
```

Check if continuous loading is enabled:

```lua
print(radio.sableIsContinousLoading())
```

Get the current ship center position:

```lua
local pos = radio.sableShipCenterPos()
print(pos.x, pos.y, pos.z)
```

Note: ship integration is still being developed. Current behavior may fall back to block position.

## Optional Helper API

Radionautics also provides a helper API:

```lua
local radio = radionautics.find()
radio.udpBind("145.500")
radio.send("145.500", "chat:hello")
```

Crypto helper:

```lua
local encrypted = radionautics.crypto.encrypt("aes", "hello", "key")
local clear = radionautics.crypto.decrypt("aes", encrypted, "key")
```

Sable helper:

```lua
radionautics.sable.continousLoad(true)
```

## Troubleshooting

### `No radionautics_radio peripheral attached`

Make sure the antenna block is directly next to the computer.

### No message received

Check:

- Receiver called `radio.udpBind(frequency)`.
- Sender and receiver use the exact same frequency.
- The antennas are in the same dimension.
- The antennas are within range.
- The receiver program is still running.

### Encrypted message fails

Check:

- Both computers use the same crypto type.
- Both computers use the same key.
- The receiver uses `pcall` if it wants to ignore bad packets.

### Bind fails

The antenna may be out of active frequency slots.

Use:

```lua
print(radio.maxBinds())
print(radio.boundFrequencies())
```

Then close unused frequencies:

```lua
radio.close("old_frequency")
```

The Create: Radionautics Team

profile avatar
Owner
  • 1
    Projects
  • 52
    Downloads