minecraft-datapack-language 16.0.16__tar.gz → 16.0.17__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. {minecraft_datapack_language-16.0.16/minecraft_datapack_language.egg-info → minecraft_datapack_language-16.0.17}/PKG-INFO +1 -1
  2. minecraft_datapack_language-16.0.17/docs/_data/version.yml +3 -0
  3. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language/_version.py +3 -3
  4. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language/mdl_compiler.py +72 -1
  5. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language/mdl_lexer.py +8 -2
  6. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language/mdl_parser.py +32 -3
  7. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17/minecraft_datapack_language.egg-info}/PKG-INFO +1 -1
  8. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language.egg-info/SOURCES.txt +0 -2
  9. minecraft_datapack_language-16.0.16/COMPILER_FIXES_SUMMARY.md +0 -216
  10. minecraft_datapack_language-16.0.16/CONDITIONALS_IMPLEMENTATION.md +0 -164
  11. minecraft_datapack_language-16.0.16/docs/_data/version.yml +0 -3
  12. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.cursor/rules/aispec.mdc +0 -0
  13. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.github/actions/mdl-compile/action.yml +0 -0
  14. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.github/workflows/ci.yml +0 -0
  15. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.github/workflows/docs.yml +0 -0
  16. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.github/workflows/pypi.yml +0 -0
  17. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.github/workflows/release.yml +0 -0
  18. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.github/workflows/update-website-version.yml +0 -0
  19. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.gitignore +0 -0
  20. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1/data/minecraft/tags/function/load.json +0 -0
  21. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1/data/test1/function/load.mcfunction +0 -0
  22. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1/data/test1/function/load1.mcfunction +0 -0
  23. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1/data/test1/function/main.mcfunction +0 -0
  24. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1/data/test1/function/main__else_1.mcfunction +0 -0
  25. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1/data/test1/function/main__if_1.mcfunction +0 -0
  26. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1/data/test1/function/testfunc.mcfunction +0 -0
  27. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1/data/test1/function/testfunc__while_1.mcfunction +0 -0
  28. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1/pack.mcmeta +0 -0
  29. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1-confirm/data/minecraft/tags/function/load.json +0 -0
  30. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1-confirm/data/test1/function/load.mcfunction +0 -0
  31. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1-confirm/data/test1/function/load1.mcfunction +0 -0
  32. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1-confirm/data/test1/function/main.mcfunction +0 -0
  33. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1-confirm/data/test1/function/main__else_1.mcfunction +0 -0
  34. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1-confirm/data/test1/function/main__if_1.mcfunction +0 -0
  35. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1-confirm/data/test1/function/testfunc.mcfunction +0 -0
  36. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1-confirm/data/test1/function/testfunc__while_1.mcfunction +0 -0
  37. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.mdl-out-test1-confirm/pack.mcmeta +0 -0
  38. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.tmp_compile_bwe.py +0 -0
  39. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.tmp_compile_bwe2.py +0 -0
  40. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.tmp_compile_bwe3.py +0 -0
  41. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/.tmp_verify_loops.py +0 -0
  42. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/LICENSE +0 -0
  43. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/Makefile +0 -0
  44. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/README.md +0 -0
  45. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/advancements/diamond_sword.json +0 -0
  46. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/advancements/first_spell.json +0 -0
  47. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/advancements/other_advancement.json +0 -0
  48. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/advancements/test_advancement.json +0 -0
  49. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/comprehensive_error_test.mdl +0 -0
  50. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/complex_scopes/function/main_else_8.mcfunction +0 -0
  51. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/complex_scopes/function/main_if_8.mcfunction +0 -0
  52. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_basic_if_if_2.mcfunction +0 -0
  53. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_basic_if_if_3.mcfunction +0 -0
  54. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_basic_if_if_4.mcfunction +0 -0
  55. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_complex_if_if_2.mcfunction +0 -0
  56. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_complex_if_if_3.mcfunction +0 -0
  57. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_complex_if_if_4.mcfunction +0 -0
  58. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_complex_if_if_5.mcfunction +0 -0
  59. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_control_complex_expressions_if_2.mcfunction +0 -0
  60. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_control_complex_expressions_if_4.mcfunction +0 -0
  61. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_control_variable_substitution_if_2.mcfunction +0 -0
  62. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_control_with_raw_if_2.mcfunction +0 -0
  63. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_control_with_scopes_if_5.mcfunction +0 -0
  64. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_control_with_tellraw_else_2.mcfunction +0 -0
  65. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_control_with_tellraw_if_2.mcfunction +0 -0
  66. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_control_with_tellraw_if_4.mcfunction +0 -0
  67. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_if_else_else_2.mcfunction +0 -0
  68. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_if_else_else_3.mcfunction +0 -0
  69. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_if_else_else_4.mcfunction +0 -0
  70. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_if_else_if_2.mcfunction +0 -0
  71. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_if_else_if_3.mcfunction +0 -0
  72. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_if_else_if_4.mcfunction +0 -0
  73. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_nested_if_else_2.mcfunction +0 -0
  74. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_nested_if_else_3.mcfunction +0 -0
  75. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_nested_if_else_3_else_0.mcfunction +0 -0
  76. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_nested_if_else_3_if_0.mcfunction +0 -0
  77. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_nested_if_if_2.mcfunction +0 -0
  78. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_nested_if_if_2_else_0.mcfunction +0 -0
  79. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0.mcfunction +0 -0
  80. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0_else_0.mcfunction +0 -0
  81. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_nested_if_if_2_if_0_if_0.mcfunction +0 -0
  82. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_nested_if_if_3.mcfunction +0 -0
  83. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_nested_if_if_3_else_0.mcfunction +0 -0
  84. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/comprehensive_control_test/function/test_nested_if_if_3_if_0.mcfunction +0 -0
  85. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/control_test/function/main_if_0.mcfunction +0 -0
  86. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/control_test/function/main_while_1.mcfunction +0 -0
  87. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/control_test/function/main_while_body_1.mcfunction +0 -0
  88. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/if_test/function/main_else_1.mcfunction +0 -0
  89. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/if_test/function/main_if_1.mcfunction +0 -0
  90. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/conditional_demo_else_3.mcfunction +0 -0
  91. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/conditional_demo_if_3.mcfunction +0 -0
  92. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/conditional_demo_if_3_else_0.mcfunction +0 -0
  93. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/conditional_demo_if_3_if_0.mcfunction +0 -0
  94. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/conditional_demo_if_3_if_0_else_0.mcfunction +0 -0
  95. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/conditional_demo_if_3_if_0_if_0.mcfunction +0 -0
  96. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/countdown_while_1.mcfunction +0 -0
  97. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/countdown_while_body_1.mcfunction +0 -0
  98. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/increase_tick_per_player_if_1.mcfunction +0 -0
  99. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/increase_tick_per_player_if_1_if_0.mcfunction +0 -0
  100. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/loop_demo_while_2.mcfunction +0 -0
  101. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/loop_demo_while_body_2.mcfunction +0 -0
  102. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/loop_demo_while_body_2_else_0.mcfunction +0 -0
  103. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/loop_demo_while_body_2_if_0.mcfunction +0 -0
  104. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/loop_demo_while_body_2_if_2.mcfunction +0 -0
  105. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/main_else_0.mcfunction +0 -0
  106. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/main_else_1.mcfunction +0 -0
  107. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/main_else_5.mcfunction +0 -0
  108. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/main_if_0.mcfunction +0 -0
  109. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/main_if_1.mcfunction +0 -0
  110. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/main_if_5.mcfunction +0 -0
  111. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/main_while_0.mcfunction +0 -0
  112. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/main_while_1.mcfunction +0 -0
  113. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/main_while_2.mcfunction +0 -0
  114. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/main_while_6.mcfunction +0 -0
  115. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/main_while_7.mcfunction +0 -0
  116. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/main_while_body_0.mcfunction +0 -0
  117. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/main_while_body_1.mcfunction +0 -0
  118. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/main_while_body_2.mcfunction +0 -0
  119. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/main_while_body_6.mcfunction +0 -0
  120. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/main_while_body_7.mcfunction +0 -0
  121. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/scoreboard_demo_while_3.mcfunction +0 -0
  122. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/scoreboard_demo_while_body_3.mcfunction +0 -0
  123. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/scoreboard_demo_while_body_3_if_1.mcfunction +0 -0
  124. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/start_game_if_1.mcfunction +0 -0
  125. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/start_game_if_5.mcfunction +0 -0
  126. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/start_game_while_4.mcfunction +0 -0
  127. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/start_game_while_body_4.mcfunction +0 -0
  128. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_basic_if_if_1.mcfunction +0 -0
  129. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_basic_if_if_2.mcfunction +0 -0
  130. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_basic_if_if_3.mcfunction +0 -0
  131. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_basic_while_while_2.mcfunction +0 -0
  132. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_basic_while_while_4.mcfunction +0 -0
  133. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_basic_while_while_body_2.mcfunction +0 -0
  134. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_basic_while_while_body_4.mcfunction +0 -0
  135. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_if_if_1.mcfunction +0 -0
  136. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_if_if_2.mcfunction +0 -0
  137. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_if_if_3.mcfunction +0 -0
  138. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_if_if_4.mcfunction +0 -0
  139. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_nested_control_while_2.mcfunction +0 -0
  140. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_nested_control_while_body_2.mcfunction +0 -0
  141. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_nested_control_while_body_2_else_1.mcfunction +0 -0
  142. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_nested_control_while_body_2_else_1_if_1.mcfunction +0 -0
  143. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_nested_control_while_body_2_if_1.mcfunction +0 -0
  144. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_nested_control_while_body_2_if_1_if_1.mcfunction +0 -0
  145. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_nested_control_while_body_2_if_2.mcfunction +0 -0
  146. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_scope_scenarios_if_1.mcfunction +0 -0
  147. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_scope_scenarios_if_2.mcfunction +0 -0
  148. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_scope_scenarios_if_3.mcfunction +0 -0
  149. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_scope_scenarios_if_4.mcfunction +0 -0
  150. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_while_while_3.mcfunction +0 -0
  151. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_while_while_6.mcfunction +0 -0
  152. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_while_while_body_3.mcfunction +0 -0
  153. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_complex_while_while_body_6.mcfunction +0 -0
  154. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_complex_expressions_if_1.mcfunction +0 -0
  155. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_complex_expressions_if_3.mcfunction +0 -0
  156. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_complex_expressions_while_2.mcfunction +0 -0
  157. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_complex_expressions_while_body_2.mcfunction +0 -0
  158. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_error_handling_if_1.mcfunction +0 -0
  159. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_error_handling_if_2.mcfunction +0 -0
  160. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_error_handling_while_3.mcfunction +0 -0
  161. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_error_handling_while_body_3.mcfunction +0 -0
  162. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_performance_while_2.mcfunction +0 -0
  163. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_performance_while_4.mcfunction +0 -0
  164. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_performance_while_body_2.mcfunction +0 -0
  165. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_performance_while_body_2_if_1.mcfunction +0 -0
  166. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_performance_while_body_4.mcfunction +0 -0
  167. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_performance_while_body_4_while_2.mcfunction +0 -0
  168. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_performance_while_body_4_while_body_2.mcfunction +0 -0
  169. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_scoped_functions_if_1.mcfunction +0 -0
  170. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_scoped_functions_if_3.mcfunction +0 -0
  171. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_scoped_functions_while_2.mcfunction +0 -0
  172. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_scoped_functions_while_body_2.mcfunction +0 -0
  173. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_variable_substitution_if_1.mcfunction +0 -0
  174. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_variable_substitution_if_3.mcfunction +0 -0
  175. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_variable_substitution_while_2.mcfunction +0 -0
  176. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_variable_substitution_while_body_2.mcfunction +0 -0
  177. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_assignments_if_1.mcfunction +0 -0
  178. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_assignments_if_3.mcfunction +0 -0
  179. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_assignments_while_2.mcfunction +0 -0
  180. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_assignments_while_body_2.mcfunction +0 -0
  181. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_functions_if_1.mcfunction +0 -0
  182. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_functions_if_3.mcfunction +0 -0
  183. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_functions_while_2.mcfunction +0 -0
  184. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_functions_while_body_2.mcfunction +0 -0
  185. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_raw_if_1.mcfunction +0 -0
  186. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_raw_while_2.mcfunction +0 -0
  187. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_raw_while_body_2.mcfunction +0 -0
  188. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_scopes_if_1.mcfunction +0 -0
  189. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_scopes_if_2.mcfunction +0 -0
  190. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_scopes_if_3.mcfunction +0 -0
  191. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_scopes_if_4.mcfunction +0 -0
  192. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_tellraw_else_1.mcfunction +0 -0
  193. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_tellraw_if_1.mcfunction +0 -0
  194. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_tellraw_if_3.mcfunction +0 -0
  195. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_tellraw_while_2.mcfunction +0 -0
  196. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_control_with_tellraw_while_body_2.mcfunction +0 -0
  197. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_if_else_else_1.mcfunction +0 -0
  198. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_if_else_else_2.mcfunction +0 -0
  199. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_if_else_else_3.mcfunction +0 -0
  200. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_if_else_if_1.mcfunction +0 -0
  201. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_if_else_if_2.mcfunction +0 -0
  202. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_if_else_if_3.mcfunction +0 -0
  203. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_main_while_0.mcfunction +0 -0
  204. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_main_while_body_0.mcfunction +0 -0
  205. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_nested_if_else_1.mcfunction +0 -0
  206. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_nested_if_else_2.mcfunction +0 -0
  207. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_nested_if_else_2_else_0.mcfunction +0 -0
  208. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_nested_if_else_2_if_0.mcfunction +0 -0
  209. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_nested_if_if_1.mcfunction +0 -0
  210. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_nested_if_if_1_else_0.mcfunction +0 -0
  211. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_nested_if_if_1_if_0.mcfunction +0 -0
  212. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_nested_if_if_1_if_0_else_0.mcfunction +0 -0
  213. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_nested_if_if_1_if_0_if_0.mcfunction +0 -0
  214. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_nested_if_if_2.mcfunction +0 -0
  215. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_nested_if_if_2_else_0.mcfunction +0 -0
  216. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_nested_if_if_2_if_0.mcfunction +0 -0
  217. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_scope_conditionals_if_1.mcfunction +0 -0
  218. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_scope_conditionals_if_2.mcfunction +0 -0
  219. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_scope_conditionals_if_3.mcfunction +0 -0
  220. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_scope_conditionals_while_4.mcfunction +0 -0
  221. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_scope_conditionals_while_5.mcfunction +0 -0
  222. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_scope_conditionals_while_body_4.mcfunction +0 -0
  223. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_scope_conditionals_while_body_5.mcfunction +0 -0
  224. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_scope_interactions_if_1.mcfunction +0 -0
  225. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_scope_interactions_if_2.mcfunction +0 -0
  226. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_scope_interactions_if_3.mcfunction +0 -0
  227. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_while_break_while_2.mcfunction +0 -0
  228. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_while_break_while_body_2.mcfunction +0 -0
  229. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_while_break_while_body_2_if_1.mcfunction +0 -0
  230. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/test_while_break_while_body_2_if_2.mcfunction +0 -0
  231. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/tick_if_1.mcfunction +0 -0
  232. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/tick_if_2.mcfunction +0 -0
  233. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/tick_if_2_while_1.mcfunction +0 -0
  234. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/tick_if_2_while_body_1.mcfunction +0 -0
  235. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/weapon_effects_else_1.mcfunction +0 -0
  236. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test/function/weapon_effects_if_1.mcfunction +0 -0
  237. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test_final_template_fixed/function/main_else_8.mcfunction +0 -0
  238. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/test_final_template_fixed/function/main_if_8.mcfunction +0 -0
  239. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/while_test/function/main_while_0.mcfunction +0 -0
  240. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/data/while_test/function/main_while_body_0.mcfunction +0 -0
  241. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/dist.zip +0 -0
  242. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/.env +0 -0
  243. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/404.html +0 -0
  244. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/Gemfile +0 -0
  245. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/README.md +0 -0
  246. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_config.yml +0 -0
  247. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_docs/cli-reference.md +0 -0
  248. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_docs/contributing.md +0 -0
  249. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_docs/docs-hub.md +0 -0
  250. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_docs/documentation.md +0 -0
  251. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_docs/examples.md +0 -0
  252. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_docs/getting-started.md +0 -0
  253. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_docs/language-reference.md +0 -0
  254. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_docs/multi-file-projects.md +0 -0
  255. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_docs/python-bindings.md +0 -0
  256. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_docs/vscode-extension.md +0 -0
  257. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_includes/head-custom.html +0 -0
  258. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_includes/navigation.html +0 -0
  259. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_layouts/default.html +0 -0
  260. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_layouts/page.html +0 -0
  261. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_plugins/test_version.rb +0 -0
  262. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/_plugins/version_reader.rb +0 -0
  263. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/assets/css/style.css +0 -0
  264. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/docs.md +0 -0
  265. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/downloads.md +0 -0
  266. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/icons/favicon-16.png +0 -0
  267. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/icons/favicon-32.png +0 -0
  268. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/icons/favicon-48.png +0 -0
  269. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/icons/favicon-64.png +0 -0
  270. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/icons/icon-1024.png +0 -0
  271. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/icons/icon-128.png +0 -0
  272. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/icons/icon-256.png +0 -0
  273. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/icons/icon-512.png +0 -0
  274. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/icons/icon-64.png +0 -0
  275. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/docs/index.md +0 -0
  276. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/examples/hello_world.mdl +0 -0
  277. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/examples/macros_example.mdl +0 -0
  278. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/examples/scope_examples.mdl +0 -0
  279. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/examples/simple_counter.mdl +0 -0
  280. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/icons/favicon-16.png +0 -0
  281. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/icons/favicon-32.png +0 -0
  282. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/icons/favicon-48.png +0 -0
  283. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/icons/favicon-64.png +0 -0
  284. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/icons/icon-1024.png +0 -0
  285. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/icons/icon-128.png +0 -0
  286. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/icons/icon-256.png +0 -0
  287. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/icons/icon-512.png +0 -0
  288. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/icons/icon-64.png +0 -0
  289. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/item_modifiers/diamond_sword.json +0 -0
  290. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/item_modifiers/enchant_tool.json +0 -0
  291. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/item_modifiers/test_item_modifier.json +0 -0
  292. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/loot_tables/diamond_sword.json +0 -0
  293. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/loot_tables/epic_loot.json +0 -0
  294. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/loot_tables/main_loot.json +0 -0
  295. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/loot_tables/test_loot.json +0 -0
  296. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/mdllocal.sh +0 -0
  297. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language/__init__.py +0 -0
  298. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language/ast_nodes.py +0 -0
  299. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language/cli.py +0 -0
  300. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language/dir_map.py +0 -0
  301. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language/mdl_errors.py +0 -0
  302. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language/mdl_linter.py +0 -0
  303. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language/python_api.py +0 -0
  304. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language/utils.py +0 -0
  305. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language.egg-info/dependency_links.txt +0 -0
  306. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language.egg-info/entry_points.txt +0 -0
  307. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language.egg-info/requires.txt +0 -0
  308. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/minecraft_datapack_language.egg-info/top_level.txt +0 -0
  309. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/multi_scope_example.mdl +0 -0
  310. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/my_awesome_pack/README.md +0 -0
  311. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/my_awesome_pack/minecraft_datapack_language.mdl +0 -0
  312. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/predicates/diamond_sword.json +0 -0
  313. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/predicates/has_mana.json +0 -0
  314. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/predicates/other_predicate.json +0 -0
  315. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/predicates/test_predicate.json +0 -0
  316. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/pyproject.toml +0 -0
  317. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/pytest.ini +0 -0
  318. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/recipes/custom_pickaxe.json +0 -0
  319. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/recipes/diamond_sword.json +0 -0
  320. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/recipes/first.json +0 -0
  321. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/recipes/inlet.json +0 -0
  322. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/recipes/main_recipe.json +0 -0
  323. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/recipes/outlet.json +0 -0
  324. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/recipes/pipe.json +0 -0
  325. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/recipes/second.json +0 -0
  326. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/recipes/test_recipe.json +0 -0
  327. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/recipes/wrench.json +0 -0
  328. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scope_demo.mdl +0 -0
  329. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scoreboard_test.mdl +0 -0
  330. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/UpdateMDL.sh +0 -0
  331. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/bootstrap.ps1 +0 -0
  332. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/bootstrap.sh +0 -0
  333. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/build_pkg.ps1 +0 -0
  334. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/build_pkg.sh +0 -0
  335. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/dev_build.ps1 +0 -0
  336. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/dev_build.sh +0 -0
  337. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/dev_setup.ps1 +0 -0
  338. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/dev_setup.sh +0 -0
  339. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/git-bash/bootstrap-gitbash.sh +0 -0
  340. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/git-bash/build_pkg-gitbash.sh +0 -0
  341. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/git-bash/test_cli-gitbash.sh +0 -0
  342. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/release.sh +0 -0
  343. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/test_cli.ps1 +0 -0
  344. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/test_cli.sh +0 -0
  345. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/test_dev.ps1 +0 -0
  346. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/test_dev.sh +0 -0
  347. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/update_docs.sh +0 -0
  348. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/scripts/update_version_info.sh +0 -0
  349. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/setup.cfg +0 -0
  350. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/structures/diamond_sword.json +0 -0
  351. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/structures/test_structure.json +0 -0
  352. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/structures/workshop.json +0 -0
  353. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tellraw_variables_test.mdl +0 -0
  354. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/temp_output/data/minecraft/tags/function/load.json +0 -0
  355. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/temp_output/data/test/function/helper.mcfunction +0 -0
  356. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/temp_output/data/test/function/load.mcfunction +0 -0
  357. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/temp_output/data/test/function/main.mcfunction +0 -0
  358. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/temp_output/pack.mcmeta +0 -0
  359. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/test_all_registry.mdl +0 -0
  360. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/test_complex_scenarios.mdl +0 -0
  361. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/test_comprehensive_fixes.mdl +0 -0
  362. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/test_if_else_while.mdl +0 -0
  363. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/test_project/complex_test.mdl +0 -0
  364. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/test_simple.mdl +0 -0
  365. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tests/__init__.py +0 -0
  366. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tests/run_all_tests.py +0 -0
  367. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tests/test_cli.py +0 -0
  368. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tests/test_codegen_naming_and_logic.py +0 -0
  369. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tests/test_compiler_fixes.py +0 -0
  370. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tests/test_complex_scenarios.py +0 -0
  371. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tests/test_comprehensive_end_to_end.py +0 -0
  372. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tests/test_examples.py +0 -0
  373. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tests/test_macros.py +0 -0
  374. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tests/test_python_api.py +0 -0
  375. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tests/test_python_bindings.py +0 -0
  376. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tests/test_scheduledwhile.py +0 -0
  377. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tests/test_user_regression_test1.py +0 -0
  378. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tmp_local_cli_out.zip +0 -0
  379. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tmp_test1.mdl +0 -0
  380. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tmp_test1.mdl~ +0 -0
  381. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/tmp_test1_confirm.mdl +0 -0
  382. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/vscode-extension/README.md +0 -0
  383. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/vscode-extension/icons/favicon-16.png +0 -0
  384. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/vscode-extension/icons/favicon-32.png +0 -0
  385. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/vscode-extension/icons/favicon-48.png +0 -0
  386. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/vscode-extension/icons/favicon-64.png +0 -0
  387. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/vscode-extension/icons/icon-1024.png +0 -0
  388. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/vscode-extension/icons/icon-128.png +0 -0
  389. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/vscode-extension/icons/icon-256.png +0 -0
  390. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/vscode-extension/icons/icon-512.png +0 -0
  391. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/vscode-extension/language-configuration.json +0 -0
  392. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/vscode-extension/package-lock.json +0 -0
  393. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/vscode-extension/package.json +0 -0
  394. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/vscode-extension/snippets/mdl.json +0 -0
  395. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/vscode-extension/src/extension.ts +0 -0
  396. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/vscode-extension/syntaxes/mdl.tmLanguage.json +0 -0
  397. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/vscode-extension/themes/mdl-color-theme.json +0 -0
  398. {minecraft_datapack_language-16.0.16 → minecraft_datapack_language-16.0.17}/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.16
3
+ Version: 16.0.17
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.16"
2
+ tag: "v16.0.16"
3
+ updated_at: "2025-09-10T04:33:38Z"
@@ -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.16'
32
- __version_tuple__ = version_tuple = (16, 0, 16)
31
+ __version__ = version = '16.0.17'
32
+ __version_tuple__ = version_tuple = (16, 0, 17)
33
33
 
34
- __commit_id__ = commit_id = 'g0215f8c88'
34
+ __commit_id__ = commit_id = 'g9a7ffe5b3'
@@ -824,7 +824,7 @@ class MDLCompiler:
824
824
  Returns one of: '>', '>=', '<', '<=', '==', '!=' or None if unknown.
825
825
  """
826
826
  # Direct symbol passthrough
827
- if op_in in ('>', '>=', '<', '<=', '==', '!='):
827
+ if op_in in ('>', '>=', '<', '<=', '==', '!=', '&&', '||', '!'):
828
828
  return op_in
829
829
  # TokenType instances
830
830
  try:
@@ -840,6 +840,13 @@ class MDLCompiler:
840
840
  return '=='
841
841
  if op_in == TokenType.NOT_EQUAL:
842
842
  return '!='
843
+ # Logical
844
+ if getattr(TokenType, 'AND', None) and op_in == TokenType.AND:
845
+ return '&&'
846
+ if getattr(TokenType, 'OR', None) and op_in == TokenType.OR:
847
+ return '||'
848
+ if getattr(TokenType, 'NOT', None) and op_in == TokenType.NOT:
849
+ return '!'
843
850
  except Exception:
844
851
  pass
845
852
  # String names from bindings or parser
@@ -857,6 +864,12 @@ class MDLCompiler:
857
864
  return '=='
858
865
  if upper == 'NOT_EQUAL' or upper == 'NE':
859
866
  return '!='
867
+ if upper in ('AND', '&&'):
868
+ return '&&'
869
+ if upper in ('OR', '||'):
870
+ return '||'
871
+ if upper in ('NOT', '!'):
872
+ return '!'
860
873
  return None
861
874
 
862
875
  def _expression_to_condition(self, expression: Any) -> str:
@@ -887,6 +900,17 @@ class MDLCompiler:
887
900
  e = e.expression
888
901
  return e
889
902
 
903
+ # Handle logical operators by compiling to a boolean temp scoreboard var
904
+ unwrapped = unwrap(expression)
905
+ op_sym_unwrapped = None
906
+ # Import here to avoid top-level cycle
907
+ from .ast_nodes import UnaryExpression as _UnaryExpr
908
+ if isinstance(unwrapped, BinaryExpression) or isinstance(unwrapped, _UnaryExpr):
909
+ op_sym_unwrapped = self._normalize_operator(getattr(unwrapped, 'operator', None))
910
+ if op_sym_unwrapped in ('&&', '||', '!'):
911
+ bool_var = self._compile_boolean_expression(unwrapped)
912
+ return (f"score @s {bool_var} matches 1..", False)
913
+
890
914
  if isinstance(expression, BinaryExpression):
891
915
  left = unwrap(expression.left)
892
916
  right = unwrap(expression.right)
@@ -967,6 +991,53 @@ class MDLCompiler:
967
991
 
968
992
  # Fallback: treat as generic condition string
969
993
  return (self._expression_to_condition(expression), False)
994
+
995
+ def _compile_boolean_expression(self, expression: Any, out_var: Optional[str] = None) -> str:
996
+ """Compile a logical expression into a temporary boolean scoreboard variable (1 true, 0 false).
997
+ Returns the objective name for the boolean temp variable.
998
+ """
999
+ from .ast_nodes import BinaryExpression as Bin, UnaryExpression as Un, ParenthesizedExpression as Par
1000
+ if out_var is None:
1001
+ out_var = self._generate_temp_variable_name()
1002
+ # Ensure initialized to 0
1003
+ self._store_temp_command(f"scoreboard players set @s {out_var} 0")
1004
+
1005
+ def emit_set_true_when(cond_expr: Any):
1006
+ cond_str, inv = self._build_condition(cond_expr)
1007
+ prefix = "unless" if inv else "if"
1008
+ self._store_temp_command(f"execute {prefix} {cond_str} run scoreboard players set @s {out_var} 1")
1009
+
1010
+ expr = expression
1011
+ # Parentheses
1012
+ if isinstance(expr, Par):
1013
+ return self._compile_boolean_expression(expr.expression, out_var)
1014
+ # Unary NOT
1015
+ if isinstance(expr, Un):
1016
+ op = self._normalize_operator(expr.operator)
1017
+ if op == '!':
1018
+ inner_var = self._compile_boolean_expression(expr.operand)
1019
+ # out = NOT inner
1020
+ self._store_temp_command(f"execute unless score @s {inner_var} matches 1.. run scoreboard players set @s {out_var} 1")
1021
+ return out_var
1022
+ # Binary logical
1023
+ if isinstance(expr, Bin):
1024
+ op = self._normalize_operator(expr.operator)
1025
+ if op == '&&':
1026
+ left_var = self._compile_boolean_expression(expr.left)
1027
+ right_var = self._compile_boolean_expression(expr.right)
1028
+ # Set true only when both true
1029
+ self._store_temp_command(f"execute if score @s {left_var} matches 1.. if score @s {right_var} matches 1.. run scoreboard players set @s {out_var} 1")
1030
+ return out_var
1031
+ if op == '||':
1032
+ left_var = self._compile_boolean_expression(expr.left)
1033
+ right_var = self._compile_boolean_expression(expr.right)
1034
+ # Set true when either true
1035
+ self._store_temp_command(f"execute if score @s {left_var} matches 1.. run scoreboard players set @s {out_var} 1")
1036
+ self._store_temp_command(f"execute if score @s {right_var} matches 1.. run scoreboard players set @s {out_var} 1")
1037
+ return out_var
1038
+ # Base comparator or non-logical: set true if base condition holds
1039
+ emit_set_true_when(expr)
1040
+ return out_var
970
1041
 
971
1042
  def _compile_expression_to_temp(self, expression: BinaryExpression, temp_var: str):
972
1043
  """Compile a complex expression to a temporary variable using valid Minecraft commands."""
@@ -59,6 +59,9 @@ class TokenType:
59
59
  LESS = "LESS" # <
60
60
  GREATER_EQUAL = "GREATER_EQUAL" # >=
61
61
  LESS_EQUAL = "LESS_EQUAL" # <=
62
+ AND = "AND" # &&
63
+ OR = "OR" # ||
64
+ NOT = "NOT" # ! (logical not)
62
65
 
63
66
  # Delimiters
64
67
  SEMICOLON = "SEMICOLON" # ;
@@ -552,7 +555,7 @@ class MDLLexer:
552
555
  if self.current + 1 < len(self.source):
553
556
  two_char = self.source[self.current:self.current + 2]
554
557
 
555
- if two_char in ['==', '!=', '>=', '<=', '..']:
558
+ if two_char in ['==', '!=', '>=', '<=', '..', '&&', '||']:
556
559
  self.current += 2
557
560
  self.column += 2
558
561
 
@@ -561,7 +564,9 @@ class MDLLexer:
561
564
  '!=': TokenType.NOT_EQUAL,
562
565
  '>=': TokenType.GREATER_EQUAL,
563
566
  '<=': TokenType.LESS_EQUAL,
564
- '..': TokenType.RANGE
567
+ '..': TokenType.RANGE,
568
+ '&&': TokenType.AND,
569
+ '||': TokenType.OR
565
570
  }[two_char]
566
571
 
567
572
  self.tokens.append(Token(token_type, two_char, self.line, self.column - 2))
@@ -576,6 +581,7 @@ class MDLLexer:
576
581
  '=': TokenType.ASSIGN,
577
582
  '>': TokenType.GREATER,
578
583
  '<': TokenType.LESS,
584
+ '!': TokenType.NOT,
579
585
  ';': TokenType.SEMICOLON,
580
586
  ',': TokenType.COMMA,
581
587
  ':': TokenType.COLON,
@@ -465,7 +465,27 @@ class MDLParser:
465
465
 
466
466
  def _parse_expression(self) -> Any:
467
467
  """Parse an expression with operator precedence."""
468
- return self._parse_comparison()
468
+ return self._parse_or()
469
+
470
+ def _parse_or(self) -> Any:
471
+ """Parse logical OR (||) with left associativity."""
472
+ expr = self._parse_and()
473
+ while not self._is_at_end() and self._peek().type == TokenType.OR:
474
+ operator = self._peek().type
475
+ self._advance()
476
+ right = self._parse_and()
477
+ expr = BinaryExpression(left=expr, operator=operator, right=right)
478
+ return expr
479
+
480
+ def _parse_and(self) -> Any:
481
+ """Parse logical AND (&&) with left associativity."""
482
+ expr = self._parse_comparison()
483
+ while not self._is_at_end() and self._peek().type == TokenType.AND:
484
+ operator = self._peek().type
485
+ self._advance()
486
+ right = self._parse_comparison()
487
+ expr = BinaryExpression(left=expr, operator=operator, right=right)
488
+ return expr
469
489
 
470
490
  def _parse_comparison(self) -> Any:
471
491
  """Parse comparison expressions (>, <, >=, <=, ==, !=)."""
@@ -496,15 +516,24 @@ class MDLParser:
496
516
 
497
517
  def _parse_factor(self) -> Any:
498
518
  """Parse multiplication and division factors."""
499
- expr = self._parse_primary()
519
+ expr = self._parse_unary()
500
520
 
501
521
  while not self._is_at_end() and self._peek().type in [TokenType.MULTIPLY, TokenType.DIVIDE]:
502
522
  operator = self._peek().type
503
523
  self._advance()
504
- right = self._parse_primary()
524
+ right = self._parse_unary()
505
525
  expr = BinaryExpression(left=expr, operator=operator, right=right)
506
526
 
507
527
  return expr
528
+
529
+ def _parse_unary(self) -> Any:
530
+ """Parse unary expressions (logical NOT)."""
531
+ if not self._is_at_end() and self._peek().type in [TokenType.NOT]:
532
+ operator = self._peek().type
533
+ self._advance()
534
+ operand = self._parse_unary()
535
+ return UnaryExpression(operator=operator, operand=operand)
536
+ return self._parse_primary()
508
537
 
509
538
  def _parse_primary(self) -> Any:
510
539
  """Parse primary expressions (literals, variables, parenthesized expressions)."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: minecraft-datapack-language
3
- Version: 16.0.16
3
+ Version: 16.0.17
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
@@ -3,8 +3,6 @@
3
3
  .tmp_compile_bwe2.py
4
4
  .tmp_compile_bwe3.py
5
5
  .tmp_verify_loops.py
6
- COMPILER_FIXES_SUMMARY.md
7
- CONDITIONALS_IMPLEMENTATION.md
8
6
  LICENSE
9
7
  Makefile
10
8
  README.md
@@ -1,216 +0,0 @@
1
- # MDL Compiler Fixes Summary
2
-
3
- ## Overview
4
- This document summarizes all the fixes implemented to resolve the critical issues in the MDL (Minecraft Datapack Language) compiler.
5
-
6
- ## Issues Identified and Fixed
7
-
8
- ### 1. ❌ **Complex Expressions Not Working**
9
- **Problem**: The compiler was generating invalid Minecraft syntax like `scoreboard players set @s score score @s counter + score @s health * score @s bonus`
10
-
11
- **Root Cause**: The `_expression_to_value` method was trying to concatenate strings instead of generating valid Minecraft scoreboard commands.
12
-
13
- **Solution Implemented**:
14
- - Added `_compile_expression_to_temp()` method to handle complex expressions
15
- - Added `_store_temp_command()` method to collect temporary operations
16
- - Added `_generate_temp_variable_name()` method for unique temporary variables
17
- - Updated `_variable_assignment_to_command()` to use temporary variables for complex expressions
18
-
19
- **Result**: ✅ Complex expressions now generate valid Minecraft commands:
20
- ```mcfunction
21
- # Before (invalid):
22
- scoreboard players set @s score score @s counter + score @s health * score @s bonus
23
-
24
- # After (valid):
25
- scoreboard players set @s temp_2 score @s counter
26
- scoreboard players add @s temp_2 score @s health
27
- scoreboard players set @s temp_1 score @s temp_2
28
- scoreboard players operation @s temp_1 *= score @s bonus
29
- scoreboard players operation @s score = @s temp_1
30
- ```
31
-
32
- ### 2. ❌ **If/Else If/Else Not Working**
33
- **Problem**: The compiler was only generating comments for if statements instead of actual Minecraft conditional logic.
34
-
35
- **Root Cause**: The `_if_statement_to_command()` method was incomplete and only generated comments.
36
-
37
- **Solution Implemented**:
38
- - Complete rewrite of `_if_statement_to_command()` method
39
- - Proper handling of `else if` as nested if statements
40
- - Generation of `execute if score` and `execute unless score` commands
41
- - Creation of separate generated functions for if/else blocks
42
-
43
- **Result**: ✅ If/else if/else now generates proper Minecraft conditional logic:
44
- ```mcfunction
45
- # Before (just comments):
46
- # if $counter<@s>$ > 5
47
- say "Counter is high!";
48
-
49
- # After (proper conditional logic):
50
- execute if score @s counter GREATER 5.0 run function test:if_1
51
- execute if score @s counter GREATER 2.0 run function test:if_3
52
- execute unless score @s counter GREATER 2.0 run function test:else_1
53
- ```
54
-
55
- ### 3. ❌ **While Loops Not Working**
56
- **Problem**: The compiler was only generating comments for while loops instead of actual loop logic.
57
-
58
- **Root Cause**: The `_while_loop_to_command()` method was incomplete and only generated comments.
59
-
60
- **Solution Implemented**:
61
- - Complete rewrite of `_while_loop_to_command()` method
62
- - Generation of recursive function calls for loop continuation
63
- - Proper condition checking with `execute if score`
64
-
65
- **Result**: ✅ While loops now generate proper Minecraft loop logic:
66
- ```mcfunction
67
- # Before (just comments):
68
- # while $counter<@s>$ < 5
69
- counter<@s> = $counter<@s>$ + 1;
70
-
71
- # After (proper loop logic):
72
- function test:while_1
73
- # ... loop body ...
74
- execute if score @s counter LESS 5.0 run function test:while_1
75
- ```
76
-
77
- ### 4. ❌ **Function Execution Scope Issues**
78
- **Problem**: Function execution scope was not being properly handled.
79
-
80
- **Root Cause**: The `_function_call_to_command()` method needed improvement.
81
-
82
- **Solution Implemented**:
83
- - Enhanced `_function_call_to_command()` method
84
- - Proper handling of `exec function:name` vs `exec function:name<@s>`
85
- - Generation of appropriate `execute as` commands
86
-
87
- **Result**: ✅ Function execution now works correctly with proper scope handling:
88
- ```mcfunction
89
- # Function call without scope:
90
- function test:helper
91
-
92
- # Function call with @s scope:
93
- execute as @s run function test:helper
94
-
95
- # Function call with @a scope:
96
- execute as @a run function test:helper
97
- ```
98
-
99
- ### 5. ❌ **Generated Functions Not Being Created**
100
- **Problem**: The compiler was generating function calls but not creating the actual generated functions.
101
-
102
- **Root Cause**: The `_store_generated_function()` method was storing functions but they weren't being included in the output.
103
-
104
- **Solution Implemented**:
105
- - Enhanced `_generate_function_content()` method
106
- - Proper inclusion of generated functions in function output
107
- - Temporary command handling for complex expressions
108
-
109
- **Result**: ✅ Generated functions are now properly created and included in the output.
110
-
111
- ## Technical Implementation Details
112
-
113
- ### Temporary Variable System
114
- The compiler now uses a sophisticated temporary variable system for complex expressions:
115
-
116
- 1. **Expression Analysis**: Complex expressions are broken down into simple operations
117
- 2. **Temporary Variable Generation**: Unique temporary variables are created for intermediate results
118
- 3. **Command Generation**: Valid Minecraft scoreboard commands are generated for each operation
119
- 4. **Result Assignment**: The final result is assigned to the target variable
120
-
121
- ### Control Structure Compilation
122
- Control structures are compiled using a function-based approach:
123
-
124
- 1. **Condition Evaluation**: Conditions are converted to scoreboard comparisons
125
- 2. **Function Generation**: Separate functions are created for each control block
126
- 3. **Execute Commands**: `execute if` and `execute unless` commands are generated
127
- 4. **Recursive Calls**: While loops use recursive function calls for iteration
128
-
129
- ### Scope Handling
130
- Variable and function scopes are handled explicitly:
131
-
132
- 1. **Variable Scopes**: Each variable operation specifies its scope with `<>` brackets
133
- 2. **Function Scopes**: Function calls can specify execution scope
134
- 3. **Scoreboard Operations**: All operations use proper Minecraft scoreboard syntax
135
-
136
- ## Testing and Verification
137
-
138
- ### Test Files Created
139
- 1. **`test_complex_scenarios.mdl`** - Tests complex expressions and function execution
140
- 2. **`test_comprehensive_fixes.mdl`** - Comprehensive test of all fixes
141
- 3. **`test_compiler_fixes.py`** - Python test suite for programmatic verification
142
-
143
- ### Test Results
144
- ✅ **Complex Expressions**: Working correctly with valid Minecraft syntax
145
- ✅ **If/Else If/Else**: Working correctly with proper conditional logic
146
- ✅ **While Loops**: Working correctly with recursive function calls
147
- ✅ **Function Execution**: Working correctly with proper scope handling
148
- ✅ **Variable Scopes**: Working correctly across different scopes
149
- ✅ **Generated Functions**: Working correctly with proper output
150
-
151
- ### CLI Testing
152
- The fixes have been tested using the local MDL compiler (`./mdllocal.sh`) and verified to generate valid Minecraft datapack files.
153
-
154
- ## Files Modified
155
-
156
- ### Core Compiler Files
157
- - **`minecraft_datapack_language/mdl_compiler.py`**
158
- - Added complex expression compilation methods
159
- - Fixed if/else if/else compilation
160
- - Fixed while loop compilation
161
- - Enhanced function execution scope handling
162
- - Added temporary variable system
163
- - Fixed generated function output
164
-
165
- ### Test Files
166
- - **`test_complex_scenarios.mdl`** - Test file for complex scenarios
167
- - **`test_comprehensive_fixes.mdl`** - Comprehensive test file
168
- - **`test_compiler_fixes.py`** - Python test suite
169
- - **`mdllocal.sh`** - Local compiler shim for testing
170
-
171
- ### Documentation
172
- - **`docs/_docs/language-reference.md`** - Updated to reflect working features
173
- - **`COMPILER_FIXES_SUMMARY.md`** - This summary document
174
-
175
- ## Build and Test Commands
176
-
177
- ### Testing the Fixes
178
- ```bash
179
- # Test with local compiler
180
- ./mdllocal.sh build --mdl test_comprehensive_fixes.mdl -o dist
181
-
182
- # Run Python test suite
183
- python test_compiler_fixes.py
184
-
185
- # Run via Makefile
186
- make test-compiler
187
- ```
188
-
189
- ### Building Examples
190
- ```bash
191
- # Build comprehensive test
192
- ./mdllocal.sh build --mdl test_comprehensive_fixes.mdl -o dist
193
-
194
- # Build complex scenarios test
195
- ./mdllocal.sh build --mdl test_complex_scenarios.mdl -o dist
196
- ```
197
-
198
- ## Conclusion
199
-
200
- All critical compiler issues have been resolved:
201
-
202
- 1. ✅ **Complex expressions now compile to valid Minecraft syntax**
203
- 2. ✅ **If/else if/else statements work correctly**
204
- 3. ✅ **While loops work correctly**
205
- 4. ✅ **Function execution scope handling works correctly**
206
- 5. ✅ **Generated functions are properly created and included**
207
-
208
- The MDL compiler now generates valid, functional Minecraft datapack files that can be used in actual Minecraft worlds. The fixes maintain backward compatibility while adding robust support for complex language constructs.
209
-
210
- ## Next Steps
211
-
212
- 1. **Integration Testing**: Test the fixes with real Minecraft datapacks
213
- 2. **Performance Optimization**: Optimize the temporary variable system for large expressions
214
- 3. **Error Handling**: Add better error messages for edge cases
215
- 4. **Documentation**: Update user documentation with working examples
216
- 5. **CI Integration**: Add the test suite to continuous integration
@@ -1,164 +0,0 @@
1
- # Conditional Functionality Implementation Summary
2
-
3
- ## Overview
4
-
5
- This document summarizes the implementation of if/else if/else functionality in the Minecraft Datapack Language (MDL).
6
-
7
- ## ✅ Implementation Status
8
-
9
- ### Core Functionality
10
- - ✅ **Parser Support**: Conditional blocks are parsed as regular commands
11
- - ✅ **Post-Processing**: Conditional blocks are converted to separate functions
12
- - ✅ **Execute Commands**: Proper Minecraft `execute` syntax is generated
13
- - ✅ **Complex Conditions**: Support for NBT data and complex selectors
14
- - ✅ **Multiple else if**: Support for multiple else if blocks
15
- - ✅ **Else blocks**: Optional else blocks are supported
16
-
17
- ### Syntax Support
18
- - ✅ `if "condition":` - Simple if statements
19
- - ✅ `else if "condition":` - Else if statements
20
- - ✅ `else:` - Else blocks
21
- - ✅ Complex conditions with NBT data
22
- - ✅ Mixed commands with conditionals
23
-
24
- ### Generated Output
25
- - ✅ Main function contains `execute` commands
26
- - ✅ Conditional blocks become separate functions
27
- - ✅ Proper function naming convention
28
- - ✅ Correct `execute if` and `execute unless` syntax
29
-
30
- ## 📁 Files Modified
31
-
32
- ### Core Implementation
33
- - `minecraft_datapack_language/pack.py` - Added `_process_conditionals` method
34
- - `minecraft_datapack_language/mdl_parser_js.py` - JavaScript-style parser with modern syntax
35
-
36
- ### Documentation
37
- - `README.md` - Added conditional blocks section
38
- - `docs/_docs/language-reference.md` - Added comprehensive conditional documentation
39
- - `docs/_docs/examples.md` - Added conditional examples
40
- - `docs/_docs/python-bindings.md` - Added conditional Python bindings examples
41
-
42
- ### Tests
43
- - `test_examples/conditionals.mdl` - Comprehensive MDL test file
44
- - `test_examples/conditionals.py` - Python bindings test file
45
- - `test_regression.py` - Regression test suite
46
- - `test_examples/run_all_tests.py` - Updated to include conditionals
47
-
48
- ## 🧪 Testing
49
-
50
- ### Test Coverage
51
- - ✅ Basic conditional syntax
52
- - ✅ Complex conditions with NBT
53
- - ✅ Multiple else if blocks
54
- - ✅ Mixed commands with conditionals
55
- - ✅ Conditional function calls
56
- - ✅ Invalid syntax handling
57
- - ✅ Regression testing (existing functionality)
58
- - ✅ Python bindings compatibility
59
-
60
- ### Test Results
61
- - **Regression Tests**: 7/7 passed ✅
62
- - **Comprehensive Tests**: 17/17 passed ✅
63
- - **Python bindings tests**: All passed ✅
64
-
65
- ## 📖 Documentation
66
-
67
- ### Syntax Examples
68
-
69
- ```mdl
70
- function "weapon_effects":
71
- if "entity @s[type=minecraft:player,nbt={SelectedItem:{id:\"minecraft:diamond_sword\"}}]":
72
- say Diamond sword detected!
73
- effect give @s minecraft:strength 10 1
74
- else if "entity @s[type=minecraft:player,nbt={SelectedItem:{id:\"minecraft:golden_sword\"}}]":
75
- say Golden sword detected!
76
- effect give @s minecraft:speed 10 1
77
- else if "entity @s[type=minecraft:player]":
78
- say Player without special sword
79
- effect give @s minecraft:haste 5 0
80
- else:
81
- say No player found
82
- ```
83
-
84
- ### Generated Output
85
-
86
- The above MDL generates:
87
-
88
- **Main function (`weapon_effects.mcfunction`):**
89
- ```mcfunction
90
- execute if entity @s[type=minecraft:player,nbt={SelectedItem:{id:"minecraft:diamond_sword"}}] run function test:weapon_effects_if_1
91
- execute unless entity @s[type=minecraft:player,nbt={SelectedItem:{id:"minecraft:diamond_sword"}}] if entity @s[type=minecraft:player,nbt={SelectedItem:{id:"minecraft:golden_sword"}}] run function test:weapon_effects_elif_2
92
- execute unless entity @s[type=minecraft:player,nbt={SelectedItem:{id:"minecraft:diamond_sword"}}] unless entity @s[type=minecraft:player,nbt={SelectedItem:{id:"minecraft:golden_sword"}}] if entity @s[type=minecraft:player] run function test:weapon_effects_elif_3
93
- execute unless entity @s[type=minecraft:player,nbt={SelectedItem:{id:"minecraft:diamond_sword"}}] unless entity @s[type=minecraft:player,nbt={SelectedItem:{id:"minecraft:golden_sword"}}] unless entity @s[type=minecraft:player] run function test:weapon_effects_else
94
- ```
95
-
96
- **Conditional functions:**
97
- - `weapon_effects_if_1.mcfunction` - Diamond sword effects
98
- - `weapon_effects_elif_2.mcfunction` - Golden sword effects
99
- - `weapon_effects_elif_3.mcfunction` - Default player effects
100
- - `weapon_effects_else.mcfunction` - No player found
101
-
102
- ## 🔧 Technical Details
103
-
104
- ### Implementation Approach
105
- 1. **Parser**: Treats conditional blocks as regular commands
106
- 2. **Post-Processing**: Converts conditional blocks to separate functions
107
- 3. **Execute Commands**: Generates proper Minecraft execute syntax
108
- 4. **Function Generation**: Creates separate functions for each conditional block
109
-
110
- ### Key Features
111
- - **Backward Compatible**: Existing MDL files continue to work
112
- - **Robust**: Handles complex conditions and edge cases
113
- - **Efficient**: Minimal overhead in parsing
114
- - **Flexible**: Supports all valid Minecraft selector syntax
115
-
116
- ### Error Handling
117
- - Invalid conditional syntax is treated as regular commands
118
- - Clear error messages for malformed conditions
119
- - Graceful degradation for edge cases
120
-
121
- ## 🎯 Use Cases
122
-
123
- ### Common Patterns
124
- 1. **Weapon Effects**: Different effects based on held items
125
- 2. **Entity Detection**: Different behavior for different entity types
126
- 3. **Conditional Function Calls**: Call different functions based on conditions
127
- 4. **Complex Logic**: Multi-level conditional logic
128
-
129
- ### Examples
130
- - Combat systems with different weapon effects
131
- - UI systems that adapt to player state
132
- - AI systems with different behaviors
133
- - Game mechanics with conditional triggers
134
-
135
- ## 🚀 Future Enhancements
136
-
137
- ### Potential Improvements
138
- - **Nested Conditionals**: Support for nested if/else blocks
139
- - **Switch Statements**: Alternative syntax for multiple conditions
140
- - **Conditional Macros**: Reusable conditional patterns
141
- - **Performance Optimizations**: More efficient execute command generation
142
-
143
- ### Considerations
144
- - **Complexity**: Keep the language simple and readable
145
- - **Performance**: Ensure generated commands are efficient
146
- - **Compatibility**: Maintain backward compatibility
147
- - **Documentation**: Keep examples and documentation up to date
148
-
149
- ## 📋 Checklist
150
-
151
- - ✅ Core functionality implemented
152
- - ✅ Comprehensive testing completed
153
- - ✅ Documentation updated
154
- - ✅ Examples created
155
- - ✅ Python bindings support
156
- - ✅ Regression tests passing
157
- - ✅ Backward compatibility verified
158
- - ✅ Error handling implemented
159
-
160
- ## 🎉 Conclusion
161
-
162
- The conditional functionality has been successfully implemented and thoroughly tested. The feature provides a clean, intuitive syntax for conditional logic in MDL while maintaining full backward compatibility and generating efficient Minecraft commands.
163
-
164
- The implementation follows MDL's design principles of simplicity, readability, and compatibility with existing Minecraft datapack standards.
@@ -1,3 +0,0 @@
1
- current: "16.0.15"
2
- tag: "v16.0.15"
3
- updated_at: "2025-09-10T04:17:24Z"