Material system data is JSON
- Single language for the user across all MMDLib using mods
- Meta-entries for requirements
- Entries can point to classpaths
Registration via IMC
| Let us assume you are starting from a fresh system. Your first task should be to ensure you have some form of GUI | |
| installed as you will need one to _run_ 86Box. In this case I suggest KDE as, on FreeBSD 14.3, it pulls in the Qt6 libraries, but you'll still need to run: | |
| ``` | |
| sudo pkg install `pkg search qt5 | egrep ^qt5 | cut -d' ' -f1` | |
| ``` | |
| This will pull in all of Qt5, which is currently needed for the build. | |
| Next is to setup the dev environment -- you'll need `git` for pulling down the repo and `cmake` for configuring things, at a minimum: | |
| `sudo pkg install cmake git` |
| val planks as IIngredient[] = [ <minecraft:planks>, <minecraft:planks:1>, <minecraft:planks:2>, <minecraft:planks:3>, <minecraft:planks:4>, <minecraft:planks:5> ]; | |
| val logs as IIngredient[] = [ <minecraft:log>, <minecraft:log:1>, <minecraft:log:2>, <minecraft:log:3>, <minecraft:log2>, <minecraft:log2:1> ]; | |
| val axes as IIngredient[] = [ <minecraft:wooden_axe>, <minecraft:stone_axe>, <minecraft:golden_axe>, <minecraft:iron_axe>, <minecraft:diamond_axe> ]; | |
| val amount as int[] = [ 1, 1, 1, 2, 3 ]; | |
| val wood_names as string[] = [ "oak", "spruce", "birch", "jungle", "acacia", "dark_oak" ]; | |
| val axe_names as string[] = [ "primitive", "primitive", "primitive", "ordinary", "advanced" ]; | |
| for i, item in planks { | |
| recipes.remove(item*4); | |
| for x, axe in axes { | |
| recipes.addShapeless( wood_names[i]+"_planks_with_"+axe_names[x]+"_axe", item*amount[x], [ logs[i], axe.anyDamage().transformDamage ]); |
| <tconstruct:cast> -- blank cast | |
| <tconstruct:cast>.withTag({PartType: "tconstruct:binding"}) | |
| <tconstruct:cast>.withTag({PartType: "tconstruct:arrow_shaft"}) | |
| <tconstruct:cast>.withTag({PartType: "tconstruct:arrow_head"}) | |
| <tconstruct:cast>.withTag({PartType: "tconstruct:tough_tool_rod"}) | |
| <tconstruct:cast>.withTag({PartType: "tconstruct:hand_guard"}) | |
| <tconstruct:cast>.withTag({PartType: "tconstruct:pan_head"}) | |
| <tconstruct:cast>.withTag({PartType: "tconstruct:sharpening_kit"}) | |
| <tconstruct:cast>.withTag({PartType: "tconstruct:large_sword_blade"}) | |
| <tconstruct:cast>.withTag({PartType: "tconstruct:axe_head"}) |
| make[1]: Entering directory '/home/madman/cross-win/mxe' | |
| uname -a | |
| Linux devwolf2 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2 (2019-08-28) x86_64 GNU/Linux | |
| git log --pretty=tformat:"%H - %s [%ar] [%d]" -1 | |
| 08544fd3f2d06c25cf9879edf4dde08ace00b1d8 - fluisynth: add mman-win32 dependency [2 days ago] [ (HEAD -> master, origin/master, origin/HEAD)] | |
| lsb_release -a 2>/dev/null || sw_vers 2>/dev/null || true | |
| Distributor ID: Debian | |
| Description: Debian GNU/Linux 10 (buster) | |
| Release: 10 | |
| Codename: buster |
| make[1]: Entering directory '/home/madman/cross-win/mxe' | |
| uname -a | |
| Linux devwolf2 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2 (2019-08-28) x86_64 GNU/Linux | |
| git log --pretty=tformat:"%H - %s [%ar] [%d]" -1 | |
| 08544fd3f2d06c25cf9879edf4dde08ace00b1d8 - fluisynth: add mman-win32 dependency [2 days ago] [ (HEAD -> master, origin/master, origin/HEAD)] | |
| lsb_release -a 2>/dev/null || sw_vers 2>/dev/null || true | |
| Distributor ID: Debian | |
| Description: Debian GNU/Linux 10 (buster) | |
| Release: 10 | |
| Codename: buster |
| make[1]: Entering directory '/home/madman/cross-win/mxe' | |
| uname -a | |
| Linux devwolf2 4.9.0-9-amd64 #1 SMP Debian 4.9.168-1+deb9u3 (2019-06-16) x86_64 GNU/Linux | |
| git log --pretty=tformat:"%H - %s [%ar] [%d]" -1 | |
| aaa5a1be9315f89ed9fe7331b19cb517ed160ae7 - cmake: add note to test thoroughly after updates [5 days ago] [ (HEAD -> master, origin/master, origin/HEAD)] | |
| lsb_release -a 2>/dev/null || sw_vers 2>/dev/null || true | |
| Distributor ID: Debian | |
| Description: Debian GNU/Linux 9.11 (stretch) | |
| Release: 9.11 | |
| Codename: stretch |
| /* | |
| * Copyright (c) 2019 Daniel "DShadowWolf" Hazelton | |
| * GNU GPL v2 only | |
| * | |
| * build: gcc -o convert-lang-files convert-lang-files.c -lpcre | |
| * use: convert-lang-files [input file] > [output file] [2> [logfile]] | |
| * "[input file]" and "[output file]" are required, the "2>" bit is redirecting possible error output to a log-file | |
| * | |
| * NOTE: This will break if it finds a line that does not match <key>=<value> or #<comment> in the file outside of blank lines | |
| */ |
The following is an example of a valid config file - modified to include comments where the original of this (used in the test suite) does not.
// top level section
/*
* The original formulation of the concept only allowed sections at the top level
* After a bit of discussion, it was decided that this was a bit limiting.
*/
section {
# key to test operation and list parsing
| { | |
| "version": "2.0", | |
| "presets": { | |
| "dimensions": { | |
| "all-overworld": { "excludes": [] }, | |
| "overworld": { "includes": [ 0 ] }, | |
| "nether": { "includes": [ -1 ] }, | |
| "end": { "includes": [1] } | |
| }, | |
| "biomes": { |