minecraft-datapack-language 16.0.8__tar.gz → 16.0.10__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.10/.tmp_compile_bwe.py +466 -0
- minecraft_datapack_language-16.0.10/.tmp_compile_bwe2.py +61 -0
- minecraft_datapack_language-16.0.10/.tmp_compile_bwe3.py +460 -0
- minecraft_datapack_language-16.0.10/.tmp_verify_loops.py +45 -0
- {minecraft_datapack_language-16.0.8/minecraft_datapack_language.egg-info → minecraft_datapack_language-16.0.10}/PKG-INFO +1 -1
- minecraft_datapack_language-16.0.10/docs/_data/version.yml +3 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/assets/css/style.css +1 -1
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/index.md +0 -4
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language/_version.py +3 -3
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language/mdl_compiler.py +38 -2
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10/minecraft_datapack_language.egg-info}/PKG-INFO +1 -1
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language.egg-info/SOURCES.txt +4 -0
- minecraft_datapack_language-16.0.8/docs/_data/version.yml +0 -3
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.cursor/rules/aispec.mdc +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.github/actions/mdl-compile/action.yml +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.github/workflows/ci.yml +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.github/workflows/docs.yml +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.github/workflows/pypi.yml +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.github/workflows/release.yml +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.github/workflows/update-website-version.yml +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.gitignore +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1/data/minecraft/tags/function/load.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1/data/test1/function/load.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1/data/test1/function/load1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1/data/test1/function/main.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1/data/test1/function/main__else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1/data/test1/function/main__if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1/data/test1/function/testfunc.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1/data/test1/function/testfunc__while_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1/pack.mcmeta +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1-confirm/data/minecraft/tags/function/load.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1-confirm/data/test1/function/load.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1-confirm/data/test1/function/load1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1-confirm/data/test1/function/main.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1-confirm/data/test1/function/main__else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1-confirm/data/test1/function/main__if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1-confirm/data/test1/function/testfunc.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1-confirm/data/test1/function/testfunc__while_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/.mdl-out-test1-confirm/pack.mcmeta +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/COMPILER_FIXES_SUMMARY.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/CONDITIONALS_IMPLEMENTATION.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/LICENSE +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/Makefile +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/README.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/advancements/diamond_sword.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/advancements/first_spell.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/advancements/other_advancement.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/advancements/test_advancement.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/comprehensive_error_test.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/complex_scopes/function/main_else_8.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/complex_scopes/function/main_if_8.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_basic_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_basic_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_basic_if_if_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_complex_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_complex_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_complex_if_if_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_complex_if_if_5.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_control_complex_expressions_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_control_complex_expressions_if_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_control_variable_substitution_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_control_with_raw_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_control_with_scopes_if_5.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_control_with_tellraw_else_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_control_with_tellraw_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_control_with_tellraw_if_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_if_else_else_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_if_else_else_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_if_else_else_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_if_else_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_if_else_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_if_else_if_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_nested_if_else_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_nested_if_else_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_nested_if_else_3_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_nested_if_else_3_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_nested_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_nested_if_if_2_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_nested_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_nested_if_if_3_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/comprehensive_control_test/function/test_nested_if_if_3_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/control_test/function/main_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/control_test/function/main_while_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/control_test/function/main_while_body_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/if_test/function/main_else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/if_test/function/main_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/conditional_demo_else_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/conditional_demo_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/conditional_demo_if_3_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/conditional_demo_if_3_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/conditional_demo_if_3_if_0_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/conditional_demo_if_3_if_0_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/countdown_while_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/countdown_while_body_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/increase_tick_per_player_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/increase_tick_per_player_if_1_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/loop_demo_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/loop_demo_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/loop_demo_while_body_2_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/loop_demo_while_body_2_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/loop_demo_while_body_2_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/main_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/main_else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/main_else_5.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/main_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/main_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/main_if_5.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/main_while_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/main_while_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/main_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/main_while_6.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/main_while_7.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/main_while_body_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/main_while_body_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/main_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/main_while_body_6.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/main_while_body_7.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/scoreboard_demo_while_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/scoreboard_demo_while_body_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/scoreboard_demo_while_body_3_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/start_game_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/start_game_if_5.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/start_game_while_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/start_game_while_body_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_basic_if_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_basic_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_basic_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_basic_while_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_basic_while_while_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_basic_while_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_basic_while_while_body_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_if_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_if_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_if_if_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_nested_control_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_nested_control_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_nested_control_while_body_2_else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_nested_control_while_body_2_else_1_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_nested_control_while_body_2_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_nested_control_while_body_2_if_1_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_nested_control_while_body_2_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_scope_scenarios_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_scope_scenarios_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_scope_scenarios_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_scope_scenarios_if_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_while_while_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_while_while_6.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_while_while_body_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_complex_while_while_body_6.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_complex_expressions_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_complex_expressions_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_complex_expressions_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_complex_expressions_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_error_handling_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_error_handling_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_error_handling_while_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_error_handling_while_body_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_performance_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_performance_while_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_performance_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_performance_while_body_2_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_performance_while_body_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_performance_while_body_4_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_performance_while_body_4_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_scoped_functions_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_scoped_functions_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_scoped_functions_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_scoped_functions_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_variable_substitution_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_variable_substitution_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_variable_substitution_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_variable_substitution_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_assignments_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_assignments_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_assignments_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_assignments_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_functions_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_functions_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_functions_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_functions_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_raw_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_raw_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_raw_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_scopes_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_scopes_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_scopes_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_scopes_if_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_tellraw_else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_tellraw_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_tellraw_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_tellraw_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_control_with_tellraw_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_if_else_else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_if_else_else_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_if_else_else_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_if_else_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_if_else_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_if_else_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_main_while_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_main_while_body_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_nested_if_else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_nested_if_else_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_nested_if_else_2_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_nested_if_else_2_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_nested_if_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_nested_if_if_1_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_nested_if_if_1_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_nested_if_if_1_if_0_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_nested_if_if_1_if_0_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_nested_if_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_nested_if_if_2_else_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_nested_if_if_2_if_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_scope_conditionals_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_scope_conditionals_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_scope_conditionals_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_scope_conditionals_while_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_scope_conditionals_while_5.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_scope_conditionals_while_body_4.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_scope_conditionals_while_body_5.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_scope_interactions_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_scope_interactions_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_scope_interactions_if_3.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_while_break_while_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_while_break_while_body_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_while_break_while_body_2_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/test_while_break_while_body_2_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/tick_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/tick_if_2.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/tick_if_2_while_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/tick_if_2_while_body_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/weapon_effects_else_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test/function/weapon_effects_if_1.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test_final_template_fixed/function/main_else_8.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/test_final_template_fixed/function/main_if_8.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/while_test/function/main_while_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/data/while_test/function/main_while_body_0.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/dist.zip +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/.env +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/404.html +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/Gemfile +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/README.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_config.yml +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_docs/cli-reference.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_docs/contributing.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_docs/docs-hub.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_docs/documentation.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_docs/examples.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_docs/getting-started.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_docs/language-reference.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_docs/multi-file-projects.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_docs/python-bindings.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_docs/vscode-extension.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_includes/head-custom.html +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_includes/navigation.html +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_layouts/default.html +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_layouts/page.html +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_plugins/test_version.rb +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/_plugins/version_reader.rb +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/docs.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/downloads.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/icons/favicon-16.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/icons/favicon-32.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/icons/favicon-48.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/icons/favicon-64.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/icons/icon-1024.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/icons/icon-128.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/icons/icon-256.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/icons/icon-512.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/docs/icons/icon-64.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/examples/hello_world.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/examples/macros_example.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/examples/scope_examples.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/examples/simple_counter.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/icons/favicon-16.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/icons/favicon-32.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/icons/favicon-48.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/icons/favicon-64.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/icons/icon-1024.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/icons/icon-128.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/icons/icon-256.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/icons/icon-512.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/icons/icon-64.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/item_modifiers/diamond_sword.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/item_modifiers/enchant_tool.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/item_modifiers/test_item_modifier.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/loot_tables/diamond_sword.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/loot_tables/epic_loot.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/loot_tables/main_loot.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/loot_tables/test_loot.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/mdllocal.sh +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language/__init__.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language/ast_nodes.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language/cli.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language/dir_map.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language/mdl_errors.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language/mdl_lexer.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language/mdl_linter.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language/mdl_parser.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language/python_api.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language/utils.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language.egg-info/dependency_links.txt +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language.egg-info/entry_points.txt +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language.egg-info/requires.txt +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/minecraft_datapack_language.egg-info/top_level.txt +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/multi_scope_example.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/my_awesome_pack/README.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/my_awesome_pack/minecraft_datapack_language.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/predicates/diamond_sword.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/predicates/has_mana.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/predicates/other_predicate.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/predicates/test_predicate.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/pyproject.toml +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/pytest.ini +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/recipes/custom_pickaxe.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/recipes/diamond_sword.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/recipes/first.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/recipes/inlet.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/recipes/main_recipe.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/recipes/outlet.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/recipes/pipe.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/recipes/second.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/recipes/test_recipe.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/recipes/wrench.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scope_demo.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scoreboard_test.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/UpdateMDL.sh +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/bootstrap.ps1 +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/bootstrap.sh +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/build_pkg.ps1 +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/build_pkg.sh +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/dev_build.ps1 +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/dev_build.sh +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/dev_setup.ps1 +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/dev_setup.sh +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/git-bash/bootstrap-gitbash.sh +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/git-bash/build_pkg-gitbash.sh +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/git-bash/test_cli-gitbash.sh +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/release.sh +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/test_cli.ps1 +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/test_cli.sh +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/test_dev.ps1 +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/test_dev.sh +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/update_docs.sh +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/scripts/update_version_info.sh +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/setup.cfg +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/structures/diamond_sword.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/structures/test_structure.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/structures/workshop.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tellraw_variables_test.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/temp_output/data/minecraft/tags/function/load.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/temp_output/data/test/function/helper.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/temp_output/data/test/function/load.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/temp_output/data/test/function/main.mcfunction +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/temp_output/pack.mcmeta +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/test_all_registry.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/test_complex_scenarios.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/test_comprehensive_fixes.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/test_if_else_while.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/test_project/complex_test.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/test_simple.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tests/__init__.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tests/run_all_tests.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tests/test_cli.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tests/test_codegen_naming_and_logic.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tests/test_compiler_fixes.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tests/test_complex_scenarios.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tests/test_comprehensive_end_to_end.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tests/test_examples.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tests/test_macros.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tests/test_python_api.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tests/test_python_bindings.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tests/test_scheduledwhile.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tests/test_user_regression_test1.py +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tmp_local_cli_out.zip +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tmp_test1.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tmp_test1.mdl~ +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/tmp_test1_confirm.mdl +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/README.md +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/icons/favicon-16.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/icons/favicon-32.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/icons/favicon-48.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/icons/favicon-64.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/icons/icon-1024.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/icons/icon-128.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/icons/icon-256.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/icons/icon-512.png +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/language-configuration.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/package-lock.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/package.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/snippets/mdl.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/src/extension.ts +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/syntaxes/mdl.tmLanguage.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/themes/mdl-color-theme.json +0 -0
- {minecraft_datapack_language-16.0.8 → minecraft_datapack_language-16.0.10}/vscode-extension/tsconfig.json +0 -0
@@ -0,0 +1,466 @@
|
|
1
|
+
from pathlib import Path
|
2
|
+
import tempfile, sys
|
3
|
+
from minecraft_datapack_language.mdl_parser import MDLParser
|
4
|
+
from minecraft_datapack_language.mdl_compiler import MDLCompiler
|
5
|
+
|
6
|
+
mdl_src = r"""
|
7
|
+
pack "betterworldedit" "Generated by MDL CLI" 82;
|
8
|
+
namespace "betterworldedit";
|
9
|
+
|
10
|
+
// =============================
|
11
|
+
// Variables
|
12
|
+
// =============================
|
13
|
+
|
14
|
+
// Selection state per-player
|
15
|
+
var num bwe_pos1_x<@a> = 0;
|
16
|
+
var num bwe_pos1_y<@a> = 0;
|
17
|
+
var num bwe_pos1_z<@a> = 0;
|
18
|
+
var num bwe_pos2_x<@a> = 0;
|
19
|
+
var num bwe_pos2_y<@a> = 0;
|
20
|
+
var num bwe_pos2_z<@a> = 0;
|
21
|
+
var num bwe_pos1_set<@a> = 0;
|
22
|
+
var num bwe_pos2_set<@a> = 0;
|
23
|
+
|
24
|
+
// Derived bounds/dimensions per-player
|
25
|
+
var num bwe_min_x<@a> = 0;
|
26
|
+
var num bwe_min_y<@a> = 0;
|
27
|
+
var num bwe_min_z<@a> = 0;
|
28
|
+
var num bwe_max_x<@a> = 0;
|
29
|
+
var num bwe_max_y<@a> = 0;
|
30
|
+
var num bwe_max_z<@a> = 0;
|
31
|
+
var num bwe_dim_x<@a> = 0;
|
32
|
+
var num bwe_dim_y<@a> = 0;
|
33
|
+
var num bwe_dim_z<@a> = 0;
|
34
|
+
var num bwe_volume<@a> = 0;
|
35
|
+
|
36
|
+
// Config per-player
|
37
|
+
var num bwe_max_fill<@a> = 30000; // safe default under vanilla fill cap
|
38
|
+
|
39
|
+
// Scratch variables (per-player) used in helpers/loops
|
40
|
+
var num _slice_h<@a> = 0;
|
41
|
+
var num _base<@a> = 0;
|
42
|
+
var num _slices<@a> = 0;
|
43
|
+
var num _y_start<@a> = 0;
|
44
|
+
var num _y_end<@a> = 0;
|
45
|
+
var num _xs<@a> = 0;
|
46
|
+
var num _xe<@a> = 0;
|
47
|
+
var num _zs<@a> = 0;
|
48
|
+
var num _ze<@a> = 0;
|
49
|
+
var num _tile_x<@a> = 0;
|
50
|
+
var num _tile_z<@a> = 0;
|
51
|
+
var num _area_limit<@a> = 0;
|
52
|
+
var num _temp<@a> = 0;
|
53
|
+
|
54
|
+
// Selector item usage tracking (two-tool system via custom_data: bwe_selector_1 / bwe_selector_2)
|
55
|
+
var num bwe_stat_selector<@a> = 0; // current brush use stat (mirrors objective)
|
56
|
+
var num bwe_stat_selector_2<@a> = 0; // mirror for clarity/debug (same value as above)
|
57
|
+
var num bwe_stat_prev_1<@a> = 0; // last seen stat when using Pos1 tool
|
58
|
+
var num bwe_stat_prev_2<@a> = 0; // last seen stat when using Pos2 tool
|
59
|
+
|
60
|
+
// =============================
|
61
|
+
// Main / Init
|
62
|
+
// =============================
|
63
|
+
|
64
|
+
function betterworldedit:main {
|
65
|
+
say "BetterWorldEdit - Commands:";
|
66
|
+
say " - /function betterworldedit:pos1 - set position 1 (your current block)";
|
67
|
+
say " - /function betterworldedit:pos2 - set position 2 (your current block)";
|
68
|
+
say " - /function betterworldedit:info - show selection info";
|
69
|
+
say " - /function betterworldedit:set_stone - fill selection with stone (chunked)";
|
70
|
+
say " - /function betterworldedit:give_selector - get selector tools (pos1 & pos2)";
|
71
|
+
say " - exec betterworldedit:fill_selection '{block:\"minecraft:oak_planks\"}' - fill with any block";
|
72
|
+
}
|
73
|
+
|
74
|
+
function betterworldedit:init {
|
75
|
+
say "BetterWorldEdit initialized. Run /function betterworldedit:main";
|
76
|
+
// Scoreboard objectives
|
77
|
+
$!raw
|
78
|
+
scoreboard objectives add bwe_use_selector minecraft.used:minecraft.brush
|
79
|
+
|
80
|
+
scoreboard objectives add bwe_pos1_x dummy
|
81
|
+
scoreboard objectives add bwe_pos1_y dummy
|
82
|
+
scoreboard objectives add bwe_pos1_z dummy
|
83
|
+
scoreboard objectives add bwe_pos2_x dummy
|
84
|
+
scoreboard objectives add bwe_pos2_y dummy
|
85
|
+
scoreboard objectives add bwe_pos2_z dummy
|
86
|
+
scoreboard objectives add bwe_pos1_set dummy
|
87
|
+
scoreboard objectives add bwe_pos2_set dummy
|
88
|
+
|
89
|
+
scoreboard objectives add bwe_min_x dummy
|
90
|
+
scoreboard objectives add bwe_min_y dummy
|
91
|
+
scoreboard objectives add bwe_min_z dummy
|
92
|
+
scoreboard objectives add bwe_max_x dummy
|
93
|
+
scoreboard objectives add bwe_max_y dummy
|
94
|
+
scoreboard objectives add bwe_max_z dummy
|
95
|
+
scoreboard objectives add bwe_dim_x dummy
|
96
|
+
scoreboard objectives add bwe_dim_y dummy
|
97
|
+
scoreboard objectives add bwe_dim_z dummy
|
98
|
+
scoreboard objectives add bwe_volume dummy
|
99
|
+
|
100
|
+
scoreboard objectives add bwe_max_fill dummy
|
101
|
+
|
102
|
+
scoreboard objectives add _slice_h dummy
|
103
|
+
scoreboard objectives add _base dummy
|
104
|
+
scoreboard objectives add _slices dummy
|
105
|
+
scoreboard objectives add _y_start dummy
|
106
|
+
scoreboard objectives add _y_end dummy
|
107
|
+
scoreboard objectives add _xs dummy
|
108
|
+
scoreboard objectives add _xe dummy
|
109
|
+
scoreboard objectives add _zs dummy
|
110
|
+
scoreboard objectives add _ze dummy
|
111
|
+
scoreboard objectives add _tile_x dummy
|
112
|
+
scoreboard objectives add _tile_z dummy
|
113
|
+
scoreboard objectives add _area_limit dummy
|
114
|
+
scoreboard objectives add _temp dummy
|
115
|
+
|
116
|
+
scoreboard objectives add bwe_stat_selector dummy
|
117
|
+
scoreboard objectives add bwe_stat_selector_2 dummy
|
118
|
+
scoreboard objectives add bwe_stat_prev_1 dummy
|
119
|
+
scoreboard objectives add bwe_stat_prev_2 dummy
|
120
|
+
raw!$
|
121
|
+
}
|
122
|
+
|
123
|
+
// Run on load
|
124
|
+
on_load betterworldedit:init;
|
125
|
+
|
126
|
+
// =============================
|
127
|
+
// Position capture helpers
|
128
|
+
// =============================
|
129
|
+
|
130
|
+
function betterworldedit:pos1 {
|
131
|
+
// Capture player's current block coordinates into pos1
|
132
|
+
$!raw
|
133
|
+
execute store result score @s bwe_pos1_x run data get entity @s Pos[0] 1
|
134
|
+
execute store result score @s bwe_pos1_y run data get entity @s Pos[1] 1
|
135
|
+
execute store result score @s bwe_pos1_z run data get entity @s Pos[2] 1
|
136
|
+
# Off-by-one fix: if feet are in air, choose block below
|
137
|
+
execute if block ~ ~ ~ #minecraft:air run scoreboard players remove @s bwe_pos1_y 1
|
138
|
+
raw!$
|
139
|
+
bwe_pos1_set<@s> = 1;
|
140
|
+
$!raw
|
141
|
+
tellraw @s [{"text":"Set pos1 to ("},{"score":{"name":"@s","objective":"bwe_pos1_x"}},{"text":", "},{"score":{"name":"@s","objective":"bwe_pos1_y"}},{"text":", "},{"score":{"name":"@s","objective":"bwe_pos1_z"}},{"text":")"}]
|
142
|
+
raw!$
|
143
|
+
}
|
144
|
+
|
145
|
+
function betterworldedit:pos2 {
|
146
|
+
// Capture player's current block coordinates into pos2
|
147
|
+
$!raw
|
148
|
+
execute store result score @s bwe_pos2_x run data get entity @s Pos[0] 1
|
149
|
+
execute store result score @s bwe_pos2_y run data get entity @s Pos[1] 1
|
150
|
+
execute store result score @s bwe_pos2_z run data get entity @s Pos[2] 1
|
151
|
+
# Off-by-one fix: if feet are in air, choose block below
|
152
|
+
execute if block ~ ~ ~ #minecraft:air run scoreboard players remove @s bwe_pos2_y 1
|
153
|
+
raw!$
|
154
|
+
bwe_pos2_set<@s> = 1;
|
155
|
+
$!raw
|
156
|
+
tellraw @s [{"text":"Set pos2 to ("},{"score":{"name":"@s","objective":"bwe_pos2_x"}},{"text":", "},{"score":{"name":"@s","objective":"bwe_pos2_y"}},{"text":", "},{"score":{"name":"@s","objective":"bwe_pos2_z"}},{"text":")"}]
|
157
|
+
raw!$
|
158
|
+
}
|
159
|
+
|
160
|
+
// =============================
|
161
|
+
// Bounds, dimensions, and info
|
162
|
+
// =============================
|
163
|
+
|
164
|
+
function betterworldedit:_compute_bounds {
|
165
|
+
// Mirror missing positions so dims stay valid
|
166
|
+
if $bwe_pos1_set<@s>$ == 0 {
|
167
|
+
bwe_pos1_x<@s> = $bwe_pos2_x<@s>$;
|
168
|
+
bwe_pos1_y<@s> = $bwe_pos2_y<@s>$;
|
169
|
+
bwe_pos1_z<@s> = $bwe_pos2_z<@s>$;
|
170
|
+
}
|
171
|
+
if $bwe_pos2_set<@s>$ == 0 {
|
172
|
+
bwe_pos2_x<@s> = $bwe_pos1_x<@s>$;
|
173
|
+
bwe_pos2_y<@s> = $bwe_pos1_y<@s>$;
|
174
|
+
bwe_pos2_z<@s> = $bwe_pos1_z<@s>$;
|
175
|
+
}
|
176
|
+
|
177
|
+
// X bounds
|
178
|
+
if $bwe_pos1_x<@s>$ <= $bwe_pos2_x<@s>$ {
|
179
|
+
bwe_min_x<@s> = $bwe_pos1_x<@s>$;
|
180
|
+
bwe_max_x<@s> = $bwe_pos2_x<@s>$;
|
181
|
+
} else {
|
182
|
+
bwe_min_x<@s> = $bwe_pos2_x<@s>$;
|
183
|
+
bwe_max_x<@s> = $bwe_pos1_x<@s>$;
|
184
|
+
}
|
185
|
+
// Y bounds
|
186
|
+
if $bwe_pos1_y<@s>$ <= $bwe_pos2_y<@s>$ {
|
187
|
+
bwe_min_y<@s> = $bwe_pos1_y<@s>$;
|
188
|
+
bwe_max_y<@s> = $bwe_pos2_y<@s>$;
|
189
|
+
} else {
|
190
|
+
bwe_min_y<@s> = $bwe_pos2_y<@s>$;
|
191
|
+
bwe_max_y<@s> = $bwe_pos1_y<@s>$;
|
192
|
+
}
|
193
|
+
// Z bounds
|
194
|
+
if $bwe_pos1_z<@s>$ <= $bwe_pos2_z<@s>$ {
|
195
|
+
bwe_min_z<@s> = $bwe_pos1_z<@s>$;
|
196
|
+
bwe_max_z<@s> = $bwe_pos2_z<@s>$;
|
197
|
+
} else {
|
198
|
+
bwe_min_z<@s> = $bwe_pos2_z<@s>$;
|
199
|
+
bwe_max_z<@s> = $bwe_pos1_z<@s>$;
|
200
|
+
}
|
201
|
+
|
202
|
+
// Dimensions (inclusive)
|
203
|
+
$!raw
|
204
|
+
scoreboard players operation @s bwe_dim_x = @s bwe_max_x
|
205
|
+
scoreboard players operation @s bwe_dim_x -= @s bwe_min_x
|
206
|
+
scoreboard players add @s bwe_dim_x 1
|
207
|
+
|
208
|
+
scoreboard players operation @s bwe_dim_y = @s bwe_max_y
|
209
|
+
scoreboard players operation @s bwe_dim_y -= @s bwe_min_y
|
210
|
+
scoreboard players add @s bwe_dim_y 1
|
211
|
+
|
212
|
+
scoreboard players operation @s bwe_dim_z = @s bwe_max_z
|
213
|
+
scoreboard players operation @s bwe_dim_z -= @s bwe_min_z
|
214
|
+
scoreboard players add @s bwe_dim_z 1
|
215
|
+
raw!$
|
216
|
+
|
217
|
+
// Volume
|
218
|
+
$!raw
|
219
|
+
scoreboard players operation @s _temp = @s bwe_dim_x
|
220
|
+
scoreboard players operation @s _temp *= @s bwe_dim_y
|
221
|
+
scoreboard players operation @s bwe_volume = @s _temp
|
222
|
+
scoreboard players operation @s bwe_volume *= @s bwe_dim_z
|
223
|
+
raw!$
|
224
|
+
}
|
225
|
+
|
226
|
+
function betterworldedit:info {
|
227
|
+
exec betterworldedit:_compute_bounds;
|
228
|
+
say "Pos1: ($bwe_pos1_x<@s>$, $bwe_pos1_y<@s>$, $bwe_pos1_z<@s>$)";
|
229
|
+
say "Pos2: ($bwe_pos2_x<@s>$, $bwe_pos2_y<@s>$, $bwe_pos2_z<@s>$)";
|
230
|
+
say "Bounds min: ($bwe_min_x<@s>$, $bwe_min_y<@s>$, $bwe_min_z<@s>$) max: ($bwe_max_x<@s>$, $bwe_max_y<@s>$, $bwe_max_z<@s>$)";
|
231
|
+
say "Dims: $bwe_dim_x<@s>$ x $bwe_dim_y<@s>$ x $bwe_dim_z<@s>$ = $bwe_volume<@s>$";
|
232
|
+
}
|
233
|
+
|
234
|
+
// =============================
|
235
|
+
// Ensure & Tick
|
236
|
+
// =============================
|
237
|
+
|
238
|
+
function betterworldedit:_ensure_scores_for_player {
|
239
|
+
$!raw
|
240
|
+
# Flags & positions
|
241
|
+
scoreboard players add @s bwe_pos1_set 0
|
242
|
+
scoreboard players add @s bwe_pos2_set 0
|
243
|
+
scoreboard players add @s bwe_pos1_x 0
|
244
|
+
scoreboard players add @s bwe_pos1_y 0
|
245
|
+
scoreboard players add @s bwe_pos1_z 0
|
246
|
+
scoreboard players add @s bwe_pos2_x 0
|
247
|
+
scoreboard players add @s bwe_pos2_y 0
|
248
|
+
scoreboard players add @s bwe_pos2_z 0
|
249
|
+
|
250
|
+
# Derived
|
251
|
+
scoreboard players add @s bwe_min_x 0
|
252
|
+
scoreboard players add @s bwe_min_y 0
|
253
|
+
scoreboard players add @s bwe_min_z 0
|
254
|
+
scoreboard players add @s bwe_max_x 0
|
255
|
+
scoreboard players add @s bwe_max_y 0
|
256
|
+
scoreboard players add @s bwe_max_z 0
|
257
|
+
scoreboard players add @s bwe_dim_x 0
|
258
|
+
scoreboard players add @s bwe_dim_y 0
|
259
|
+
scoreboard players add @s bwe_dim_z 0
|
260
|
+
scoreboard players add @s bwe_volume 0
|
261
|
+
|
262
|
+
# Config (set default once)
|
263
|
+
scoreboard players add @s bwe_max_fill 0
|
264
|
+
execute unless score @s bwe_max_fill matches 1.. run scoreboard players set @s bwe_max_fill 30000
|
265
|
+
|
266
|
+
# Scratch
|
267
|
+
scoreboard players add @s _slice_h 0
|
268
|
+
scoreboard players add @s _base 0
|
269
|
+
scoreboard players add @s _slices 0
|
270
|
+
scoreboard players add @s _y_start 0
|
271
|
+
scoreboard players add @s _y_end 0
|
272
|
+
scoreboard players add @s _xs 0
|
273
|
+
scoreboard players add @s _xe 0
|
274
|
+
scoreboard players add @s _zs 0
|
275
|
+
scoreboard players add @s _ze 0
|
276
|
+
scoreboard players add @s _tile_x 0
|
277
|
+
scoreboard players add @s _tile_z 0
|
278
|
+
scoreboard players add @s _area_limit 0
|
279
|
+
scoreboard players add @s _temp 0
|
280
|
+
|
281
|
+
# Selector stats
|
282
|
+
scoreboard players add @s bwe_stat_selector 0
|
283
|
+
scoreboard players add @s bwe_stat_selector_2 0
|
284
|
+
scoreboard players add @s bwe_stat_prev_1 0
|
285
|
+
scoreboard players add @s bwe_stat_prev_2 0
|
286
|
+
raw!$
|
287
|
+
}
|
288
|
+
|
289
|
+
function betterworldedit:main_tick {
|
290
|
+
exec betterworldedit:_ensure_scores_for_player<@a>;
|
291
|
+
exec betterworldedit:update_selector<@a>;
|
292
|
+
}
|
293
|
+
|
294
|
+
on_tick betterworldedit:main_tick;
|
295
|
+
|
296
|
+
// =============================
|
297
|
+
// Chunked fill
|
298
|
+
// =============================
|
299
|
+
|
300
|
+
function betterworldedit:_fill_slice_macro {
|
301
|
+
$fill $(x1) $(y1) $(z1) $(x2) $(y2) $(z2) $(block)
|
302
|
+
}
|
303
|
+
|
304
|
+
function betterworldedit:_prepare_fill_ctx {
|
305
|
+
$!raw
|
306
|
+
# Reset compound
|
307
|
+
data remove storage betterworldedit:ctx fill
|
308
|
+
data modify storage betterworldedit:ctx fill set value {}
|
309
|
+
# Coords from scoreboard
|
310
|
+
execute store result storage betterworldedit:ctx fill.x1 int 1 run scoreboard players get @s _xs
|
311
|
+
execute store result storage betterworldedit:ctx fill.y1 int 1 run scoreboard players get @s _y_start
|
312
|
+
execute store result storage betterworldedit:ctx fill.z1 int 1 run scoreboard players get @s _zs
|
313
|
+
execute store result storage betterworldedit:ctx fill.x2 int 1 run scoreboard players get @s _xe
|
314
|
+
execute store result storage betterworldedit:ctx fill.y2 int 1 run scoreboard players get @s _y_end
|
315
|
+
execute store result storage betterworldedit:ctx fill.z2 int 1 run scoreboard players get @s _ze
|
316
|
+
# Block id from request
|
317
|
+
data modify storage betterworldedit:ctx fill.block set from storage betterworldedit:ctx req.block
|
318
|
+
raw!$
|
319
|
+
}
|
320
|
+
|
321
|
+
function betterworldedit:set_stone {
|
322
|
+
exec betterworldedit:_compute_bounds;
|
323
|
+
$!raw
|
324
|
+
execute unless data storage betterworldedit:ctx req.block run data modify storage betterworldedit:ctx req.block set value "minecraft:stone"
|
325
|
+
raw!$
|
326
|
+
if $bwe_volume<@s>$ == 0 {
|
327
|
+
say "No selection set! Use pos1/pos2 first.";
|
328
|
+
} else {
|
329
|
+
$!raw
|
330
|
+
tellraw @s [{"text":"Filling selection with "},{"storage":"betterworldedit:ctx","nbt":"req.block"},{"text":"... ("},{"score":{"name":"@s","objective":"bwe_dim_x"}},{"text":"x"},{"score":{"name":"@s","objective":"bwe_dim_y"}},{"text":"x"},{"score":{"name":"@s","objective":"bwe_dim_z"}},{"text":" = "},{"score":{"name":"@s","objective":"bwe_volume"}},{"text":")"}]
|
331
|
+
raw!$
|
332
|
+
|
333
|
+
// Single fill if within limit
|
334
|
+
if $bwe_volume<@s>$ <= $bwe_max_fill<@s>$ {
|
335
|
+
$!raw
|
336
|
+
scoreboard players operation @s _y_start = @s bwe_min_y
|
337
|
+
scoreboard players operation @s _y_end = @s bwe_max_y
|
338
|
+
scoreboard players operation @s _xs = @s bwe_min_x
|
339
|
+
scoreboard players operation @s _xe = @s bwe_max_x
|
340
|
+
scoreboard players operation @s _zs = @s bwe_min_z
|
341
|
+
scoreboard players operation @s _ze = @s bwe_max_z
|
342
|
+
raw!$
|
343
|
+
exec betterworldedit:_prepare_fill_ctx;
|
344
|
+
exec betterworldedit:_fill_slice_macro with storage betterworldedit:ctx fill;
|
345
|
+
say "Done (single fill).";
|
346
|
+
} else {
|
347
|
+
// Chunked: compute slice height so slice_area * slice_h <= max_fill
|
348
|
+
_base<@s> = $bwe_dim_x<@s>$ * $bwe_dim_z<@s>$;
|
349
|
+
_slice_h<@s> = $bwe_max_fill<@s>$ / $_base<@s>$;
|
350
|
+
if $_slice_h<@s>$ < 1 { _slice_h<@s> = 1; }
|
351
|
+
if $_slice_h<@s>$ > $bwe_dim_y<@s>$ { _slice_h<@s> = $bwe_dim_y<@s>$; }
|
352
|
+
|
353
|
+
_y_start<@s> = $bwe_min_y<@s>$ + 0;
|
354
|
+
_y_end<@s> = 0;
|
355
|
+
_slices<@s> = 0;
|
356
|
+
|
357
|
+
while $_y_start<@s>$ <= $bwe_max_y<@s>$ {
|
358
|
+
_y_end<@s> = $_y_start<@s>$ + $_slice_h<@s>$ - 1;
|
359
|
+
if $_y_end<@s>$ > $bwe_max_y<@s>$ { _y_end<@s> = $bwe_max_y<@s>$; }
|
360
|
+
|
361
|
+
// Determine tile sizes along X/Z to respect area_limit per slice
|
362
|
+
_area_limit<@s> = $bwe_max_fill<@s>$ / $_slice_h<@s>$;
|
363
|
+
if $_area_limit<@s>$ < 1 { _area_limit<@s> = 1; }
|
364
|
+
|
365
|
+
_tile_x<@s> = $_area_limit<@s>$ / $bwe_dim_z<@s>$;
|
366
|
+
if $_tile_x<@s>$ < 1 { _tile_x<@s> = 1; }
|
367
|
+
if $_tile_x<@s>$ > $bwe_dim_x<@s>$ { _tile_x<@s> = $bwe_dim_x<@s>$; }
|
368
|
+
|
369
|
+
_tile_z<@s> = $_area_limit<@s>$ / $_tile_x<@s>$;
|
370
|
+
if $_tile_z<@s>$ < 1 { _tile_z<@s> = 1; }
|
371
|
+
if $_tile_z<@s>$ > $bwe_dim_z<@s>$ { _tile_z<@s> = $bwe_dim_z<@s>$; }
|
372
|
+
|
373
|
+
_xs<@s> = $bwe_min_x<@s>$ + 0;
|
374
|
+
while $_xs<@s>$ <= $bwe_max_x<@s>$ {
|
375
|
+
_xe<@s> = $_xs<@s>$ + $_tile_x<@s>$ - 1;
|
376
|
+
if $_xe<@s>$ > $bwe_max_x<@s>$ { _xe<@s> = $bwe_max_x<@s>$; }
|
377
|
+
|
378
|
+
_zs<@s> = $bwe_min_z<@s>$ + 0;
|
379
|
+
while $_zs<@s>$ <= $bwe_max_z<@s>$ {
|
380
|
+
_ze<@s> = $_zs<@s>$ + $_tile_z<@s>$ - 1;
|
381
|
+
if $_ze<@s>$ > $bwe_max_z<@s>$ { _ze<@s> = $bwe_max_z<@s>$; }
|
382
|
+
|
383
|
+
exec betterworldedit:_prepare_fill_ctx;
|
384
|
+
exec betterworldedit:_fill_slice_macro with storage betterworldedit:ctx fill;
|
385
|
+
|
386
|
+
_slices<@s> = $_slices<@s>$ + 1;
|
387
|
+
say "Filled #$_slices<@s>$: x $_xs<@s>$..$_xe<@s>$, y $_y_start<@s>$..$_y_end<@s>$, z $_zs<@s>$..$_ze<@s>$";
|
388
|
+
|
389
|
+
_zs<@s> = $_ze<@s>$ + 1;
|
390
|
+
}
|
391
|
+
_xs<@s> = $_xe<@s>$ + 1;
|
392
|
+
}
|
393
|
+
_y_start<@s> = $_y_end<@s>$ + 1;
|
394
|
+
}
|
395
|
+
say "Done ($_slices<@s>$ sub-fills).";
|
396
|
+
}
|
397
|
+
}
|
398
|
+
}
|
399
|
+
|
400
|
+
// Public macro: set requested block (string) and run chunked fill over current selection
|
401
|
+
// Usage examples:
|
402
|
+
// exec betterworldedit:fill_selection '{block:"minecraft:oak_planks"}';
|
403
|
+
// exec betterworldedit:fill_selection with storage betterworldedit:req mypath.to.compound;
|
404
|
+
function betterworldedit:fill_selection {
|
405
|
+
$!raw
|
406
|
+
data remove storage betterworldedit:ctx req
|
407
|
+
data modify storage betterworldedit:ctx req set value {}
|
408
|
+
data modify storage betterworldedit:ctx req.block set value "$(block)"
|
409
|
+
raw!$
|
410
|
+
exec betterworldedit:set_stone;
|
411
|
+
}
|
412
|
+
|
413
|
+
// =============================
|
414
|
+
// Selector tools
|
415
|
+
// =============================
|
416
|
+
|
417
|
+
function betterworldedit:give_selector {
|
418
|
+
$!raw
|
419
|
+
give @s minecraft:brush[item_name={"bold":true,"color":"dark_blue","italic":true,"text":"BWE Selector (Pos1)"},lore=[{"text":"Right-click: set pos1","color":"gray","italic":false}],custom_data={bwe_selector_1:1b}] 1
|
420
|
+
give @s minecraft:brush[item_name={"bold":true,"color":"gold","italic":true,"text":"BWE Selector (Pos2)"},lore=[{"text":"Right-click: set pos2","color":"gray","italic":false}],custom_data={bwe_selector_2:1b}] 1
|
421
|
+
raw!$
|
422
|
+
say "Gave you both BWE Selector tools (pos1 and pos2).";
|
423
|
+
}
|
424
|
+
|
425
|
+
function betterworldedit:update_selector {
|
426
|
+
// Update tags based on currently held selector tool
|
427
|
+
$!raw
|
428
|
+
tag @s remove bwe_holding_pos1
|
429
|
+
tag @s remove bwe_holding_pos2
|
430
|
+
execute if entity @s[nbt={SelectedItem:{components:{"minecraft:custom_data":{bwe_selector_1:1b}}}}] run tag @s add bwe_holding_pos1
|
431
|
+
execute if entity @s[nbt={SelectedItem:{components:{"minecraft:custom_data":{bwe_selector_2:1b}}}}] run tag @s add bwe_holding_pos2
|
432
|
+
raw!$
|
433
|
+
|
434
|
+
// On brush use, run the appropriate function for whoever holds that tool, then reset the stat
|
435
|
+
$!raw
|
436
|
+
execute as @s[tag=bwe_holding_pos1,scores={bwe_use_selector=1..}] run function betterworldedit:pos1
|
437
|
+
execute as @s[tag=bwe_holding_pos2,scores={bwe_use_selector=1..}] run function betterworldedit:pos2
|
438
|
+
scoreboard players reset @s[scores={bwe_use_selector=1..}] bwe_use_selector
|
439
|
+
raw!$
|
440
|
+
}
|
441
|
+
"""
|
442
|
+
|
443
|
+
parser = MDLParser()
|
444
|
+
ast = parser.parse(mdl_src)
|
445
|
+
|
446
|
+
td = tempfile.TemporaryDirectory()
|
447
|
+
out = Path(td.name)
|
448
|
+
MDLCompiler().compile(ast, str(out))
|
449
|
+
|
450
|
+
func_dir = out / 'data' / 'betterworldedit' / 'function'
|
451
|
+
if not func_dir.exists():
|
452
|
+
func_dir = out / 'data' / 'betterworldedit' / 'functions'
|
453
|
+
|
454
|
+
print('== Generated files ==')
|
455
|
+
print('\n'.join(sorted(str(p.name) for p in func_dir.glob('*.mcfunction'))))
|
456
|
+
|
457
|
+
# Show specific files
|
458
|
+
for name in ['_compute_bounds.mcfunction', 'set_stone.mcfunction']:
|
459
|
+
p = func_dir / name
|
460
|
+
if p.exists():
|
461
|
+
print(f"\n== {name} ==\n" + p.read_text())
|
462
|
+
|
463
|
+
# Show while helpers
|
464
|
+
helpers = sorted(func_dir.glob('set_stone__while_*.mcfunction'))
|
465
|
+
for hp in helpers:
|
466
|
+
print(f"\n== {hp.name} ==\n" + hp.read_text())
|
@@ -0,0 +1,61 @@
|
|
1
|
+
from pathib import Path
|
2
|
+
import tempfile, glob
|
3
|
+
from minecraft_datapack_language.mdl_parser import MDLParser
|
4
|
+
from minecraft_datapack_language.mdl_compiler import MDLCompiler
|
5
|
+
|
6
|
+
mdl_src = open('.tmp_bwe.mdl','w', encoding='utf-8')
|
7
|
+
mdl_src.write('''
|
8
|
+
pack "betterworldedit" "Generated by MDL CLI" 82;
|
9
|
+
namespace "betterworldedit";
|
10
|
+
var num _slice_h<@a> = 0; var num _base<@a> = 0; var num _slices<@a> = 0; var num _y_start<@a> = 0; var num _y_end<@a> = 0; var num _xs<@a> = 0; var num _xe<@a> = 0; var num _zs<@a> = 0; var num _ze<@a> = 0; var num _tile_x<@a> = 0; var num _tile_z<@a> = 0; var num _area_limit<@a> = 0; var num _temp<@a> = 0; var num bwe_dim_x<@a> = 0; var num bwe_dim_y<@a> = 0; var num bwe_dim_z<@a> = 0; var num bwe_min_x<@a> = 0; var num bwe_max_x<@a> = 10; var num bwe_min_z<@a> = 0; var num bwe_max_z<@a> = 10; var num bwe_max_y<@a> = 10; var num bwe_max_fill<@a> = 30000; var num bwe_volume<@a> = 40000;
|
11
|
+
function betterworldedit:_prepare_fill_ctx { }
|
12
|
+
function betterworldedit:_fill_slice_macro { }
|
13
|
+
function betterworldedit:set_stone {
|
14
|
+
if $bwe_volume<@s>$ == 0 { } else {
|
15
|
+
_base<@s> = $bwe_dim_x<@s>$ * $bwe_dim_z<@s>$;
|
16
|
+
_slice_h<@s> = $bwe_max_fill<@s>$ / $_base<@s>$;
|
17
|
+
if $_slice_h<@s>$ < 1 { _slice_h<@s> = 1; }
|
18
|
+
if $_slice_h<@s>$ > $bwe_dim_y<@s>$ { _slice_h<@s> = $bwe_dim_y<@s>$; }
|
19
|
+
_y_start<@s> = 0; _y_end<@s> = 0; _slices<@s> = 0;
|
20
|
+
while $_y_start<@s>$ <= $bwe_max_y<@s>$ {
|
21
|
+
_y_end<@s> = $_y_start<@s>$ + $_slice_h<@s>$ - 1;
|
22
|
+
if $_y_end<@s>$ > $bwe_max_y<@s>$ { _y_end<@s> = $bwe_max_y<@s>$; }
|
23
|
+
_area_limit<@s> = $bwe_max_fill<@s>$ / $_slice_h<@s>$;
|
24
|
+
if $_area_limit<@s>$ < 1 { _area_limit<@s> = 1; }
|
25
|
+
_tile_x<@s> = $_area_limit<@s>$ / $bwe_dim_z<@s>$; if $_tile_x<@s>$ < 1 { _tile_x<@s> = 1; } if $_tile_x<@s>$ > $bwe_dim_x<@s>$ { _tile_x<@s> = $bwe_dim_x<@s>$; }
|
26
|
+
_tile_z<@s> = $_area_limit<@s>$ / $_tile_x<@s>$; if $_tile_z<@s>$ < 1 { _tile_z<@s> = 1; } if $_tile_z<@s>$ > $bwe_dim_z<@s>$ { _tile_z<@s> = $bwe_dim_z<@s>$; }
|
27
|
+
_xs<@s> = $bwe_min_x<@s>$ + 0;
|
28
|
+
while $_xs<@s>$ <= $bwe_max_x<@s>$ {
|
29
|
+
_xe<@s> = $_xs<@s>$ + $_tile_x<@s>$ - 1; if $_xe<@s>$ > $bwe_max_x<@s>$ { _xe<@s> = $bwe_max_x<@s>$; }
|
30
|
+
_zs<@s> = $bwe_min_z<@s>$ + 0;
|
31
|
+
while $_zs<@s>$ <= $bwe_max_z<@s>$ {
|
32
|
+
_ze<@s> = $_zs<@s>$ + $_tile_z<@s>$ - 1; if $_ze<@s>$ > $bwe_max_z<@s>$ { _ze<@s> = $bwe_max_z<@s>$; }
|
33
|
+
exec betterworldedit:_prepare_fill_ctx; exec betterworldedit:_fill_slice_macro;
|
34
|
+
_slices<@s> = $_slices<@s>$ + 1;
|
35
|
+
_zs<@s> = $_ze<@s>$ + 1;
|
36
|
+
}
|
37
|
+
_xs<@s> = $_xe<@s>$ + 1;
|
38
|
+
}
|
39
|
+
_y_start<@s> = $_y_end<@s>$ + 1;
|
40
|
+
}
|
41
|
+
}
|
42
|
+
}
|
43
|
+
''')
|
44
|
+
mdl_src.close()
|
45
|
+
|
46
|
+
p = MDLParser()
|
47
|
+
ast = p.parse(Path('.tmp_bwe.mdl').read_text(encoding='utf-8'))
|
48
|
+
|
49
|
+
td = tempfile.TemporaryDirectory()
|
50
|
+
out = Path(td.name)
|
51
|
+
MDLCompiler().compile(ast, str(out))
|
52
|
+
func_dir = out / 'data' / 'betterworldedit' / 'function'
|
53
|
+
|
54
|
+
print('\n== set_stone.mcfunction ==\n')
|
55
|
+
print((func_dir/'set_stone.mcfunction').read_text())
|
56
|
+
for name in sorted(glob.glob(str(func_dir/'set_stone__else_*.mcfunction'))):
|
57
|
+
print(f"\n== {Path(name).name} ==\n")
|
58
|
+
print(Path(name).read_text())
|
59
|
+
for name in sorted(glob.glob(str(func_dir/'set_stone__while_*.mcfunction'))):
|
60
|
+
print(f"\n== {Path(name).name} ==\n")
|
61
|
+
print(Path(name).read_text())
|