minecraft-datapack-language 15.4.34__tar.gz → 15.4.36__tar.gz

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