0.0.6 • Published 4 years ago
redc v0.0.6
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
.mcfunctionfile 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
exitThe 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,
MainandLoop, taggingMainas the entry routine. iis initialized to 0 because there might be some memory from an old execution.countercannot be assigned tocounter + 1becausecounteris write-only memory.