minecraft-datapack-language 15.4.39__tar.gz → 15.4.41__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {minecraft_datapack_language-15.4.39/minecraft_datapack_language.egg-info → minecraft_datapack_language-15.4.41}/PKG-INFO +5 -5
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/README.md +4 -4
- minecraft_datapack_language-15.4.41/docs/_data/version.yml +3 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_docs/cli-reference.md +5 -2
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_docs/examples.md +9 -9
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_docs/getting-started.md +3 -3
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_docs/vscode-extension.md +1 -1
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/index.md +2 -2
- minecraft_datapack_language-15.4.41/examples/hello_world.mdl +23 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/examples/simple_counter.mdl +7 -7
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language/_version.py +3 -3
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language/cli.py +10 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language/mdl_compiler.py +10 -6
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language/python_api.py +100 -25
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41/minecraft_datapack_language.egg-info}/PKG-INFO +5 -5
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language.egg-info/SOURCES.txt +2 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/multi_scope_example.mdl +30 -23
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scope_demo.mdl +9 -9
- minecraft_datapack_language-15.4.41/temp_output/data/minecraft/tags/function/load.json +5 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/tests/run_all_tests.py +5 -5
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/tests/test_cli.py +16 -8
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/tests/test_comprehensive_end_to_end.py +9 -14
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/tests/test_python_api.py +33 -26
- minecraft_datapack_language-15.4.41/tmp_local_cli_out.zip +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/README.md +3 -3
- minecraft_datapack_language-15.4.39/docs/_data/version.yml +0 -3
- minecraft_datapack_language-15.4.39/examples/hello_world.mdl +0 -23
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.cursor/rules/aispec.mdc +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.github/actions/mdl-compile/action.yml +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.github/workflows/ci.yml +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.github/workflows/docs.yml +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.github/workflows/pypi.yml +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.github/workflows/release.yml +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.github/workflows/update-website-version.yml +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.gitignore +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1/data/minecraft/tags/function/load.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1/data/test1/function/load.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1/data/test1/function/load1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1/data/test1/function/main.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1/data/test1/function/main__else_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1/data/test1/function/main__if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1/data/test1/function/testfunc.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1/data/test1/function/testfunc__while_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1/pack.mcmeta +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1-confirm/data/minecraft/tags/function/load.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1-confirm/data/test1/function/load.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1-confirm/data/test1/function/load1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1-confirm/data/test1/function/main.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1-confirm/data/test1/function/main__else_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1-confirm/data/test1/function/main__if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1-confirm/data/test1/function/testfunc.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1-confirm/data/test1/function/testfunc__while_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/.mdl-out-test1-confirm/pack.mcmeta +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/COMPILER_FIXES_SUMMARY.md +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/CONDITIONALS_IMPLEMENTATION.md +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/LICENSE +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/Makefile +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/advancements/diamond_sword.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/advancements/first_spell.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/advancements/other_advancement.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/advancements/test_advancement.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/comprehensive_error_test.mdl +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/complex_scopes/function/main_else_8.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/complex_scopes/function/main_if_8.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_basic_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_basic_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_basic_if_if_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_complex_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_complex_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_complex_if_if_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_complex_if_if_5.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_control_complex_expressions_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_control_complex_expressions_if_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_control_variable_substitution_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_control_with_raw_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_control_with_scopes_if_5.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_control_with_tellraw_else_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_control_with_tellraw_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_control_with_tellraw_if_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_if_else_else_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_if_else_else_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_if_else_else_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_if_else_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_if_else_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_if_else_if_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_nested_if_else_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_nested_if_else_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_nested_if_else_3_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_nested_if_else_3_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_nested_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_nested_if_if_2_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_nested_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_nested_if_if_3_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/comprehensive_control_test/function/test_nested_if_if_3_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/control_test/function/main_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/control_test/function/main_while_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/control_test/function/main_while_body_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/if_test/function/main_else_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/if_test/function/main_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/conditional_demo_else_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/conditional_demo_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/conditional_demo_if_3_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/conditional_demo_if_3_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/conditional_demo_if_3_if_0_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/conditional_demo_if_3_if_0_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/countdown_while_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/countdown_while_body_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/increase_tick_per_player_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/increase_tick_per_player_if_1_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/loop_demo_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/loop_demo_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/loop_demo_while_body_2_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/loop_demo_while_body_2_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/loop_demo_while_body_2_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/main_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/main_else_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/main_else_5.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/main_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/main_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/main_if_5.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/main_while_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/main_while_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/main_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/main_while_6.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/main_while_7.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/main_while_body_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/main_while_body_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/main_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/main_while_body_6.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/main_while_body_7.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/scoreboard_demo_while_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/scoreboard_demo_while_body_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/scoreboard_demo_while_body_3_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/start_game_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/start_game_if_5.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/start_game_while_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/start_game_while_body_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_basic_if_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_basic_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_basic_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_basic_while_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_basic_while_while_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_basic_while_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_basic_while_while_body_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_if_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_if_if_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_nested_control_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_nested_control_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_nested_control_while_body_2_else_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_nested_control_while_body_2_else_1_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_nested_control_while_body_2_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_nested_control_while_body_2_if_1_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_nested_control_while_body_2_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_scope_scenarios_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_scope_scenarios_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_scope_scenarios_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_scope_scenarios_if_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_while_while_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_while_while_6.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_while_while_body_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_complex_while_while_body_6.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_complex_expressions_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_complex_expressions_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_complex_expressions_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_complex_expressions_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_error_handling_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_error_handling_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_error_handling_while_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_error_handling_while_body_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_performance_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_performance_while_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_performance_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_performance_while_body_2_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_performance_while_body_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_performance_while_body_4_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_performance_while_body_4_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_scoped_functions_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_scoped_functions_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_scoped_functions_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_scoped_functions_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_variable_substitution_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_variable_substitution_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_variable_substitution_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_variable_substitution_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_assignments_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_assignments_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_assignments_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_assignments_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_functions_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_functions_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_functions_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_functions_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_raw_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_raw_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_raw_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_scopes_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_scopes_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_scopes_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_scopes_if_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_tellraw_else_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_tellraw_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_tellraw_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_tellraw_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_control_with_tellraw_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_if_else_else_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_if_else_else_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_if_else_else_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_if_else_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_if_else_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_if_else_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_main_while_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_main_while_body_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_nested_if_else_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_nested_if_else_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_nested_if_else_2_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_nested_if_else_2_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_nested_if_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_nested_if_if_1_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_nested_if_if_1_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_nested_if_if_1_if_0_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_nested_if_if_1_if_0_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_nested_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_nested_if_if_2_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_nested_if_if_2_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_scope_conditionals_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_scope_conditionals_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_scope_conditionals_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_scope_conditionals_while_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_scope_conditionals_while_5.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_scope_conditionals_while_body_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_scope_conditionals_while_body_5.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_scope_interactions_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_scope_interactions_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_scope_interactions_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_while_break_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_while_break_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_while_break_while_body_2_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/test_while_break_while_body_2_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/tick_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/tick_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/tick_if_2_while_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/tick_if_2_while_body_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/weapon_effects_else_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test/function/weapon_effects_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test_final_template_fixed/function/main_else_8.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/test_final_template_fixed/function/main_if_8.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/while_test/function/main_while_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/data/while_test/function/main_while_body_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/dist.zip +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/.env +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/404.html +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/Gemfile +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/README.md +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_config.yml +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_docs/contributing.md +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_docs/docs-hub.md +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_docs/documentation.md +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_docs/language-reference.md +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_docs/multi-file-projects.md +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_docs/python-bindings.md +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_includes/head-custom.html +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_includes/navigation.html +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_layouts/default.html +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_layouts/page.html +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_plugins/test_version.rb +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_plugins/version_reader.rb +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/assets/css/style.css +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/docs.md +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/downloads.md +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/icons/favicon-16.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/icons/favicon-32.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/icons/favicon-48.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/icons/favicon-64.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/icons/icon-1024.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/icons/icon-128.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/icons/icon-256.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/icons/icon-512.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/icons/icon-64.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/examples/scope_examples.mdl +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/icons/favicon-16.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/icons/favicon-32.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/icons/favicon-48.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/icons/favicon-64.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/icons/icon-1024.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/icons/icon-128.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/icons/icon-256.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/icons/icon-512.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/icons/icon-64.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/item_modifiers/diamond_sword.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/item_modifiers/enchant_tool.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/item_modifiers/test_item_modifier.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/loot_tables/diamond_sword.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/loot_tables/epic_loot.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/loot_tables/main_loot.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/loot_tables/test_loot.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/mdllocal.sh +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language/__init__.py +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language/ast_nodes.py +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language/dir_map.py +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language/mdl_errors.py +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language/mdl_lexer.py +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language/mdl_linter.py +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language/mdl_parser.py +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language/utils.py +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language.egg-info/dependency_links.txt +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language.egg-info/entry_points.txt +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language.egg-info/requires.txt +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/minecraft_datapack_language.egg-info/top_level.txt +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/my_awesome_pack/README.md +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/my_awesome_pack/minecraft_datapack_language.mdl +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/predicates/diamond_sword.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/predicates/has_mana.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/predicates/other_predicate.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/predicates/test_predicate.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/pyproject.toml +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/pytest.ini +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/recipes/custom_pickaxe.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/recipes/diamond_sword.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/recipes/first.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/recipes/inlet.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/recipes/main_recipe.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/recipes/outlet.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/recipes/pipe.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/recipes/second.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/recipes/test_recipe.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/recipes/wrench.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scoreboard_test.mdl +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/UpdateMDL.sh +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/bootstrap.ps1 +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/bootstrap.sh +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/build_pkg.ps1 +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/build_pkg.sh +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/dev_build.ps1 +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/dev_build.sh +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/dev_setup.ps1 +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/dev_setup.sh +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/git-bash/bootstrap-gitbash.sh +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/git-bash/build_pkg-gitbash.sh +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/git-bash/test_cli-gitbash.sh +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/release.sh +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/test_cli.ps1 +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/test_cli.sh +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/test_dev.ps1 +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/test_dev.sh +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/update_docs.sh +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/scripts/update_version_info.sh +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/setup.cfg +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/structures/diamond_sword.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/structures/test_structure.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/structures/workshop.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/tellraw_variables_test.mdl +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/temp_output/data/test/function/helper.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/temp_output/data/test/function/load.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/temp_output/data/test/function/main.mcfunction +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/temp_output/pack.mcmeta +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/test_all_registry.mdl +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/test_complex_scenarios.mdl +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/test_comprehensive_fixes.mdl +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/test_if_else_while.mdl +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/test_project/complex_test.mdl +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/test_simple.mdl +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/tests/__init__.py +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/tests/test_codegen_naming_and_logic.py +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/tests/test_compiler_fixes.py +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/tests/test_complex_scenarios.py +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/tests/test_python_bindings.py +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/tests/test_user_regression_test1.py +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/tmp_test1.mdl +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/tmp_test1.mdl~ +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/tmp_test1_confirm.mdl +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/icons/favicon-16.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/icons/favicon-32.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/icons/favicon-48.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/icons/favicon-64.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/icons/icon-1024.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/icons/icon-128.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/icons/icon-256.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/icons/icon-512.png +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/language-configuration.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/package-lock.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/package.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/snippets/mdl.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/src/extension.ts +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/syntaxes/mdl.tmLanguage.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/themes/mdl-color-theme.json +0 -0
- {minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/vscode-extension/tsconfig.json +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: minecraft-datapack-language
|
3
|
-
Version: 15.4.
|
3
|
+
Version: 15.4.41
|
4
4
|
Summary: Compile MDL language with explicit scoping into a Minecraft datapack (1.21+ ready). Features variables, control flow, error handling, and VS Code extension.
|
5
5
|
Project-URL: Homepage, https://www.mcmdl.com
|
6
6
|
Project-URL: Documentation, https://www.mcmdl.com/docs
|
@@ -146,17 +146,17 @@ namespace "game";
|
|
146
146
|
var num player_score<@s> = 0;
|
147
147
|
var num team_score<@a[team=red]> = 0;
|
148
148
|
|
149
|
-
function game:start
|
149
|
+
function game:start {
|
150
150
|
player_score<@s> = 100;
|
151
151
|
say "Welcome! Your score is $player_score<@s>$";
|
152
152
|
}
|
153
153
|
|
154
|
-
on_load game:start
|
154
|
+
on_load game:start;
|
155
155
|
```
|
156
156
|
|
157
157
|
### Control Structures
|
158
158
|
```mdl
|
159
|
-
function game:check_score
|
159
|
+
function game:check_score {
|
160
160
|
if $player_score<@s>$ > 10 {
|
161
161
|
say "Great score!";
|
162
162
|
player_score<@s> = $player_score<@s>$ + 5;
|
@@ -185,7 +185,7 @@ tag structure "wizard_tower" "structures/wizard_tower.json";
|
|
185
185
|
|
186
186
|
### Raw Blocks and Say Commands
|
187
187
|
```mdl
|
188
|
-
function game:special_effect
|
188
|
+
function game:special_effect {
|
189
189
|
$!raw
|
190
190
|
execute as @s run particle minecraft:explosion ~ ~ ~ 1 1 1 0 10
|
191
191
|
execute as @s run playsound minecraft:entity.player.levelup player @s ~ ~ ~ 1 1
|
@@ -125,17 +125,17 @@ namespace "game";
|
|
125
125
|
var num player_score<@s> = 0;
|
126
126
|
var num team_score<@a[team=red]> = 0;
|
127
127
|
|
128
|
-
function game:start
|
128
|
+
function game:start {
|
129
129
|
player_score<@s> = 100;
|
130
130
|
say "Welcome! Your score is $player_score<@s>$";
|
131
131
|
}
|
132
132
|
|
133
|
-
on_load game:start
|
133
|
+
on_load game:start;
|
134
134
|
```
|
135
135
|
|
136
136
|
### Control Structures
|
137
137
|
```mdl
|
138
|
-
function game:check_score
|
138
|
+
function game:check_score {
|
139
139
|
if $player_score<@s>$ > 10 {
|
140
140
|
say "Great score!";
|
141
141
|
player_score<@s> = $player_score<@s>$ + 5;
|
@@ -164,7 +164,7 @@ tag structure "wizard_tower" "structures/wizard_tower.json";
|
|
164
164
|
|
165
165
|
### Raw Blocks and Say Commands
|
166
166
|
```mdl
|
167
|
-
function game:special_effect
|
167
|
+
function game:special_effect {
|
168
168
|
$!raw
|
169
169
|
execute as @s run particle minecraft:explosion ~ ~ ~ 1 1 1 0 10
|
170
170
|
execute as @s run playsound minecraft:entity.player.levelup player @s ~ ~ ~ 1 1
|
@@ -22,6 +22,8 @@ Build MDL files into Minecraft datapacks:
|
|
22
22
|
|
23
23
|
```bash
|
24
24
|
mdl build --mdl <files> -o <output_dir>
|
25
|
+
# Zips by default -> creates <output_dir>.zip
|
26
|
+
# Use --no-zip to skip archive creation
|
25
27
|
```
|
26
28
|
|
27
29
|
**Examples:**
|
@@ -148,6 +150,7 @@ my_awesome_pack/
|
|
148
150
|
| `-o <dir>` | Output directory | `-o dist` |
|
149
151
|
| `--verbose` | Show detailed output | `--verbose` |
|
150
152
|
| `--wrapper <name>` | Custom wrapper name | `--wrapper mypack` |
|
153
|
+
| `--no-zip` | Skip creating zip archive (zip is default) | `--no-zip` |
|
151
154
|
| `--ignore-warnings` | Suppress warning messages | `--ignore-warnings` |
|
152
155
|
|
153
156
|
### Check Options
|
@@ -256,7 +259,7 @@ If you prefer to create files manually, you can start with:
|
|
256
259
|
pack "hello" "My first datapack" 82;
|
257
260
|
namespace "hello";
|
258
261
|
|
259
|
-
function hello:main
|
262
|
+
function hello:main {
|
260
263
|
say "Hello, Minecraft!";
|
261
264
|
}
|
262
265
|
|
@@ -302,7 +305,7 @@ var num playerScore<@s> = 0; // Defaults to @s
|
|
302
305
|
var num globalCounter<@a> = 0; // Global scope
|
303
306
|
var num teamScore<@a[team=red]> = 0; // Team scope
|
304
307
|
|
305
|
-
function hello:main
|
308
|
+
function hello:main {
|
306
309
|
// Use explicit scope in conditions
|
307
310
|
if $playerScore<@s>$ > 10 {
|
308
311
|
say "Current player score is high!";
|
{minecraft_datapack_language-15.4.39 → minecraft_datapack_language-15.4.41}/docs/_docs/examples.md
RENAMED
@@ -14,12 +14,12 @@ A simple datapack that says hello when loaded:
|
|
14
14
|
pack "hello" "A simple hello world datapack" 82;
|
15
15
|
namespace "hello";
|
16
16
|
|
17
|
-
function hello:main
|
17
|
+
function hello:main {
|
18
18
|
say "Hello, Minecraft!";
|
19
19
|
tellraw @a {"text":"Welcome to my datapack!","color":"green"};
|
20
20
|
}
|
21
21
|
|
22
|
-
on_load hello:main
|
22
|
+
on_load hello:main;
|
23
23
|
```
|
24
24
|
|
25
25
|
## Counter with Scoped Variables
|
@@ -33,17 +33,17 @@ namespace "counter";
|
|
33
33
|
var num globalCounter<@a> = 0;
|
34
34
|
var num playerCounter<@s> = 0; // Defaults to player-specific scope
|
35
35
|
|
36
|
-
function counter:increment
|
36
|
+
function counter:increment {
|
37
37
|
globalCounter<@a> = $globalCounter<@a>$ + 1;
|
38
38
|
playerCounter<@s> = $playerCounter<@s>$ + 1;
|
39
39
|
say "Global: $globalCounter<@a>$, Player: $playerCounter<@s>$";
|
40
40
|
}
|
41
41
|
|
42
|
-
function counter:show_all
|
42
|
+
function counter:show_all {
|
43
43
|
exec counter:increment<@a>;
|
44
44
|
}
|
45
45
|
|
46
|
-
on_load counter:increment
|
46
|
+
on_load counter:increment;
|
47
47
|
```
|
48
48
|
|
49
49
|
## While Loop Example
|
@@ -56,7 +56,7 @@ namespace "loops";
|
|
56
56
|
|
57
57
|
var num counter<@a> = 0;
|
58
58
|
|
59
|
-
function loops:countdown
|
59
|
+
function loops:countdown {
|
60
60
|
counter<@a> = 5;
|
61
61
|
while $counter<@a>$ > 0 {
|
62
62
|
say "Countdown: $counter<@a>$";
|
@@ -65,7 +65,7 @@ function loops:countdown<@s> {
|
|
65
65
|
say "Blast off!";
|
66
66
|
}
|
67
67
|
|
68
|
-
on_load loops:countdown
|
68
|
+
on_load loops:countdown;
|
69
69
|
```
|
70
70
|
|
71
71
|
## Raw Commands
|
@@ -76,14 +76,14 @@ Using raw Minecraft commands:
|
|
76
76
|
pack "raw" "Raw command example" 82;
|
77
77
|
namespace "raw";
|
78
78
|
|
79
|
-
function raw:custom
|
79
|
+
function raw:custom {
|
80
80
|
// Use raw Minecraft commands
|
81
81
|
effect give @s minecraft:speed 10 1;
|
82
82
|
particle minecraft:explosion ~ ~ ~ 1 1 1 0 10;
|
83
83
|
playsound minecraft:entity.player.levelup player @s ~ ~ ~ 1 1;
|
84
84
|
}
|
85
85
|
|
86
|
-
on_load raw:custom
|
86
|
+
on_load raw:custom;
|
87
87
|
```
|
88
88
|
|
89
89
|
## Complete Game Example
|
@@ -23,12 +23,12 @@ Create your first MDL file:
|
|
23
23
|
pack "hello" "My first datapack" 82;
|
24
24
|
namespace "hello";
|
25
25
|
|
26
|
-
function hello:main
|
26
|
+
function hello:main {
|
27
27
|
say "Hello, Minecraft!";
|
28
28
|
tellraw @a {"text":"Welcome to my datapack!","color":"green"};
|
29
29
|
}
|
30
30
|
|
31
|
-
on_load hello:main
|
31
|
+
on_load hello:main;
|
32
32
|
```
|
33
33
|
|
34
34
|
Compile it:
|
@@ -79,7 +79,7 @@ if $playerScore<@s>$ > 100 {
|
|
79
79
|
Functions contain Minecraft commands:
|
80
80
|
|
81
81
|
```mdl
|
82
|
-
function hello:my_function
|
82
|
+
function hello:my_function {
|
83
83
|
say "This is my function!";
|
84
84
|
effect give @s minecraft:speed 10 1;
|
85
85
|
}
|
@@ -107,7 +107,7 @@ The extension highlights the following MDL elements:
|
|
107
107
|
|
108
108
|
- **Pack declarations**: `pack "Name" description "Desc" pack_format 48`
|
109
109
|
- **Namespaces**: `namespace "example"`
|
110
|
-
- **Functions**: `function namespace:name
|
110
|
+
- **Functions**: `function namespace:name`
|
111
111
|
- **Lifecycle hooks**: `on_load`, `on_tick`
|
112
112
|
- **Tags**: `tag function "minecraft:tick":`
|
113
113
|
- **Comments**: `# This is a comment`
|
@@ -134,14 +134,14 @@ namespace "example";
|
|
134
134
|
|
135
135
|
var num counter<@s> = 0;
|
136
136
|
|
137
|
-
function example:hello
|
137
|
+
function example:hello {
|
138
138
|
say "Hello, Minecraft!";
|
139
139
|
tellraw @a {"text":"Welcome to my datapack!","color":"green"};
|
140
140
|
counter<@s> = $counter<@s>$ + 1;
|
141
141
|
say "Counter: $counter<@s>$";
|
142
142
|
}
|
143
143
|
|
144
|
-
on_load example:hello
|
144
|
+
on_load example:hello;
|
145
145
|
```
|
146
146
|
|
147
147
|
### Build and Run
|
@@ -0,0 +1,23 @@
|
|
1
|
+
// Hello World example with scope selectors
|
2
|
+
pack "hello_world" "A simple hello world datapack" 15;
|
3
|
+
namespace "hello_world";
|
4
|
+
|
5
|
+
// Global counter accessible by all players
|
6
|
+
var num globalCounter<@a> = 0;
|
7
|
+
|
8
|
+
function hello_world:main {
|
9
|
+
// Increment global counter
|
10
|
+
globalCounter<@a> = $globalCounter<@a>$ + 1;
|
11
|
+
|
12
|
+
say "Hello, Minecraft!";
|
13
|
+
say "Welcome to my datapack!";
|
14
|
+
say "Global counter: $globalCounter<@a>$";
|
15
|
+
}
|
16
|
+
|
17
|
+
function hello_world:greet_player {
|
18
|
+
// Player-specific greeting
|
19
|
+
say "Welcome, player! You are visitor number $globalCounter<@a>$";
|
20
|
+
}
|
21
|
+
|
22
|
+
on_load hello_world:main;
|
23
|
+
on_tick hello_world:greet_player<@a>;
|
@@ -10,25 +10,25 @@ var num playerCounter<@s> = 0;
|
|
10
10
|
|
11
11
|
function "increment_global" {
|
12
12
|
// Increment the global counter
|
13
|
-
globalCounter<@a> = globalCounter<@a
|
14
|
-
say Global counter: $globalCounter
|
13
|
+
globalCounter<@a> = $globalCounter<@a>$ + 1;
|
14
|
+
say "Global counter: $globalCounter<@a>$";
|
15
15
|
}
|
16
16
|
|
17
17
|
function "increment_player" {
|
18
18
|
// Increment the player-specific counter
|
19
|
-
playerCounter<@s> = playerCounter<@s
|
20
|
-
say Your counter: $playerCounter
|
19
|
+
playerCounter<@s> = $playerCounter<@s>$ + 1;
|
20
|
+
say "Your counter: $playerCounter<@s>$";
|
21
21
|
}
|
22
22
|
|
23
23
|
function "show_both" {
|
24
24
|
// Show both counters
|
25
|
-
say Global: $globalCounter
|
25
|
+
say "Global: $globalCounter<@a>$, Player: $playerCounter<@s>$";
|
26
26
|
}
|
27
27
|
|
28
28
|
function "reset_player" {
|
29
29
|
// Reset player counter to global value
|
30
|
-
playerCounter<@s> = globalCounter<@a
|
31
|
-
say Reset to global value: $playerCounter
|
30
|
+
playerCounter<@s> = $globalCounter<@a>$;
|
31
|
+
say "Reset to global value: $playerCounter<@s>$";
|
32
32
|
}
|
33
33
|
|
34
34
|
function "run_for_all" {
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
28
28
|
commit_id: COMMIT_ID
|
29
29
|
__commit_id__: COMMIT_ID
|
30
30
|
|
31
|
-
__version__ = version = '15.4.
|
32
|
-
__version_tuple__ = version_tuple = (15, 4,
|
31
|
+
__version__ = version = '15.4.41'
|
32
|
+
__version_tuple__ = version_tuple = (15, 4, 41)
|
33
33
|
|
34
|
-
__commit_id__ = commit_id = '
|
34
|
+
__commit_id__ = commit_id = 'gb4437b04f'
|
@@ -7,6 +7,7 @@ import argparse
|
|
7
7
|
import sys
|
8
8
|
import os
|
9
9
|
from pathlib import Path
|
10
|
+
import shutil
|
10
11
|
from .mdl_lexer import MDLLexer
|
11
12
|
from .mdl_parser import MDLParser
|
12
13
|
from .mdl_compiler import MDLCompiler
|
@@ -37,6 +38,7 @@ Examples:
|
|
37
38
|
build_parser.add_argument('-o', '--output', required=True, help='Output directory for the datapack')
|
38
39
|
build_parser.add_argument('--verbose', action='store_true', help='Show detailed output')
|
39
40
|
build_parser.add_argument('--wrapper', help='Optional wrapper directory name for the datapack output')
|
41
|
+
build_parser.add_argument('--no-zip', action='store_true', help='Do not create a zip archive (zip is created by default)')
|
40
42
|
|
41
43
|
# Check command
|
42
44
|
check_parser = subparsers.add_parser('check', help='Check MDL files for syntax errors')
|
@@ -150,6 +152,14 @@ def build_command(args):
|
|
150
152
|
output_dir = output_dir / args.wrapper
|
151
153
|
compiler = MDLCompiler()
|
152
154
|
output_path = compiler.compile(final_ast, str(output_dir))
|
155
|
+
|
156
|
+
# Zip the datapack by default unless disabled
|
157
|
+
if not getattr(args, 'no_zip', False):
|
158
|
+
base_name = str(Path(output_path))
|
159
|
+
# Create archive next to the output directory (base_name.zip)
|
160
|
+
archive_path = shutil.make_archive(base_name, 'zip', root_dir=str(Path(output_path)))
|
161
|
+
if args.verbose:
|
162
|
+
print(f"Created archive: {archive_path}")
|
153
163
|
|
154
164
|
print(f"Successfully built datapack: {output_path}")
|
155
165
|
return 0
|
@@ -225,10 +225,11 @@ class MDLCompiler:
|
|
225
225
|
print(f"Tag {tag.tag_type}: {tag.name} -> {tag_file} (placeholder)")
|
226
226
|
else:
|
227
227
|
# Write simple values list
|
228
|
-
|
229
|
-
#
|
230
|
-
if ":" in tag.name
|
231
|
-
|
228
|
+
# For item tags, the TagDeclaration.name may include namespace:name
|
229
|
+
# The output filename should be the local name (after ':') if present
|
230
|
+
name_for_file = tag.name.split(":", 1)[1] if ":" in tag.name else tag.name
|
231
|
+
tag_file = tag_dir / f"{name_for_file}.json"
|
232
|
+
values = [tag.name if ":" in tag.name else f"{self.current_namespace}:{tag.name}"]
|
232
233
|
tag_data = {"values": values}
|
233
234
|
with open(tag_file, 'w') as f:
|
234
235
|
json.dump(tag_data, f, indent=2)
|
@@ -249,11 +250,14 @@ class MDLCompiler:
|
|
249
250
|
load_file = functions_dir / "load.mcfunction"
|
250
251
|
with open(load_file, 'w') as f:
|
251
252
|
f.write(load_content)
|
252
|
-
# Ensure minecraft load tag points to namespace:load
|
253
|
+
# Ensure minecraft load tag points to namespace:load
|
253
254
|
tags_fn_dir = self.output_dir / "data" / "minecraft" / self.dir_map.tags_function
|
254
255
|
tags_fn_dir.mkdir(parents=True, exist_ok=True)
|
255
256
|
load_tag_file = tags_fn_dir / "load.json"
|
256
|
-
|
257
|
+
# If there are explicit on_load hooks, include them; otherwise reference namespace:load
|
258
|
+
values = [f"{self.current_namespace}:load"]
|
259
|
+
if has_on_load:
|
260
|
+
values = [f"{hook.namespace}:{hook.name}" for hook in hooks if hook.hook_type == "on_load"]
|
257
261
|
with open(load_tag_file, 'w') as f:
|
258
262
|
json.dump({"values": values}, f, indent=2)
|
259
263
|
|
@@ -129,33 +129,108 @@ class Namespace:
|
|
129
129
|
self._functions: List[FunctionDeclaration] = []
|
130
130
|
self._hooks: List = []
|
131
131
|
|
132
|
-
def function(self, name: str, *commands_or_builder: Union[str, Callable[
|
133
|
-
builder
|
134
|
-
|
135
|
-
# If a single callable is given, treat it as a builder lambda
|
132
|
+
def function(self, name: str, *commands_or_builder: Union[str, Callable["FunctionBuilder"], None]):
|
133
|
+
# Case 1: builder callable - use FunctionBuilder API directly
|
136
134
|
if len(commands_or_builder) == 1 and callable(commands_or_builder[0]):
|
135
|
+
builder = FunctionBuilder(self._pack, self, name)
|
137
136
|
commands_or_builder[0](builder)
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
137
|
+
func_node = FunctionDeclaration(namespace=self.name, name=name, scope=None, body=builder._body)
|
138
|
+
self._functions.append(func_node)
|
139
|
+
return func_node
|
140
|
+
|
141
|
+
# Case 2: string-based function body - try parsing as MDL source to build real AST
|
142
|
+
body_lines: List[str] = []
|
143
|
+
for cmd in commands_or_builder:
|
144
|
+
if isinstance(cmd, str):
|
145
|
+
body_lines.append(cmd)
|
146
|
+
|
147
|
+
if body_lines:
|
148
|
+
try:
|
149
|
+
from .mdl_parser import MDLParser
|
150
|
+
pack_decl = self._pack._pack
|
151
|
+
|
152
|
+
# Heuristic: attempt MDL parse only if there are control structures or var declarations
|
153
|
+
looks_like_mdl = any(
|
154
|
+
l.strip().startswith(("var ", "if ", "while ", "on_load", "on_tick")) or
|
155
|
+
l.strip().endswith("{") or l.strip() == "}" or "$" in l
|
156
|
+
for l in body_lines
|
157
|
+
)
|
158
|
+
if looks_like_mdl:
|
159
|
+
normalized: List[str] = []
|
160
|
+
for line in body_lines:
|
161
|
+
s = line.strip()
|
162
|
+
if not s:
|
163
|
+
continue
|
164
|
+
if s.startswith("say "):
|
165
|
+
msg = s[len("say ") :].strip()
|
166
|
+
if not (msg.startswith('"') and msg.endswith('"')):
|
167
|
+
msg = f'"{msg}"'
|
168
|
+
normalized.append(f"say {msg};")
|
169
|
+
elif s.startswith("exec "):
|
170
|
+
if not s.endswith(";"):
|
171
|
+
s = s + ";"
|
172
|
+
normalized.append(s)
|
173
|
+
elif s.startswith("var "):
|
174
|
+
if not s.endswith(";"):
|
175
|
+
s = s + ";"
|
176
|
+
normalized.append(s)
|
177
|
+
elif s.endswith("{") or s == "}" or s.endswith("}"):
|
178
|
+
normalized.append(s)
|
179
|
+
else:
|
180
|
+
# Heuristic: detect assignment like name<scope> = expr
|
181
|
+
try:
|
182
|
+
import re as _re
|
183
|
+
if _re.match(r'^[A-Za-z_][A-Za-z0-9_]*(<[^>]+>)?\s*=\s*', s):
|
184
|
+
if not s.endswith(";"):
|
185
|
+
s = s + ";"
|
186
|
+
normalized.append(s)
|
187
|
+
else:
|
188
|
+
# Unknown command; wrap as single-line raw so parser accepts it
|
189
|
+
normalized.append(f"$!raw {s} raw!$")
|
190
|
+
except Exception:
|
191
|
+
normalized.append(f"$!raw {s} raw!$")
|
192
|
+
|
193
|
+
src_lines = [
|
194
|
+
f'pack "{pack_decl.name}" "{pack_decl.description}" {pack_decl.pack_format};',
|
195
|
+
f'namespace "{self.name}";',
|
196
|
+
f'function {self.name}:{name} {{'
|
197
|
+
]
|
198
|
+
src_lines.extend(normalized)
|
199
|
+
src_lines.append('}')
|
200
|
+
source = "\n".join(src_lines)
|
201
|
+
parser = MDLParser("<python_api>")
|
202
|
+
ast = parser.parse(source)
|
203
|
+
if ast.variables:
|
204
|
+
self._pack._variables.extend(ast.variables)
|
205
|
+
if ast.tags:
|
206
|
+
self._pack._tags.extend(ast.tags)
|
207
|
+
if ast.hooks:
|
208
|
+
self._pack._hooks.extend([(h.hook_type, f"{h.namespace}:{h.name}", h.scope) for h in ast.hooks])
|
209
|
+
if ast.functions:
|
210
|
+
fn = ast.functions[0]
|
211
|
+
self._functions.append(fn)
|
212
|
+
return fn
|
213
|
+
except Exception:
|
214
|
+
pass
|
215
|
+
|
216
|
+
# Fallback: interpret simple strings
|
217
|
+
builder = FunctionBuilder(self._pack, self, name)
|
218
|
+
for cmd in body_lines:
|
219
|
+
stripped = cmd.strip().rstrip(";")
|
220
|
+
if stripped.startswith("say "):
|
221
|
+
msg = stripped[len("say ") :].strip()
|
222
|
+
if msg.startswith('"') and msg.endswith('"'):
|
223
|
+
msg = msg[1:-1]
|
224
|
+
builder.say(msg)
|
225
|
+
elif stripped.startswith("exec "):
|
226
|
+
target = stripped[len("exec ") :].strip()
|
227
|
+
scope = None
|
228
|
+
if "<" in target and target.endswith(">"):
|
229
|
+
scope = target[target.index("<") :]
|
230
|
+
target = target[: target.index("<")]
|
231
|
+
builder.exec(target, scope)
|
232
|
+
else:
|
233
|
+
builder.raw(cmd)
|
159
234
|
|
160
235
|
func_node = FunctionDeclaration(namespace=self.name, name=name, scope=None, body=builder._body)
|
161
236
|
self._functions.append(func_node)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: minecraft-datapack-language
|
3
|
-
Version: 15.4.
|
3
|
+
Version: 15.4.41
|
4
4
|
Summary: Compile MDL language with explicit scoping into a Minecraft datapack (1.21+ ready). Features variables, control flow, error handling, and VS Code extension.
|
5
5
|
Project-URL: Homepage, https://www.mcmdl.com
|
6
6
|
Project-URL: Documentation, https://www.mcmdl.com/docs
|
@@ -146,17 +146,17 @@ namespace "game";
|
|
146
146
|
var num player_score<@s> = 0;
|
147
147
|
var num team_score<@a[team=red]> = 0;
|
148
148
|
|
149
|
-
function game:start
|
149
|
+
function game:start {
|
150
150
|
player_score<@s> = 100;
|
151
151
|
say "Welcome! Your score is $player_score<@s>$";
|
152
152
|
}
|
153
153
|
|
154
|
-
on_load game:start
|
154
|
+
on_load game:start;
|
155
155
|
```
|
156
156
|
|
157
157
|
### Control Structures
|
158
158
|
```mdl
|
159
|
-
function game:check_score
|
159
|
+
function game:check_score {
|
160
160
|
if $player_score<@s>$ > 10 {
|
161
161
|
say "Great score!";
|
162
162
|
player_score<@s> = $player_score<@s>$ + 5;
|
@@ -185,7 +185,7 @@ tag structure "wizard_tower" "structures/wizard_tower.json";
|
|
185
185
|
|
186
186
|
### Raw Blocks and Say Commands
|
187
187
|
```mdl
|
188
|
-
function game:special_effect
|
188
|
+
function game:special_effect {
|
189
189
|
$!raw
|
190
190
|
execute as @s run particle minecraft:explosion ~ ~ ~ 1 1 1 0 10
|
191
191
|
execute as @s run playsound minecraft:entity.player.levelup player @s ~ ~ ~ 1 1
|
@@ -18,6 +18,7 @@ test_complex_scenarios.mdl
|
|
18
18
|
test_comprehensive_fixes.mdl
|
19
19
|
test_if_else_while.mdl
|
20
20
|
test_simple.mdl
|
21
|
+
tmp_local_cli_out.zip
|
21
22
|
tmp_test1.mdl
|
22
23
|
tmp_test1.mdl~
|
23
24
|
tmp_test1_confirm.mdl
|
@@ -363,6 +364,7 @@ structures/diamond_sword.json
|
|
363
364
|
structures/test_structure.json
|
364
365
|
structures/workshop.json
|
365
366
|
temp_output/pack.mcmeta
|
367
|
+
temp_output/data/minecraft/tags/function/load.json
|
366
368
|
temp_output/data/test/function/helper.mcfunction
|
367
369
|
temp_output/data/test/function/load.mcfunction
|
368
370
|
temp_output/data/test/function/main.mcfunction
|