minecraft-datapack-language 16.0.3__tar.gz → 16.0.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. {minecraft_datapack_language-16.0.3/minecraft_datapack_language.egg-info → minecraft_datapack_language-16.0.5}/PKG-INFO +1 -1
  2. minecraft_datapack_language-16.0.5/docs/_data/version.yml +3 -0
  3. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/language-reference.md +23 -2
  4. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/_version.py +3 -3
  5. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/ast_nodes.py +7 -0
  6. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/mdl_compiler.py +59 -1
  7. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/mdl_lexer.py +2 -0
  8. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/mdl_parser.py +17 -1
  9. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5/minecraft_datapack_language.egg-info}/PKG-INFO +1 -1
  10. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language.egg-info/SOURCES.txt +1 -0
  11. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_python_api.py +2 -1
  12. minecraft_datapack_language-16.0.5/tests/test_scheduledwhile.py +54 -0
  13. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/syntaxes/mdl.tmLanguage.json +1 -1
  14. minecraft_datapack_language-16.0.3/docs/_data/version.yml +0 -3
  15. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.cursor/rules/aispec.mdc +0 -0
  16. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.github/actions/mdl-compile/action.yml +0 -0
  17. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.github/workflows/ci.yml +0 -0
  18. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.github/workflows/docs.yml +0 -0
  19. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.github/workflows/pypi.yml +0 -0
  20. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.github/workflows/release.yml +0 -0
  21. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.github/workflows/update-website-version.yml +0 -0
  22. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.gitignore +0 -0
  23. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/data/minecraft/tags/function/load.json +0 -0
  24. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/data/test1/function/load.mcfunction +0 -0
  25. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/data/test1/function/load1.mcfunction +0 -0
  26. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/data/test1/function/main.mcfunction +0 -0
  27. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/data/test1/function/main__else_1.mcfunction +0 -0
  28. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/data/test1/function/main__if_1.mcfunction +0 -0
  29. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/data/test1/function/testfunc.mcfunction +0 -0
  30. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/data/test1/function/testfunc__while_1.mcfunction +0 -0
  31. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1/pack.mcmeta +0 -0
  32. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/data/minecraft/tags/function/load.json +0 -0
  33. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/data/test1/function/load.mcfunction +0 -0
  34. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/data/test1/function/load1.mcfunction +0 -0
  35. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/data/test1/function/main.mcfunction +0 -0
  36. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/data/test1/function/main__else_1.mcfunction +0 -0
  37. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/data/test1/function/main__if_1.mcfunction +0 -0
  38. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/data/test1/function/testfunc.mcfunction +0 -0
  39. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/data/test1/function/testfunc__while_1.mcfunction +0 -0
  40. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/.mdl-out-test1-confirm/pack.mcmeta +0 -0
  41. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/COMPILER_FIXES_SUMMARY.md +0 -0
  42. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/CONDITIONALS_IMPLEMENTATION.md +0 -0
  43. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/LICENSE +0 -0
  44. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/Makefile +0 -0
  45. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/README.md +0 -0
  46. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/advancements/diamond_sword.json +0 -0
  47. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/advancements/first_spell.json +0 -0
  48. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/advancements/other_advancement.json +0 -0
  49. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/advancements/test_advancement.json +0 -0
  50. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/comprehensive_error_test.mdl +0 -0
  51. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/complex_scopes/function/main_else_8.mcfunction +0 -0
  52. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/complex_scopes/function/main_if_8.mcfunction +0 -0
  53. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_basic_if_if_2.mcfunction +0 -0
  54. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_basic_if_if_3.mcfunction +0 -0
  55. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_basic_if_if_4.mcfunction +0 -0
  56. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_complex_if_if_2.mcfunction +0 -0
  57. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_complex_if_if_3.mcfunction +0 -0
  58. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_complex_if_if_4.mcfunction +0 -0
  59. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_complex_if_if_5.mcfunction +0 -0
  60. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_control_complex_expressions_if_2.mcfunction +0 -0
  61. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_control_complex_expressions_if_4.mcfunction +0 -0
  62. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_control_variable_substitution_if_2.mcfunction +0 -0
  63. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_control_with_raw_if_2.mcfunction +0 -0
  64. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_control_with_scopes_if_5.mcfunction +0 -0
  65. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_control_with_tellraw_else_2.mcfunction +0 -0
  66. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_control_with_tellraw_if_2.mcfunction +0 -0
  67. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_control_with_tellraw_if_4.mcfunction +0 -0
  68. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_if_else_else_2.mcfunction +0 -0
  69. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_if_else_else_3.mcfunction +0 -0
  70. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_if_else_else_4.mcfunction +0 -0
  71. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_if_else_if_2.mcfunction +0 -0
  72. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_if_else_if_3.mcfunction +0 -0
  73. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_if_else_if_4.mcfunction +0 -0
  74. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_else_2.mcfunction +0 -0
  75. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_else_3.mcfunction +0 -0
  76. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_else_3_else_0.mcfunction +0 -0
  77. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_else_3_if_0.mcfunction +0 -0
  78. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_if_2.mcfunction +0 -0
  79. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_if_2_else_0.mcfunction +0 -0
  80. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0.mcfunction +0 -0
  81. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0_else_0.mcfunction +0 -0
  82. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0_if_0.mcfunction +0 -0
  83. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_if_3.mcfunction +0 -0
  84. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_if_3_else_0.mcfunction +0 -0
  85. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/comprehensive_control_test/function/test_nested_if_if_3_if_0.mcfunction +0 -0
  86. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/control_test/function/main_if_0.mcfunction +0 -0
  87. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/control_test/function/main_while_1.mcfunction +0 -0
  88. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/control_test/function/main_while_body_1.mcfunction +0 -0
  89. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/if_test/function/main_else_1.mcfunction +0 -0
  90. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/if_test/function/main_if_1.mcfunction +0 -0
  91. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/conditional_demo_else_3.mcfunction +0 -0
  92. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/conditional_demo_if_3.mcfunction +0 -0
  93. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/conditional_demo_if_3_else_0.mcfunction +0 -0
  94. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/conditional_demo_if_3_if_0.mcfunction +0 -0
  95. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/conditional_demo_if_3_if_0_else_0.mcfunction +0 -0
  96. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/conditional_demo_if_3_if_0_if_0.mcfunction +0 -0
  97. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/countdown_while_1.mcfunction +0 -0
  98. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/countdown_while_body_1.mcfunction +0 -0
  99. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/increase_tick_per_player_if_1.mcfunction +0 -0
  100. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/increase_tick_per_player_if_1_if_0.mcfunction +0 -0
  101. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/loop_demo_while_2.mcfunction +0 -0
  102. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/loop_demo_while_body_2.mcfunction +0 -0
  103. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/loop_demo_while_body_2_else_0.mcfunction +0 -0
  104. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/loop_demo_while_body_2_if_0.mcfunction +0 -0
  105. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/loop_demo_while_body_2_if_2.mcfunction +0 -0
  106. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_else_0.mcfunction +0 -0
  107. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_else_1.mcfunction +0 -0
  108. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_else_5.mcfunction +0 -0
  109. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_if_0.mcfunction +0 -0
  110. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_if_1.mcfunction +0 -0
  111. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_if_5.mcfunction +0 -0
  112. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_0.mcfunction +0 -0
  113. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_1.mcfunction +0 -0
  114. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_2.mcfunction +0 -0
  115. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_6.mcfunction +0 -0
  116. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_7.mcfunction +0 -0
  117. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_body_0.mcfunction +0 -0
  118. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_body_1.mcfunction +0 -0
  119. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_body_2.mcfunction +0 -0
  120. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_body_6.mcfunction +0 -0
  121. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/main_while_body_7.mcfunction +0 -0
  122. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/scoreboard_demo_while_3.mcfunction +0 -0
  123. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/scoreboard_demo_while_body_3.mcfunction +0 -0
  124. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/scoreboard_demo_while_body_3_if_1.mcfunction +0 -0
  125. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/start_game_if_1.mcfunction +0 -0
  126. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/start_game_if_5.mcfunction +0 -0
  127. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/start_game_while_4.mcfunction +0 -0
  128. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/start_game_while_body_4.mcfunction +0 -0
  129. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_basic_if_if_1.mcfunction +0 -0
  130. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_basic_if_if_2.mcfunction +0 -0
  131. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_basic_if_if_3.mcfunction +0 -0
  132. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_basic_while_while_2.mcfunction +0 -0
  133. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_basic_while_while_4.mcfunction +0 -0
  134. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_basic_while_while_body_2.mcfunction +0 -0
  135. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_basic_while_while_body_4.mcfunction +0 -0
  136. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_if_if_1.mcfunction +0 -0
  137. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_if_if_2.mcfunction +0 -0
  138. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_if_if_3.mcfunction +0 -0
  139. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_if_if_4.mcfunction +0 -0
  140. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_nested_control_while_2.mcfunction +0 -0
  141. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_nested_control_while_body_2.mcfunction +0 -0
  142. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_nested_control_while_body_2_else_1.mcfunction +0 -0
  143. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_nested_control_while_body_2_else_1_if_1.mcfunction +0 -0
  144. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_nested_control_while_body_2_if_1.mcfunction +0 -0
  145. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_nested_control_while_body_2_if_1_if_1.mcfunction +0 -0
  146. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_nested_control_while_body_2_if_2.mcfunction +0 -0
  147. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_scope_scenarios_if_1.mcfunction +0 -0
  148. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_scope_scenarios_if_2.mcfunction +0 -0
  149. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_scope_scenarios_if_3.mcfunction +0 -0
  150. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_scope_scenarios_if_4.mcfunction +0 -0
  151. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_while_while_3.mcfunction +0 -0
  152. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_while_while_6.mcfunction +0 -0
  153. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_while_while_body_3.mcfunction +0 -0
  154. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_complex_while_while_body_6.mcfunction +0 -0
  155. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_complex_expressions_if_1.mcfunction +0 -0
  156. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_complex_expressions_if_3.mcfunction +0 -0
  157. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_complex_expressions_while_2.mcfunction +0 -0
  158. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_complex_expressions_while_body_2.mcfunction +0 -0
  159. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_error_handling_if_1.mcfunction +0 -0
  160. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_error_handling_if_2.mcfunction +0 -0
  161. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_error_handling_while_3.mcfunction +0 -0
  162. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_error_handling_while_body_3.mcfunction +0 -0
  163. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_performance_while_2.mcfunction +0 -0
  164. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_performance_while_4.mcfunction +0 -0
  165. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_performance_while_body_2.mcfunction +0 -0
  166. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_performance_while_body_2_if_1.mcfunction +0 -0
  167. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_performance_while_body_4.mcfunction +0 -0
  168. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_performance_while_body_4_while_2.mcfunction +0 -0
  169. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_performance_while_body_4_while_body_2.mcfunction +0 -0
  170. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_scoped_functions_if_1.mcfunction +0 -0
  171. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_scoped_functions_if_3.mcfunction +0 -0
  172. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_scoped_functions_while_2.mcfunction +0 -0
  173. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_scoped_functions_while_body_2.mcfunction +0 -0
  174. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_variable_substitution_if_1.mcfunction +0 -0
  175. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_variable_substitution_if_3.mcfunction +0 -0
  176. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_variable_substitution_while_2.mcfunction +0 -0
  177. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_variable_substitution_while_body_2.mcfunction +0 -0
  178. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_assignments_if_1.mcfunction +0 -0
  179. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_assignments_if_3.mcfunction +0 -0
  180. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_assignments_while_2.mcfunction +0 -0
  181. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_assignments_while_body_2.mcfunction +0 -0
  182. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_functions_if_1.mcfunction +0 -0
  183. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_functions_if_3.mcfunction +0 -0
  184. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_functions_while_2.mcfunction +0 -0
  185. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_functions_while_body_2.mcfunction +0 -0
  186. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_raw_if_1.mcfunction +0 -0
  187. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_raw_while_2.mcfunction +0 -0
  188. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_raw_while_body_2.mcfunction +0 -0
  189. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_scopes_if_1.mcfunction +0 -0
  190. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_scopes_if_2.mcfunction +0 -0
  191. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_scopes_if_3.mcfunction +0 -0
  192. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_scopes_if_4.mcfunction +0 -0
  193. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_tellraw_else_1.mcfunction +0 -0
  194. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_tellraw_if_1.mcfunction +0 -0
  195. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_tellraw_if_3.mcfunction +0 -0
  196. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_tellraw_while_2.mcfunction +0 -0
  197. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_control_with_tellraw_while_body_2.mcfunction +0 -0
  198. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_if_else_else_1.mcfunction +0 -0
  199. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_if_else_else_2.mcfunction +0 -0
  200. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_if_else_else_3.mcfunction +0 -0
  201. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_if_else_if_1.mcfunction +0 -0
  202. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_if_else_if_2.mcfunction +0 -0
  203. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_if_else_if_3.mcfunction +0 -0
  204. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_main_while_0.mcfunction +0 -0
  205. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_main_while_body_0.mcfunction +0 -0
  206. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_else_1.mcfunction +0 -0
  207. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_else_2.mcfunction +0 -0
  208. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_else_2_else_0.mcfunction +0 -0
  209. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_else_2_if_0.mcfunction +0 -0
  210. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_if_1.mcfunction +0 -0
  211. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_if_1_else_0.mcfunction +0 -0
  212. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_if_1_if_0.mcfunction +0 -0
  213. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_if_1_if_0_else_0.mcfunction +0 -0
  214. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_if_1_if_0_if_0.mcfunction +0 -0
  215. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_if_2.mcfunction +0 -0
  216. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_if_2_else_0.mcfunction +0 -0
  217. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_nested_if_if_2_if_0.mcfunction +0 -0
  218. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_conditionals_if_1.mcfunction +0 -0
  219. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_conditionals_if_2.mcfunction +0 -0
  220. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_conditionals_if_3.mcfunction +0 -0
  221. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_conditionals_while_4.mcfunction +0 -0
  222. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_conditionals_while_5.mcfunction +0 -0
  223. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_conditionals_while_body_4.mcfunction +0 -0
  224. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_conditionals_while_body_5.mcfunction +0 -0
  225. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_interactions_if_1.mcfunction +0 -0
  226. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_interactions_if_2.mcfunction +0 -0
  227. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_scope_interactions_if_3.mcfunction +0 -0
  228. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_while_break_while_2.mcfunction +0 -0
  229. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_while_break_while_body_2.mcfunction +0 -0
  230. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_while_break_while_body_2_if_1.mcfunction +0 -0
  231. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/test_while_break_while_body_2_if_2.mcfunction +0 -0
  232. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/tick_if_1.mcfunction +0 -0
  233. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/tick_if_2.mcfunction +0 -0
  234. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/tick_if_2_while_1.mcfunction +0 -0
  235. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/tick_if_2_while_body_1.mcfunction +0 -0
  236. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/weapon_effects_else_1.mcfunction +0 -0
  237. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test/function/weapon_effects_if_1.mcfunction +0 -0
  238. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test_final_template_fixed/function/main_else_8.mcfunction +0 -0
  239. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/test_final_template_fixed/function/main_if_8.mcfunction +0 -0
  240. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/while_test/function/main_while_0.mcfunction +0 -0
  241. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/data/while_test/function/main_while_body_0.mcfunction +0 -0
  242. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/dist.zip +0 -0
  243. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/.env +0 -0
  244. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/404.html +0 -0
  245. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/Gemfile +0 -0
  246. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/README.md +0 -0
  247. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_config.yml +0 -0
  248. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/cli-reference.md +0 -0
  249. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/contributing.md +0 -0
  250. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/docs-hub.md +0 -0
  251. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/documentation.md +0 -0
  252. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/examples.md +0 -0
  253. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/getting-started.md +0 -0
  254. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/multi-file-projects.md +0 -0
  255. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/python-bindings.md +0 -0
  256. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_docs/vscode-extension.md +0 -0
  257. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_includes/head-custom.html +0 -0
  258. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_includes/navigation.html +0 -0
  259. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_layouts/default.html +0 -0
  260. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_layouts/page.html +0 -0
  261. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_plugins/test_version.rb +0 -0
  262. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/_plugins/version_reader.rb +0 -0
  263. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/assets/css/style.css +0 -0
  264. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/docs.md +0 -0
  265. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/downloads.md +0 -0
  266. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/favicon-16.png +0 -0
  267. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/favicon-32.png +0 -0
  268. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/favicon-48.png +0 -0
  269. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/favicon-64.png +0 -0
  270. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/icon-1024.png +0 -0
  271. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/icon-128.png +0 -0
  272. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/icon-256.png +0 -0
  273. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/icon-512.png +0 -0
  274. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/icons/icon-64.png +0 -0
  275. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/docs/index.md +0 -0
  276. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/examples/hello_world.mdl +0 -0
  277. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/examples/macros_example.mdl +0 -0
  278. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/examples/scope_examples.mdl +0 -0
  279. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/examples/simple_counter.mdl +0 -0
  280. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/favicon-16.png +0 -0
  281. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/favicon-32.png +0 -0
  282. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/favicon-48.png +0 -0
  283. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/favicon-64.png +0 -0
  284. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/icon-1024.png +0 -0
  285. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/icon-128.png +0 -0
  286. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/icon-256.png +0 -0
  287. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/icon-512.png +0 -0
  288. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/icons/icon-64.png +0 -0
  289. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/item_modifiers/diamond_sword.json +0 -0
  290. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/item_modifiers/enchant_tool.json +0 -0
  291. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/item_modifiers/test_item_modifier.json +0 -0
  292. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/loot_tables/diamond_sword.json +0 -0
  293. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/loot_tables/epic_loot.json +0 -0
  294. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/loot_tables/main_loot.json +0 -0
  295. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/loot_tables/test_loot.json +0 -0
  296. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/mdllocal.sh +0 -0
  297. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/__init__.py +0 -0
  298. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/cli.py +0 -0
  299. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/dir_map.py +0 -0
  300. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/mdl_errors.py +0 -0
  301. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/mdl_linter.py +0 -0
  302. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/python_api.py +0 -0
  303. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language/utils.py +0 -0
  304. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language.egg-info/dependency_links.txt +0 -0
  305. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language.egg-info/entry_points.txt +0 -0
  306. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language.egg-info/requires.txt +0 -0
  307. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/minecraft_datapack_language.egg-info/top_level.txt +0 -0
  308. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/multi_scope_example.mdl +0 -0
  309. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/my_awesome_pack/README.md +0 -0
  310. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/my_awesome_pack/minecraft_datapack_language.mdl +0 -0
  311. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/predicates/diamond_sword.json +0 -0
  312. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/predicates/has_mana.json +0 -0
  313. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/predicates/other_predicate.json +0 -0
  314. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/predicates/test_predicate.json +0 -0
  315. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/pyproject.toml +0 -0
  316. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/pytest.ini +0 -0
  317. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/custom_pickaxe.json +0 -0
  318. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/diamond_sword.json +0 -0
  319. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/first.json +0 -0
  320. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/inlet.json +0 -0
  321. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/main_recipe.json +0 -0
  322. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/outlet.json +0 -0
  323. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/pipe.json +0 -0
  324. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/second.json +0 -0
  325. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/test_recipe.json +0 -0
  326. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/recipes/wrench.json +0 -0
  327. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scope_demo.mdl +0 -0
  328. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scoreboard_test.mdl +0 -0
  329. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/UpdateMDL.sh +0 -0
  330. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/bootstrap.ps1 +0 -0
  331. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/bootstrap.sh +0 -0
  332. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/build_pkg.ps1 +0 -0
  333. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/build_pkg.sh +0 -0
  334. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/dev_build.ps1 +0 -0
  335. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/dev_build.sh +0 -0
  336. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/dev_setup.ps1 +0 -0
  337. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/dev_setup.sh +0 -0
  338. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/git-bash/bootstrap-gitbash.sh +0 -0
  339. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/git-bash/build_pkg-gitbash.sh +0 -0
  340. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/git-bash/test_cli-gitbash.sh +0 -0
  341. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/release.sh +0 -0
  342. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/test_cli.ps1 +0 -0
  343. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/test_cli.sh +0 -0
  344. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/test_dev.ps1 +0 -0
  345. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/test_dev.sh +0 -0
  346. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/update_docs.sh +0 -0
  347. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/scripts/update_version_info.sh +0 -0
  348. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/setup.cfg +0 -0
  349. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/structures/diamond_sword.json +0 -0
  350. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/structures/test_structure.json +0 -0
  351. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/structures/workshop.json +0 -0
  352. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tellraw_variables_test.mdl +0 -0
  353. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/temp_output/data/minecraft/tags/function/load.json +0 -0
  354. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/temp_output/data/test/function/helper.mcfunction +0 -0
  355. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/temp_output/data/test/function/load.mcfunction +0 -0
  356. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/temp_output/data/test/function/main.mcfunction +0 -0
  357. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/temp_output/pack.mcmeta +0 -0
  358. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/test_all_registry.mdl +0 -0
  359. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/test_complex_scenarios.mdl +0 -0
  360. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/test_comprehensive_fixes.mdl +0 -0
  361. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/test_if_else_while.mdl +0 -0
  362. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/test_project/complex_test.mdl +0 -0
  363. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/test_simple.mdl +0 -0
  364. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/__init__.py +0 -0
  365. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/run_all_tests.py +0 -0
  366. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_cli.py +0 -0
  367. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_codegen_naming_and_logic.py +0 -0
  368. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_compiler_fixes.py +0 -0
  369. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_complex_scenarios.py +0 -0
  370. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_comprehensive_end_to_end.py +0 -0
  371. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_examples.py +0 -0
  372. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_macros.py +0 -0
  373. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_python_bindings.py +0 -0
  374. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tests/test_user_regression_test1.py +0 -0
  375. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tmp_local_cli_out.zip +0 -0
  376. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tmp_test1.mdl +0 -0
  377. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tmp_test1.mdl~ +0 -0
  378. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/tmp_test1_confirm.mdl +0 -0
  379. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/README.md +0 -0
  380. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/icons/favicon-16.png +0 -0
  381. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/icons/favicon-32.png +0 -0
  382. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/icons/favicon-48.png +0 -0
  383. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/icons/favicon-64.png +0 -0
  384. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/icons/icon-1024.png +0 -0
  385. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/icons/icon-128.png +0 -0
  386. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/icons/icon-256.png +0 -0
  387. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/icons/icon-512.png +0 -0
  388. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/language-configuration.json +0 -0
  389. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/package-lock.json +0 -0
  390. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/package.json +0 -0
  391. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/snippets/mdl.json +0 -0
  392. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/src/extension.ts +0 -0
  393. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/themes/mdl-color-theme.json +0 -0
  394. {minecraft_datapack_language-16.0.3 → minecraft_datapack_language-16.0.5}/vscode-extension/tsconfig.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: minecraft-datapack-language
3
- Version: 16.0.3
3
+ Version: 16.0.5
4
4
  Summary: Compile MDL language with explicit scoping into a Minecraft datapack (1.21+ ready). Features variables, control flow, error handling, and VS Code extension.
5
5
  Project-URL: Homepage, https://www.mcmdl.com
6
6
  Project-URL: Documentation, https://www.mcmdl.com/docs
@@ -0,0 +1,3 @@
1
+ current: "16.0.4"
2
+ tag: "v16.0.4"
3
+ updated_at: "2025-09-08T06:20:41Z"
@@ -177,7 +177,28 @@ while $counter<@s>$ > 0 {
177
177
  }
178
178
  ```
179
179
 
180
- **Note:** All control structures generate proper Minecraft conditional logic using `execute if` commands and recursive function calls for loops. The compiler automatically handles nested structures and generates the appropriate Minecraft datapack commands.
180
+ **Note:** The standard `while` loop uses recursive function calls internally. This is simple and fast but can hit Minecraft's function call depth limit for very long-running loops.
181
+
182
+ #### Scheduled While Loops
183
+
184
+ Use `scheduledwhile` to iterate via the scheduler instead of recursion. This avoids recursion limits by running one iteration per game tick and scheduling the next iteration only if the condition remains true.
185
+
186
+ ```mdl
187
+ scheduledwhile $counter<@s>$ > 0 {
188
+ counter<@s> = $counter<@s>$ - 1;
189
+ exec game:countdown;
190
+ }
191
+ ```
192
+
193
+ Compilation strategy:
194
+ - Generates a helper function containing the loop body
195
+ - At the end of the helper, emits `execute if <condition> run schedule function <helper> 1t`
196
+ - Entry point schedules the first iteration with `schedule function <helper> 1t`
197
+ - Breakout occurs naturally when the condition becomes false (no re-schedule)
198
+
199
+ When to use:
200
+ - Prefer `while` for short/medium loops
201
+ - Prefer `scheduledwhile` for long-running loops, per-tick processes, or when avoiding recursion depth limits
181
202
 
182
203
  ### Hooks
183
204
  ```mdl
@@ -521,7 +542,7 @@ This section defines exactly how MDL source code is broken down into tokens. Thi
521
542
 
522
543
  #### **Keywords** (Reserved Words)
523
544
  ```
524
- pack, namespace, function, var, num, if, else, while, on_load, on_tick, exec, tag
545
+ pack, namespace, function, var, num, if, else, while, scheduledwhile, on_load, on_tick, exec, tag
525
546
  ```
526
547
 
527
548
  #### **Tag Types** (Resource Categories)
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '16.0.3'
32
- __version_tuple__ = version_tuple = (16, 0, 3)
31
+ __version__ = version = '16.0.5'
32
+ __version_tuple__ = version_tuple = (16, 0, 5)
33
33
 
34
- __commit_id__ = commit_id = 'g161af1a0f'
34
+ __commit_id__ = commit_id = 'g02613ab38'
@@ -94,6 +94,13 @@ class WhileLoop(ASTNode):
94
94
  body: List[ASTNode]
95
95
 
96
96
 
97
+ @dataclass
98
+ class ScheduledWhileLoop(ASTNode):
99
+ """Scheduled-while loop that iterates via Minecraft's schedule command each tick."""
100
+ condition: Any # Expression
101
+ body: List[ASTNode]
102
+
103
+
97
104
  @dataclass
98
105
  class HookDeclaration(ASTNode):
99
106
  """Hook declaration (on_load, on_tick)."""
@@ -11,7 +11,7 @@ from typing import Dict, List, Any, Optional
11
11
  from .ast_nodes import (
12
12
  Program, PackDeclaration, NamespaceDeclaration, TagDeclaration,
13
13
  VariableDeclaration, VariableAssignment, VariableSubstitution, FunctionDeclaration,
14
- FunctionCall, IfStatement, WhileLoop, HookDeclaration, RawBlock, MacroLine,
14
+ FunctionCall, IfStatement, WhileLoop, ScheduledWhileLoop, HookDeclaration, RawBlock, MacroLine,
15
15
  SayCommand, BinaryExpression, LiteralExpression, ParenthesizedExpression
16
16
  )
17
17
  from .dir_map import get_dir_map, DirMap
@@ -345,6 +345,8 @@ class MDLCompiler:
345
345
  return self._if_statement_to_command(statement)
346
346
  elif isinstance(statement, WhileLoop):
347
347
  return self._while_loop_to_command(statement)
348
+ elif isinstance(statement, ScheduledWhileLoop):
349
+ return self._scheduled_while_to_command(statement)
348
350
  elif isinstance(statement, FunctionCall):
349
351
  return self._function_call_to_command(statement)
350
352
  else:
@@ -607,6 +609,62 @@ class MDLCompiler:
607
609
  self._store_generated_function(loop_function_name, loop_body_lines)
608
610
 
609
611
  return "\n".join(lines)
612
+
613
+ def _scheduled_while_to_command(self, while_loop: ScheduledWhileLoop) -> str:
614
+ """Convert scheduledwhile to tick-scheduled loop to avoid recursion limits.
615
+ Strategy:
616
+ - Generate a unique loop function that contains the body, then conditionally schedules itself 1t later.
617
+ - Entry statement schedules the first tick run.
618
+ - Breakout occurs naturally by not scheduling when condition is false.
619
+ """
620
+ loop_function_name = self._generate_while_function_name()
621
+
622
+ # Schedule first iteration for next tick
623
+ lines: List[str] = []
624
+ lines.append(f"schedule function {self.current_namespace}:{loop_function_name} 1t")
625
+
626
+ # Build the loop function body
627
+ loop_body_lines: List[str] = [f"# Function: {self.current_namespace}:{loop_function_name}"]
628
+
629
+ if not hasattr(self, '_temp_sink_stack'):
630
+ self._temp_sink_stack = []
631
+ self._temp_sink_stack.append(loop_body_lines)
632
+ for stmt in while_loop.body:
633
+ if isinstance(stmt, VariableAssignment):
634
+ cmd = self._variable_assignment_to_command(stmt)
635
+ loop_body_lines.append(cmd)
636
+ elif isinstance(stmt, VariableDeclaration):
637
+ cmd = self._variable_declaration_to_command(stmt)
638
+ loop_body_lines.append(cmd)
639
+ elif isinstance(stmt, SayCommand):
640
+ cmd = self._say_command_to_command(stmt)
641
+ loop_body_lines.append(cmd)
642
+ elif isinstance(stmt, RawBlock):
643
+ loop_body_lines.append(stmt.content)
644
+ elif isinstance(stmt, IfStatement):
645
+ cmd = self._if_statement_to_command(stmt)
646
+ loop_body_lines.append(cmd)
647
+ elif isinstance(stmt, WhileLoop):
648
+ cmd = self._while_loop_to_command(stmt)
649
+ loop_body_lines.append(cmd)
650
+ elif isinstance(stmt, ScheduledWhileLoop):
651
+ cmd = self._scheduled_while_to_command(stmt)
652
+ loop_body_lines.append(cmd)
653
+ elif isinstance(stmt, FunctionCall):
654
+ cmd = self._function_call_to_command(stmt)
655
+ loop_body_lines.append(cmd)
656
+ self._temp_sink_stack.pop()
657
+
658
+ cond_str, invert_then = self._build_condition(while_loop.condition)
659
+ if invert_then:
660
+ # Inverted means schedule unless condition (NOT desired). We want continue-when-true.
661
+ # cond_str represents equality in inverted case; continue when not(cond) → use unless.
662
+ loop_body_lines.append(f"execute unless {cond_str} run schedule function {self.current_namespace}:{loop_function_name} 1t")
663
+ else:
664
+ loop_body_lines.append(f"execute if {cond_str} run schedule function {self.current_namespace}:{loop_function_name} 1t")
665
+
666
+ self._store_generated_function(loop_function_name, loop_body_lines)
667
+ return "\n".join(lines)
610
668
 
611
669
  def _is_scoreboard_condition(self, expression: Any) -> bool:
612
670
  """Check if an expression is a scoreboard comparison."""
@@ -33,6 +33,7 @@ class TokenType:
33
33
  IF = "IF"
34
34
  ELSE = "ELSE"
35
35
  WHILE = "WHILE"
36
+ SCHEDULED_WHILE = "SCHEDULED_WHILE"
36
37
  ON_LOAD = "ON_LOAD"
37
38
  ON_TICK = "ON_TICK"
38
39
  EXEC = "EXEC"
@@ -599,6 +600,7 @@ class MDLLexer:
599
600
  'if': TokenType.IF,
600
601
  'else': TokenType.ELSE,
601
602
  'while': TokenType.WHILE,
603
+ 'scheduledwhile': TokenType.SCHEDULED_WHILE,
602
604
  'on_load': TokenType.ON_LOAD,
603
605
  'on_tick': TokenType.ON_TICK,
604
606
  'exec': TokenType.EXEC,
@@ -9,7 +9,7 @@ from .mdl_errors import MDLParserError
9
9
  from .ast_nodes import (
10
10
  ASTNode, Program, PackDeclaration, NamespaceDeclaration, TagDeclaration,
11
11
  VariableDeclaration, VariableAssignment, VariableSubstitution, FunctionDeclaration,
12
- FunctionCall, IfStatement, WhileLoop, HookDeclaration, RawBlock, MacroLine,
12
+ FunctionCall, IfStatement, WhileLoop, ScheduledWhileLoop, HookDeclaration, RawBlock, MacroLine,
13
13
  SayCommand, TellrawCommand, ExecuteCommand, ScoreboardCommand,
14
14
  BinaryExpression, UnaryExpression, ParenthesizedExpression, LiteralExpression,
15
15
  ScopeSelector
@@ -87,6 +87,8 @@ class MDLParser:
87
87
  statements.append(self._parse_if_statement())
88
88
  elif self._peek().type == TokenType.WHILE:
89
89
  statements.append(self._parse_while_loop())
90
+ elif self._peek().type == TokenType.SCHEDULED_WHILE:
91
+ statements.append(self._parse_scheduled_while_loop())
90
92
  elif self._peek().type == TokenType.DOLLAR and self._peek(1).type == TokenType.EXCLAMATION:
91
93
  statements.append(self._parse_raw_block())
92
94
  elif self._peek().type == TokenType.IDENTIFIER:
@@ -348,6 +350,18 @@ class MDLParser:
348
350
  self._expect(TokenType.RBRACE, "Expected '}' to end while body")
349
351
 
350
352
  return WhileLoop(condition=condition, body=body)
353
+
354
+ def _parse_scheduled_while_loop(self) -> ScheduledWhileLoop:
355
+ """Parse scheduledwhile loop: scheduledwhile condition { body }"""
356
+ self._expect(TokenType.SCHEDULED_WHILE, "Expected 'scheduledwhile' keyword")
357
+
358
+ condition = self._parse_expression()
359
+
360
+ self._expect(TokenType.LBRACE, "Expected '{' to start while body")
361
+ body = self._parse_block()
362
+ self._expect(TokenType.RBRACE, "Expected '}' to end while body")
363
+
364
+ return ScheduledWhileLoop(condition=condition, body=body)
351
365
 
352
366
  def _parse_hook_declaration(self) -> HookDeclaration:
353
367
  """Parse hook declaration: on_load/on_tick namespace:name<scope>;"""
@@ -524,6 +538,8 @@ class MDLParser:
524
538
  statements.append(self._parse_if_statement())
525
539
  elif self._peek().type == TokenType.WHILE:
526
540
  statements.append(self._parse_while_loop())
541
+ elif self._peek().type == TokenType.SCHEDULED_WHILE:
542
+ statements.append(self._parse_scheduled_while_loop())
527
543
  elif self._peek().type == TokenType.EXEC:
528
544
  statements.append(self._parse_function_call())
529
545
  elif self._peek().type == TokenType.MACRO_LINE:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: minecraft-datapack-language
3
- Version: 16.0.3
3
+ Version: 16.0.5
4
4
  Summary: Compile MDL language with explicit scoping into a Minecraft datapack (1.21+ ready). Features variables, control flow, error handling, and VS Code extension.
5
5
  Project-URL: Homepage, https://www.mcmdl.com
6
6
  Project-URL: Documentation, https://www.mcmdl.com/docs
@@ -381,6 +381,7 @@ tests/test_examples.py
381
381
  tests/test_macros.py
382
382
  tests/test_python_api.py
383
383
  tests/test_python_bindings.py
384
+ tests/test_scheduledwhile.py
384
385
  tests/test_user_regression_test1.py
385
386
  vscode-extension/README.md
386
387
  vscode-extension/language-configuration.json
@@ -249,7 +249,8 @@ class TestPythonAPITags:
249
249
  else:
250
250
  tick_content = {"values": []}
251
251
 
252
- assert "test:init" in load_content["values"]
252
+ # load.json always references namespace:load; hooks are invoked from load.mcfunction
253
+ assert "test:load" in load_content["values"]
253
254
  # Only assert tick if present
254
255
  if tick_content["values"]:
255
256
  assert "test:tick" in tick_content["values"]
@@ -0,0 +1,54 @@
1
+ import tempfile
2
+ from pathlib import Path
3
+
4
+ from minecraft_datapack_language.mdl_parser import MDLParser
5
+ from minecraft_datapack_language.mdl_compiler import MDLCompiler
6
+
7
+
8
+ def compile_source(source: str):
9
+ parser = MDLParser()
10
+ ast = parser.parse(source)
11
+ tmpdir = tempfile.TemporaryDirectory()
12
+ out = Path(tmpdir.name)
13
+ MDLCompiler().compile(ast, str(out))
14
+ return out, tmpdir
15
+
16
+
17
+ def test_scheduledwhile_generates_schedule_and_helper():
18
+ src = (
19
+ 'pack "ns" "desc" 82;\n'
20
+ 'namespace "ns";\n'
21
+ 'var num c<@s> = 0;\n'
22
+ 'function ns:loop { scheduledwhile $c<@s>$ < 3 { c<@s> = $c<@s>$ + 1; } }\n'
23
+ )
24
+ out, tmp = compile_source(src)
25
+ func_dir = out / 'data' / 'ns' / 'function'
26
+
27
+ # Main function schedules the helper for next tick
28
+ loop_main = (func_dir / 'loop.mcfunction').read_text()
29
+ assert 'schedule function ns:loop__while_' in loop_main
30
+
31
+ # Helper exists and conditionally reschedules itself
32
+ helper_files = sorted(p for p in func_dir.glob('loop__while_*.mcfunction'))
33
+ assert helper_files, 'Expected generated scheduled helper function file'
34
+ helper = helper_files[0].read_text()
35
+ assert 'execute if score @s c <' in helper or 'execute if score @s c matches ..2' in helper
36
+ assert 'schedule function ns:loop__while_' in helper
37
+
38
+
39
+ def test_scheduledwhile_breaks_out_without_reschedule_when_false():
40
+ src = (
41
+ 'pack "ns" "desc" 82;\n'
42
+ 'namespace "ns";\n'
43
+ 'var num c<@s> = 5;\n'
44
+ 'function ns:loop { scheduledwhile $c<@s>$ > 10 { c<@s> = $c<@s>$ + 1; } }\n'
45
+ )
46
+ out, tmp = compile_source(src)
47
+ func_dir = out / 'data' / 'ns' / 'function'
48
+ helper_files = sorted(p for p in func_dir.glob('loop__while_*.mcfunction'))
49
+ assert helper_files, 'Expected generated scheduled helper function file'
50
+ helper = helper_files[0].read_text()
51
+ # For > 10, continue condition is false initially; helper should still only schedule if condition true
52
+ # Verify presence of conditional schedule, not unconditional schedule
53
+ assert 'execute if ' in helper and 'schedule function ns:loop__while_' in helper
54
+
@@ -4,7 +4,7 @@
4
4
  "patterns": [
5
5
  {
6
6
  "name": "keyword.control.mdl",
7
- "match": "\\b(pack|namespace|function|on_tick|on_load|tag|if|else|while|var|num|exec|recipe|loot_table|advancement|predicate|item_modifier|structure)\\b"
7
+ "match": "\\b(pack|namespace|function|on_tick|on_load|tag|if|else|while|scheduledwhile|var|num|exec|recipe|loot_table|advancement|predicate|item_modifier|structure)\\b"
8
8
  },
9
9
  {
10
10
  "name": "entity.name.section.mdl",
@@ -1,3 +0,0 @@
1
- current: "16.0.2"
2
- tag: "v16.0.2"
3
- updated_at: "2025-09-08T01:15:12Z"