minecraft-datapack-language 16.0.7__tar.gz → 16.0.9__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.
Files changed (398) hide show
  1. minecraft_datapack_language-16.0.9/.tmp_compile_bwe.py +466 -0
  2. minecraft_datapack_language-16.0.9/.tmp_compile_bwe2.py +61 -0
  3. minecraft_datapack_language-16.0.9/.tmp_compile_bwe3.py +460 -0
  4. minecraft_datapack_language-16.0.9/.tmp_verify_loops.py +45 -0
  5. {minecraft_datapack_language-16.0.7/minecraft_datapack_language.egg-info → minecraft_datapack_language-16.0.9}/PKG-INFO +1 -1
  6. minecraft_datapack_language-16.0.9/docs/_data/version.yml +3 -0
  7. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/assets/css/style.css +1 -1
  8. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/index.md +0 -5
  9. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language/_version.py +3 -3
  10. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language/mdl_compiler.py +8 -2
  11. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9/minecraft_datapack_language.egg-info}/PKG-INFO +1 -1
  12. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language.egg-info/SOURCES.txt +4 -0
  13. minecraft_datapack_language-16.0.7/docs/_data/version.yml +0 -3
  14. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.cursor/rules/aispec.mdc +0 -0
  15. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.github/actions/mdl-compile/action.yml +0 -0
  16. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.github/workflows/ci.yml +0 -0
  17. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.github/workflows/docs.yml +0 -0
  18. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.github/workflows/pypi.yml +0 -0
  19. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.github/workflows/release.yml +0 -0
  20. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.github/workflows/update-website-version.yml +0 -0
  21. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.gitignore +0 -0
  22. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1/data/minecraft/tags/function/load.json +0 -0
  23. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1/data/test1/function/load.mcfunction +0 -0
  24. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1/data/test1/function/load1.mcfunction +0 -0
  25. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1/data/test1/function/main.mcfunction +0 -0
  26. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1/data/test1/function/main__else_1.mcfunction +0 -0
  27. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1/data/test1/function/main__if_1.mcfunction +0 -0
  28. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1/data/test1/function/testfunc.mcfunction +0 -0
  29. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1/data/test1/function/testfunc__while_1.mcfunction +0 -0
  30. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1/pack.mcmeta +0 -0
  31. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1-confirm/data/minecraft/tags/function/load.json +0 -0
  32. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1-confirm/data/test1/function/load.mcfunction +0 -0
  33. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1-confirm/data/test1/function/load1.mcfunction +0 -0
  34. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1-confirm/data/test1/function/main.mcfunction +0 -0
  35. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1-confirm/data/test1/function/main__else_1.mcfunction +0 -0
  36. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1-confirm/data/test1/function/main__if_1.mcfunction +0 -0
  37. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1-confirm/data/test1/function/testfunc.mcfunction +0 -0
  38. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1-confirm/data/test1/function/testfunc__while_1.mcfunction +0 -0
  39. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/.mdl-out-test1-confirm/pack.mcmeta +0 -0
  40. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/COMPILER_FIXES_SUMMARY.md +0 -0
  41. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/CONDITIONALS_IMPLEMENTATION.md +0 -0
  42. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/LICENSE +0 -0
  43. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/Makefile +0 -0
  44. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/README.md +0 -0
  45. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/advancements/diamond_sword.json +0 -0
  46. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/advancements/first_spell.json +0 -0
  47. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/advancements/other_advancement.json +0 -0
  48. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/advancements/test_advancement.json +0 -0
  49. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/comprehensive_error_test.mdl +0 -0
  50. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/complex_scopes/function/main_else_8.mcfunction +0 -0
  51. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/complex_scopes/function/main_if_8.mcfunction +0 -0
  52. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_basic_if_if_2.mcfunction +0 -0
  53. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_basic_if_if_3.mcfunction +0 -0
  54. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_basic_if_if_4.mcfunction +0 -0
  55. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_complex_if_if_2.mcfunction +0 -0
  56. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_complex_if_if_3.mcfunction +0 -0
  57. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_complex_if_if_4.mcfunction +0 -0
  58. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_complex_if_if_5.mcfunction +0 -0
  59. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_control_complex_expressions_if_2.mcfunction +0 -0
  60. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_control_complex_expressions_if_4.mcfunction +0 -0
  61. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_control_variable_substitution_if_2.mcfunction +0 -0
  62. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_control_with_raw_if_2.mcfunction +0 -0
  63. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_control_with_scopes_if_5.mcfunction +0 -0
  64. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_control_with_tellraw_else_2.mcfunction +0 -0
  65. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_control_with_tellraw_if_2.mcfunction +0 -0
  66. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_control_with_tellraw_if_4.mcfunction +0 -0
  67. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_if_else_else_2.mcfunction +0 -0
  68. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_if_else_else_3.mcfunction +0 -0
  69. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_if_else_else_4.mcfunction +0 -0
  70. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_if_else_if_2.mcfunction +0 -0
  71. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_if_else_if_3.mcfunction +0 -0
  72. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_if_else_if_4.mcfunction +0 -0
  73. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_nested_if_else_2.mcfunction +0 -0
  74. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_nested_if_else_3.mcfunction +0 -0
  75. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_nested_if_else_3_else_0.mcfunction +0 -0
  76. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_nested_if_else_3_if_0.mcfunction +0 -0
  77. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_nested_if_if_2.mcfunction +0 -0
  78. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_nested_if_if_2_else_0.mcfunction +0 -0
  79. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0.mcfunction +0 -0
  80. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0_else_0.mcfunction +0 -0
  81. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0_if_0.mcfunction +0 -0
  82. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_nested_if_if_3.mcfunction +0 -0
  83. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_nested_if_if_3_else_0.mcfunction +0 -0
  84. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/comprehensive_control_test/function/test_nested_if_if_3_if_0.mcfunction +0 -0
  85. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/control_test/function/main_if_0.mcfunction +0 -0
  86. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/control_test/function/main_while_1.mcfunction +0 -0
  87. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/control_test/function/main_while_body_1.mcfunction +0 -0
  88. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/if_test/function/main_else_1.mcfunction +0 -0
  89. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/if_test/function/main_if_1.mcfunction +0 -0
  90. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/conditional_demo_else_3.mcfunction +0 -0
  91. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/conditional_demo_if_3.mcfunction +0 -0
  92. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/conditional_demo_if_3_else_0.mcfunction +0 -0
  93. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/conditional_demo_if_3_if_0.mcfunction +0 -0
  94. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/conditional_demo_if_3_if_0_else_0.mcfunction +0 -0
  95. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/conditional_demo_if_3_if_0_if_0.mcfunction +0 -0
  96. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/countdown_while_1.mcfunction +0 -0
  97. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/countdown_while_body_1.mcfunction +0 -0
  98. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/increase_tick_per_player_if_1.mcfunction +0 -0
  99. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/increase_tick_per_player_if_1_if_0.mcfunction +0 -0
  100. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/loop_demo_while_2.mcfunction +0 -0
  101. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/loop_demo_while_body_2.mcfunction +0 -0
  102. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/loop_demo_while_body_2_else_0.mcfunction +0 -0
  103. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/loop_demo_while_body_2_if_0.mcfunction +0 -0
  104. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/loop_demo_while_body_2_if_2.mcfunction +0 -0
  105. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/main_else_0.mcfunction +0 -0
  106. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/main_else_1.mcfunction +0 -0
  107. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/main_else_5.mcfunction +0 -0
  108. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/main_if_0.mcfunction +0 -0
  109. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/main_if_1.mcfunction +0 -0
  110. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/main_if_5.mcfunction +0 -0
  111. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/main_while_0.mcfunction +0 -0
  112. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/main_while_1.mcfunction +0 -0
  113. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/main_while_2.mcfunction +0 -0
  114. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/main_while_6.mcfunction +0 -0
  115. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/main_while_7.mcfunction +0 -0
  116. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/main_while_body_0.mcfunction +0 -0
  117. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/main_while_body_1.mcfunction +0 -0
  118. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/main_while_body_2.mcfunction +0 -0
  119. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/main_while_body_6.mcfunction +0 -0
  120. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/main_while_body_7.mcfunction +0 -0
  121. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/scoreboard_demo_while_3.mcfunction +0 -0
  122. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/scoreboard_demo_while_body_3.mcfunction +0 -0
  123. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/scoreboard_demo_while_body_3_if_1.mcfunction +0 -0
  124. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/start_game_if_1.mcfunction +0 -0
  125. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/start_game_if_5.mcfunction +0 -0
  126. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/start_game_while_4.mcfunction +0 -0
  127. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/start_game_while_body_4.mcfunction +0 -0
  128. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_basic_if_if_1.mcfunction +0 -0
  129. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_basic_if_if_2.mcfunction +0 -0
  130. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_basic_if_if_3.mcfunction +0 -0
  131. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_basic_while_while_2.mcfunction +0 -0
  132. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_basic_while_while_4.mcfunction +0 -0
  133. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_basic_while_while_body_2.mcfunction +0 -0
  134. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_basic_while_while_body_4.mcfunction +0 -0
  135. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_if_if_1.mcfunction +0 -0
  136. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_if_if_2.mcfunction +0 -0
  137. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_if_if_3.mcfunction +0 -0
  138. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_if_if_4.mcfunction +0 -0
  139. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_nested_control_while_2.mcfunction +0 -0
  140. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_nested_control_while_body_2.mcfunction +0 -0
  141. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_nested_control_while_body_2_else_1.mcfunction +0 -0
  142. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_nested_control_while_body_2_else_1_if_1.mcfunction +0 -0
  143. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_nested_control_while_body_2_if_1.mcfunction +0 -0
  144. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_nested_control_while_body_2_if_1_if_1.mcfunction +0 -0
  145. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_nested_control_while_body_2_if_2.mcfunction +0 -0
  146. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_scope_scenarios_if_1.mcfunction +0 -0
  147. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_scope_scenarios_if_2.mcfunction +0 -0
  148. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_scope_scenarios_if_3.mcfunction +0 -0
  149. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_scope_scenarios_if_4.mcfunction +0 -0
  150. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_while_while_3.mcfunction +0 -0
  151. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_while_while_6.mcfunction +0 -0
  152. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_while_while_body_3.mcfunction +0 -0
  153. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_complex_while_while_body_6.mcfunction +0 -0
  154. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_complex_expressions_if_1.mcfunction +0 -0
  155. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_complex_expressions_if_3.mcfunction +0 -0
  156. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_complex_expressions_while_2.mcfunction +0 -0
  157. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_complex_expressions_while_body_2.mcfunction +0 -0
  158. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_error_handling_if_1.mcfunction +0 -0
  159. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_error_handling_if_2.mcfunction +0 -0
  160. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_error_handling_while_3.mcfunction +0 -0
  161. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_error_handling_while_body_3.mcfunction +0 -0
  162. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_performance_while_2.mcfunction +0 -0
  163. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_performance_while_4.mcfunction +0 -0
  164. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_performance_while_body_2.mcfunction +0 -0
  165. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_performance_while_body_2_if_1.mcfunction +0 -0
  166. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_performance_while_body_4.mcfunction +0 -0
  167. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_performance_while_body_4_while_2.mcfunction +0 -0
  168. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_performance_while_body_4_while_body_2.mcfunction +0 -0
  169. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_scoped_functions_if_1.mcfunction +0 -0
  170. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_scoped_functions_if_3.mcfunction +0 -0
  171. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_scoped_functions_while_2.mcfunction +0 -0
  172. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_scoped_functions_while_body_2.mcfunction +0 -0
  173. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_variable_substitution_if_1.mcfunction +0 -0
  174. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_variable_substitution_if_3.mcfunction +0 -0
  175. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_variable_substitution_while_2.mcfunction +0 -0
  176. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_variable_substitution_while_body_2.mcfunction +0 -0
  177. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_assignments_if_1.mcfunction +0 -0
  178. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_assignments_if_3.mcfunction +0 -0
  179. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_assignments_while_2.mcfunction +0 -0
  180. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_assignments_while_body_2.mcfunction +0 -0
  181. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_functions_if_1.mcfunction +0 -0
  182. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_functions_if_3.mcfunction +0 -0
  183. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_functions_while_2.mcfunction +0 -0
  184. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_functions_while_body_2.mcfunction +0 -0
  185. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_raw_if_1.mcfunction +0 -0
  186. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_raw_while_2.mcfunction +0 -0
  187. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_raw_while_body_2.mcfunction +0 -0
  188. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_scopes_if_1.mcfunction +0 -0
  189. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_scopes_if_2.mcfunction +0 -0
  190. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_scopes_if_3.mcfunction +0 -0
  191. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_scopes_if_4.mcfunction +0 -0
  192. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_tellraw_else_1.mcfunction +0 -0
  193. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_tellraw_if_1.mcfunction +0 -0
  194. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_tellraw_if_3.mcfunction +0 -0
  195. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_tellraw_while_2.mcfunction +0 -0
  196. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_control_with_tellraw_while_body_2.mcfunction +0 -0
  197. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_if_else_else_1.mcfunction +0 -0
  198. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_if_else_else_2.mcfunction +0 -0
  199. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_if_else_else_3.mcfunction +0 -0
  200. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_if_else_if_1.mcfunction +0 -0
  201. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_if_else_if_2.mcfunction +0 -0
  202. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_if_else_if_3.mcfunction +0 -0
  203. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_main_while_0.mcfunction +0 -0
  204. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_main_while_body_0.mcfunction +0 -0
  205. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_nested_if_else_1.mcfunction +0 -0
  206. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_nested_if_else_2.mcfunction +0 -0
  207. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_nested_if_else_2_else_0.mcfunction +0 -0
  208. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_nested_if_else_2_if_0.mcfunction +0 -0
  209. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_nested_if_if_1.mcfunction +0 -0
  210. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_nested_if_if_1_else_0.mcfunction +0 -0
  211. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_nested_if_if_1_if_0.mcfunction +0 -0
  212. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_nested_if_if_1_if_0_else_0.mcfunction +0 -0
  213. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_nested_if_if_1_if_0_if_0.mcfunction +0 -0
  214. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_nested_if_if_2.mcfunction +0 -0
  215. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_nested_if_if_2_else_0.mcfunction +0 -0
  216. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_nested_if_if_2_if_0.mcfunction +0 -0
  217. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_scope_conditionals_if_1.mcfunction +0 -0
  218. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_scope_conditionals_if_2.mcfunction +0 -0
  219. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_scope_conditionals_if_3.mcfunction +0 -0
  220. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_scope_conditionals_while_4.mcfunction +0 -0
  221. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_scope_conditionals_while_5.mcfunction +0 -0
  222. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_scope_conditionals_while_body_4.mcfunction +0 -0
  223. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_scope_conditionals_while_body_5.mcfunction +0 -0
  224. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_scope_interactions_if_1.mcfunction +0 -0
  225. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_scope_interactions_if_2.mcfunction +0 -0
  226. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_scope_interactions_if_3.mcfunction +0 -0
  227. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_while_break_while_2.mcfunction +0 -0
  228. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_while_break_while_body_2.mcfunction +0 -0
  229. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_while_break_while_body_2_if_1.mcfunction +0 -0
  230. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/test_while_break_while_body_2_if_2.mcfunction +0 -0
  231. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/tick_if_1.mcfunction +0 -0
  232. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/tick_if_2.mcfunction +0 -0
  233. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/tick_if_2_while_1.mcfunction +0 -0
  234. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/tick_if_2_while_body_1.mcfunction +0 -0
  235. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/weapon_effects_else_1.mcfunction +0 -0
  236. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test/function/weapon_effects_if_1.mcfunction +0 -0
  237. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test_final_template_fixed/function/main_else_8.mcfunction +0 -0
  238. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/test_final_template_fixed/function/main_if_8.mcfunction +0 -0
  239. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/while_test/function/main_while_0.mcfunction +0 -0
  240. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/data/while_test/function/main_while_body_0.mcfunction +0 -0
  241. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/dist.zip +0 -0
  242. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/.env +0 -0
  243. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/404.html +0 -0
  244. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/Gemfile +0 -0
  245. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/README.md +0 -0
  246. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_config.yml +0 -0
  247. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_docs/cli-reference.md +0 -0
  248. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_docs/contributing.md +0 -0
  249. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_docs/docs-hub.md +0 -0
  250. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_docs/documentation.md +0 -0
  251. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_docs/examples.md +0 -0
  252. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_docs/getting-started.md +0 -0
  253. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_docs/language-reference.md +0 -0
  254. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_docs/multi-file-projects.md +0 -0
  255. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_docs/python-bindings.md +0 -0
  256. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_docs/vscode-extension.md +0 -0
  257. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_includes/head-custom.html +0 -0
  258. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_includes/navigation.html +0 -0
  259. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_layouts/default.html +0 -0
  260. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_layouts/page.html +0 -0
  261. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_plugins/test_version.rb +0 -0
  262. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/_plugins/version_reader.rb +0 -0
  263. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/docs.md +0 -0
  264. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/downloads.md +0 -0
  265. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/icons/favicon-16.png +0 -0
  266. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/icons/favicon-32.png +0 -0
  267. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/icons/favicon-48.png +0 -0
  268. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/icons/favicon-64.png +0 -0
  269. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/icons/icon-1024.png +0 -0
  270. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/icons/icon-128.png +0 -0
  271. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/icons/icon-256.png +0 -0
  272. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/icons/icon-512.png +0 -0
  273. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/docs/icons/icon-64.png +0 -0
  274. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/examples/hello_world.mdl +0 -0
  275. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/examples/macros_example.mdl +0 -0
  276. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/examples/scope_examples.mdl +0 -0
  277. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/examples/simple_counter.mdl +0 -0
  278. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/icons/favicon-16.png +0 -0
  279. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/icons/favicon-32.png +0 -0
  280. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/icons/favicon-48.png +0 -0
  281. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/icons/favicon-64.png +0 -0
  282. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/icons/icon-1024.png +0 -0
  283. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/icons/icon-128.png +0 -0
  284. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/icons/icon-256.png +0 -0
  285. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/icons/icon-512.png +0 -0
  286. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/icons/icon-64.png +0 -0
  287. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/item_modifiers/diamond_sword.json +0 -0
  288. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/item_modifiers/enchant_tool.json +0 -0
  289. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/item_modifiers/test_item_modifier.json +0 -0
  290. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/loot_tables/diamond_sword.json +0 -0
  291. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/loot_tables/epic_loot.json +0 -0
  292. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/loot_tables/main_loot.json +0 -0
  293. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/loot_tables/test_loot.json +0 -0
  294. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/mdllocal.sh +0 -0
  295. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language/__init__.py +0 -0
  296. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language/ast_nodes.py +0 -0
  297. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language/cli.py +0 -0
  298. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language/dir_map.py +0 -0
  299. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language/mdl_errors.py +0 -0
  300. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language/mdl_lexer.py +0 -0
  301. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language/mdl_linter.py +0 -0
  302. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language/mdl_parser.py +0 -0
  303. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language/python_api.py +0 -0
  304. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language/utils.py +0 -0
  305. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language.egg-info/dependency_links.txt +0 -0
  306. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language.egg-info/entry_points.txt +0 -0
  307. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language.egg-info/requires.txt +0 -0
  308. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/minecraft_datapack_language.egg-info/top_level.txt +0 -0
  309. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/multi_scope_example.mdl +0 -0
  310. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/my_awesome_pack/README.md +0 -0
  311. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/my_awesome_pack/minecraft_datapack_language.mdl +0 -0
  312. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/predicates/diamond_sword.json +0 -0
  313. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/predicates/has_mana.json +0 -0
  314. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/predicates/other_predicate.json +0 -0
  315. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/predicates/test_predicate.json +0 -0
  316. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/pyproject.toml +0 -0
  317. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/pytest.ini +0 -0
  318. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/recipes/custom_pickaxe.json +0 -0
  319. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/recipes/diamond_sword.json +0 -0
  320. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/recipes/first.json +0 -0
  321. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/recipes/inlet.json +0 -0
  322. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/recipes/main_recipe.json +0 -0
  323. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/recipes/outlet.json +0 -0
  324. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/recipes/pipe.json +0 -0
  325. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/recipes/second.json +0 -0
  326. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/recipes/test_recipe.json +0 -0
  327. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/recipes/wrench.json +0 -0
  328. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scope_demo.mdl +0 -0
  329. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scoreboard_test.mdl +0 -0
  330. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/UpdateMDL.sh +0 -0
  331. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/bootstrap.ps1 +0 -0
  332. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/bootstrap.sh +0 -0
  333. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/build_pkg.ps1 +0 -0
  334. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/build_pkg.sh +0 -0
  335. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/dev_build.ps1 +0 -0
  336. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/dev_build.sh +0 -0
  337. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/dev_setup.ps1 +0 -0
  338. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/dev_setup.sh +0 -0
  339. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/git-bash/bootstrap-gitbash.sh +0 -0
  340. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/git-bash/build_pkg-gitbash.sh +0 -0
  341. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/git-bash/test_cli-gitbash.sh +0 -0
  342. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/release.sh +0 -0
  343. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/test_cli.ps1 +0 -0
  344. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/test_cli.sh +0 -0
  345. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/test_dev.ps1 +0 -0
  346. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/test_dev.sh +0 -0
  347. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/update_docs.sh +0 -0
  348. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/scripts/update_version_info.sh +0 -0
  349. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/setup.cfg +0 -0
  350. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/structures/diamond_sword.json +0 -0
  351. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/structures/test_structure.json +0 -0
  352. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/structures/workshop.json +0 -0
  353. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tellraw_variables_test.mdl +0 -0
  354. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/temp_output/data/minecraft/tags/function/load.json +0 -0
  355. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/temp_output/data/test/function/helper.mcfunction +0 -0
  356. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/temp_output/data/test/function/load.mcfunction +0 -0
  357. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/temp_output/data/test/function/main.mcfunction +0 -0
  358. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/temp_output/pack.mcmeta +0 -0
  359. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/test_all_registry.mdl +0 -0
  360. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/test_complex_scenarios.mdl +0 -0
  361. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/test_comprehensive_fixes.mdl +0 -0
  362. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/test_if_else_while.mdl +0 -0
  363. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/test_project/complex_test.mdl +0 -0
  364. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/test_simple.mdl +0 -0
  365. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tests/__init__.py +0 -0
  366. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tests/run_all_tests.py +0 -0
  367. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tests/test_cli.py +0 -0
  368. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tests/test_codegen_naming_and_logic.py +0 -0
  369. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tests/test_compiler_fixes.py +0 -0
  370. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tests/test_complex_scenarios.py +0 -0
  371. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tests/test_comprehensive_end_to_end.py +0 -0
  372. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tests/test_examples.py +0 -0
  373. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tests/test_macros.py +0 -0
  374. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tests/test_python_api.py +0 -0
  375. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tests/test_python_bindings.py +0 -0
  376. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tests/test_scheduledwhile.py +0 -0
  377. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tests/test_user_regression_test1.py +0 -0
  378. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tmp_local_cli_out.zip +0 -0
  379. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tmp_test1.mdl +0 -0
  380. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tmp_test1.mdl~ +0 -0
  381. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/tmp_test1_confirm.mdl +0 -0
  382. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/vscode-extension/README.md +0 -0
  383. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/vscode-extension/icons/favicon-16.png +0 -0
  384. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/vscode-extension/icons/favicon-32.png +0 -0
  385. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/vscode-extension/icons/favicon-48.png +0 -0
  386. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/vscode-extension/icons/favicon-64.png +0 -0
  387. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/vscode-extension/icons/icon-1024.png +0 -0
  388. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/vscode-extension/icons/icon-128.png +0 -0
  389. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/vscode-extension/icons/icon-256.png +0 -0
  390. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/vscode-extension/icons/icon-512.png +0 -0
  391. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/vscode-extension/language-configuration.json +0 -0
  392. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/vscode-extension/package-lock.json +0 -0
  393. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/vscode-extension/package.json +0 -0
  394. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/vscode-extension/snippets/mdl.json +0 -0
  395. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/vscode-extension/src/extension.ts +0 -0
  396. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/vscode-extension/syntaxes/mdl.tmLanguage.json +0 -0
  397. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/vscode-extension/themes/mdl-color-theme.json +0 -0
  398. {minecraft_datapack_language-16.0.7 → minecraft_datapack_language-16.0.9}/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())