redc
v0.0.6
Published
Compiles RED lang into Minecraft schematics
Downloads
12
Readme
redc
the compiler for REDlang, a minecraft general purpose computer
Usage
$ npm install -g redc
$ redc -f <path/to/file>
All options: | option | short | description | |--------|-------|-------------| | --file | -f | Path to input RED file [required] | --out | -o | Directory to output .mcfunction (defaults to the current directory) | --name | -n | Name of the outputted .mcfunction file (defaults to name of <file>)
In node
import redc from 'redc';
// or: import { compile } from 'redc';
redc.compile(...).then(console.log);
// => "setblock..."
Executing code on the computer
- Build the code:
redc -f <filename> -o
- Find the save file of your copy of the computer (typically in
AppData/Roaming/.minecraft/saves/...
on Windows) - Copy the
.mcfunction
file intodatapacks/red/data/red/functions
- Enter the world in Minecraft (if you are already in it, leave so the game reparses functions)
- Enter command
/function red:<filename>
- Go to the front of the ROM and disable the breaker right outside it (the row of pistons)
REDlang
REDlang is very low level. Every line translates 1:1 with machine code. A VSCode extension for syntax highlighting is available for install redlang
Example:
use i = ram:0
use counter = device:0
@entry
[Main]
i = 0
goto Loop
[Loop]
counter = i
i = i plus 1
# i will roll over eventually and then the `if` will not pass
goto Loop if i
# fall through
exit
The code will run like a for
loop, writing the index to the first word of device memory, starting from 0 and counting until it overflows at 63.
Breakdown
- The code defines two variables, allocating their sources and address in memory, syntax being:
use <variable> = <ram|device|input>:<address>
. - It defines two routines,
Main
andLoop
, taggingMain
as the entry routine. i
is initialized to 0 because there might be some memory from an old execution.counter
cannot be assigned tocounter + 1
becausecounter
is write-only memory.