minecraft-datapack-language 16.0.3__tar.gz → 16.0.5__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-16.0.3/minecraft_datapack_language.egg-info → minecraft_datapack_language-16.0.5}/PKG-INFO +1 -1
- minecraft_datapack_language-16.0.5/docs/_data/version.yml +3 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/language-reference.md +23 -2
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/_version.py +3 -3
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/ast_nodes.py +7 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/mdl_compiler.py +59 -1
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/mdl_lexer.py +2 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/mdl_parser.py +17 -1
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5/minecraft_datapack_language.egg-info}/PKG-INFO +1 -1
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language.egg-info/SOURCES.txt +1 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_python_api.py +2 -1
- minecraft_datapack_language-16.0.5/tests/test_scheduledwhile.py +54 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/syntaxes/mdl.tmLanguage.json +1 -1
- minecraft_datapack_language-16.0.3/docs/_data/version.yml +0 -3
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.cursor/rules/aispec.mdc +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.github/actions/mdl-compile/action.yml +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.github/workflows/ci.yml +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.github/workflows/docs.yml +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.github/workflows/pypi.yml +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.github/workflows/release.yml +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.github/workflows/update-website-version.yml +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.gitignore +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/data/minecraft/tags/function/load.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/data/test1/function/load.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/data/test1/function/load1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/data/test1/function/main.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/data/test1/function/main__else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/data/test1/function/main__if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/data/test1/function/testfunc.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/data/test1/function/testfunc__while_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/pack.mcmeta +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/data/minecraft/tags/function/load.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/data/test1/function/load.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/data/test1/function/load1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/data/test1/function/main.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/data/test1/function/main__else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/data/test1/function/main__if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/data/test1/function/testfunc.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/data/test1/function/testfunc__while_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/pack.mcmeta +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/COMPILER_FIXES_SUMMARY.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/CONDITIONALS_IMPLEMENTATION.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/LICENSE +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/Makefile +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/README.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/advancements/diamond_sword.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/advancements/first_spell.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/advancements/other_advancement.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/advancements/test_advancement.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/comprehensive_error_test.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/complex_scopes/function/main_else_8.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/complex_scopes/function/main_if_8.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_basic_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_basic_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_basic_if_if_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_complex_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_complex_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_complex_if_if_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_complex_if_if_5.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_control_complex_expressions_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_control_complex_expressions_if_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_control_variable_substitution_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_control_with_raw_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_control_with_scopes_if_5.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_control_with_tellraw_else_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_control_with_tellraw_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_control_with_tellraw_if_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_if_else_else_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_if_else_else_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_if_else_else_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_if_else_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_if_else_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_if_else_if_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_else_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_else_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_else_3_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_else_3_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_if_2_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_if_3_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_if_3_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/control_test/function/main_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/control_test/function/main_while_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/control_test/function/main_while_body_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/if_test/function/main_else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/if_test/function/main_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/conditional_demo_else_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/conditional_demo_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/conditional_demo_if_3_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/conditional_demo_if_3_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/conditional_demo_if_3_if_0_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/conditional_demo_if_3_if_0_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/countdown_while_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/countdown_while_body_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/increase_tick_per_player_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/increase_tick_per_player_if_1_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/loop_demo_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/loop_demo_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/loop_demo_while_body_2_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/loop_demo_while_body_2_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/loop_demo_while_body_2_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_else_5.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_if_5.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_6.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_7.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_body_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_body_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_body_6.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_body_7.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/scoreboard_demo_while_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/scoreboard_demo_while_body_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/scoreboard_demo_while_body_3_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/start_game_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/start_game_if_5.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/start_game_while_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/start_game_while_body_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_basic_if_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_basic_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_basic_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_basic_while_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_basic_while_while_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_basic_while_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_basic_while_while_body_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_if_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_if_if_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_nested_control_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_nested_control_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_nested_control_while_body_2_else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_nested_control_while_body_2_else_1_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_nested_control_while_body_2_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_nested_control_while_body_2_if_1_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_nested_control_while_body_2_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_scope_scenarios_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_scope_scenarios_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_scope_scenarios_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_scope_scenarios_if_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_while_while_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_while_while_6.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_while_while_body_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_while_while_body_6.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_complex_expressions_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_complex_expressions_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_complex_expressions_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_complex_expressions_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_error_handling_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_error_handling_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_error_handling_while_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_error_handling_while_body_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_performance_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_performance_while_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_performance_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_performance_while_body_2_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_performance_while_body_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_performance_while_body_4_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_performance_while_body_4_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_scoped_functions_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_scoped_functions_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_scoped_functions_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_scoped_functions_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_variable_substitution_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_variable_substitution_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_variable_substitution_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_variable_substitution_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_assignments_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_assignments_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_assignments_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_assignments_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_functions_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_functions_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_functions_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_functions_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_raw_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_raw_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_raw_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_scopes_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_scopes_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_scopes_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_scopes_if_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_tellraw_else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_tellraw_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_tellraw_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_tellraw_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_tellraw_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_if_else_else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_if_else_else_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_if_else_else_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_if_else_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_if_else_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_if_else_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_main_while_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_main_while_body_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_else_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_else_2_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_else_2_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_if_1_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_if_1_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_if_1_if_0_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_if_1_if_0_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_if_2_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_if_2_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_conditionals_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_conditionals_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_conditionals_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_conditionals_while_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_conditionals_while_5.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_conditionals_while_body_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_conditionals_while_body_5.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_interactions_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_interactions_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_interactions_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_while_break_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_while_break_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_while_break_while_body_2_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_while_break_while_body_2_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/tick_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/tick_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/tick_if_2_while_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/tick_if_2_while_body_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/weapon_effects_else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/weapon_effects_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test_final_template_fixed/function/main_else_8.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test_final_template_fixed/function/main_if_8.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/while_test/function/main_while_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/while_test/function/main_while_body_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/dist.zip +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/.env +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/404.html +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/Gemfile +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/README.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_config.yml +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/cli-reference.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/contributing.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/docs-hub.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/documentation.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/examples.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/getting-started.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/multi-file-projects.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/python-bindings.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/vscode-extension.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_includes/head-custom.html +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_includes/navigation.html +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_layouts/default.html +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_layouts/page.html +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_plugins/test_version.rb +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_plugins/version_reader.rb +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/assets/css/style.css +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/docs.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/downloads.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/favicon-16.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/favicon-32.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/favicon-48.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/favicon-64.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/icon-1024.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/icon-128.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/icon-256.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/icon-512.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/icon-64.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/index.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/examples/hello_world.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/examples/macros_example.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/examples/scope_examples.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/examples/simple_counter.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/favicon-16.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/favicon-32.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/favicon-48.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/favicon-64.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/icon-1024.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/icon-128.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/icon-256.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/icon-512.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/icon-64.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/item_modifiers/diamond_sword.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/item_modifiers/enchant_tool.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/item_modifiers/test_item_modifier.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/loot_tables/diamond_sword.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/loot_tables/epic_loot.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/loot_tables/main_loot.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/loot_tables/test_loot.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/mdllocal.sh +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/__init__.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/cli.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/dir_map.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/mdl_errors.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/mdl_linter.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/python_api.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/utils.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language.egg-info/dependency_links.txt +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language.egg-info/entry_points.txt +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language.egg-info/requires.txt +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language.egg-info/top_level.txt +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/multi_scope_example.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/my_awesome_pack/README.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/my_awesome_pack/minecraft_datapack_language.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/predicates/diamond_sword.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/predicates/has_mana.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/predicates/other_predicate.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/predicates/test_predicate.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/pyproject.toml +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/pytest.ini +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/custom_pickaxe.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/diamond_sword.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/first.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/inlet.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/main_recipe.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/outlet.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/pipe.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/second.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/test_recipe.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/wrench.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scope_demo.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scoreboard_test.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/UpdateMDL.sh +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/bootstrap.ps1 +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/bootstrap.sh +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/build_pkg.ps1 +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/build_pkg.sh +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/dev_build.ps1 +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/dev_build.sh +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/dev_setup.ps1 +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/dev_setup.sh +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/git-bash/bootstrap-gitbash.sh +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/git-bash/build_pkg-gitbash.sh +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/git-bash/test_cli-gitbash.sh +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/release.sh +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/test_cli.ps1 +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/test_cli.sh +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/test_dev.ps1 +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/test_dev.sh +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/update_docs.sh +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/update_version_info.sh +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/setup.cfg +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/structures/diamond_sword.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/structures/test_structure.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/structures/workshop.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tellraw_variables_test.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/temp_output/data/minecraft/tags/function/load.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/temp_output/data/test/function/helper.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/temp_output/data/test/function/load.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/temp_output/data/test/function/main.mcfunction +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/temp_output/pack.mcmeta +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/test_all_registry.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/test_complex_scenarios.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/test_comprehensive_fixes.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/test_if_else_while.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/test_project/complex_test.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/test_simple.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/__init__.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/run_all_tests.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_cli.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_codegen_naming_and_logic.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_compiler_fixes.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_complex_scenarios.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_comprehensive_end_to_end.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_examples.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_macros.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_python_bindings.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_user_regression_test1.py +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tmp_local_cli_out.zip +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tmp_test1.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tmp_test1.mdl~ +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tmp_test1_confirm.mdl +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/README.md +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/icons/favicon-16.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/icons/favicon-32.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/icons/favicon-48.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/icons/favicon-64.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/icons/icon-1024.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/icons/icon-128.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/icons/icon-256.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/icons/icon-512.png +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/language-configuration.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/package-lock.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/package.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/snippets/mdl.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/src/extension.ts +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/themes/mdl-color-theme.json +0 -0
- {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/tsconfig.json +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: minecraft-datapack-language
|
3
|
-
Version: 16.0.
|
3
|
+
Version: 16.0.5
|
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
|
@@ -177,7 +177,28 @@ while $counter<@s>$ > 0 {
|
|
177
177
|
}
|
178
178
|
```
|
179
179
|
|
180
|
-
**Note:**
|
180
|
+
**Note:** The standard `while` loop uses recursive function calls internally. This is simple and fast but can hit Minecraft's function call depth limit for very long-running loops.
|
181
|
+
|
182
|
+
#### Scheduled While Loops
|
183
|
+
|
184
|
+
Use `scheduledwhile` to iterate via the scheduler instead of recursion. This avoids recursion limits by running one iteration per game tick and scheduling the next iteration only if the condition remains true.
|
185
|
+
|
186
|
+
```mdl
|
187
|
+
scheduledwhile $counter<@s>$ > 0 {
|
188
|
+
counter<@s> = $counter<@s>$ - 1;
|
189
|
+
exec game:countdown;
|
190
|
+
}
|
191
|
+
```
|
192
|
+
|
193
|
+
Compilation strategy:
|
194
|
+
- Generates a helper function containing the loop body
|
195
|
+
- At the end of the helper, emits `execute if <condition> run schedule function <helper> 1t`
|
196
|
+
- Entry point schedules the first iteration with `schedule function <helper> 1t`
|
197
|
+
- Breakout occurs naturally when the condition becomes false (no re-schedule)
|
198
|
+
|
199
|
+
When to use:
|
200
|
+
- Prefer `while` for short/medium loops
|
201
|
+
- Prefer `scheduledwhile` for long-running loops, per-tick processes, or when avoiding recursion depth limits
|
181
202
|
|
182
203
|
### Hooks
|
183
204
|
```mdl
|
@@ -521,7 +542,7 @@ This section defines exactly how MDL source code is broken down into tokens. Thi
|
|
521
542
|
|
522
543
|
#### **Keywords** (Reserved Words)
|
523
544
|
```
|
524
|
-
pack, namespace, function, var, num, if, else, while, on_load, on_tick, exec, tag
|
545
|
+
pack, namespace, function, var, num, if, else, while, scheduledwhile, on_load, on_tick, exec, tag
|
525
546
|
```
|
526
547
|
|
527
548
|
#### **Tag Types** (Resource Categories)
|
@@ -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 = '16.0.
|
32
|
-
__version_tuple__ = version_tuple = (16, 0,
|
31
|
+
__version__ = version = '16.0.5'
|
32
|
+
__version_tuple__ = version_tuple = (16, 0, 5)
|
33
33
|
|
34
|
-
__commit_id__ = commit_id = '
|
34
|
+
__commit_id__ = commit_id = 'g02613ab38'
|
@@ -94,6 +94,13 @@ class WhileLoop(ASTNode):
|
|
94
94
|
body: List[ASTNode]
|
95
95
|
|
96
96
|
|
97
|
+
@dataclass
|
98
|
+
class ScheduledWhileLoop(ASTNode):
|
99
|
+
"""Scheduled-while loop that iterates via Minecraft's schedule command each tick."""
|
100
|
+
condition: Any # Expression
|
101
|
+
body: List[ASTNode]
|
102
|
+
|
103
|
+
|
97
104
|
@dataclass
|
98
105
|
class HookDeclaration(ASTNode):
|
99
106
|
"""Hook declaration (on_load, on_tick)."""
|
@@ -11,7 +11,7 @@ from typing import Dict, List, Any, Optional
|
|
11
11
|
from .ast_nodes import (
|
12
12
|
Program, PackDeclaration, NamespaceDeclaration, TagDeclaration,
|
13
13
|
VariableDeclaration, VariableAssignment, VariableSubstitution, FunctionDeclaration,
|
14
|
-
FunctionCall, IfStatement, WhileLoop, HookDeclaration, RawBlock, MacroLine,
|
14
|
+
FunctionCall, IfStatement, WhileLoop, ScheduledWhileLoop, HookDeclaration, RawBlock, MacroLine,
|
15
15
|
SayCommand, BinaryExpression, LiteralExpression, ParenthesizedExpression
|
16
16
|
)
|
17
17
|
from .dir_map import get_dir_map, DirMap
|
@@ -345,6 +345,8 @@ class MDLCompiler:
|
|
345
345
|
return self._if_statement_to_command(statement)
|
346
346
|
elif isinstance(statement, WhileLoop):
|
347
347
|
return self._while_loop_to_command(statement)
|
348
|
+
elif isinstance(statement, ScheduledWhileLoop):
|
349
|
+
return self._scheduled_while_to_command(statement)
|
348
350
|
elif isinstance(statement, FunctionCall):
|
349
351
|
return self._function_call_to_command(statement)
|
350
352
|
else:
|
@@ -607,6 +609,62 @@ class MDLCompiler:
|
|
607
609
|
self._store_generated_function(loop_function_name, loop_body_lines)
|
608
610
|
|
609
611
|
return "\n".join(lines)
|
612
|
+
|
613
|
+
def _scheduled_while_to_command(self, while_loop: ScheduledWhileLoop) -> str:
|
614
|
+
"""Convert scheduledwhile to tick-scheduled loop to avoid recursion limits.
|
615
|
+
Strategy:
|
616
|
+
- Generate a unique loop function that contains the body, then conditionally schedules itself 1t later.
|
617
|
+
- Entry statement schedules the first tick run.
|
618
|
+
- Breakout occurs naturally by not scheduling when condition is false.
|
619
|
+
"""
|
620
|
+
loop_function_name = self._generate_while_function_name()
|
621
|
+
|
622
|
+
# Schedule first iteration for next tick
|
623
|
+
lines: List[str] = []
|
624
|
+
lines.append(f"schedule function {self.current_namespace}:{loop_function_name} 1t")
|
625
|
+
|
626
|
+
# Build the loop function body
|
627
|
+
loop_body_lines: List[str] = [f"# Function: {self.current_namespace}:{loop_function_name}"]
|
628
|
+
|
629
|
+
if not hasattr(self, '_temp_sink_stack'):
|
630
|
+
self._temp_sink_stack = []
|
631
|
+
self._temp_sink_stack.append(loop_body_lines)
|
632
|
+
for stmt in while_loop.body:
|
633
|
+
if isinstance(stmt, VariableAssignment):
|
634
|
+
cmd = self._variable_assignment_to_command(stmt)
|
635
|
+
loop_body_lines.append(cmd)
|
636
|
+
elif isinstance(stmt, VariableDeclaration):
|
637
|
+
cmd = self._variable_declaration_to_command(stmt)
|
638
|
+
loop_body_lines.append(cmd)
|
639
|
+
elif isinstance(stmt, SayCommand):
|
640
|
+
cmd = self._say_command_to_command(stmt)
|
641
|
+
loop_body_lines.append(cmd)
|
642
|
+
elif isinstance(stmt, RawBlock):
|
643
|
+
loop_body_lines.append(stmt.content)
|
644
|
+
elif isinstance(stmt, IfStatement):
|
645
|
+
cmd = self._if_statement_to_command(stmt)
|
646
|
+
loop_body_lines.append(cmd)
|
647
|
+
elif isinstance(stmt, WhileLoop):
|
648
|
+
cmd = self._while_loop_to_command(stmt)
|
649
|
+
loop_body_lines.append(cmd)
|
650
|
+
elif isinstance(stmt, ScheduledWhileLoop):
|
651
|
+
cmd = self._scheduled_while_to_command(stmt)
|
652
|
+
loop_body_lines.append(cmd)
|
653
|
+
elif isinstance(stmt, FunctionCall):
|
654
|
+
cmd = self._function_call_to_command(stmt)
|
655
|
+
loop_body_lines.append(cmd)
|
656
|
+
self._temp_sink_stack.pop()
|
657
|
+
|
658
|
+
cond_str, invert_then = self._build_condition(while_loop.condition)
|
659
|
+
if invert_then:
|
660
|
+
# Inverted means schedule unless condition (NOT desired). We want continue-when-true.
|
661
|
+
# cond_str represents equality in inverted case; continue when not(cond) → use unless.
|
662
|
+
loop_body_lines.append(f"execute unless {cond_str} run schedule function {self.current_namespace}:{loop_function_name} 1t")
|
663
|
+
else:
|
664
|
+
loop_body_lines.append(f"execute if {cond_str} run schedule function {self.current_namespace}:{loop_function_name} 1t")
|
665
|
+
|
666
|
+
self._store_generated_function(loop_function_name, loop_body_lines)
|
667
|
+
return "\n".join(lines)
|
610
668
|
|
611
669
|
def _is_scoreboard_condition(self, expression: Any) -> bool:
|
612
670
|
"""Check if an expression is a scoreboard comparison."""
|
@@ -33,6 +33,7 @@ class TokenType:
|
|
33
33
|
IF = "IF"
|
34
34
|
ELSE = "ELSE"
|
35
35
|
WHILE = "WHILE"
|
36
|
+
SCHEDULED_WHILE = "SCHEDULED_WHILE"
|
36
37
|
ON_LOAD = "ON_LOAD"
|
37
38
|
ON_TICK = "ON_TICK"
|
38
39
|
EXEC = "EXEC"
|
@@ -599,6 +600,7 @@ class MDLLexer:
|
|
599
600
|
'if': TokenType.IF,
|
600
601
|
'else': TokenType.ELSE,
|
601
602
|
'while': TokenType.WHILE,
|
603
|
+
'scheduledwhile': TokenType.SCHEDULED_WHILE,
|
602
604
|
'on_load': TokenType.ON_LOAD,
|
603
605
|
'on_tick': TokenType.ON_TICK,
|
604
606
|
'exec': TokenType.EXEC,
|
@@ -9,7 +9,7 @@ from .mdl_errors import MDLParserError
|
|
9
9
|
from .ast_nodes import (
|
10
10
|
ASTNode, Program, PackDeclaration, NamespaceDeclaration, TagDeclaration,
|
11
11
|
VariableDeclaration, VariableAssignment, VariableSubstitution, FunctionDeclaration,
|
12
|
-
FunctionCall, IfStatement, WhileLoop, HookDeclaration, RawBlock, MacroLine,
|
12
|
+
FunctionCall, IfStatement, WhileLoop, ScheduledWhileLoop, HookDeclaration, RawBlock, MacroLine,
|
13
13
|
SayCommand, TellrawCommand, ExecuteCommand, ScoreboardCommand,
|
14
14
|
BinaryExpression, UnaryExpression, ParenthesizedExpression, LiteralExpression,
|
15
15
|
ScopeSelector
|
@@ -87,6 +87,8 @@ class MDLParser:
|
|
87
87
|
statements.append(self._parse_if_statement())
|
88
88
|
elif self._peek().type == TokenType.WHILE:
|
89
89
|
statements.append(self._parse_while_loop())
|
90
|
+
elif self._peek().type == TokenType.SCHEDULED_WHILE:
|
91
|
+
statements.append(self._parse_scheduled_while_loop())
|
90
92
|
elif self._peek().type == TokenType.DOLLAR and self._peek(1).type == TokenType.EXCLAMATION:
|
91
93
|
statements.append(self._parse_raw_block())
|
92
94
|
elif self._peek().type == TokenType.IDENTIFIER:
|
@@ -348,6 +350,18 @@ class MDLParser:
|
|
348
350
|
self._expect(TokenType.RBRACE, "Expected '}' to end while body")
|
349
351
|
|
350
352
|
return WhileLoop(condition=condition, body=body)
|
353
|
+
|
354
|
+
def _parse_scheduled_while_loop(self) -> ScheduledWhileLoop:
|
355
|
+
"""Parse scheduledwhile loop: scheduledwhile condition { body }"""
|
356
|
+
self._expect(TokenType.SCHEDULED_WHILE, "Expected 'scheduledwhile' keyword")
|
357
|
+
|
358
|
+
condition = self._parse_expression()
|
359
|
+
|
360
|
+
self._expect(TokenType.LBRACE, "Expected '{' to start while body")
|
361
|
+
body = self._parse_block()
|
362
|
+
self._expect(TokenType.RBRACE, "Expected '}' to end while body")
|
363
|
+
|
364
|
+
return ScheduledWhileLoop(condition=condition, body=body)
|
351
365
|
|
352
366
|
def _parse_hook_declaration(self) -> HookDeclaration:
|
353
367
|
"""Parse hook declaration: on_load/on_tick namespace:name<scope>;"""
|
@@ -524,6 +538,8 @@ class MDLParser:
|
|
524
538
|
statements.append(self._parse_if_statement())
|
525
539
|
elif self._peek().type == TokenType.WHILE:
|
526
540
|
statements.append(self._parse_while_loop())
|
541
|
+
elif self._peek().type == TokenType.SCHEDULED_WHILE:
|
542
|
+
statements.append(self._parse_scheduled_while_loop())
|
527
543
|
elif self._peek().type == TokenType.EXEC:
|
528
544
|
statements.append(self._parse_function_call())
|
529
545
|
elif self._peek().type == TokenType.MACRO_LINE:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: minecraft-datapack-language
|
3
|
-
Version: 16.0.
|
3
|
+
Version: 16.0.5
|
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
|
@@ -381,6 +381,7 @@ tests/test_examples.py
|
|
381
381
|
tests/test_macros.py
|
382
382
|
tests/test_python_api.py
|
383
383
|
tests/test_python_bindings.py
|
384
|
+
tests/test_scheduledwhile.py
|
384
385
|
tests/test_user_regression_test1.py
|
385
386
|
vscode-extension/README.md
|
386
387
|
vscode-extension/language-configuration.json
|
{minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_python_api.py
RENAMED
@@ -249,7 +249,8 @@ class TestPythonAPITags:
|
|
249
249
|
else:
|
250
250
|
tick_content = {"values": []}
|
251
251
|
|
252
|
-
|
252
|
+
# load.json always references namespace:load; hooks are invoked from load.mcfunction
|
253
|
+
assert "test:load" in load_content["values"]
|
253
254
|
# Only assert tick if present
|
254
255
|
if tick_content["values"]:
|
255
256
|
assert "test:tick" in tick_content["values"]
|
@@ -0,0 +1,54 @@
|
|
1
|
+
import tempfile
|
2
|
+
from pathlib import Path
|
3
|
+
|
4
|
+
from minecraft_datapack_language.mdl_parser import MDLParser
|
5
|
+
from minecraft_datapack_language.mdl_compiler import MDLCompiler
|
6
|
+
|
7
|
+
|
8
|
+
def compile_source(source: str):
|
9
|
+
parser = MDLParser()
|
10
|
+
ast = parser.parse(source)
|
11
|
+
tmpdir = tempfile.TemporaryDirectory()
|
12
|
+
out = Path(tmpdir.name)
|
13
|
+
MDLCompiler().compile(ast, str(out))
|
14
|
+
return out, tmpdir
|
15
|
+
|
16
|
+
|
17
|
+
def test_scheduledwhile_generates_schedule_and_helper():
|
18
|
+
src = (
|
19
|
+
'pack "ns" "desc" 82;\n'
|
20
|
+
'namespace "ns";\n'
|
21
|
+
'var num c<@s> = 0;\n'
|
22
|
+
'function ns:loop { scheduledwhile $c<@s>$ < 3 { c<@s> = $c<@s>$ + 1; } }\n'
|
23
|
+
)
|
24
|
+
out, tmp = compile_source(src)
|
25
|
+
func_dir = out / 'data' / 'ns' / 'function'
|
26
|
+
|
27
|
+
# Main function schedules the helper for next tick
|
28
|
+
loop_main = (func_dir / 'loop.mcfunction').read_text()
|
29
|
+
assert 'schedule function ns:loop__while_' in loop_main
|
30
|
+
|
31
|
+
# Helper exists and conditionally reschedules itself
|
32
|
+
helper_files = sorted(p for p in func_dir.glob('loop__while_*.mcfunction'))
|
33
|
+
assert helper_files, 'Expected generated scheduled helper function file'
|
34
|
+
helper = helper_files[0].read_text()
|
35
|
+
assert 'execute if score @s c <' in helper or 'execute if score @s c matches ..2' in helper
|
36
|
+
assert 'schedule function ns:loop__while_' in helper
|
37
|
+
|
38
|
+
|
39
|
+
def test_scheduledwhile_breaks_out_without_reschedule_when_false():
|
40
|
+
src = (
|
41
|
+
'pack "ns" "desc" 82;\n'
|
42
|
+
'namespace "ns";\n'
|
43
|
+
'var num c<@s> = 5;\n'
|
44
|
+
'function ns:loop { scheduledwhile $c<@s>$ > 10 { c<@s> = $c<@s>$ + 1; } }\n'
|
45
|
+
)
|
46
|
+
out, tmp = compile_source(src)
|
47
|
+
func_dir = out / 'data' / 'ns' / 'function'
|
48
|
+
helper_files = sorted(p for p in func_dir.glob('loop__while_*.mcfunction'))
|
49
|
+
assert helper_files, 'Expected generated scheduled helper function file'
|
50
|
+
helper = helper_files[0].read_text()
|
51
|
+
# For > 10, continue condition is false initially; helper should still only schedule if condition true
|
52
|
+
# Verify presence of conditional schedule, not unconditional schedule
|
53
|
+
assert 'execute if ' in helper and 'schedule function ns:loop__while_' in helper
|
54
|
+
|
@@ -4,7 +4,7 @@
|
|
4
4
|
"patterns": [
|
5
5
|
{
|
6
6
|
"name": "keyword.control.mdl",
|
7
|
-
"match": "\\b(pack|namespace|function|on_tick|on_load|tag|if|else|while|var|num|exec|recipe|loot_table|advancement|predicate|item_modifier|structure)\\b"
|
7
|
+
"match": "\\b(pack|namespace|function|on_tick|on_load|tag|if|else|while|scheduledwhile|var|num|exec|recipe|loot_table|advancement|predicate|item_modifier|structure)\\b"
|
8
8
|
},
|
9
9
|
{
|
10
10
|
"name": "entity.name.section.mdl",
|
{minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.cursor/rules/aispec.mdc
RENAMED
File without changes
|
File without changes
|
{minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.github/workflows/ci.yml
RENAMED
File without changes
|
{minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.github/workflows/docs.yml
RENAMED
File without changes
|
{minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.github/workflows/pypi.yml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/pack.mcmeta
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/COMPILER_FIXES_SUMMARY.md
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|