Skip to content

Instantly share code, notes, and snippets.

@dshadowwolf
dshadowwolf / MMDLib 2 Structure Proposal.md
Last active July 2, 2020 17:08
Request For Discussion/Planning MMDLib 2.0 move

MMDLib 2.0 for 1.14+ Design

Key Points

Simple Material System

Material system data is JSON

  • Single language for the user across all MMDLib using mods
  • Meta-entries for requirements
  • Entries can point to classpaths

Simplified registration system

Registration via IMC

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
@dshadowwolf
dshadowwolf / convert-lang-files.c
Last active February 22, 2019 07:52
tiny utility to automate conversion of MC 1.12 and prior ".lang" files to the new (1.13+) json format for them
/*
* 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
*/
@dshadowwolf
dshadowwolf / config parser - example file.md
Last active August 4, 2018 06:39
notes and information about the config parser system being worked on for MMDLib

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": {