minecraft-datapack-language 15.4.34__tar.gz → 15.4.36__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.36/.mdl-out-test1/data/minecraft/tags/function/load.json +5 -0
- minecraft_datapack_language-15.4.36/.mdl-out-test1/data/test1/function/load.mcfunction +7 -0
- minecraft_datapack_language-15.4.36/.mdl-out-test1/data/test1/function/load1.mcfunction +3 -0
- minecraft_datapack_language-15.4.36/.mdl-out-test1/data/test1/function/main.mcfunction +8 -0
- minecraft_datapack_language-15.4.36/.mdl-out-test1/data/test1/function/main__else_1.mcfunction +2 -0
- minecraft_datapack_language-15.4.36/.mdl-out-test1/data/test1/function/main__if_1.mcfunction +2 -0
- minecraft_datapack_language-15.4.36/.mdl-out-test1/data/test1/function/testfunc.mcfunction +4 -0
- minecraft_datapack_language-15.4.36/.mdl-out-test1/data/test1/function/testfunc__while_1.mcfunction +6 -0
- minecraft_datapack_language-15.4.36/.mdl-out-test1/pack.mcmeta +6 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/CONDITIONALS_IMPLEMENTATION.md +5 -5
- {minecraft_datapack_language-15.4.34/minecraft_datapack_language.egg-info → minecraft_datapack_language-15.4.36}/PKG-INFO +1 -1
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_config.yml +2 -2
- minecraft_datapack_language-15.4.36/docs/_data/version.yml +3 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_docs/contributing.md +3 -3
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_docs/docs-hub.md +1 -1
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_docs/documentation.md +3 -3
- minecraft_datapack_language-15.4.34/docs/_docs/python-api.md → minecraft_datapack_language-15.4.36/docs/_docs/python-bindings.md +38 -8
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/docs.md +3 -3
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/index.md +2 -2
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/minecraft_datapack_language/__init__.py +3 -1
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/minecraft_datapack_language/_version.py +3 -3
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/minecraft_datapack_language/mdl_compiler.py +88 -40
- minecraft_datapack_language-15.4.36/minecraft_datapack_language/python_api.py +207 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36/minecraft_datapack_language.egg-info}/PKG-INFO +1 -1
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/minecraft_datapack_language.egg-info/SOURCES.txt +17 -1
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/pytest.ini +1 -1
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/tests/run_all_tests.py +5 -5
- minecraft_datapack_language-15.4.36/tests/test_codegen_naming_and_logic.py +94 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/tests/test_comprehensive_end_to_end.py +5 -2
- minecraft_datapack_language-15.4.36/tests/test_python_bindings.py +57 -0
- minecraft_datapack_language-15.4.36/tests/test_user_regression_test1.py +43 -0
- minecraft_datapack_language-15.4.36/tmp_test1.mdl +40 -0
- minecraft_datapack_language-15.4.36/tmp_test1.mdl~ +0 -0
- minecraft_datapack_language-15.4.34/docs/_data/version.yml +0 -3
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/.cursor/rules/aispec.mdc +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/.github/actions/mdl-compile/action.yml +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/.github/workflows/ci.yml +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/.github/workflows/docs.yml +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/.github/workflows/pypi.yml +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/.github/workflows/release.yml +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/.github/workflows/update-website-version.yml +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/.gitignore +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/COMPILER_FIXES_SUMMARY.md +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/LICENSE +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/Makefile +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/README.md +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/advancements/diamond_sword.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/advancements/first_spell.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/advancements/other_advancement.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/advancements/test_advancement.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/comprehensive_error_test.mdl +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/complex_scopes/function/main_else_8.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/complex_scopes/function/main_if_8.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_basic_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_basic_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_basic_if_if_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_complex_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_complex_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_complex_if_if_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_complex_if_if_5.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_control_complex_expressions_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_control_complex_expressions_if_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_control_variable_substitution_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_control_with_raw_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_control_with_scopes_if_5.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_control_with_tellraw_else_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_control_with_tellraw_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_control_with_tellraw_if_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_if_else_else_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_if_else_else_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_if_else_else_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_if_else_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_if_else_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_if_else_if_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_nested_if_else_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_nested_if_else_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_nested_if_else_3_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_nested_if_else_3_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_nested_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_nested_if_if_2_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_nested_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_nested_if_if_3_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/comprehensive_control_test/function/test_nested_if_if_3_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/control_test/function/main_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/control_test/function/main_while_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/control_test/function/main_while_body_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/if_test/function/main_else_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/if_test/function/main_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/conditional_demo_else_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/conditional_demo_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/conditional_demo_if_3_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/conditional_demo_if_3_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/conditional_demo_if_3_if_0_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/conditional_demo_if_3_if_0_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/countdown_while_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/countdown_while_body_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/increase_tick_per_player_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/increase_tick_per_player_if_1_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/loop_demo_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/loop_demo_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/loop_demo_while_body_2_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/loop_demo_while_body_2_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/loop_demo_while_body_2_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/main_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/main_else_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/main_else_5.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/main_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/main_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/main_if_5.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/main_while_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/main_while_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/main_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/main_while_6.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/main_while_7.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/main_while_body_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/main_while_body_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/main_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/main_while_body_6.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/main_while_body_7.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/scoreboard_demo_while_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/scoreboard_demo_while_body_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/scoreboard_demo_while_body_3_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/start_game_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/start_game_if_5.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/start_game_while_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/start_game_while_body_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_basic_if_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_basic_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_basic_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_basic_while_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_basic_while_while_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_basic_while_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_basic_while_while_body_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_if_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_if_if_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_nested_control_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_nested_control_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_nested_control_while_body_2_else_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_nested_control_while_body_2_else_1_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_nested_control_while_body_2_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_nested_control_while_body_2_if_1_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_nested_control_while_body_2_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_scope_scenarios_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_scope_scenarios_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_scope_scenarios_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_scope_scenarios_if_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_while_while_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_while_while_6.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_while_while_body_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_complex_while_while_body_6.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_complex_expressions_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_complex_expressions_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_complex_expressions_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_complex_expressions_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_error_handling_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_error_handling_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_error_handling_while_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_error_handling_while_body_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_performance_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_performance_while_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_performance_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_performance_while_body_2_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_performance_while_body_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_performance_while_body_4_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_performance_while_body_4_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_scoped_functions_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_scoped_functions_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_scoped_functions_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_scoped_functions_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_variable_substitution_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_variable_substitution_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_variable_substitution_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_variable_substitution_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_assignments_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_assignments_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_assignments_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_assignments_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_functions_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_functions_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_functions_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_functions_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_raw_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_raw_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_raw_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_scopes_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_scopes_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_scopes_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_scopes_if_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_tellraw_else_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_tellraw_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_tellraw_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_tellraw_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_control_with_tellraw_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_if_else_else_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_if_else_else_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_if_else_else_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_if_else_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_if_else_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_if_else_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_main_while_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_main_while_body_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_nested_if_else_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_nested_if_else_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_nested_if_else_2_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_nested_if_else_2_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_nested_if_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_nested_if_if_1_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_nested_if_if_1_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_nested_if_if_1_if_0_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_nested_if_if_1_if_0_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_nested_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_nested_if_if_2_else_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_nested_if_if_2_if_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_scope_conditionals_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_scope_conditionals_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_scope_conditionals_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_scope_conditionals_while_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_scope_conditionals_while_5.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_scope_conditionals_while_body_4.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_scope_conditionals_while_body_5.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_scope_interactions_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_scope_interactions_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_scope_interactions_if_3.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_while_break_while_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_while_break_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_while_break_while_body_2_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/test_while_break_while_body_2_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/tick_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/tick_if_2.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/tick_if_2_while_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/tick_if_2_while_body_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/weapon_effects_else_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test/function/weapon_effects_if_1.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test_final_template_fixed/function/main_else_8.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/test_final_template_fixed/function/main_if_8.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/while_test/function/main_while_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/data/while_test/function/main_while_body_0.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/dist.zip +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/.env +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/404.html +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/Gemfile +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/README.md +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_docs/cli-reference.md +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_docs/examples.md +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_docs/getting-started.md +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_docs/language-reference.md +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_docs/multi-file-projects.md +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_docs/vscode-extension.md +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_includes/head-custom.html +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_includes/navigation.html +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_layouts/default.html +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_layouts/page.html +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_plugins/test_version.rb +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_plugins/version_reader.rb +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/assets/css/style.css +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/downloads.md +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/icons/favicon-16.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/icons/favicon-32.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/icons/favicon-48.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/icons/favicon-64.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/icons/icon-1024.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/icons/icon-128.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/icons/icon-256.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/icons/icon-512.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/icons/icon-64.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/examples/hello_world.mdl +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/examples/scope_examples.mdl +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/examples/simple_counter.mdl +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/icons/favicon-16.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/icons/favicon-32.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/icons/favicon-48.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/icons/favicon-64.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/icons/icon-1024.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/icons/icon-128.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/icons/icon-256.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/icons/icon-512.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/icons/icon-64.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/item_modifiers/diamond_sword.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/item_modifiers/enchant_tool.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/item_modifiers/test_item_modifier.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/loot_tables/diamond_sword.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/loot_tables/epic_loot.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/loot_tables/main_loot.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/loot_tables/test_loot.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/mdllocal.sh +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/minecraft_datapack_language/ast_nodes.py +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/minecraft_datapack_language/cli.py +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/minecraft_datapack_language/dir_map.py +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/minecraft_datapack_language/mdl_errors.py +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/minecraft_datapack_language/mdl_lexer.py +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/minecraft_datapack_language/mdl_linter.py +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/minecraft_datapack_language/mdl_parser.py +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/minecraft_datapack_language/utils.py +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/minecraft_datapack_language.egg-info/dependency_links.txt +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/minecraft_datapack_language.egg-info/entry_points.txt +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/minecraft_datapack_language.egg-info/requires.txt +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/minecraft_datapack_language.egg-info/top_level.txt +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/multi_scope_example.mdl +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/my_awesome_pack/README.md +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/my_awesome_pack/minecraft_datapack_language.mdl +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/predicates/diamond_sword.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/predicates/has_mana.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/predicates/other_predicate.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/predicates/test_predicate.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/pyproject.toml +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/recipes/custom_pickaxe.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/recipes/diamond_sword.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/recipes/first.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/recipes/inlet.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/recipes/main_recipe.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/recipes/outlet.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/recipes/pipe.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/recipes/second.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/recipes/test_recipe.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/recipes/wrench.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scope_demo.mdl +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scoreboard_test.mdl +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/UpdateMDL.sh +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/bootstrap.ps1 +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/bootstrap.sh +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/build_pkg.ps1 +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/build_pkg.sh +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/dev_build.ps1 +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/dev_build.sh +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/dev_setup.ps1 +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/dev_setup.sh +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/git-bash/bootstrap-gitbash.sh +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/git-bash/build_pkg-gitbash.sh +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/git-bash/test_cli-gitbash.sh +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/release.sh +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/test_cli.ps1 +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/test_cli.sh +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/test_dev.ps1 +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/test_dev.sh +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/update_docs.sh +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/scripts/update_version_info.sh +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/setup.cfg +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/structures/diamond_sword.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/structures/test_structure.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/structures/workshop.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/tellraw_variables_test.mdl +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/temp_output/data/test/function/helper.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/temp_output/data/test/function/load.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/temp_output/data/test/function/main.mcfunction +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/temp_output/pack.mcmeta +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/test_all_registry.mdl +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/test_complex_scenarios.mdl +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/test_comprehensive_fixes.mdl +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/test_if_else_while.mdl +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/test_project/complex_test.mdl +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/test_simple.mdl +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/tests/__init__.py +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/tests/test_cli.py +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/tests/test_compiler_fixes.py +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/tests/test_complex_scenarios.py +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/tests/test_python_api.py +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/README.md +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/icons/favicon-16.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/icons/favicon-32.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/icons/favicon-48.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/icons/favicon-64.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/icons/icon-1024.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/icons/icon-128.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/icons/icon-256.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/icons/icon-512.png +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/language-configuration.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/package-lock.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/package.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/snippets/mdl.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/src/extension.ts +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/syntaxes/mdl.tmLanguage.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/themes/mdl-color-theme.json +0 -0
- {minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/vscode-extension/tsconfig.json +0 -0
@@ -0,0 +1,8 @@
|
|
1
|
+
# Function: test1:main
|
2
|
+
|
3
|
+
tellraw @a {"text":"Hello from test1!"}
|
4
|
+
scoreboard players set @s counter 10
|
5
|
+
tellraw @a {"text":"Counter: ","extra":[{"score":{"name":"@s","objective":"counter"}}]}
|
6
|
+
execute if score @s counter matches 6.. run function test1:main__if_1
|
7
|
+
execute unless score @s counter matches 6.. run function test1:main__else_1
|
8
|
+
execute as @a run function test1:testfunc
|
minecraft_datapack_language-15.4.36/.mdl-out-test1/data/test1/function/testfunc__while_1.mcfunction
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
# Function: test1:testfunc__while_1
|
2
|
+
tellraw @a {"text":"Hello from testfunc!"}
|
3
|
+
scoreboard players operation @s temp_1 = @s testfunccount1
|
4
|
+
scoreboard players remove @s temp_1 1
|
5
|
+
scoreboard players operation @s testfunccount1 = @s temp_1
|
6
|
+
execute if score @s testfunccount1 matches 1.. run function test1:testfunc__while_1
|
@@ -37,11 +37,11 @@ This document summarizes the implementation of if/else if/else functionality in
|
|
37
37
|
- `README.md` - Added conditional blocks section
|
38
38
|
- `docs/_docs/language-reference.md` - Added comprehensive conditional documentation
|
39
39
|
- `docs/_docs/examples.md` - Added conditional examples
|
40
|
-
- `docs/_docs/python-
|
40
|
+
- `docs/_docs/python-bindings.md` - Added conditional Python bindings examples
|
41
41
|
|
42
42
|
### Tests
|
43
43
|
- `test_examples/conditionals.mdl` - Comprehensive MDL test file
|
44
|
-
- `test_examples/conditionals.py` - Python
|
44
|
+
- `test_examples/conditionals.py` - Python bindings test file
|
45
45
|
- `test_regression.py` - Regression test suite
|
46
46
|
- `test_examples/run_all_tests.py` - Updated to include conditionals
|
47
47
|
|
@@ -55,12 +55,12 @@ This document summarizes the implementation of if/else if/else functionality in
|
|
55
55
|
- ✅ Conditional function calls
|
56
56
|
- ✅ Invalid syntax handling
|
57
57
|
- ✅ Regression testing (existing functionality)
|
58
|
-
- ✅ Python
|
58
|
+
- ✅ Python bindings compatibility
|
59
59
|
|
60
60
|
### Test Results
|
61
61
|
- **Regression Tests**: 7/7 passed ✅
|
62
62
|
- **Comprehensive Tests**: 17/17 passed ✅
|
63
|
-
- **Python
|
63
|
+
- **Python bindings tests**: All passed ✅
|
64
64
|
|
65
65
|
## 📖 Documentation
|
66
66
|
|
@@ -152,7 +152,7 @@ execute unless entity @s[type=minecraft:player,nbt={SelectedItem:{id:"minecraft:
|
|
152
152
|
- ✅ Comprehensive testing completed
|
153
153
|
- ✅ Documentation updated
|
154
154
|
- ✅ Examples created
|
155
|
-
- ✅ Python
|
155
|
+
- ✅ Python bindings support
|
156
156
|
- ✅ Regression tests passing
|
157
157
|
- ✅ Backward compatibility verified
|
158
158
|
- ✅ Error handling implemented
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: minecraft-datapack-language
|
3
|
-
Version: 15.4.
|
3
|
+
Version: 15.4.36
|
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
|
{minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_config.yml
RENAMED
@@ -1,5 +1,5 @@
|
|
1
1
|
title: Minecraft Datapack Language (MDL) v12
|
2
|
-
description: A powerful compiler that lets you write Minecraft datapacks in a modern JavaScript-style language (.mdl) or via
|
2
|
+
description: A powerful compiler that lets you write Minecraft datapacks in a modern JavaScript-style language (.mdl) or via clean Python bindings
|
3
3
|
url: "https://www.mcmdl.com"
|
4
4
|
github_username: aaron777collins
|
5
5
|
github_repo: MinecraftDatapackLanguage
|
@@ -68,7 +68,7 @@ nav:
|
|
68
68
|
url: /docs/multi-file-projects/
|
69
69
|
- title: CLI Reference
|
70
70
|
url: /docs/cli-reference/
|
71
|
-
- title: Python
|
71
|
+
- title: Python Bindings
|
72
72
|
url: /docs/python-api/
|
73
73
|
- title: VS Code Extension
|
74
74
|
url: /docs/vscode-extension/
|
@@ -73,9 +73,9 @@ MinecraftDatapackLanguage/
|
|
73
73
|
- **Configuration**: Add configuration options
|
74
74
|
- **Integration**: Better integration with other tools
|
75
75
|
|
76
|
-
### 3. Python
|
76
|
+
### 3. Python Bindings
|
77
77
|
|
78
|
-
- **
|
78
|
+
- **Bindings improvements**: Enhance the Python bindings
|
79
79
|
- **New features**: Add new capabilities
|
80
80
|
- **Documentation**: Improve API documentation
|
81
81
|
- **Examples**: Add more examples
|
@@ -135,7 +135,7 @@ python -m pytest
|
|
135
135
|
mdl --help
|
136
136
|
mdl build --mdl sample.mdl -o test_output
|
137
137
|
|
138
|
-
# Test the Python
|
138
|
+
# Test the Python bindings
|
139
139
|
python -c "from minecraft_datapack_language import Pack; print('API works!')"
|
140
140
|
```
|
141
141
|
|
{minecraft_datapack_language-15.4.34 → minecraft_datapack_language-15.4.36}/docs/_docs/docs-hub.md
RENAMED
@@ -58,7 +58,7 @@ Search and browse all available documentation for the Minecraft Datapack Languag
|
|
58
58
|
</div>
|
59
59
|
|
60
60
|
<div class="doc-card" data-categories="python api programming">
|
61
|
-
<h3>🐍 Python
|
61
|
+
<h3>🐍 Python Bindings</h3>
|
62
62
|
<p>Programmatic access to MDL functionality for automation and integration.</p>
|
63
63
|
<div class="doc-meta">
|
64
64
|
<span class="category">API</span>
|
@@ -17,12 +17,12 @@ Welcome to the complete documentation for the Minecraft Datapack Language (MDL).
|
|
17
17
|
{% assign language_ref = site.nav | where: "title", "Language Reference" | first %}
|
18
18
|
{% assign multi_file = site.nav | where: "title", "Multi-file Projects" | first %}
|
19
19
|
{% assign cli_ref = site.nav | where: "title", "CLI Reference" | first %}
|
20
|
-
{% assign python_api = site.nav | where: "title", "Python
|
20
|
+
{% assign python_api = site.nav | where: "title", "Python Bindings" | first %}
|
21
21
|
|
22
22
|
- **[Language Reference]({{ language_ref.url }})** - Complete syntax and language features
|
23
23
|
- **[Multi-file Projects]({{ multi_file.url }})** - How to organize and structure larger MDL projects
|
24
24
|
- **[CLI Reference]({{ cli_ref.url }})** - Command-line interface usage and options
|
25
|
-
- **[Python
|
25
|
+
- **[Python Bindings]({{ python_api.url }})** - Programmatic access to MDL functionality
|
26
26
|
|
27
27
|
## Tools and Extensions
|
28
28
|
|
@@ -64,7 +64,7 @@ Welcome to the complete documentation for the Minecraft Datapack Language (MDL).
|
|
64
64
|
</div>
|
65
65
|
|
66
66
|
<div class="doc-card">
|
67
|
-
<h3>🐍 Python
|
67
|
+
<h3>🐍 Python Bindings</h3>
|
68
68
|
<p>Programmatic access to MDL functionality for automation and integration.</p>
|
69
69
|
<a href="{{ python_api.url }}" class="doc-link">API Reference →</a>
|
70
70
|
</div>
|
@@ -1,10 +1,10 @@
|
|
1
1
|
---
|
2
2
|
layout: page
|
3
|
-
title: Python
|
4
|
-
permalink: /docs/python-
|
3
|
+
title: Python Bindings
|
4
|
+
permalink: /docs/python-bindings/
|
5
5
|
---
|
6
6
|
|
7
|
-
The MDL Python
|
7
|
+
The MDL Python bindings provide a clean, programmatic way to create Minecraft datapacks. They're fully compatible with the MDL language and support all advanced features including variables, control flow, complex nesting, and the explicit scope system.
|
8
8
|
|
9
9
|
## Quick Start
|
10
10
|
|
@@ -67,6 +67,36 @@ ns.function("function_name", "command1", "command2", ...)
|
|
67
67
|
**Methods:**
|
68
68
|
- `function(name, *commands)` - Add a function with commands
|
69
69
|
|
70
|
+
### Control Flow and Expressions (Bindings)
|
71
|
+
|
72
|
+
Bindings include helpers to compose expressions and control flow identical to MDL:
|
73
|
+
|
74
|
+
```python
|
75
|
+
from minecraft_datapack_language import Pack
|
76
|
+
from minecraft_datapack_language.python_api import num, var_read, binop
|
77
|
+
|
78
|
+
p = Pack("Control Flow", "desc", 82)
|
79
|
+
ns = p.namespace("game")
|
80
|
+
|
81
|
+
def build_logic(fb):
|
82
|
+
# declare variable
|
83
|
+
fb.declare_var("counter", "<@s>", 0)
|
84
|
+
|
85
|
+
# counter<@s> = $counter<@s>$ + 1
|
86
|
+
fb.set("counter", "<@s>", binop(var_read("counter", "<@s>"), "PLUS", num(1)))
|
87
|
+
|
88
|
+
# if $counter<@s>$ > 5 { say "hi" } else { say "low" }
|
89
|
+
cond = binop(var_read("counter", "<@s>"), "GREATER", num(5))
|
90
|
+
fb.if_(cond, lambda t: t.say("hi"), lambda e: e.say("low"))
|
91
|
+
|
92
|
+
# while $counter<@s>$ < 10 { counter<@s> = $counter<@s>$ + 1 }
|
93
|
+
wcond = binop(var_read("counter", "<@s>"), "LESS", num(10))
|
94
|
+
fb.while_(wcond, lambda b: b.set("counter", "<@s>", binop(var_read("counter", "<@s>"), "PLUS", num(1))))
|
95
|
+
|
96
|
+
ns.function("main", build_logic)
|
97
|
+
p.build("dist")
|
98
|
+
```
|
99
|
+
|
70
100
|
## Basic Examples
|
71
101
|
|
72
102
|
### Hello World
|
@@ -121,7 +151,7 @@ def create_particle_pack():
|
|
121
151
|
|
122
152
|
### Variables and Control Flow
|
123
153
|
|
124
|
-
The
|
154
|
+
The bindings support all the advanced features of the MDL language including the explicit scope system:
|
125
155
|
|
126
156
|
```python
|
127
157
|
from minecraft_datapack_language import Pack
|
@@ -327,7 +357,7 @@ p.build("output_dir", wrapper="my_pack")
|
|
327
357
|
|
328
358
|
## Integration with MDL Files
|
329
359
|
|
330
|
-
You can use the Python
|
360
|
+
You can use the Python bindings alongside MDL files:
|
331
361
|
|
332
362
|
```python
|
333
363
|
from minecraft_datapack_language import Pack
|
@@ -340,7 +370,7 @@ def create_hybrid_pack():
|
|
340
370
|
|
341
371
|
ast = parse_mdl_js(mdl_content)
|
342
372
|
|
343
|
-
# Create pack via Python
|
373
|
+
# Create pack via Python bindings
|
344
374
|
p = Pack("Hybrid Pack", "Combines MDL and Python", 82)
|
345
375
|
|
346
376
|
# Add functions from MDL
|
@@ -348,7 +378,7 @@ def create_hybrid_pack():
|
|
348
378
|
ns = p.namespace(func.namespace)
|
349
379
|
ns.function(func.name, *func.commands)
|
350
380
|
|
351
|
-
# Add additional functions via Python
|
381
|
+
# Add additional functions via Python bindings
|
352
382
|
ns = p.namespace("python")
|
353
383
|
ns.function("python_func", "say Created via Python API!")
|
354
384
|
|
@@ -505,4 +535,4 @@ if __name__ == "__main__":
|
|
505
535
|
print("Complete example pack built successfully!")
|
506
536
|
```
|
507
537
|
|
508
|
-
The Python
|
538
|
+
The Python bindings provide a powerful, flexible way to create Minecraft datapacks with full support for the MDL language features including the explicit scope system.
|
@@ -16,12 +16,12 @@ Welcome to the complete documentation for the Minecraft Datapack Language (MDL).
|
|
16
16
|
{% assign language_ref = site.nav | where: "title", "Language Reference" | first %}
|
17
17
|
{% assign multi_file = site.nav | where: "title", "Multi-file Projects" | first %}
|
18
18
|
{% assign cli_ref = site.nav | where: "title", "CLI Reference" | first %}
|
19
|
-
{% assign python_api = site.nav | where: "title", "Python
|
19
|
+
{% assign python_api = site.nav | where: "title", "Python Bindings" | first %}
|
20
20
|
|
21
21
|
- **[Language Reference]({{ language_ref.url }})** - Complete syntax and language features
|
22
22
|
- **[Multi-file Projects]({{ multi_file.url }})** - How to organize and structure larger MDL projects
|
23
23
|
- **[CLI Reference]({{ cli_ref.url }})** - Command-line interface usage and options
|
24
|
-
- **[Python
|
24
|
+
- **[Python Bindings]({{ python_api.url }})** - Programmatic access to MDL functionality
|
25
25
|
|
26
26
|
## Tools and Extensions
|
27
27
|
|
@@ -63,7 +63,7 @@ Welcome to the complete documentation for the Minecraft Datapack Language (MDL).
|
|
63
63
|
</div>
|
64
64
|
|
65
65
|
<div class="doc-card">
|
66
|
-
<h3>🐍 Python
|
66
|
+
<h3>🐍 Python Bindings</h3>
|
67
67
|
<p>Programmatic access to MDL functionality for automation and integration.</p>
|
68
68
|
<a href="{{ python_api.url }}" class="doc-link">API Reference →</a>
|
69
69
|
</div>
|
@@ -74,13 +74,13 @@ A **modern JavaScript-style compiler** that lets you write Minecraft datapacks w
|
|
74
74
|
<a href="{{ site.baseurl }}/docs/multi-file-projects/" class="doc-link">Learn More →</a>
|
75
75
|
</div>
|
76
76
|
<div class="doc-card">
|
77
|
-
<h3>🐍 Python
|
77
|
+
<h3>🐍 Python Bindings</h3>
|
78
78
|
<p>Programmatic datapack creation</p>
|
79
79
|
<div class="doc-meta">
|
80
80
|
<span class="category">API</span>
|
81
81
|
<span class="category">Python</span>
|
82
82
|
</div>
|
83
|
-
<a href="{{ site.baseurl }}/docs/python-
|
83
|
+
<a href="{{ site.baseurl }}/docs/python-bindings/" class="doc-link">Python Bindings →</a>
|
84
84
|
</div>
|
85
85
|
</div>
|
86
86
|
|
@@ -3,6 +3,7 @@ from .mdl_lexer import MDLLexer, Token, TokenType
|
|
3
3
|
from .mdl_parser import MDLParser
|
4
4
|
from .ast_nodes import *
|
5
5
|
from .dir_map import DirMap
|
6
|
+
from .python_api import Pack
|
6
7
|
|
7
8
|
__all__ = [
|
8
9
|
"MDLLexer", "Token", "TokenType",
|
@@ -13,7 +14,8 @@ __all__ = [
|
|
13
14
|
"SayCommand", "TellrawCommand", "ExecuteCommand", "ScoreboardCommand",
|
14
15
|
"BinaryExpression", "UnaryExpression", "ParenthesizedExpression", "LiteralExpression",
|
15
16
|
"ScopeSelector",
|
16
|
-
"DirMap"
|
17
|
+
"DirMap",
|
18
|
+
"Pack"
|
17
19
|
]
|
18
20
|
|
19
21
|
# CLI entry point
|
@@ -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.36'
|
32
|
+
__version_tuple__ = version_tuple = (15, 4, 36)
|
33
33
|
|
34
|
-
__commit_id__ = commit_id = '
|
34
|
+
__commit_id__ = commit_id = 'g68a65e479'
|
@@ -148,22 +148,25 @@ class MDLCompiler:
|
|
148
148
|
lines.append(f"# Scope: {func.scope}")
|
149
149
|
lines.append("")
|
150
150
|
|
151
|
-
#
|
152
|
-
if hasattr(self, '
|
153
|
-
self.
|
154
|
-
|
151
|
+
# Ensure a temp-command sink stack exists
|
152
|
+
if not hasattr(self, '_temp_sink_stack'):
|
153
|
+
self._temp_sink_stack = []
|
154
|
+
|
155
|
+
# Set current function context and reset per-function counters
|
156
|
+
self._current_function_name = func.name
|
157
|
+
self.if_counter = 0
|
158
|
+
self.else_counter = 0
|
159
|
+
self.while_counter = 0
|
160
|
+
|
161
|
+
# Route temp commands into this function's body by default
|
162
|
+
self._temp_sink_stack.append(lines)
|
155
163
|
# Generate commands from function body
|
156
164
|
for statement in func.body:
|
157
165
|
cmd = self._statement_to_command(statement)
|
158
166
|
if cmd:
|
159
167
|
lines.append(cmd)
|
160
|
-
|
161
|
-
|
162
|
-
if hasattr(self, 'temp_commands') and self.temp_commands:
|
163
|
-
lines.append("")
|
164
|
-
lines.append("# Temporary variable operations:")
|
165
|
-
for temp_cmd in self.temp_commands:
|
166
|
-
lines.append(temp_cmd)
|
168
|
+
# Done routing temp commands for this function body
|
169
|
+
self._temp_sink_stack.pop()
|
167
170
|
|
168
171
|
return "\n".join(lines)
|
169
172
|
|
@@ -395,6 +398,10 @@ class MDLCompiler:
|
|
395
398
|
|
396
399
|
# Generate the if body function content
|
397
400
|
if_body_lines = [f"# Function: {self.current_namespace}:{if_function_name}"]
|
401
|
+
# Route temp commands to the if-body function content
|
402
|
+
if not hasattr(self, '_temp_sink_stack'):
|
403
|
+
self._temp_sink_stack = []
|
404
|
+
self._temp_sink_stack.append(if_body_lines)
|
398
405
|
for stmt in if_stmt.then_body:
|
399
406
|
if isinstance(stmt, VariableAssignment):
|
400
407
|
cmd = self._variable_assignment_to_command(stmt)
|
@@ -413,6 +420,8 @@ class MDLCompiler:
|
|
413
420
|
elif isinstance(stmt, FunctionCall):
|
414
421
|
cmd = self._function_call_to_command(stmt)
|
415
422
|
if_body_lines.append(cmd)
|
423
|
+
# Stop routing temp commands for if-body
|
424
|
+
self._temp_sink_stack.pop()
|
416
425
|
|
417
426
|
# Handle else body if it exists
|
418
427
|
if if_stmt.else_body:
|
@@ -437,6 +446,10 @@ class MDLCompiler:
|
|
437
446
|
else:
|
438
447
|
lines.append(f"execute unless {condition} run function {self.current_namespace}:{else_function_name}")
|
439
448
|
else_body_lines = [f"# Function: {self.current_namespace}:{else_function_name}"]
|
449
|
+
# Route temp commands into the else-body
|
450
|
+
if not hasattr(self, '_temp_sink_stack'):
|
451
|
+
self._temp_sink_stack = []
|
452
|
+
self._temp_sink_stack.append(else_body_lines)
|
440
453
|
for stmt in if_stmt.else_body:
|
441
454
|
if isinstance(stmt, VariableAssignment):
|
442
455
|
cmd = self._variable_assignment_to_command(stmt)
|
@@ -455,6 +468,8 @@ class MDLCompiler:
|
|
455
468
|
elif isinstance(stmt, FunctionCall):
|
456
469
|
cmd = self._function_call_to_command(stmt)
|
457
470
|
else_body_lines.append(cmd)
|
471
|
+
# Stop routing temp commands for else-body
|
472
|
+
self._temp_sink_stack.pop()
|
458
473
|
self._store_generated_function(else_function_name, else_body_lines)
|
459
474
|
|
460
475
|
# Store the if function as its own file
|
@@ -477,6 +492,9 @@ class MDLCompiler:
|
|
477
492
|
loop_body_lines = [f"# Function: {self.current_namespace}:{loop_function_name}"]
|
478
493
|
|
479
494
|
# Add the loop body statements
|
495
|
+
if not hasattr(self, '_temp_sink_stack'):
|
496
|
+
self._temp_sink_stack = []
|
497
|
+
self._temp_sink_stack.append(loop_body_lines)
|
480
498
|
for stmt in while_loop.body:
|
481
499
|
if isinstance(stmt, VariableAssignment):
|
482
500
|
cmd = self._variable_assignment_to_command(stmt)
|
@@ -497,10 +515,10 @@ class MDLCompiler:
|
|
497
515
|
loop_body_lines.append(cmd)
|
498
516
|
|
499
517
|
# Add the recursive call at the end to continue the loop
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
518
|
+
cond_str, _inv = self._build_condition(while_loop.condition)
|
519
|
+
loop_body_lines.append(f"execute if {cond_str} run function {self.current_namespace}:{loop_function_name}")
|
520
|
+
# Stop routing temp commands for while-body
|
521
|
+
self._temp_sink_stack.pop()
|
504
522
|
|
505
523
|
# Store the loop function as its own file
|
506
524
|
self._store_generated_function(loop_function_name, loop_body_lines)
|
@@ -517,24 +535,21 @@ class MDLCompiler:
|
|
517
535
|
|
518
536
|
def _generate_if_function_name(self) -> str:
|
519
537
|
"""Generate a unique name for an if function."""
|
520
|
-
if not hasattr(self, 'if_counter'):
|
521
|
-
self.if_counter = 0
|
522
538
|
self.if_counter += 1
|
523
|
-
|
539
|
+
prefix = getattr(self, '_current_function_name', 'fn')
|
540
|
+
return f"{prefix}__if_{self.if_counter}"
|
524
541
|
|
525
542
|
def _generate_else_function_name(self) -> str:
|
526
543
|
"""Generate a unique name for an else function."""
|
527
|
-
if not hasattr(self, 'else_counter'):
|
528
|
-
self.else_counter = 0
|
529
544
|
self.else_counter += 1
|
530
|
-
|
545
|
+
prefix = getattr(self, '_current_function_name', 'fn')
|
546
|
+
return f"{prefix}__else_{self.else_counter}"
|
531
547
|
|
532
548
|
def _generate_while_function_name(self) -> str:
|
533
549
|
"""Generate a unique name for a while function."""
|
534
|
-
if not hasattr(self, 'while_counter'):
|
535
|
-
self.while_counter = 0
|
536
550
|
self.while_counter += 1
|
537
|
-
|
551
|
+
prefix = getattr(self, '_current_function_name', 'fn')
|
552
|
+
return f"{prefix}__while_{self.while_counter}"
|
538
553
|
|
539
554
|
def _store_generated_function(self, name: str, lines: List[str]):
|
540
555
|
"""Store a generated function as a separate file under the same namespace."""
|
@@ -679,10 +694,20 @@ class MDLCompiler:
|
|
679
694
|
if isinstance(expression.left, BinaryExpression):
|
680
695
|
self._store_temp_command(f"scoreboard players operation @s {temp_var} = @s {left_temp}")
|
681
696
|
else:
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
697
|
+
# Assign from left value (score or literal)
|
698
|
+
if isinstance(expression.left, VariableSubstitution) or (isinstance(expression.left, str) and str(left_value).startswith("score ")):
|
699
|
+
parts = str(left_value).split()
|
700
|
+
scope = parts[1]
|
701
|
+
obj = parts[2]
|
702
|
+
self._store_temp_command(f"scoreboard players operation @s {temp_var} = {scope} {obj}")
|
703
|
+
else:
|
704
|
+
self._store_temp_command(f"scoreboard players set @s {temp_var} {left_value}")
|
705
|
+
# Add right value
|
706
|
+
if isinstance(expression.right, VariableSubstitution) or (isinstance(expression.right, str) and str(right_value).startswith("score ")):
|
707
|
+
parts = str(right_value).split()
|
708
|
+
scope = parts[1]
|
709
|
+
obj = parts[2]
|
710
|
+
self._store_temp_command(f"scoreboard players operation @s {temp_var} += {scope} {obj}")
|
686
711
|
else:
|
687
712
|
self._store_temp_command(f"scoreboard players add @s {temp_var} {right_value}")
|
688
713
|
|
@@ -690,10 +715,19 @@ class MDLCompiler:
|
|
690
715
|
if isinstance(expression.left, BinaryExpression):
|
691
716
|
self._store_temp_command(f"scoreboard players operation @s {temp_var} = @s {left_temp}")
|
692
717
|
else:
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
718
|
+
if isinstance(expression.left, VariableSubstitution) or (isinstance(expression.left, str) and str(left_value).startswith("score ")):
|
719
|
+
parts = str(left_value).split()
|
720
|
+
scope = parts[1]
|
721
|
+
obj = parts[2]
|
722
|
+
self._store_temp_command(f"scoreboard players operation @s {temp_var} = {scope} {obj}")
|
723
|
+
else:
|
724
|
+
self._store_temp_command(f"scoreboard players set @s {temp_var} {left_value}")
|
725
|
+
# Subtract right value
|
726
|
+
if isinstance(expression.right, VariableSubstitution) or (isinstance(expression.right, str) and str(right_value).startswith("score ")):
|
727
|
+
parts = str(right_value).split()
|
728
|
+
scope = parts[1]
|
729
|
+
obj = parts[2]
|
730
|
+
self._store_temp_command(f"scoreboard players operation @s {temp_var} -= {scope} {obj}")
|
697
731
|
else:
|
698
732
|
self._store_temp_command(f"scoreboard players remove @s {temp_var} {right_value}")
|
699
733
|
|
@@ -701,12 +735,18 @@ class MDLCompiler:
|
|
701
735
|
if isinstance(expression.left, BinaryExpression):
|
702
736
|
self._store_temp_command(f"scoreboard players operation @s {temp_var} = @s {left_temp}")
|
703
737
|
else:
|
704
|
-
|
738
|
+
if isinstance(expression.left, VariableSubstitution) or (isinstance(expression.left, str) and str(left_value).startswith("score ")):
|
739
|
+
parts = str(left_value).split()
|
740
|
+
scope = parts[1]
|
741
|
+
obj = parts[2]
|
742
|
+
self._store_temp_command(f"scoreboard players operation @s {temp_var} = {scope} {obj}")
|
743
|
+
else:
|
744
|
+
self._store_temp_command(f"scoreboard players set @s {temp_var} {left_value}")
|
705
745
|
|
706
746
|
if isinstance(expression.right, BinaryExpression):
|
707
747
|
self._store_temp_command(f"scoreboard players operation @s {temp_var} *= @s {right_temp}")
|
708
748
|
else:
|
709
|
-
# For literal values,
|
749
|
+
# For literal values, keep explicit multiply command for compatibility
|
710
750
|
if isinstance(expression.right, LiteralExpression):
|
711
751
|
self._store_temp_command(f"scoreboard players multiply @s {temp_var} {expression.right.value}")
|
712
752
|
else:
|
@@ -716,12 +756,18 @@ class MDLCompiler:
|
|
716
756
|
if isinstance(expression.left, BinaryExpression):
|
717
757
|
self._store_temp_command(f"scoreboard players operation @s {temp_var} = @s {left_temp}")
|
718
758
|
else:
|
719
|
-
|
759
|
+
if isinstance(expression.left, VariableSubstitution) or (isinstance(expression.left, str) and str(left_value).startswith("score ")):
|
760
|
+
parts = str(left_value).split()
|
761
|
+
scope = parts[1]
|
762
|
+
obj = parts[2]
|
763
|
+
self._store_temp_command(f"scoreboard players operation @s {temp_var} = {scope} {obj}")
|
764
|
+
else:
|
765
|
+
self._store_temp_command(f"scoreboard players set @s {temp_var} {left_value}")
|
720
766
|
|
721
767
|
if isinstance(expression.right, BinaryExpression):
|
722
768
|
self._store_temp_command(f"scoreboard players operation @s {temp_var} /= @s {right_temp}")
|
723
769
|
else:
|
724
|
-
# For literal values,
|
770
|
+
# For literal values, keep explicit divide command for compatibility
|
725
771
|
if isinstance(expression.right, LiteralExpression):
|
726
772
|
self._store_temp_command(f"scoreboard players divide @s {temp_var} {expression.right.value}")
|
727
773
|
else:
|
@@ -731,10 +777,12 @@ class MDLCompiler:
|
|
731
777
|
self._store_temp_command(f"scoreboard players set @s {temp_var} 0")
|
732
778
|
|
733
779
|
def _store_temp_command(self, command: str):
|
734
|
-
"""
|
735
|
-
if
|
736
|
-
self.
|
737
|
-
|
780
|
+
"""Append a temporary command into the current output sink (function/if/while body)."""
|
781
|
+
if hasattr(self, '_temp_sink_stack') and self._temp_sink_stack:
|
782
|
+
self._temp_sink_stack[-1].append(command)
|
783
|
+
else:
|
784
|
+
# Fallback: do nothing, but keep behavior predictable
|
785
|
+
pass
|
738
786
|
|
739
787
|
def _generate_temp_variable_name(self) -> str:
|
740
788
|
"""Generate a unique temporary variable name."""
|