sandstone 1.1.6 → 1.2.1

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 (443) hide show
  1. package/dist/_internal/index.d.ts +34 -230
  2. package/dist/_internal/index.d.ts.map +1 -1
  3. package/dist/_internal/index.js +2261 -692
  4. package/dist/_internal/index.js.map +1 -1
  5. package/dist/_internal/types/arguments/generated/_builtin/block_state_keys.d.ts +175 -1
  6. package/dist/_internal/types/arguments/generated/_builtin/block_state_keys.d.ts.map +1 -1
  7. package/dist/_internal/types/arguments/generated/_builtin/block_states.d.ts +387 -1
  8. package/dist/_internal/types/arguments/generated/_builtin/block_states.d.ts.map +1 -1
  9. package/dist/_internal/types/arguments/generated/_dispatcher/block.d.ts +16 -4
  10. package/dist/_internal/types/arguments/generated/_dispatcher/block.d.ts.map +1 -1
  11. package/dist/_internal/types/arguments/generated/_dispatcher/resource.d.ts +27 -1
  12. package/dist/_internal/types/arguments/generated/_dispatcher/resource.d.ts.map +1 -1
  13. package/dist/_internal/types/arguments/generated/_registry/advancements.d.ts +1 -1
  14. package/dist/_internal/types/arguments/generated/_registry/advancements.d.ts.map +1 -1
  15. package/dist/_internal/types/arguments/generated/_registry/atlases.d.ts +1 -1
  16. package/dist/_internal/types/arguments/generated/_registry/atlases.d.ts.map +1 -1
  17. package/dist/_internal/types/arguments/generated/_registry/attribute_types.d.ts +1 -1
  18. package/dist/_internal/types/arguments/generated/_registry/attribute_types.d.ts.map +1 -1
  19. package/dist/_internal/types/arguments/generated/_registry/block_definitions.d.ts +1 -1
  20. package/dist/_internal/types/arguments/generated/_registry/block_definitions.d.ts.map +1 -1
  21. package/dist/_internal/types/arguments/generated/_registry/block_predicate_types.d.ts +1 -1
  22. package/dist/_internal/types/arguments/generated/_registry/block_predicate_types.d.ts.map +1 -1
  23. package/dist/_internal/types/arguments/generated/_registry/block_types.d.ts +1 -1
  24. package/dist/_internal/types/arguments/generated/_registry/blocks.d.ts +1 -1
  25. package/dist/_internal/types/arguments/generated/_registry/blocks.d.ts.map +1 -1
  26. package/dist/_internal/types/arguments/generated/_registry/command_argument_types.d.ts +1 -1
  27. package/dist/_internal/types/arguments/generated/_registry/command_argument_types.d.ts.map +1 -1
  28. package/dist/_internal/types/arguments/generated/_registry/custom_stats.d.ts +1 -1
  29. package/dist/_internal/types/arguments/generated/_registry/custom_stats.d.ts.map +1 -1
  30. package/dist/_internal/types/arguments/generated/_registry/data_component_types.d.ts +1 -1
  31. package/dist/_internal/types/arguments/generated/_registry/data_component_types.d.ts.map +1 -1
  32. package/dist/_internal/types/arguments/generated/_registry/decorated_pot_patterns.d.ts +1 -1
  33. package/dist/_internal/types/arguments/generated/_registry/decorated_pot_patterns.d.ts.map +1 -1
  34. package/dist/_internal/types/arguments/generated/_registry/entity_sub_predicate_types.d.ts +1 -1
  35. package/dist/_internal/types/arguments/generated/_registry/entity_types.d.ts +1 -1
  36. package/dist/_internal/types/arguments/generated/_registry/entity_types.d.ts.map +1 -1
  37. package/dist/_internal/types/arguments/generated/_registry/environment_attributes.d.ts +1 -1
  38. package/dist/_internal/types/arguments/generated/_registry/environment_attributes.d.ts.map +1 -1
  39. package/dist/_internal/types/arguments/generated/_registry/fluids.d.ts +1 -1
  40. package/dist/_internal/types/arguments/generated/_registry/int_provider_types.d.ts +1 -1
  41. package/dist/_internal/types/arguments/generated/_registry/int_provider_types.d.ts.map +1 -1
  42. package/dist/_internal/types/arguments/generated/_registry/item_definitions.d.ts +1 -1
  43. package/dist/_internal/types/arguments/generated/_registry/item_definitions.d.ts.map +1 -1
  44. package/dist/_internal/types/arguments/generated/_registry/items.d.ts +1 -1
  45. package/dist/_internal/types/arguments/generated/_registry/items.d.ts.map +1 -1
  46. package/dist/_internal/types/arguments/generated/_registry/langs.d.ts +1 -1
  47. package/dist/_internal/types/arguments/generated/_registry/langs.d.ts.map +1 -1
  48. package/dist/_internal/types/arguments/generated/_registry/loot_condition_types.d.ts +1 -1
  49. package/dist/_internal/types/arguments/generated/_registry/loot_condition_types.d.ts.map +1 -1
  50. package/dist/_internal/types/arguments/generated/_registry/loot_function_types.d.ts +1 -1
  51. package/dist/_internal/types/arguments/generated/_registry/loot_function_types.d.ts.map +1 -1
  52. package/dist/_internal/types/arguments/generated/_registry/loot_number_provider_types.d.ts +1 -1
  53. package/dist/_internal/types/arguments/generated/_registry/loot_number_provider_types.d.ts.map +1 -1
  54. package/dist/_internal/types/arguments/generated/_registry/loot_pool_entry_types.d.ts +1 -1
  55. package/dist/_internal/types/arguments/generated/_registry/loot_tables.d.ts +1 -1
  56. package/dist/_internal/types/arguments/generated/_registry/loot_tables.d.ts.map +1 -1
  57. package/dist/_internal/types/arguments/generated/_registry/mob_effects.d.ts +1 -1
  58. package/dist/_internal/types/arguments/generated/_registry/models.d.ts +1 -1
  59. package/dist/_internal/types/arguments/generated/_registry/models.d.ts.map +1 -1
  60. package/dist/_internal/types/arguments/generated/_registry/number_format_types.d.ts +1 -1
  61. package/dist/_internal/types/arguments/generated/_registry/number_providers.d.ts +5 -0
  62. package/dist/_internal/types/arguments/generated/_registry/number_providers.d.ts.map +1 -0
  63. package/dist/_internal/types/arguments/generated/_registry/outgoing_rpc_methods.d.ts +1 -1
  64. package/dist/_internal/types/arguments/generated/_registry/outgoing_rpc_methods.d.ts.map +1 -1
  65. package/dist/_internal/types/arguments/generated/_registry/particle_types.d.ts +1 -1
  66. package/dist/_internal/types/arguments/generated/_registry/particle_types.d.ts.map +1 -1
  67. package/dist/_internal/types/arguments/generated/_registry/point_of_interest_types.d.ts +1 -1
  68. package/dist/_internal/types/arguments/generated/_registry/post_effects.d.ts +1 -1
  69. package/dist/_internal/types/arguments/generated/_registry/post_effects.d.ts.map +1 -1
  70. package/dist/_internal/types/arguments/generated/_registry/potions.d.ts +1 -1
  71. package/dist/_internal/types/arguments/generated/_registry/predicates.d.ts +5 -0
  72. package/dist/_internal/types/arguments/generated/_registry/predicates.d.ts.map +1 -0
  73. package/dist/_internal/types/arguments/generated/_registry/recipe_serializers.d.ts +1 -1
  74. package/dist/_internal/types/arguments/generated/_registry/recipe_serializers.d.ts.map +1 -1
  75. package/dist/_internal/types/arguments/generated/_registry/recipe_types.d.ts +1 -1
  76. package/dist/_internal/types/arguments/generated/_registry/recipe_types.d.ts.map +1 -1
  77. package/dist/_internal/types/arguments/generated/_registry/recipes.d.ts +1 -1
  78. package/dist/_internal/types/arguments/generated/_registry/recipes.d.ts.map +1 -1
  79. package/dist/_internal/types/arguments/generated/_registry/rule_tests.d.ts +1 -1
  80. package/dist/_internal/types/arguments/generated/_registry/rule_tests.d.ts.map +1 -1
  81. package/dist/_internal/types/arguments/generated/_registry/sound_events.d.ts +1 -1
  82. package/dist/_internal/types/arguments/generated/_registry/sound_events.d.ts.map +1 -1
  83. package/dist/_internal/types/arguments/generated/_registry/sounds.d.ts +1 -1
  84. package/dist/_internal/types/arguments/generated/_registry/sounds.d.ts.map +1 -1
  85. package/dist/_internal/types/arguments/generated/_registry/spawn_condition_types.d.ts +1 -1
  86. package/dist/_internal/types/arguments/generated/_registry/structures.d.ts +1 -1
  87. package/dist/_internal/types/arguments/generated/_registry/structures.d.ts.map +1 -1
  88. package/dist/_internal/types/arguments/generated/_registry/tag_blocks.d.ts +1 -1
  89. package/dist/_internal/types/arguments/generated/_registry/tag_blocks.d.ts.map +1 -1
  90. package/dist/_internal/types/arguments/generated/_registry/tag_damage_types.d.ts +1 -1
  91. package/dist/_internal/types/arguments/generated/_registry/tag_damage_types.d.ts.map +1 -1
  92. package/dist/_internal/types/arguments/generated/_registry/tag_entity_types.d.ts +1 -1
  93. package/dist/_internal/types/arguments/generated/_registry/tag_entity_types.d.ts.map +1 -1
  94. package/dist/_internal/types/arguments/generated/_registry/tag_items.d.ts +1 -1
  95. package/dist/_internal/types/arguments/generated/_registry/tag_items.d.ts.map +1 -1
  96. package/dist/_internal/types/arguments/generated/_registry/tag_worldgen_biomes.d.ts +1 -1
  97. package/dist/_internal/types/arguments/generated/_registry/tag_worldgen_biomes.d.ts.map +1 -1
  98. package/dist/_internal/types/arguments/generated/_registry/tag_worldgen_features.d.ts +5 -0
  99. package/dist/_internal/types/arguments/generated/_registry/tag_worldgen_features.d.ts.map +1 -0
  100. package/dist/_internal/types/arguments/generated/_registry/tag_worldgen_structures.d.ts +1 -1
  101. package/dist/_internal/types/arguments/generated/_registry/tag_worldgen_structures.d.ts.map +1 -1
  102. package/dist/_internal/types/arguments/generated/_registry/textures.d.ts +1 -1
  103. package/dist/_internal/types/arguments/generated/_registry/textures.d.ts.map +1 -1
  104. package/dist/_internal/types/arguments/generated/_registry/trim_materials.d.ts +1 -1
  105. package/dist/_internal/types/arguments/generated/_registry/villager_trades.d.ts +1 -1
  106. package/dist/_internal/types/arguments/generated/_registry/villager_trades.d.ts.map +1 -1
  107. package/dist/_internal/types/arguments/generated/_registry/worldgen_biomes.d.ts +1 -1
  108. package/dist/_internal/types/arguments/generated/_registry/worldgen_biomes.d.ts.map +1 -1
  109. package/dist/_internal/types/arguments/generated/_registry/worldgen_block_state_provider_types.d.ts +1 -1
  110. package/dist/_internal/types/arguments/generated/_registry/worldgen_block_state_provider_types.d.ts.map +1 -1
  111. package/dist/_internal/types/arguments/generated/_registry/worldgen_carver_types.d.ts +5 -0
  112. package/dist/_internal/types/arguments/generated/_registry/worldgen_carver_types.d.ts.map +1 -0
  113. package/dist/_internal/types/arguments/generated/_registry/worldgen_carvers.d.ts +1 -1
  114. package/dist/_internal/types/arguments/generated/_registry/worldgen_carvers.d.ts.map +1 -1
  115. package/dist/_internal/types/arguments/generated/_registry/worldgen_configured_carvers.d.ts +1 -1
  116. package/dist/_internal/types/arguments/generated/_registry/worldgen_configured_features.d.ts +1 -1
  117. package/dist/_internal/types/arguments/generated/_registry/worldgen_density_function_types.d.ts +1 -1
  118. package/dist/_internal/types/arguments/generated/_registry/worldgen_density_function_types.d.ts.map +1 -1
  119. package/dist/_internal/types/arguments/generated/_registry/worldgen_density_functions.d.ts +1 -1
  120. package/dist/_internal/types/arguments/generated/_registry/worldgen_density_functions.d.ts.map +1 -1
  121. package/dist/_internal/types/arguments/generated/_registry/worldgen_feature_types.d.ts +5 -0
  122. package/dist/_internal/types/arguments/generated/_registry/worldgen_feature_types.d.ts.map +1 -0
  123. package/dist/_internal/types/arguments/generated/_registry/worldgen_features.d.ts +1 -1
  124. package/dist/_internal/types/arguments/generated/_registry/worldgen_features.d.ts.map +1 -1
  125. package/dist/_internal/types/arguments/generated/_registry/worldgen_foliage_placer_types.d.ts +1 -1
  126. package/dist/_internal/types/arguments/generated/_registry/worldgen_foliage_placer_types.d.ts.map +1 -1
  127. package/dist/_internal/types/arguments/generated/_registry/worldgen_material_condition_types.d.ts +5 -0
  128. package/dist/_internal/types/arguments/generated/_registry/worldgen_material_condition_types.d.ts.map +1 -0
  129. package/dist/_internal/types/arguments/generated/_registry/worldgen_material_conditions.d.ts +1 -1
  130. package/dist/_internal/types/arguments/generated/_registry/worldgen_material_conditions.d.ts.map +1 -1
  131. package/dist/_internal/types/arguments/generated/_registry/worldgen_material_rule_types.d.ts +5 -0
  132. package/dist/_internal/types/arguments/generated/_registry/worldgen_material_rule_types.d.ts.map +1 -0
  133. package/dist/_internal/types/arguments/generated/_registry/worldgen_material_rules.d.ts +1 -1
  134. package/dist/_internal/types/arguments/generated/_registry/worldgen_material_rules.d.ts.map +1 -1
  135. package/dist/_internal/types/arguments/generated/_registry/worldgen_noise_settings.d.ts +1 -1
  136. package/dist/_internal/types/arguments/generated/_registry/worldgen_noises.d.ts +1 -1
  137. package/dist/_internal/types/arguments/generated/_registry/worldgen_noises.d.ts.map +1 -1
  138. package/dist/_internal/types/arguments/generated/_registry/worldgen_placed_features.d.ts +1 -1
  139. package/dist/_internal/types/arguments/generated/_registry/worldgen_placed_features.d.ts.map +1 -1
  140. package/dist/_internal/types/arguments/generated/_registry/worldgen_placement_modifier_types.d.ts +1 -1
  141. package/dist/_internal/types/arguments/generated/_registry/worldgen_placement_modifier_types.d.ts.map +1 -1
  142. package/dist/_internal/types/arguments/generated/_registry/worldgen_structure_placements.d.ts +1 -1
  143. package/dist/_internal/types/arguments/generated/_registry/worldgen_structure_placements.d.ts.map +1 -1
  144. package/dist/_internal/types/arguments/generated/_registry/worldgen_structure_sets.d.ts +1 -1
  145. package/dist/_internal/types/arguments/generated/_registry/worldgen_structure_sets.d.ts.map +1 -1
  146. package/dist/_internal/types/arguments/generated/_registry/worldgen_structures.d.ts +1 -1
  147. package/dist/_internal/types/arguments/generated/_registry/worldgen_structures.d.ts.map +1 -1
  148. package/dist/_internal/types/arguments/generated/_registry/worldgen_template_pools.d.ts +1 -1
  149. package/dist/_internal/types/arguments/generated/_registry/worldgen_template_pools.d.ts.map +1 -1
  150. package/dist/_internal/types/arguments/generated/_registry/worldgen_tree_decorator_types.d.ts +1 -1
  151. package/dist/_internal/types/arguments/generated/_registry/worldgen_tree_decorator_types.d.ts.map +1 -1
  152. package/dist/_internal/types/arguments/generated/_registry/worldgen_trunk_placer_types.d.ts +1 -1
  153. package/dist/_internal/types/arguments/generated/_registry/worldgen_trunk_placer_types.d.ts.map +1 -1
  154. package/dist/_internal/types/arguments/generated/assets/atlas.d.ts +1 -1
  155. package/dist/_internal/types/arguments/generated/assets/atlas.d.ts.map +1 -1
  156. package/dist/_internal/types/arguments/generated/assets/equipment.d.ts +7 -0
  157. package/dist/_internal/types/arguments/generated/assets/equipment.d.ts.map +1 -1
  158. package/dist/_internal/types/arguments/generated/assets/item_definition.d.ts +1 -10
  159. package/dist/_internal/types/arguments/generated/assets/item_definition.d.ts.map +1 -1
  160. package/dist/_internal/types/arguments/generated/assets/model.d.ts +11 -0
  161. package/dist/_internal/types/arguments/generated/assets/model.d.ts.map +1 -1
  162. package/dist/_internal/types/arguments/generated/assets/texture_meta.d.ts +6 -0
  163. package/dist/_internal/types/arguments/generated/assets/texture_meta.d.ts.map +1 -1
  164. package/dist/_internal/types/arguments/generated/data/advancement/predicate.d.ts +4 -22
  165. package/dist/_internal/types/arguments/generated/data/advancement/predicate.d.ts.map +1 -1
  166. package/dist/_internal/types/arguments/generated/data/advancement/trigger.d.ts +27 -13
  167. package/dist/_internal/types/arguments/generated/data/advancement/trigger.d.ts.map +1 -1
  168. package/dist/_internal/types/arguments/generated/data/advancement.d.ts +2 -1
  169. package/dist/_internal/types/arguments/generated/data/advancement.d.ts.map +1 -1
  170. package/dist/_internal/types/arguments/generated/data/dialog.d.ts +1 -1
  171. package/dist/_internal/types/arguments/generated/data/dialog.d.ts.map +1 -1
  172. package/dist/_internal/types/arguments/generated/data/item_modifier.d.ts +2 -1
  173. package/dist/_internal/types/arguments/generated/data/item_modifier.d.ts.map +1 -1
  174. package/dist/_internal/types/arguments/generated/data/loot/condition.d.ts +8 -4
  175. package/dist/_internal/types/arguments/generated/data/loot/condition.d.ts.map +1 -1
  176. package/dist/_internal/types/arguments/generated/data/loot/function.d.ts +16 -4
  177. package/dist/_internal/types/arguments/generated/data/loot/function.d.ts.map +1 -1
  178. package/dist/_internal/types/arguments/generated/data/loot.d.ts +30 -6
  179. package/dist/_internal/types/arguments/generated/data/loot.d.ts.map +1 -1
  180. package/dist/_internal/types/arguments/generated/data/number_provider.d.ts +17 -4
  181. package/dist/_internal/types/arguments/generated/data/number_provider.d.ts.map +1 -1
  182. package/dist/_internal/types/arguments/generated/data/predicate.d.ts +4 -2
  183. package/dist/_internal/types/arguments/generated/data/predicate.d.ts.map +1 -1
  184. package/dist/_internal/types/arguments/generated/data/recipe.d.ts +4 -1
  185. package/dist/_internal/types/arguments/generated/data/recipe.d.ts.map +1 -1
  186. package/dist/_internal/types/arguments/generated/data/slot_source.d.ts +20 -2
  187. package/dist/_internal/types/arguments/generated/data/slot_source.d.ts.map +1 -1
  188. package/dist/_internal/types/arguments/generated/data/trim.d.ts +5 -0
  189. package/dist/_internal/types/arguments/generated/data/trim.d.ts.map +1 -1
  190. package/dist/_internal/types/arguments/generated/data/variants/instrument.d.ts +18 -3
  191. package/dist/_internal/types/arguments/generated/data/variants/instrument.d.ts.map +1 -1
  192. package/dist/_internal/types/arguments/generated/data/villager_trade.d.ts +9 -0
  193. package/dist/_internal/types/arguments/generated/data/villager_trade.d.ts.map +1 -1
  194. package/dist/_internal/types/arguments/generated/data/worldgen/attribute.d.ts +17 -2
  195. package/dist/_internal/types/arguments/generated/data/worldgen/attribute.d.ts.map +1 -1
  196. package/dist/_internal/types/arguments/generated/data/worldgen/biome.d.ts +3 -1
  197. package/dist/_internal/types/arguments/generated/data/worldgen/biome.d.ts.map +1 -1
  198. package/dist/_internal/types/arguments/generated/data/worldgen/carver.d.ts +24 -6
  199. package/dist/_internal/types/arguments/generated/data/worldgen/carver.d.ts.map +1 -1
  200. package/dist/_internal/types/arguments/generated/data/worldgen/density_function.d.ts +33 -4
  201. package/dist/_internal/types/arguments/generated/data/worldgen/density_function.d.ts.map +1 -1
  202. package/dist/_internal/types/arguments/generated/data/worldgen/dimension.d.ts +1 -1
  203. package/dist/_internal/types/arguments/generated/data/worldgen/dimension.d.ts.map +1 -1
  204. package/dist/_internal/types/arguments/generated/data/worldgen/feature/block_state_provider.d.ts +20 -2
  205. package/dist/_internal/types/arguments/generated/data/worldgen/feature/block_state_provider.d.ts.map +1 -1
  206. package/dist/_internal/types/arguments/generated/data/worldgen/feature/placement.d.ts +11 -2
  207. package/dist/_internal/types/arguments/generated/data/worldgen/feature/placement.d.ts.map +1 -1
  208. package/dist/_internal/types/arguments/generated/data/worldgen/feature/tree.d.ts +12 -5
  209. package/dist/_internal/types/arguments/generated/data/worldgen/feature/tree.d.ts.map +1 -1
  210. package/dist/_internal/types/arguments/generated/data/worldgen/feature.d.ts +50 -60
  211. package/dist/_internal/types/arguments/generated/data/worldgen/feature.d.ts.map +1 -1
  212. package/dist/_internal/types/arguments/generated/data/worldgen/material_condition.d.ts +3 -3
  213. package/dist/_internal/types/arguments/generated/data/worldgen/material_condition.d.ts.map +1 -1
  214. package/dist/_internal/types/arguments/generated/data/worldgen/material_rule.d.ts +3 -3
  215. package/dist/_internal/types/arguments/generated/data/worldgen/material_rule.d.ts.map +1 -1
  216. package/dist/_internal/types/arguments/generated/data/worldgen/noise_settings.d.ts +4 -1
  217. package/dist/_internal/types/arguments/generated/data/worldgen/noise_settings.d.ts.map +1 -1
  218. package/dist/_internal/types/arguments/generated/data/worldgen/processor_list.d.ts +14 -2
  219. package/dist/_internal/types/arguments/generated/data/worldgen/processor_list.d.ts.map +1 -1
  220. package/dist/_internal/types/arguments/generated/data/worldgen.d.ts +6 -1
  221. package/dist/_internal/types/arguments/generated/data/worldgen.d.ts.map +1 -1
  222. package/dist/_internal/types/arguments/generated/dispatcher.d.ts +3 -3
  223. package/dist/_internal/types/arguments/generated/dispatcher.d.ts.map +1 -1
  224. package/dist/_internal/types/arguments/generated/registry-sets.d.ts +8 -5
  225. package/dist/_internal/types/arguments/generated/registry-sets.d.ts.map +1 -1
  226. package/dist/_internal/types/arguments/generated/registry.d.ts +16 -10
  227. package/dist/_internal/types/arguments/generated/registry.d.ts.map +1 -1
  228. package/dist/_internal/types/arguments/generated/resource-paths.d.ts +15 -0
  229. package/dist/_internal/types/arguments/generated/resource-paths.d.ts.map +1 -1
  230. package/dist/_internal/types/arguments/generated/resources.d.ts +2 -2
  231. package/dist/_internal/types/arguments/generated/resources.d.ts.map +1 -1
  232. package/dist/_internal/types/arguments/generated/world/block/brewing_stand.d.ts +15 -3
  233. package/dist/_internal/types/arguments/generated/world/block/brewing_stand.d.ts.map +1 -1
  234. package/dist/_internal/types/arguments/generated/world/block/decorated_pot.d.ts +7 -0
  235. package/dist/_internal/types/arguments/generated/world/block/decorated_pot.d.ts.map +1 -1
  236. package/dist/_internal/types/arguments/generated/world/block/furnace.d.ts +9 -5
  237. package/dist/_internal/types/arguments/generated/world/block/furnace.d.ts.map +1 -1
  238. package/dist/_internal/types/arguments/generated/world/block/sign.d.ts +8 -0
  239. package/dist/_internal/types/arguments/generated/world/block/sign.d.ts.map +1 -1
  240. package/dist/_internal/types/arguments/generated/world/component/item.d.ts +43 -10
  241. package/dist/_internal/types/arguments/generated/world/component/item.d.ts.map +1 -1
  242. package/dist/_internal/types/arguments/generated/world/component/predicate.d.ts +1 -1
  243. package/dist/_internal/types/arguments/generated/world/component/predicate.d.ts.map +1 -1
  244. package/dist/_internal/types/arguments/generated/world/entity/boat.d.ts +11 -1
  245. package/dist/_internal/types/arguments/generated/world/entity/boat.d.ts.map +1 -1
  246. package/dist/_internal/types/arguments/generated/world/entity/mob/player.d.ts +2 -1
  247. package/dist/_internal/types/arguments/generated/world/entity/mob/player.d.ts.map +1 -1
  248. package/dist/_internal/types/arguments/generated/world/entity/mob.d.ts +0 -4
  249. package/dist/_internal/types/arguments/generated/world/entity/mob.d.ts.map +1 -1
  250. package/dist/_internal/types/arguments/generated/world/entity/projectile.d.ts +2 -0
  251. package/dist/_internal/types/arguments/generated/world/entity/projectile.d.ts.map +1 -1
  252. package/dist/_internal/types/arguments/generated/world/entity.d.ts +4 -0
  253. package/dist/_internal/types/arguments/generated/world/entity.d.ts.map +1 -1
  254. package/dist/_internal/types/commands/commands.d.ts +2 -1
  255. package/dist/_internal/types/commands/commands.d.ts.map +1 -1
  256. package/dist/_internal/types/commands/implementations/entity/execute.d.ts +53 -5
  257. package/dist/_internal/types/commands/implementations/entity/execute.d.ts.map +1 -1
  258. package/dist/_internal/types/commands/implementations/index.d.ts +1 -0
  259. package/dist/_internal/types/commands/implementations/index.d.ts.map +1 -1
  260. package/dist/_internal/types/commands/implementations/player/posteffect.d.ts +61 -0
  261. package/dist/_internal/types/commands/implementations/player/posteffect.d.ts.map +1 -0
  262. package/dist/_internal/types/commands/implementations/world/item.d.ts +73 -11
  263. package/dist/_internal/types/commands/implementations/world/item.d.ts.map +1 -1
  264. package/dist/_internal/types/core/resources/datapack/decoratedPotPattern.d.ts +25 -0
  265. package/dist/_internal/types/core/resources/datapack/decoratedPotPattern.d.ts.map +1 -0
  266. package/dist/_internal/types/core/resources/datapack/index.d.ts +2 -0
  267. package/dist/_internal/types/core/resources/datapack/index.d.ts.map +1 -1
  268. package/dist/_internal/types/core/resources/datapack/slotSource.d.ts +27 -0
  269. package/dist/_internal/types/core/resources/datapack/slotSource.d.ts.map +1 -0
  270. package/dist/_internal/types/flow/Flow.d.ts +32 -6
  271. package/dist/_internal/types/flow/Flow.d.ts.map +1 -1
  272. package/dist/_internal/types/flow/conditions/command.d.ts.map +1 -1
  273. package/dist/_internal/types/flow/conditions/condition.d.ts +0 -8
  274. package/dist/_internal/types/flow/conditions/condition.d.ts.map +1 -1
  275. package/dist/_internal/types/flow/conditions/index.d.ts +3 -0
  276. package/dist/_internal/types/flow/conditions/index.d.ts.map +1 -1
  277. package/dist/_internal/types/flow/conditions/resources/index.d.ts +1 -0
  278. package/dist/_internal/types/flow/conditions/resources/index.d.ts.map +1 -1
  279. package/dist/_internal/types/flow/conditions/resources/slotSource.d.ts +14 -0
  280. package/dist/_internal/types/flow/conditions/resources/slotSource.d.ts.map +1 -0
  281. package/dist/_internal/types/flow/conditions/variables/dataPoint.d.ts.map +1 -1
  282. package/dist/_internal/types/flow/conditions/variables/items.d.ts +40 -7
  283. package/dist/_internal/types/flow/conditions/variables/items.d.ts.map +1 -1
  284. package/dist/_internal/types/pack/pack.d.ts +8 -3
  285. package/dist/_internal/types/pack/pack.d.ts.map +1 -1
  286. package/dist/_internal/types/pack/visitors/orTransformationVisitor.d.ts +6 -41
  287. package/dist/_internal/types/pack/visitors/orTransformationVisitor.d.ts.map +1 -1
  288. package/dist/_internal/types/variables/abstractClasses.d.ts +0 -9
  289. package/dist/_internal/types/variables/abstractClasses.d.ts.map +1 -1
  290. package/dist/browser/sandstone.esm.js +2261 -692
  291. package/dist/browser/sandstone.esm.js.map +1 -1
  292. package/dist/exports/arguments/index.d.ts +1 -1
  293. package/dist/exports/arguments/index.js +1 -1
  294. package/dist/exports/commands/index.d.ts +1 -1
  295. package/dist/exports/commands/index.js +1 -1
  296. package/dist/exports/core/index.d.ts +1 -1
  297. package/dist/exports/core/index.js +1 -1
  298. package/dist/exports/flow/index.d.ts +1 -1
  299. package/dist/exports/flow/index.js +1 -1
  300. package/dist/exports/index.d.ts +1 -1
  301. package/dist/exports/index.js +1 -1
  302. package/dist/exports/variables/index.d.ts +1 -1
  303. package/dist/exports/variables/index.js +1 -1
  304. package/package.json +3 -3
  305. package/src/arguments/generated/_builtin/block_state_keys.ts +232 -0
  306. package/src/arguments/generated/_builtin/block_states.ts +444 -0
  307. package/src/arguments/generated/_dispatcher/block.ts +20 -4
  308. package/src/arguments/generated/_dispatcher/resource.ts +33 -0
  309. package/src/arguments/generated/_registry/advancements.ts +114 -0
  310. package/src/arguments/generated/_registry/atlases.ts +0 -1
  311. package/src/arguments/generated/_registry/attribute_types.ts +1 -0
  312. package/src/arguments/generated/_registry/block_definitions.ts +58 -0
  313. package/src/arguments/generated/_registry/block_predicate_types.ts +1 -0
  314. package/src/arguments/generated/_registry/blocks.ts +58 -0
  315. package/src/arguments/generated/_registry/command_argument_types.ts +2 -0
  316. package/src/arguments/generated/_registry/custom_stats.ts +1 -0
  317. package/src/arguments/generated/_registry/data_component_types.ts +11 -0
  318. package/src/arguments/generated/_registry/decorated_pot_patterns.ts +0 -1
  319. package/src/arguments/generated/_registry/entity_types.ts +3 -0
  320. package/src/arguments/generated/_registry/environment_attributes.ts +3 -0
  321. package/src/arguments/generated/_registry/int_provider_types.ts +1 -0
  322. package/src/arguments/generated/_registry/item_definitions.ts +73 -0
  323. package/src/arguments/generated/_registry/items.ts +73 -0
  324. package/src/arguments/generated/_registry/langs.ts +1 -0
  325. package/src/arguments/generated/_registry/loot_condition_types.ts +1 -2
  326. package/src/arguments/generated/_registry/loot_function_types.ts +0 -1
  327. package/src/arguments/generated/_registry/loot_number_provider_types.ts +3 -0
  328. package/src/arguments/generated/_registry/loot_tables.ts +60 -0
  329. package/src/arguments/generated/_registry/models.ts +170 -2
  330. package/src/arguments/generated/_registry/number_providers.ts +35 -0
  331. package/src/arguments/generated/_registry/outgoing_rpc_methods.ts +4 -0
  332. package/src/arguments/generated/_registry/particle_types.ts +3 -0
  333. package/src/arguments/generated/_registry/post_effects.ts +0 -1
  334. package/src/arguments/generated/_registry/predicates.ts +12 -0
  335. package/src/arguments/generated/_registry/recipe_serializers.ts +1 -0
  336. package/src/arguments/generated/_registry/recipe_types.ts +1 -0
  337. package/src/arguments/generated/_registry/recipes.ts +393 -0
  338. package/src/arguments/generated/_registry/rule_tests.ts +4 -0
  339. package/src/arguments/generated/_registry/sound_events.ts +23 -0
  340. package/src/arguments/generated/_registry/sounds.ts +98 -8
  341. package/src/arguments/generated/_registry/structures.ts +279 -0
  342. package/src/arguments/generated/_registry/tag_blocks.ts +29 -3
  343. package/src/arguments/generated/_registry/tag_damage_types.ts +1 -0
  344. package/src/arguments/generated/_registry/tag_entity_types.ts +1 -0
  345. package/src/arguments/generated/_registry/tag_items.ts +7 -1
  346. package/src/arguments/generated/_registry/tag_worldgen_biomes.ts +18 -0
  347. package/src/arguments/generated/_registry/tag_worldgen_features.ts +10 -0
  348. package/src/arguments/generated/_registry/tag_worldgen_structures.ts +1 -0
  349. package/src/arguments/generated/_registry/textures.ts +101 -18
  350. package/src/arguments/generated/_registry/villager_trades.ts +3 -0
  351. package/src/arguments/generated/_registry/worldgen_biomes.ts +1 -0
  352. package/src/arguments/generated/_registry/worldgen_block_state_provider_types.ts +2 -0
  353. package/src/arguments/generated/_registry/worldgen_carver_types.ts +11 -0
  354. package/src/arguments/generated/_registry/worldgen_carvers.ts +1 -0
  355. package/src/arguments/generated/_registry/worldgen_density_function_types.ts +9 -1
  356. package/src/arguments/generated/_registry/worldgen_density_functions.ts +16 -0
  357. package/src/arguments/generated/_registry/worldgen_feature_types.ts +68 -0
  358. package/src/arguments/generated/_registry/worldgen_features.ts +220 -43
  359. package/src/arguments/generated/_registry/worldgen_foliage_placer_types.ts +1 -0
  360. package/src/arguments/generated/_registry/worldgen_material_condition_types.ts +20 -0
  361. package/src/arguments/generated/_registry/worldgen_material_conditions.ts +8 -11
  362. package/src/arguments/generated/_registry/worldgen_material_rule_types.ts +13 -0
  363. package/src/arguments/generated/_registry/worldgen_material_rules.ts +40 -4
  364. package/src/arguments/generated/_registry/worldgen_noises.ts +1 -0
  365. package/src/arguments/generated/_registry/worldgen_placed_features.ts +11 -0
  366. package/src/arguments/generated/_registry/worldgen_placement_modifier_types.ts +3 -1
  367. package/src/arguments/generated/_registry/worldgen_structure_placements.ts +1 -0
  368. package/src/arguments/generated/_registry/worldgen_structure_sets.ts +1 -0
  369. package/src/arguments/generated/_registry/worldgen_structures.ts +18 -0
  370. package/src/arguments/generated/_registry/worldgen_template_pools.ts +57 -0
  371. package/src/arguments/generated/_registry/worldgen_tree_decorator_types.ts +1 -0
  372. package/src/arguments/generated/_registry/worldgen_trunk_placer_types.ts +1 -0
  373. package/src/arguments/generated/assets/atlas.ts +1 -1
  374. package/src/arguments/generated/assets/equipment.ts +7 -0
  375. package/src/arguments/generated/assets/item_definition.ts +0 -12
  376. package/src/arguments/generated/assets/model.ts +11 -0
  377. package/src/arguments/generated/assets/texture_meta.ts +6 -0
  378. package/src/arguments/generated/data/advancement/predicate.ts +9 -26
  379. package/src/arguments/generated/data/advancement/trigger.ts +29 -13
  380. package/src/arguments/generated/data/advancement.ts +2 -1
  381. package/src/arguments/generated/data/dialog.ts +1 -1
  382. package/src/arguments/generated/data/item_modifier.ts +7 -1
  383. package/src/arguments/generated/data/loot/condition.ts +10 -2
  384. package/src/arguments/generated/data/loot/function.ts +22 -4
  385. package/src/arguments/generated/data/loot.ts +34 -6
  386. package/src/arguments/generated/data/number_provider.ts +26 -4
  387. package/src/arguments/generated/data/predicate.ts +8 -2
  388. package/src/arguments/generated/data/recipe.ts +4 -0
  389. package/src/arguments/generated/data/slot_source.ts +23 -2
  390. package/src/arguments/generated/data/trim.ts +5 -0
  391. package/src/arguments/generated/data/variants/instrument.ts +18 -3
  392. package/src/arguments/generated/data/villager_trade.ts +9 -0
  393. package/src/arguments/generated/data/worldgen/attribute.ts +24 -1
  394. package/src/arguments/generated/data/worldgen/biome.ts +3 -1
  395. package/src/arguments/generated/data/worldgen/carver.ts +34 -7
  396. package/src/arguments/generated/data/worldgen/density_function.ts +41 -4
  397. package/src/arguments/generated/data/worldgen/dimension.ts +1 -2
  398. package/src/arguments/generated/data/worldgen/feature/block_state_provider.ts +21 -1
  399. package/src/arguments/generated/data/worldgen/feature/placement.ts +13 -1
  400. package/src/arguments/generated/data/worldgen/feature/tree.ts +13 -3
  401. package/src/arguments/generated/data/worldgen/feature.ts +59 -65
  402. package/src/arguments/generated/data/worldgen/material_condition.ts +7 -3
  403. package/src/arguments/generated/data/worldgen/material_rule.ts +7 -3
  404. package/src/arguments/generated/data/worldgen/noise_settings.ts +4 -1
  405. package/src/arguments/generated/data/worldgen/processor_list.ts +17 -2
  406. package/src/arguments/generated/data/worldgen.ts +7 -0
  407. package/src/arguments/generated/dispatcher.ts +8 -8
  408. package/src/arguments/generated/registry-sets.ts +14 -8
  409. package/src/arguments/generated/registry.ts +22 -15
  410. package/src/arguments/generated/resource-paths.ts +3 -0
  411. package/src/arguments/generated/resources.ts +4 -0
  412. package/src/arguments/generated/world/block/brewing_stand.ts +15 -3
  413. package/src/arguments/generated/world/block/decorated_pot.ts +7 -0
  414. package/src/arguments/generated/world/block/furnace.ts +9 -5
  415. package/src/arguments/generated/world/block/sign.ts +8 -0
  416. package/src/arguments/generated/world/component/item.ts +58 -8
  417. package/src/arguments/generated/world/component/predicate.ts +1 -1
  418. package/src/arguments/generated/world/entity/boat.ts +13 -0
  419. package/src/arguments/generated/world/entity/mob/player.ts +12 -1
  420. package/src/arguments/generated/world/entity/mob.ts +0 -4
  421. package/src/arguments/generated/world/entity/projectile.ts +2 -0
  422. package/src/arguments/generated/world/entity.ts +4 -0
  423. package/src/commands/commands.ts +5 -0
  424. package/src/commands/implementations/entity/execute.ts +65 -8
  425. package/src/commands/implementations/index.ts +1 -0
  426. package/src/commands/implementations/player/posteffect.ts +75 -0
  427. package/src/commands/implementations/world/item.ts +96 -19
  428. package/src/core/resources/datapack/decoratedPotPattern.ts +47 -0
  429. package/src/core/resources/datapack/index.ts +2 -2
  430. package/src/core/resources/datapack/slotSource.ts +58 -0
  431. package/src/flow/Flow.ts +43 -11
  432. package/src/flow/conditions/command.ts +0 -7
  433. package/src/flow/conditions/condition.ts +0 -9
  434. package/src/flow/conditions/index.ts +3 -0
  435. package/src/flow/conditions/resources/index.ts +1 -0
  436. package/src/flow/conditions/resources/slotSource.ts +21 -0
  437. package/src/flow/conditions/variables/dataPoint.ts +3 -11
  438. package/src/flow/conditions/variables/items.ts +53 -5
  439. package/src/pack/pack.ts +28 -7
  440. package/src/pack/visitors/orTransformationVisitor.ts +37 -311
  441. package/src/sandstone.ts +56 -3
  442. package/src/utils.ts +1 -1
  443. package/src/variables/abstractClasses.ts +0 -10
@@ -1,342 +1,68 @@
1
- import { ExecuteCommandNode, type SubCommand, ReturnCommandNode, ScoreboardCommandNode } from '../../commands'
2
- import { MCFunctionClass, type MCFunctionNode, type Node, type SandstoneCore } from '../../core'
3
- import type { Score } from '../../variables'
4
- import { AndNode, ConditionNode, IfNode, NotNode, OrNode } from '../../flow'
1
+ import { ScoreboardCommandNode } from '../../commands'
2
+ import type { Node } from '../../core'
3
+ import { AndNode, type ConditionNode, IfNode, NotNode, OrNode } from '../../flow'
5
4
  import { GenericSandstoneVisitor } from './visitor'
6
5
 
7
- /**
8
- * Condition node whose `getValue()` returns `"if function <name>"`.
9
- * Used to make an IfNode's existing `IfElseTransformationVisitor` emit
10
- * `execute if function <child> run <body>`, which succeeds exactly when the
11
- * child MCFunction returns a positive value (e.g. via an early `return 1`).
12
- */
13
- class FunctionReturnConditionNode extends ConditionNode {
14
- constructor(
15
- public sandstoneCore: SandstoneCore,
16
- public functionName: string,
17
- ) {
18
- super(sandstoneCore)
19
- }
20
-
21
- getValue = () => `if function ${this.functionName}`
22
- }
23
-
24
6
  export class OrTransformationVisitor extends GenericSandstoneVisitor {
25
7
  visitIfNode = (node_: IfNode) => {
26
- const { preNodes, conditionNode } = this.parseConditionNode(node_.condition, node_.parentMCFunction)
8
+ const { preNodes, conditionNode } = this.parseConditionNode(node_.condition)
27
9
  node_.condition = conditionNode
28
10
  return [...preNodes, this.genericVisit(node_)]
29
11
  }
30
12
 
31
- parseConditionNode = (node: ConditionNode, parentMCFunction?: MCFunctionNode): { preNodes: Node[]; conditionNode: ConditionNode } => {
13
+ parseConditionNode = (node: ConditionNode): { preNodes: Node[]; conditionNode: ConditionNode } => {
32
14
  if (node instanceof OrNode) {
33
- return this.parseOrNode(node, parentMCFunction)
15
+ return this.parseOrNode(node)
34
16
  }
35
17
  if (node instanceof AndNode) {
36
- return this.parseAndNode(node, parentMCFunction)
18
+ return this.parseAndNode(node)
37
19
  }
38
20
  if (node instanceof NotNode) {
39
- return this.parseNotNode(node, parentMCFunction)
21
+ return this.parseNotNode(node)
40
22
  }
41
23
 
42
- // `preNodes` is optional on ConditionNode. Side-effecting conditions (those that
43
- // commit commands at construction, e.g. `data.equals`, `Label.equals`, any
44
- // `CommandCondition`) populate it; pure predicates leave it unset.
45
- return { preNodes: [...(node.preNodes ?? [])], conditionNode: node }
24
+ // Default case, just return the node as is
25
+ return { preNodes: [], conditionNode: node }
46
26
  }
27
+ parseOrNode = (node: OrNode): { preNodes: Node[]; conditionNode: ConditionNode } => {
28
+ const variable = this.core.pack.Variable(undefined, 'condition')
47
29
 
48
- parseOrNode = (node: OrNode, parentMCFunction?: MCFunctionNode): { preNodes: Node[]; conditionNode: ConditionNode } => {
49
- // Single branch: collapse through so the IfNode behaves as if it had the inner condition.
50
- if (node.conditions.length === 1) {
51
- return this.parseConditionNode(node.conditions[0], parentMCFunction)
52
- }
53
-
54
- // Multiple branches: extract to a child MCFunction with execute-if-return-1 short-circuit.
55
- // Inside the child: `execute if <c1> run return 1`, `execute if <c2> run return 1`, ..., `return 0`.
56
- // The first matching branch returns 1 and exits the function immediately; the rest are skipped.
57
- // The caller uses `execute if function <child>` to test whether any branch matched.
58
- const parentName = parentMCFunction?.resource.name ?? '__sandstone'
59
- const orMCFunction = new MCFunctionClass(
60
- this.core,
61
- `${parentName}/or_check`,
62
- {
63
- addToSandstoneCore: true,
64
- creator: 'sandstone',
65
- onConflict: 'rename',
66
- },
67
- )
68
-
69
- this.core.enterMCFunction(orMCFunction)
30
+ const conditionNode = variable.equalTo(1)._toMinecraftCondition()
70
31
 
71
- try {
72
- for (const condition of node.conditions) {
73
- this.pushCheckBranch(orMCFunction.node, this.parseConditionNode(condition, orMCFunction.node), false, new ReturnCommandNode(this.pack, [1]))
74
- }
32
+ const realPreNodes: Node[] = [new ScoreboardCommandNode(this.pack, 'players', 'reset', variable)]
33
+ const orExecuteNodes = node.conditions.map((condition) => {
34
+ const { preNodes, conditionNode: parsedConditionNode } = this.parseConditionNode(condition)
35
+ realPreNodes.push(...preNodes)
75
36
 
76
- // Default return: no branch matched.
77
- orMCFunction.node.body.push(new ReturnCommandNode(this.pack, [0]))
78
- } finally {
79
- this.core.exitMCFunction()
80
- }
37
+ const ifNode = new IfNode(this.core, parsedConditionNode)
38
+ ifNode.body = [new ScoreboardCommandNode(this.pack, 'players', 'set', variable, 1)]
39
+ return ifNode
40
+ })
81
41
 
82
42
  return {
83
- preNodes: [],
84
- conditionNode: new FunctionReturnConditionNode(this.core, orMCFunction.name),
43
+ preNodes: [...realPreNodes, ...orExecuteNodes],
44
+ conditionNode,
85
45
  }
86
46
  }
87
-
88
- parseAndNode = (node: AndNode, parentMCFunction?: MCFunctionNode): { preNodes: Node[]; conditionNode: ConditionNode } => {
89
- // Single branch: collapse through so the IfNode behaves as if it had the inner condition.
90
- if (node.conditions.length === 1) {
91
- return this.parseConditionNode(node.conditions[0], parentMCFunction)
92
- }
93
-
94
- // Parse every condition to learn whether it carries commands (preNodes) that must run
95
- // before the predicate is evaluated. Pure-predicate conditions chain cleanly inside a
96
- // single execute — those are batched. Command-needing conditions force the AND into a
97
- // child MCFunction so commands can run inline before their check.
98
- const parsed = node.conditions.map((condition) => this.parseConditionNode(condition, parentMCFunction))
99
- const anyHasCommands = parsed.some((p) => (p.preNodes ?? []).length > 0)
100
-
101
- if (!anyHasCommands) {
102
- // Inline: pure conditions chain via the existing AndNode behavior. Order is preserved
103
- // by `Array.prototype.map`. No child function needed.
104
- const finalPreNodes: Node[] = []
105
- const conditionNode = new AndNode(
106
- node.sandstoneCore,
107
- parsed.map((p) => {
108
- finalPreNodes.push(...p.preNodes)
109
- return p.conditionNode
110
- }),
111
- )
112
- return { preNodes: finalPreNodes, conditionNode }
113
- }
114
-
115
- // At least one condition needs to run commands. Extract to a child MCFunction:
116
- // - Pure-predicate runs are batched into `execute <pos-c1> <pos-c2> ... run return 1`
117
- // (positive form, NOT flipped — chain fires `return 1` only when the whole batch
118
- // holds; otherwise we fall through to the next check).
119
- // - Command-needing conditions emit their stashed side-effects inline, then a flipped
120
- // `execute if <failure-form> run return 0` so the function returns 0 as soon as a
121
- // side-effecting check fails to hold.
122
- // - Default `return 0` reaches the end only when no command-needing check failed and
123
- // no pure batch all-held; the function returns 1 only via a pure-batch success path,
124
- // signalled to the caller by `execute if function <and>`.
125
- const parentName = parentMCFunction?.resource.name ?? '__sandstone'
126
- const andMCFunction = new MCFunctionClass(
127
- this.core,
128
- `${parentName}/and_check`,
129
- {
130
- addToSandstoneCore: true,
131
- creator: 'sandstone',
132
- onConflict: 'rename',
133
- },
47
+ parseAndNode = (node: AndNode): { preNodes: Node[]; conditionNode: ConditionNode } => {
48
+ const finalPreNodes: Node[] = []
49
+
50
+ const conditionNode = new AndNode(
51
+ node.sandstoneCore,
52
+ node.conditions.map((condition) => {
53
+ const { preNodes, conditionNode } = this.parseConditionNode(condition)
54
+ finalPreNodes.push(...preNodes)
55
+ return conditionNode
56
+ }),
134
57
  )
135
58
 
136
- this.core.enterMCFunction(andMCFunction)
137
-
138
- try {
139
- let batch: { preNodes: Node[][]; conditionNodes: ConditionNode[] } = { preNodes: [], conditionNodes: [] }
140
-
141
- const flushBatch = () => {
142
- if (batch.conditionNodes.length === 0 && batch.preNodes.every((pn) => pn.length === 0)) {
143
- batch = { preNodes: [], conditionNodes: [] }
144
- return
145
- }
146
- // Per-batch tracker-var pattern: reset the tracker, run the chained execute to set
147
- // the tracker to 1 only when the entire batch holds, then check the tracker and
148
- // `return 0` if any condition failed (var != 1). Each batch uses its own tracker var
149
- // so concurrent/sequential batches stay independent.
150
- const tracker = this.core.pack.Variable(undefined, 'and_batch')
151
- this.pushBatchedCheckBranch(
152
- andMCFunction.node,
153
- batch.preNodes.flat(),
154
- batch.conditionNodes,
155
- tracker,
156
- )
157
- batch = { preNodes: [], conditionNodes: [] }
158
- }
159
-
160
- for (const p of parsed) {
161
- if (p.preNodes.length === 0) {
162
- // Pure predicate: extend the current batch (still in declared order).
163
- batch.preNodes.push(p.preNodes)
164
- batch.conditionNodes.push(p.conditionNode)
165
- } else {
166
- // Command-needing condition: flush any pending batch first (preserving order),
167
- // then emit this condition's commands followed by its own fail-fast check.
168
- flushBatch()
169
- this.pushFailFastBranch(
170
- andMCFunction.node,
171
- p,
172
- new ReturnCommandNode(this.pack, [0]),
173
- )
174
- }
175
- }
176
- flushBatch()
177
-
178
- // Default return: every check ran without success.
179
- andMCFunction.node.body.push(new ReturnCommandNode(this.pack, [1]))
180
- } finally {
181
- this.core.exitMCFunction()
182
- }
183
-
184
59
  return {
185
- preNodes: [],
186
- conditionNode: new FunctionReturnConditionNode(this.core, andMCFunction.name),
60
+ preNodes: finalPreNodes,
61
+ conditionNode,
187
62
  }
188
63
  }
189
-
190
- /**
191
- * Pushes a batched check into `targetMCFunction.body` using the tracker-var pattern:
192
- * <preNodes...>
193
- * scoreboard players reset <tracker>
194
- * execute <if|unless> <c1> <if|unless> <c2> ... run scoreboard players set <tracker> 1
195
- * execute unless score <tracker> matches 1 run return 0
196
- *
197
- * Consecutive pure-predicate conditions from the AND list coalesce into a single chained
198
- * execute that sets the tracker to 1 only when the entire batch holds. The trailing
199
- * fail-check returns 0 from the child MCFunction when any condition failed (var != 1).
200
- * Using a tracker var avoids the "execute-chain only fires on ALL-pass" limitation of
201
- * pure MC chains while keeping the body tight.
202
- */
203
- private pushBatchedCheckBranch = (
204
- targetMCFunction: MCFunctionNode,
205
- preNodes: Node[],
206
- conditionNodes: ConditionNode[],
207
- tracker: Score,
208
- ) => {
209
- for (const n of preNodes) {
210
- targetMCFunction.body.push(n)
211
- }
212
-
213
- targetMCFunction.body.push(new ScoreboardCommandNode(this.pack, 'players', 'reset', tracker))
214
-
215
- const args: SubCommand[] = []
216
- for (const c of conditionNodes) {
217
- const condStr = c.getValue(false)
218
- const match = condStr.match(/^(if|unless)\s+([\s\S]+)$/)
219
- if (!match) {
220
- throw new Error(`OrTransformationVisitor: unexpected condition getValue() shape: ${condStr}`)
221
- }
222
- const [, keyword, condBody] = match
223
- args.push([keyword, condBody])
224
- }
225
-
226
- if (args.length === 0) {
227
- // No conditions but preNodes ran — push an unconditional set so the trailing check
228
- // doesn't fire on a stale tracker.
229
- targetMCFunction.body.push(new ScoreboardCommandNode(this.pack, 'players', 'set', tracker, 1))
230
- } else {
231
- const executeNode = new ExecuteCommandNode(this.pack, args, {
232
- isSingleExecute: true,
233
- body: [],
234
- })
235
- targetMCFunction.enterContext(executeNode, false)
236
- executeNode.body = [new ScoreboardCommandNode(this.pack, 'players', 'set', tracker, 1)]
237
- targetMCFunction.body.push(executeNode)
238
- targetMCFunction.exitContext()
239
- }
240
-
241
- const failCheckNode = new ExecuteCommandNode(
242
- this.pack,
243
- [['unless', `score ${tracker} matches 1`]],
244
- {
245
- isSingleExecute: true,
246
- body: [],
247
- },
248
- )
249
- targetMCFunction.enterContext(failCheckNode, false)
250
- failCheckNode.body = [new ReturnCommandNode(this.pack, [0])]
251
- targetMCFunction.body.push(failCheckNode)
252
- targetMCFunction.exitContext()
253
- }
254
-
255
- /**
256
- * Pushes a single check branch into `targetMCFunction.body`:
257
- * <preNodes...> (side-effect commands that must run before checking)
258
- * execute <if|unless> <condBody> run <bodyNode>
259
- *
260
- * When `negated` is false, the helper uses the condition's positive form
261
- * (`getValue(false)`); when true, it uses the failure form (`getValue(true)`).
262
- * For OR semantics: pass `negated=false` with `bodyNode = return 1` (exit on first match).
263
- */
264
- private pushCheckBranch = (
265
- targetMCFunction: MCFunctionNode,
266
- parsed: { preNodes: Node[]; conditionNode: ConditionNode },
267
- negated: boolean,
268
- bodyNode: Node,
269
- ) => {
270
- // Any nested preNodes (e.g. nested or/and reset+score commands, or the inner
271
- // condition's side-effect commands) run inside the child function body in order.
272
- for (const n of parsed.preNodes) {
273
- targetMCFunction.body.push(n)
274
- }
275
-
276
- // Extract the chain keyword ("if" or "unless") and the condition body from `getValue()`.
277
- // SingleConditionNode returns "if <body>"; NotNode-wrapped conditions return "unless <body>".
278
- // AndNode already produces execute-chain strings; a nested FunctionReturnConditionNode
279
- // returns "if function <name>" which fits the same shape.
280
- const condStr = parsed.conditionNode.getValue(negated)
281
- const match = condStr.match(/^(if|unless)\s+([\s\S]+)$/)
282
- if (!match) {
283
- throw new Error(`OrTransformationVisitor: unexpected condition getValue() shape: ${condStr}`)
284
- }
285
- const [, keyword, condBody] = match
286
-
287
- // Construct ExecuteCommandNode for `execute <keyword> <condBody> run <bodyNode>`.
288
- // The constructor's append() calls exitContext, so we first push an empty executeNode
289
- // into the MCFunction context stack (addNode=false) so the exit succeeds.
290
- const executeNode = new ExecuteCommandNode(this.pack, [[keyword, condBody]], {
291
- isSingleExecute: true,
292
- body: [],
293
- })
294
- targetMCFunction.enterContext(executeNode, false)
295
- executeNode.body = [bodyNode]
296
- targetMCFunction.body.push(executeNode)
297
- targetMCFunction.exitContext()
298
- }
299
-
300
- /**
301
- * Pushes a fail-fast check for an AND command-needing condition into `targetMCFunction.body`:
302
- * <preNodes...>
303
- * execute <if|unless> <condBody> run <bodyNode>
304
- *
305
- * Uses the condition's FAILURE form (`getValue(true)`) and flips the leading
306
- * `if`/`unless` keyword so the execute fires when the condition fails to hold. The
307
- * `bodyNode` (typically `return 0`) exits the child MCFunction immediately. When the
308
- * condition holds, the chain doesn't fire and we fall through to the next check.
309
- */
310
- private pushFailFastBranch = (
311
- targetMCFunction: MCFunctionNode,
312
- parsed: { preNodes: Node[]; conditionNode: ConditionNode },
313
- bodyNode: Node,
314
- ) => {
315
- for (const n of parsed.preNodes) {
316
- targetMCFunction.body.push(n)
317
- }
318
-
319
- const condStr = parsed.conditionNode.getValue(true)
320
- const match = condStr.match(/^(if|unless)\s+([\s\S]+)$/)
321
- if (!match) {
322
- throw new Error(`OrTransformationVisitor: unexpected condition getValue() shape: ${condStr}`)
323
- }
324
- // Flip the leading keyword so the execute fires on failure rather than success.
325
- const flippedKeyword = match[1] === 'if' ? 'unless' : 'if'
326
- const condBody = match[2]
327
-
328
- const executeNode = new ExecuteCommandNode(this.pack, [[flippedKeyword, condBody]], {
329
- isSingleExecute: true,
330
- body: [],
331
- })
332
- targetMCFunction.enterContext(executeNode, false)
333
- executeNode.body = [bodyNode]
334
- targetMCFunction.body.push(executeNode)
335
- targetMCFunction.exitContext()
336
- }
337
-
338
- parseNotNode = (node: NotNode, parentMCFunction?: MCFunctionNode): { preNodes: Node[]; conditionNode: ConditionNode } => {
339
- const { preNodes, conditionNode } = this.parseConditionNode(node.condition, parentMCFunction)
64
+ parseNotNode = (node: NotNode): { preNodes: Node[]; conditionNode: ConditionNode } => {
65
+ const { preNodes, conditionNode } = this.parseConditionNode(node.condition)
340
66
  return {
341
67
  preNodes,
342
68
  conditionNode: new NotNode(node.sandstoneCore, conditionNode),
package/src/sandstone.ts CHANGED
@@ -8,6 +8,7 @@ import type {
8
8
  BlockStateDefinitionArguments,
9
9
  ChatTypeClassArguments,
10
10
  DamageTypeClassArguments,
11
+ DecoratedPotPatternClassArguments,
11
12
  DialogClassArguments,
12
13
  EnchantmentClassArguments,
13
14
  EnchantmentProviderClassArguments,
@@ -27,6 +28,7 @@ import type {
27
28
  PredicateClassArguments,
28
29
  RecipeClassArguments,
29
30
  ShaderClassArguments,
31
+ SlotSourceClassArguments,
30
32
  SoundEventArguments,
31
33
  SoundsIndexArguments,
32
34
  SulfurCubeArchetypeClassArguments,
@@ -236,7 +238,7 @@ type PackNonMethodKeys =
236
238
  | 'conditions' | 'objectives' | 'anonymousScoreId' | 'anonymousDataId' | 'constants' | 'tickedLoops'
237
239
  | '__rootObjective' | 'packUid'
238
240
  | 'reset' | 'appendNode' | 'initMCFunction' | 'save' | 'resourceToPath' | 'rootObjective'
239
- | 'setupLantern' | 'dataPack' | 'resourcePack' | 'registerTickedCommands'
241
+ | 'setupLantern' | 'dataPack' | 'resourcePack' | 'registerTickedCommands' | 'Variant'
240
242
  type PackMethodKeys = Exclude<keyof SandstonePack, PackNonMethodKeys>
241
243
 
242
244
  // Creates a proxy that handles both callable methods and object-based properties.
@@ -293,6 +295,7 @@ export const {
293
295
  BannerPattern,
294
296
  ChatType,
295
297
  DamageType,
298
+ DecoratedPotPattern,
296
299
  Dialog,
297
300
  Enchantment,
298
301
  EnchantmentProvider,
@@ -302,6 +305,7 @@ export const {
302
305
  LootTable,
303
306
  Predicate,
304
307
  Recipe,
308
+ SlotSource,
305
309
  SulfurCubeArchetype,
306
310
  Tag,
307
311
  TestEnvironment,
@@ -311,7 +315,6 @@ export const {
311
315
  TrialSpawner,
312
316
  TrimMaterial,
313
317
  TrimPattern,
314
- Variant,
315
318
  VillagerTrade,
316
319
  WorldClock,
317
320
 
@@ -354,7 +357,40 @@ export const {
354
357
  defaultNamespace,
355
358
  } = packMethodsProxy
356
359
 
357
- export * from './variables/nbt/NBTs'
360
+ // Variant needs explicit type annotation due to complex generics
361
+ export const Variant: typeof sandstonePack.Variant = ((...args: unknown[]) =>
362
+ (sandstonePack.Variant as CallableFunction)(...args)) as typeof sandstonePack.Variant
363
+
364
+ // Explicit re-export (not `export *`) so the library builder can hoist
365
+ // these as top-level imports in the bundled main. Wildcard re-exports
366
+ // make it impossible for the bundler to know which names need to be
367
+ // imported into the bundled main's scope.
368
+ export {
369
+ NBTAnyValue,
370
+ NBTByte,
371
+ NBTByteArray,
372
+ NBTClass,
373
+ NBTDouble,
374
+ NBTFloat,
375
+ NBTInt,
376
+ NBTIntArray,
377
+ NBTList,
378
+ NBTLong,
379
+ NBTLongArray,
380
+ NBTPrimitive,
381
+ NBTRange,
382
+ NBTShort,
383
+ NBTString,
384
+ NBTTypedArray,
385
+ NotNBT,
386
+ ResolvedNBT,
387
+ type NBTAllArrays,
388
+ type NBTAllNumberClasses,
389
+ type NBTAllNumbers,
390
+ type NBTAllPrimitives,
391
+ type NBTAllValues,
392
+ type NBTSimpleClasses,
393
+ } from './variables/nbt/NBTs'
358
394
 
359
395
  export type { Condition } from './flow'
360
396
  export {
@@ -376,6 +412,7 @@ export {
376
412
  BannerPatternClass,
377
413
  ChatTypeClass,
378
414
  DamageTypeClass,
415
+ DecoratedPotPatternClass,
379
416
  DialogClass,
380
417
  EnchantmentClass,
381
418
  EnchantmentProviderClass,
@@ -385,6 +422,7 @@ export {
385
422
  LootTableClass,
386
423
  PredicateClass,
387
424
  RecipeClass,
425
+ SlotSourceClass,
388
426
  StructureClass,
389
427
  SulfurCubeArchetypeClass,
390
428
  TagClass,
@@ -667,6 +705,11 @@ type ContentStrategy =
667
705
  * Will override the defined `default` strategy.
668
706
  */
669
707
  | ContentStrategyKind<'recipe', NonNullable<RecipeClassArguments['onConflict']>>
708
+ /**
709
+ * The conflict strategy to use for Slot sources.
710
+ * Will override the defined `default` strategy.
711
+ */
712
+ | ContentStrategyKind<'slot_source', NonNullable<SlotSourceClassArguments['onConflict']>>
670
713
  /**
671
714
  * The conflict strategy to use for Sulfur cube archetypes.
672
715
  * Will override the defined `default` strategy.
@@ -702,6 +745,11 @@ type ContentStrategy =
702
745
  * Will override the defined `default` strategy.
703
746
  */
704
747
  | ContentStrategyKind<'chat_type', NonNullable<ChatTypeClassArguments['onConflict']>>
748
+ /**
749
+ * The conflict strategy to use for Decorated pot patterns.
750
+ * Will override the defined `default` strategy.
751
+ */
752
+ | ContentStrategyKind<'decorated_pot_pattern', NonNullable<DecoratedPotPatternClassArguments['onConflict']>>
705
753
  /**
706
754
  * The conflict strategy to use for Dialogs.
707
755
  * Will override the defined `default` strategy.
@@ -828,6 +876,11 @@ type ContentStrategy =
828
876
  * Will override the defined `default` strategy.
829
877
  */
830
878
  | ContentStrategyKind<'shader', NonNullable<ShaderClassArguments['onConflict']>>
879
+ /**
880
+ * The conflict strategy to use for SoundsIndex.
881
+ * Will override the defined `default` strategy.
882
+ */
883
+ | ContentStrategyKind<'sounds', NonNullable<SoundsIndexArguments['onConflict']>>
831
884
  /**
832
885
  * The conflict strategy to use for Waypoint styles.
833
886
  * Will override the defined `default` strategy.
package/src/utils.ts CHANGED
@@ -723,4 +723,4 @@ export type SmartRange<Min extends number, Max extends number> = (
723
723
  PositiveRange<Min, Max>
724
724
  )
725
725
 
726
- export type AllowConst<T> = T | Readonly<T>
726
+ export type AllowConst<T> = T | Readonly<T>
@@ -1,5 +1,4 @@
1
1
  import type { JSONTextComponent } from 'sandstone/arguments/jsonTextComponent'
2
- import type { Node } from 'sandstone/core'
3
2
  import type { ConditionNode } from '../flow'
4
3
  import type { SelectorClass } from './Selector'
5
4
  import type { NBTSerializable } from 'sandstone/arguments'
@@ -25,15 +24,6 @@ export class ConditionClass {
25
24
  */
26
25
  declare readonly __conditionClassBrand: true
27
26
 
28
- /**
29
- * Optional commands that must run before this condition's predicate is evaluated.
30
- * Conditions that emit side-effect commands at construction (e.g. `data.equals`
31
- * building `execute store result ...`) capture them here so the visitor pass can
32
- * re-emit them at the right location — inline before the IfNode, or inside the
33
- * child MCFunction when AND/OR extracts. Optional; pure predicates leave it unset.
34
- */
35
- preNodes?: Node[]
36
-
37
27
  /**
38
28
  * @internal
39
29
  */