← Назад к ресурсам

Create: Radionautics

brass radio links and cc:tweaked antennas replace modems

Modrinth game-mechanics technology

Описание

Create Radionautics is ment to be a mod where realistic radios can be used to comunicate between players and computers. Currently There is a brass radio link ment to add infinite range for redstone links (its encryption mode doesn't work yet). The anntennas for cc:tweaked are ment to replace modems adding a progrssion to how strong connections can be for computers currenlty only brass anntenna can connect sable entities to other sable entities or the normal world as they have infinite range. The andesite anntenna has a range of 2000 blocks and the copper anntenna has a range of 500 blocks A simple tutorial on how to use the anntenas for UDP or TCP transfers via anntenas # 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") ```