sandstone 1.0.0-beta.4 → 1.0.0

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 (150) hide show
  1. package/README.md +3 -4
  2. package/dist/_internal/index.d.ts +992 -335
  3. package/dist/_internal/index.js +516 -518
  4. package/dist/_internal/index.js.map +1 -1
  5. package/dist/_internal/types/arguments/coords.d.ts +13 -14
  6. package/dist/_internal/types/arguments/generated/_registry/activities.d.ts +1 -1
  7. package/dist/_internal/types/arguments/generated/_registry/atlases.d.ts +1 -1
  8. package/dist/_internal/types/arguments/generated/_registry/attribute_types.d.ts +1 -1
  9. package/dist/_internal/types/arguments/generated/_registry/attributes.d.ts +1 -1
  10. package/dist/_internal/types/arguments/generated/_registry/banner_patterns.d.ts +1 -1
  11. package/dist/_internal/types/arguments/generated/_registry/block_definitions.d.ts +1 -1
  12. package/dist/_internal/types/arguments/generated/_registry/block_entity_types.d.ts +1 -1
  13. package/dist/_internal/types/arguments/generated/_registry/block_types.d.ts +1 -1
  14. package/dist/_internal/types/arguments/generated/_registry/blocks.d.ts +1 -1
  15. package/dist/_internal/types/arguments/generated/_registry/chunk_statuses.d.ts +1 -1
  16. package/dist/_internal/types/arguments/generated/_registry/command_argument_types.d.ts +1 -1
  17. package/dist/_internal/types/arguments/generated/_registry/creative_mode_tabs.d.ts +1 -1
  18. package/dist/_internal/types/arguments/generated/_registry/custom_stats.d.ts +1 -1
  19. package/dist/_internal/types/arguments/generated/_registry/damage_types.d.ts +1 -1
  20. package/dist/_internal/types/arguments/generated/_registry/data_component_predicate_types.d.ts +1 -1
  21. package/dist/_internal/types/arguments/generated/_registry/data_component_types.d.ts +1 -1
  22. package/dist/_internal/types/arguments/generated/_registry/debug_subscriptions.d.ts +1 -1
  23. package/dist/_internal/types/arguments/generated/_registry/decorated_pot_patterns.d.ts +1 -1
  24. package/dist/_internal/types/arguments/generated/_registry/dimension_types.d.ts +1 -1
  25. package/dist/_internal/types/arguments/generated/_registry/enchantment_effect_component_types.d.ts +1 -1
  26. package/dist/_internal/types/arguments/generated/_registry/enchantment_entity_effect_types.d.ts +1 -1
  27. package/dist/_internal/types/arguments/generated/_registry/enchantment_level_based_value_types.d.ts +1 -1
  28. package/dist/_internal/types/arguments/generated/_registry/enchantment_location_based_effect_types.d.ts +1 -1
  29. package/dist/_internal/types/arguments/generated/_registry/enchantment_provider_types.d.ts +1 -1
  30. package/dist/_internal/types/arguments/generated/_registry/enchantment_value_effect_types.d.ts +1 -1
  31. package/dist/_internal/types/arguments/generated/_registry/enchantments.d.ts +1 -1
  32. package/dist/_internal/types/arguments/generated/_registry/equipments.d.ts +1 -1
  33. package/dist/_internal/types/arguments/generated/_registry/float_provider_types.d.ts +1 -1
  34. package/dist/_internal/types/arguments/generated/_registry/fluids.d.ts +1 -1
  35. package/dist/_internal/types/arguments/generated/_registry/game_events.d.ts +1 -1
  36. package/dist/_internal/types/arguments/generated/_registry/game_rules.d.ts +1 -1
  37. package/dist/_internal/types/arguments/generated/_registry/height_provider_types.d.ts +1 -1
  38. package/dist/_internal/types/arguments/generated/_registry/int_provider_types.d.ts +1 -1
  39. package/dist/_internal/types/arguments/generated/_registry/item_definitions.d.ts +1 -1
  40. package/dist/_internal/types/arguments/generated/_registry/items.d.ts +1 -1
  41. package/dist/_internal/types/arguments/generated/_registry/jukebox_songs.d.ts +1 -1
  42. package/dist/_internal/types/arguments/generated/_registry/loot_condition_types.d.ts +1 -1
  43. package/dist/_internal/types/arguments/generated/_registry/loot_function_types.d.ts +1 -1
  44. package/dist/_internal/types/arguments/generated/_registry/loot_nbt_provider_types.d.ts +1 -1
  45. package/dist/_internal/types/arguments/generated/_registry/loot_number_provider_types.d.ts +1 -1
  46. package/dist/_internal/types/arguments/generated/_registry/memory_module_types.d.ts +1 -1
  47. package/dist/_internal/types/arguments/generated/_registry/menus.d.ts +1 -1
  48. package/dist/_internal/types/arguments/generated/_registry/mob_effects.d.ts +1 -1
  49. package/dist/_internal/types/arguments/generated/_registry/models.d.ts +1 -1
  50. package/dist/_internal/types/arguments/generated/_registry/painting_variants.d.ts +1 -1
  51. package/dist/_internal/types/arguments/generated/_registry/particle_types.d.ts +1 -1
  52. package/dist/_internal/types/arguments/generated/_registry/point_of_interest_types.d.ts +1 -1
  53. package/dist/_internal/types/arguments/generated/_registry/post_effects.d.ts +1 -1
  54. package/dist/_internal/types/arguments/generated/_registry/potions.d.ts +1 -1
  55. package/dist/_internal/types/arguments/generated/_registry/recipe_displays.d.ts +1 -1
  56. package/dist/_internal/types/arguments/generated/_registry/recipe_serializers.d.ts +1 -1
  57. package/dist/_internal/types/arguments/generated/_registry/recipe_types.d.ts +1 -1
  58. package/dist/_internal/types/arguments/generated/_registry/recipes.d.ts +1 -1
  59. package/dist/_internal/types/arguments/generated/_registry/slot_displays.d.ts +1 -1
  60. package/dist/_internal/types/arguments/generated/_registry/slot_source_types.d.ts +1 -1
  61. package/dist/_internal/types/arguments/generated/_registry/structures.d.ts +1 -1
  62. package/dist/_internal/types/arguments/generated/_registry/tag_blocks.d.ts +1 -1
  63. package/dist/_internal/types/arguments/generated/_registry/tag_entity_types.d.ts +1 -1
  64. package/dist/_internal/types/arguments/generated/_registry/tag_fluids.d.ts +1 -1
  65. package/dist/_internal/types/arguments/generated/_registry/tag_items.d.ts +1 -1
  66. package/dist/_internal/types/arguments/generated/_registry/tag_point_of_interest_types.d.ts +1 -1
  67. package/dist/_internal/types/arguments/generated/_registry/tag_timelines.d.ts +1 -1
  68. package/dist/_internal/types/arguments/generated/_registry/tag_villager_trades.d.ts +1 -1
  69. package/dist/_internal/types/arguments/generated/_registry/tag_worldgen_structures.d.ts +1 -1
  70. package/dist/_internal/types/arguments/generated/_registry/textures.d.ts +1 -1
  71. package/dist/_internal/types/arguments/generated/_registry/ticket_types.d.ts +1 -1
  72. package/dist/_internal/types/arguments/generated/_registry/trigger_types.d.ts +1 -1
  73. package/dist/_internal/types/arguments/generated/_registry/trim_patterns.d.ts +1 -1
  74. package/dist/_internal/types/arguments/generated/_registry/villager_professions.d.ts +1 -1
  75. package/dist/_internal/types/arguments/generated/_registry/wolf_variants.d.ts +1 -1
  76. package/dist/_internal/types/arguments/generated/_registry/worldgen_biomes.d.ts +1 -1
  77. package/dist/_internal/types/arguments/generated/_registry/worldgen_density_function_types.d.ts +1 -1
  78. package/dist/_internal/types/arguments/generated/_registry/worldgen_features.d.ts +1 -1
  79. package/dist/_internal/types/arguments/generated/_registry/worldgen_material_conditions.d.ts +1 -1
  80. package/dist/_internal/types/arguments/generated/_registry/worldgen_noise_settings.d.ts +1 -1
  81. package/dist/_internal/types/arguments/generated/_registry/worldgen_noises.d.ts +1 -1
  82. package/dist/_internal/types/arguments/generated/_registry/worldgen_placed_features.d.ts +1 -1
  83. package/dist/_internal/types/arguments/generated/_registry/worldgen_placement_modifier_types.d.ts +1 -1
  84. package/dist/_internal/types/arguments/generated/_registry/worldgen_processor_lists.d.ts +1 -1
  85. package/dist/_internal/types/arguments/generated/_registry/worldgen_structure_sets.d.ts +1 -1
  86. package/dist/_internal/types/arguments/generated/_registry/worldgen_structure_types.d.ts +1 -1
  87. package/dist/_internal/types/arguments/generated/_registry/worldgen_structures.d.ts +1 -1
  88. package/dist/_internal/types/arguments/generated/_registry/worldgen_template_pools.d.ts +1 -1
  89. package/dist/_internal/types/arguments/generated/_registry/worldgen_tree_decorator_types.d.ts +1 -1
  90. package/dist/_internal/types/arguments/objective.d.ts +1 -1
  91. package/dist/_internal/types/arguments/range.d.ts +7 -7
  92. package/dist/_internal/types/commands/commands.d.ts +1 -4
  93. package/dist/_internal/types/commands/implementations/entity/execute.d.ts +9 -3
  94. package/dist/_internal/types/commands/implementations/server/gamerule.d.ts +38 -3
  95. package/dist/_internal/types/commands/implementations/server/random.d.ts +3 -3
  96. package/dist/_internal/types/commands/implementations/world/time.d.ts +6 -6
  97. package/dist/_internal/types/core/Macro.d.ts +0 -1
  98. package/dist/_internal/types/core/sandstoneCore.d.ts +8 -0
  99. package/dist/_internal/types/pack/pack.d.ts +2 -3
  100. package/dist/_internal/types/utils.d.ts +79 -0
  101. package/dist/_internal/types/variables/Score.d.ts +20 -4
  102. package/dist/_internal/types/variables/Sleep.d.ts +0 -3
  103. package/dist/_internal/types/variables/nbt/NBTs.d.ts +28 -1
  104. package/dist/browser/package.json +3 -0
  105. package/dist/browser/sandstone.esm.js +61581 -0
  106. package/dist/browser/sandstone.esm.js.map +1 -0
  107. package/dist/exports/commands/index.d.ts +1 -1
  108. package/dist/exports/core/index.d.ts +1 -1
  109. package/dist/exports/index.d.ts +1 -1
  110. package/dist/exports/index.js +1 -1
  111. package/package.json +22 -18
  112. package/src/arguments/coords.ts +11 -14
  113. package/src/arguments/objective.ts +1 -1
  114. package/src/arguments/range.ts +9 -9
  115. package/src/commands/commands.ts +3 -3
  116. package/src/commands/implementations/block/fill.ts +3 -3
  117. package/src/commands/implementations/block/setblock.ts +2 -2
  118. package/src/commands/implementations/entity/clear.ts +5 -1
  119. package/src/commands/implementations/entity/execute.ts +27 -6
  120. package/src/commands/implementations/entity/summon.ts +2 -2
  121. package/src/commands/implementations/player/dialog.ts +2 -2
  122. package/src/commands/implementations/player/give.ts +2 -2
  123. package/src/commands/implementations/player/particle.ts +2 -2
  124. package/src/commands/implementations/server/debug.ts +6 -1
  125. package/src/commands/implementations/server/function.ts +8 -3
  126. package/src/commands/implementations/server/gamerule.ts +75 -3
  127. package/src/commands/implementations/server/random.ts +3 -3
  128. package/src/commands/implementations/server/schedule.ts +10 -2
  129. package/src/commands/implementations/world/data.ts +5 -5
  130. package/src/commands/implementations/world/item.ts +2 -2
  131. package/src/commands/implementations/world/time.ts +5 -5
  132. package/src/core/Macro.ts +0 -2
  133. package/src/core/nodes.ts +17 -1
  134. package/src/core/resources/datapack/mcfunction.ts +12 -5
  135. package/src/core/resources/datapack/structure.ts +1 -0
  136. package/src/core/resources/resourcepack/sound.ts +2 -4
  137. package/src/core/sandstoneCore.ts +17 -0
  138. package/src/flow/conditions/variables/block.ts +2 -2
  139. package/src/flow/loops/for_i.ts +17 -15
  140. package/src/flow/loops/for_of.ts +0 -1
  141. package/src/pack/pack.ts +13 -6
  142. package/src/sandstone.ts +2 -2
  143. package/src/utils.ts +159 -0
  144. package/src/variables/Data.ts +3 -3
  145. package/src/variables/ItemPredicate.ts +2 -2
  146. package/src/variables/Score.ts +18 -10
  147. package/src/variables/Selector.ts +21 -3
  148. package/src/variables/Sleep.ts +2 -10
  149. package/src/variables/Trigger.ts +3 -5
  150. package/src/variables/nbt/NBTs.ts +70 -19
@@ -1 +1 @@
1
- export { AdvancementArgumentsCommand, AdvancementCommand, AdvancementCommandNode, AttributeCommand, AttributeCommandNode, AttributeOperationCommand, BlockEntity, BlockStatic, BossBarCommand, BossBarCommandNode, BossBarSetCommand, ClearCommand, ClearCommandNode, CloneCommand, CloneCommandNode, CloneFromDimensionCommand, CloneModeCommand, CloneOptionsCommand, CloneStrictOptionsCommand, CloneToDimensionCommand, CommandArguments, CommandArgumentsConstructor, CommandNodeConstructor, CommentCommand, CommentCommandNode, DamageCauseCommand, DamageCommand, DamageCommandNode, DamageSourceCommand, DataCommand, DataCommandNode, DataGetCommand, DataMergeCommand, DataModifyCommand, DataModifyFromCommand, DataModifyTypeCommand, DataModifyValuesCommand, DataPackCommand, DataPackCommandNode, DataPackEnableCommand, DataRemoveCommand, DebugCommand, DebugCommandNode, DefaultGameModeCommand, DefaultGameModeCommandNode, DeferredMacroExecuteOptions, DialogCommand, DialogCommandNode, DifficultyCommand, DifficultyCommandNode, EffectCommand, EffectCommandNode, EnchantCommand, EnchantCommandNode, ExecuteCommand, ExecuteCommandNode, ExecuteCommandPart, ExecuteDataArgsCommand, ExecuteFacingEntityCommand, ExecuteIfUnlessCommand, ExecuteItemsCommand, ExecutePositionedCommand, ExecuteRotatedAsCommand, ExecuteStoreArgsCommand, ExecuteStoreCommand, ExperienceCommand, ExperienceCommandNode, FillArgumentsCommand, FillBiomeCommand, FillBiomeCommandNode, FillCommand, FillCommandNode, FillReplaceFilterCommand, FinalCommandOutput, ForceLoadCommand, ForceLoadCommandNode, FunctionCommand, FunctionCommandNode, GameModeCommand, GameModeCommandNode, GameRuleCommand, GameRuleCommandNode, GiveCommand, GiveCommandNode, HelpCommand, HelpCommandNode, ItemCommand, ItemCommandNode, ItemSourceCommand, JFRCommand, JFRCommandNode, KillCommand, KillCommandNode, ListCommand, ListCommandNode, LocateCommand, LocateCommandNode, LootCommand, LootCommandNode, LootSourceCommand, MeCommand, MeCommandNode, ParseBlockState, ParseLiteral, ParticleCommand, ParticleCommandNode, PerfCommand, PerfCommandNode, PlaceCommand, PlaceCommandNode, PlaySoundCommand, PlaySoundCommandNode, RandomCommand, RandomCommandNode, RawCommand, RawCommandNode, RecipeCommand, RecipeCommandNode, RelationType, ReloadCommand, ReloadCommandNode, ReturnArgumentsCommand, ReturnCommand, ReturnCommandNode, ReturnRunCommandNode, RideArgumentsCommand, RideCommand, RideCommandNode, RotateCommand, RotateCommandNode, RotateFacingArguments, SandstoneCommands, SayCommand, SayCommandNode, ScheduleCommand, ScheduleCommandNode, ScheduleType, ScoreboardCommand, ScoreboardCommandNode, ScoreboardObjectivesModifyCommand, SeedCommand, SeedCommandNode, SetBlockCommand, SetBlockCommandNode, SetIdleTimeoutCommand, SetIdleTimeoutCommandNode, SetWorldSpawnCommand, SetWorldSpawnCommandNode, SpawnPointCommand, SpawnPointCommandNode, SpectateCommand, SpectateCommandNode, SpreadPlayersCommand, SpreadPlayersNode, StopSoundCommand, StopSoundCommandNode, StopwatchCommand, StopwatchCommandNode, StoreType, SubCommand, SummonCommand, SummonCommandNode, SwingCommand, SwingCommandNode, TEST_INSTANCE_SELECTOR, TagArgumentsCommand, TagCommand, TagCommandNode, TeamCommand, TeamCommandNode, TeamMessageCommand, TeamMessageCommandNode, TeleportCommand, TeleportCommandNode, TeleportFacingCommand, TellCommand, TellCommandNode, TellRawCommand, TellRawCommandNode, TestCommand, TestCommandNode, TimeArguments, TimeCommand, TimeCommandNode, TitleArgumentsCommand, TitleCommand, TitleCommandNode, TransferCommand, TransferCommandNode, TriggerArgumentsCommand, TriggerCommand, TriggerCommandNode, VersionCommand, VersionCommandNode, WaypointCommand, WaypointCommandNode, WaypointModifyArguments, WeatherCommand, WeatherCommandNode, WorldBorderCommand, WorldBorderNode, blockStateStringifier, componentPatchStringifier, createDeferredMacroExecute } from '../../_internal/index.js'
1
+ export { AdvancementArgumentsCommand, AdvancementCommand, AdvancementCommandNode, AttributeCommand, AttributeCommandNode, AttributeOperationCommand, BlockEntity, BlockStatic, BossBarCommand, BossBarCommandNode, BossBarSetCommand, ClearCommand, ClearCommandNode, CloneCommand, CloneCommandNode, CloneFromDimensionCommand, CloneModeCommand, CloneOptionsCommand, CloneStrictOptionsCommand, CloneToDimensionCommand, CommandArguments, CommandArgumentsConstructor, CommandNodeConstructor, CommentCommand, CommentCommandNode, DamageCauseCommand, DamageCommand, DamageCommandNode, DamageSourceCommand, DataCommand, DataCommandNode, DataGetCommand, DataMergeCommand, DataModifyCommand, DataModifyFromCommand, DataModifyTypeCommand, DataModifyValuesCommand, DataPackCommand, DataPackCommandNode, DataPackEnableCommand, DataRemoveCommand, DebugCommand, DebugCommandNode, DefaultGameModeCommand, DefaultGameModeCommandNode, DeferredMacroExecuteOptions, DialogCommand, DialogCommandNode, DifficultyCommand, DifficultyCommandNode, EffectCommand, EffectCommandNode, EnchantCommand, EnchantCommandNode, ExecuteCommand, ExecuteCommandNode, ExecuteCommandPart, ExecuteDataArgsCommand, ExecuteFacingEntityCommand, ExecuteIfUnlessCommand, ExecuteItemsCommand, ExecutePositionedCommand, ExecuteRotatedAsCommand, ExecuteStoreArgsCommand, ExecuteStoreCommand, ExperienceCommand, ExperienceCommandNode, ExtractNBTIntRange, FillArgumentsCommand, FillBiomeCommand, FillBiomeCommandNode, FillCommand, FillCommandNode, FillReplaceFilterCommand, FinalCommandOutput, ForceLoadCommand, ForceLoadCommandNode, FunctionCommand, FunctionCommandNode, GameModeCommand, GameModeCommandNode, GameRuleCommand, GameRuleCommandNode, GiveCommand, GiveCommandNode, HelpCommand, HelpCommandNode, Inf, ItemCommand, ItemCommandNode, ItemSourceCommand, JFRCommand, JFRCommandNode, KillCommand, KillCommandNode, ListCommand, ListCommandNode, LocateCommand, LocateCommandNode, LootCommand, LootCommandNode, LootSourceCommand, MeCommand, MeCommandNode, NegativeInf, ParseBlockState, ParseLiteral, ParticleCommand, ParticleCommandNode, PerfCommand, PerfCommandNode, PlaceCommand, PlaceCommandNode, PlaySoundCommand, PlaySoundCommandNode, RandomCommand, RandomCommandNode, RangeError, RangedInt, RawCommand, RawCommandNode, RecipeCommand, RecipeCommandNode, RelationType, ReloadCommand, ReloadCommandNode, ReturnArgumentsCommand, ReturnCommand, ReturnCommandNode, ReturnRunCommandNode, RideArgumentsCommand, RideCommand, RideCommandNode, RotateCommand, RotateCommandNode, RotateFacingArguments, SandstoneCommands, SayCommand, SayCommandNode, ScheduleCommand, ScheduleCommandNode, ScheduleType, ScoreboardCommand, ScoreboardCommandNode, ScoreboardObjectivesModifyCommand, SeedCommand, SeedCommandNode, SetBlockCommand, SetBlockCommandNode, SetIdleTimeoutCommand, SetIdleTimeoutCommandNode, SetWorldSpawnCommand, SetWorldSpawnCommandNode, SpawnPointCommand, SpawnPointCommandNode, SpectateCommand, SpectateCommandNode, SpreadPlayersCommand, SpreadPlayersNode, StopSoundCommand, StopSoundCommandNode, StopwatchCommand, StopwatchCommandNode, StoreType, SubCommand, SummonCommand, SummonCommandNode, SwingCommand, SwingCommandNode, TEST_INSTANCE_SELECTOR, TagArgumentsCommand, TagCommand, TagCommandNode, TeamCommand, TeamCommandNode, TeamMessageCommand, TeamMessageCommandNode, TeleportCommand, TeleportCommandNode, TeleportFacingCommand, TellCommand, TellCommandNode, TellRawCommand, TellRawCommandNode, TestCommand, TestCommandNode, TimeArguments, TimeCommand, TimeCommandNode, TitleArgumentsCommand, TitleCommand, TitleCommandNode, TransferCommand, TransferCommandNode, TriggerArgumentsCommand, TriggerCommand, TriggerCommandNode, VersionCommand, VersionCommandNode, WaypointCommand, WaypointCommandNode, WaypointModifyArguments, WeatherCommand, WeatherCommandNode, WorldBorderCommand, WorldBorderNode, blockStateStringifier, componentPatchStringifier, createDeferredMacroExecute } from '../../_internal/index.js'
@@ -1 +1 @@
1
- export { AdvancementClassArguments, AdvancementNode, AtlasClassArguments, AtlasNode, AudibleVariantType, AwaitNode, BannerPatternClassArguments, BannerPatternNode, BlockStateArguments, BlockStateJSON, BlockStateNode, BlockStateType, CallableResourceClass, ChatTypeClassArguments, ChatTypeNode, CommandNode, ConditionalDataPointPickClass, ContainerCommandNode, ContainerNode, CustomResourceClass, CustomResourceClassArguments, CustomResourceNode, DamageTypeClassArguments, DamageTypeNode, DataPointPickClass, DialogClassArguments, DialogNode, EnchantmentClassArguments, EnchantmentNode, EnchantmentProviderClassArguments, EnchantmentProviderNode, EquipmentClassArguments, EquipmentNode, FontArguments, FontNode, HintedTagStringType, InstrumentClassArguments, InstrumentNode, ItemModelBuilder, ItemModelDefinitionClassArguments, ItemModelDefinitionInput, ItemModelDefinitionNode, ItemModifierClassArguments, ItemModifierNode, JukeboxSongClassArguments, JukeboxSongNode, LanguageArguments, LanguageNode, ListResource, LootTableClassArguments, LootTableNode, MCFunctionClassArguments, MCFunctionNode, MacroArgument, MacroLiteral, MacroString, Macroable, ModelClassArguments, ModelNode, Node, ParticleClassArguments, ParticleNode, PlainTextArguments, PlainTextClass, PlainTextNode, PostEffectClassArguments, PostEffectNode, PredicateClassArguments, PredicateNode, RecipeClassArguments, RecipeNode, ResourceClass, ResourceClassArguments, ResourceNode, ResourceNodeConstructor, ResourceNodesMap, SandstoneCore, ShaderClass, ShaderClassArguments, ShaderNode, SoundEventArguments, SoundEventNode, SoundsArguments, SoundsClass, SoundsNode, StructureClassArguments, StructureNode, TagClassArguments, TagNode, TagSingleValue, TagValuesJSON, TestEnvironmentClassArguments, TestEnvironmentNode, TestInstanceClassArguments, TestInstanceNode, TextureArguments, TextureNode, TimelineClassArguments, TimelineNode, TradeSetClassArguments, TradeSetNode, TrialSpawnerClassArguments, TrialSpawnerNode, TrimMaterialClassArguments, TrimMaterialNode, TrimPatternClassArguments, TrimPatternNode, VariantClassArguments, VariantNode, VariantType, VillagerTradeClassArguments, VillagerTradeNode, WaypointStyleClassArguments, WaypointStyleNode, WorldClockClassArguments, WorldClockNode, _RawMCFunctionClass, isMacroArgument, jsonStringify } from '../../_internal/index.js'
1
+ export { AdvancementClassArguments, AdvancementNode, AtlasClassArguments, AtlasNode, AudibleVariantType, AwaitNode, BannerPatternClassArguments, BannerPatternNode, BlockStateArguments, BlockStateJSON, BlockStateNode, BlockStateType, CallableResourceClass, ChatTypeClassArguments, ChatTypeNode, CommandNode, ConditionalDataPointPickClass, ContainerCommandNode, ContainerNode, CustomResourceClass, CustomResourceClassArguments, CustomResourceNode, DamageTypeClassArguments, DamageTypeNode, DataPointPickClass, DialogClassArguments, DialogNode, EnchantmentClassArguments, EnchantmentNode, EnchantmentProviderClassArguments, EnchantmentProviderNode, EquipmentClassArguments, EquipmentNode, FontArguments, FontNode, HintedTagStringType, InstrumentClassArguments, InstrumentNode, ItemModelBuilder, ItemModelDefinitionClassArguments, ItemModelDefinitionInput, ItemModelDefinitionNode, ItemModifierClassArguments, ItemModifierNode, JukeboxSongClassArguments, JukeboxSongNode, LanguageArguments, LanguageNode, ListResource, LootTableClassArguments, LootTableNode, MCFunctionClassArguments, MCFunctionNode, MacroArgument, MacroLiteral, Macroable, ModelClassArguments, ModelNode, Node, ParticleClassArguments, ParticleNode, PlainTextArguments, PlainTextClass, PlainTextNode, PostEffectClassArguments, PostEffectNode, PredicateClassArguments, PredicateNode, RecipeClassArguments, RecipeNode, ResourceClass, ResourceClassArguments, ResourceNode, ResourceNodeConstructor, ResourceNodesMap, SandstoneCore, ShaderClass, ShaderClassArguments, ShaderNode, SoundEventArguments, SoundEventNode, SoundsArguments, SoundsClass, SoundsNode, StructureClassArguments, StructureNode, TagClassArguments, TagNode, TagSingleValue, TagValuesJSON, TestEnvironmentClassArguments, TestEnvironmentNode, TestInstanceClassArguments, TestInstanceNode, TextureArguments, TextureNode, TimelineClassArguments, TimelineNode, TradeSetClassArguments, TradeSetNode, TrialSpawnerClassArguments, TrialSpawnerNode, TrimMaterialClassArguments, TrimMaterialNode, TrimPatternClassArguments, TrimPatternNode, VariantClassArguments, VariantNode, VariantType, VillagerTradeClassArguments, VillagerTradeNode, WaypointStyleClassArguments, WaypointStyleNode, WorldClockClassArguments, WorldClockNode, _RawMCFunctionClass, isMacroArgument, jsonStringify } from '../../_internal/index.js'
@@ -1 +1 @@
1
- export { Advancement, AdvancementClass, Atlas, AtlasClass, BannerPattern, BannerPatternClass, BlockState, BlockStateClass, ChatType, ChatTypeClass, Condition, ContentStrategyKind, DamageType, DamageTypeClass, Data, DataArray, DataIndexMap, DataPointClass, DataVariable, DatapackConfig, Dialog, DialogClass, Enchantment, EnchantmentClass, EnchantmentProvider, EnchantmentProviderClass, Equipment, EquipmentClass, Font, FontClass, Instrument, InstrumentClass, ItemModelDefinition, ItemModelDefinitionClass, ItemModifier, ItemModifierClass, ItemPredicate, JukeboxSong, JukeboxSongClass, Label, LabelClass, Language, LanguageClass, LiteralUnion, LootTable, LootTableClass, MCFunction, MCFunctionClass, Macro, Model, ModelClass, NBT, NBTAllArrays, NBTAllNumberClasses, NBTAllNumbers, NBTAllPrimitives, NBTAllValues, NBTAnyValue, NBTByte, NBTByteArray, NBTClass, NBTDouble, NBTFloat, NBTInt, NBTIntArray, NBTList, NBTLong, NBTLongArray, NBTPrimitive, NBTRange, NBTShort, NBTSimpleClasses, NBTString, NBTTypedArray, NamespacedLiteralUnion, NotNBT, Objective, ObjectiveClass, ParticleClass, ParticleResource, PlainText, PostEffect, PostEffectClass, Predicate, PredicateClass, RawResource, Recipe, RecipeClass, ResolveNBT, ResolveNBTPart, ResourcePackConfig, SandstoneConfig, SandstoneContext, SandstonePack, Score, Selector, SelectorClass, Set, SetType, Shader, SoundEvent, SoundEventClass, StructureClass, Tag, TagClass, TestEnvironment, TestEnvironmentClass, TestInstance, TestInstanceClass, Texture, TextureClass, Timeline, TimelineClass, TradeSet, TradeSetClass, TrialSpawner, TrialSpawnerClass, Trigger, TrimMaterial, TrimMaterialClass, TrimPattern, TrimPatternClass, UUID, UUIDClass, Variable, Variant, VariantClass, VillagerTrade, VillagerTradeClass, WaypointStyle, WaypointStyleClass, WorldClock, WorldClockClass, _, abs, absolute, advancement, attribute, bossbar, clear, clone, comment, createSandstonePack, damage, data, datapack, debug, defaultNamespace, defaultgamemode, depend, dialog, difficulty, effect, enchant, execute, experience, fill, fillbiome, flowVariable, forceload, functionCmd, gamemode, gamerule, getExistingResource, getSandstoneContext, getTempStorage, getVanillaResource, give, hasContext, help, item, jfr, kill, list, loadTags, loc, local, locate, loot, makeCustomResource, mcMetaCache, me, msg, nbtStringifier, particle, perf, place, playsound, random, raw, recipe, rel, relative, reload, resetContext, resetSandstonePack, returnCmd, ride, rotate, sandstonePack, say, schedule, scoreboard, seed, setSandstoneContext, setblock, setidletimeout, setworldspawn, sleep, spawnpoint, spectate, spreadplayers, stopsound, stopwatch, summon, swing, tag, team, teammsg, teleport, tell, tellraw, test, time, title, tm, tp, transfer, trigger, version, w, waypoint, weather, worldborder, xp } from '../_internal/index.js'
1
+ export { Advancement, AdvancementClass, Atlas, AtlasClass, BannerPattern, BannerPatternClass, BlockState, BlockStateClass, ChatType, ChatTypeClass, Condition, ContentStrategyKind, DamageType, DamageTypeClass, Data, DataArray, DataIndexMap, DataPointClass, DataVariable, DatapackConfig, Dialog, DialogClass, Enchantment, EnchantmentClass, EnchantmentProvider, EnchantmentProviderClass, Equipment, EquipmentClass, Font, FontClass, Instrument, InstrumentClass, ItemModelDefinition, ItemModelDefinitionClass, ItemModifier, ItemModifierClass, ItemPredicate, JukeboxSong, JukeboxSongClass, Label, LabelClass, Language, LanguageClass, LiteralUnion, LootTable, LootTableClass, MCFunction, MCFunctionClass, Macro, Model, ModelClass, NBT, NBTAllArrays, NBTAllNumberClasses, NBTAllNumbers, NBTAllPrimitives, NBTAllValues, NBTAnyValue, NBTByte, NBTByteArray, NBTClass, NBTDouble, NBTFloat, NBTInt, NBTIntArray, NBTList, NBTLong, NBTLongArray, NBTPrimitive, NBTRange, NBTShort, NBTSimpleClasses, NBTString, NBTTypedArray, NamespacedLiteralUnion, NotNBT, Objective, ObjectiveClass, ParticleClass, ParticleResource, PlainText, PostEffect, PostEffectClass, Predicate, PredicateClass, RawResource, Recipe, RecipeClass, ResolveNBT, ResolveNBTPart, ResolvedNBT, ResourcePackConfig, SandstoneConfig, SandstoneContext, SandstonePack, Score, Selector, SelectorClass, Set, SetType, Shader, SoundEvent, SoundEventClass, StructureClass, Tag, TagClass, TestEnvironment, TestEnvironmentClass, TestInstance, TestInstanceClass, Texture, TextureClass, Timeline, TimelineClass, TradeSet, TradeSetClass, TrialSpawner, TrialSpawnerClass, Trigger, TrimMaterial, TrimMaterialClass, TrimPattern, TrimPatternClass, UUID, UUIDClass, Variable, Variant, VariantClass, VillagerTrade, VillagerTradeClass, WaypointStyle, WaypointStyleClass, WorldClock, WorldClockClass, _, abs, absolute, advancement, attribute, bossbar, clear, clone, comment, createSandstonePack, damage, data, datapack, debug, defaultNamespace, defaultgamemode, depend, dialog, difficulty, effect, enchant, execute, experience, fill, fillbiome, flowVariable, forceload, functionCmd, gamemode, gamerule, getExistingResource, getSandstoneContext, getTempStorage, getVanillaResource, give, hasContext, help, item, jfr, kill, list, loadTags, loc, local, locate, loot, makeCustomResource, mcMetaCache, me, msg, nbtResolver, particle, perf, place, playsound, random, randomUUID, raw, recipe, rel, relative, reload, resetContext, resetSandstonePack, returnCmd, ride, rotate, sandstonePack, say, schedule, scoreboard, seed, setSandstoneContext, setblock, setidletimeout, setworldspawn, sleep, spawnpoint, spectate, spreadplayers, stopsound, stopwatch, summon, swing, tag, team, teammsg, teleport, tell, tellraw, test, time, title, tm, tp, transfer, trigger, version, w, waypoint, weather, worldborder, xp } from '../_internal/index.js'
@@ -1 +1 @@
1
- export { Advancement, AdvancementClass, Atlas, AtlasClass, BannerPattern, BannerPatternClass, BlockState, BlockStateClass, ChatType, ChatTypeClass, DamageType, DamageTypeClass, Data, DataArray, DataIndexMap, DataPointClass, DataVariable, Dialog, DialogClass, Enchantment, EnchantmentClass, EnchantmentProvider, EnchantmentProviderClass, Equipment, EquipmentClass, Font, FontClass, Instrument, InstrumentClass, ItemModelDefinition, ItemModelDefinitionClass, ItemModifier, ItemModifierClass, ItemPredicate, JukeboxSong, JukeboxSongClass, Label, LabelClass, Language, LanguageClass, LootTable, LootTableClass, MCFunction, MCFunctionClass, Macro, Model, ModelClass, NBT, NBTAnyValue, NBTByte, NBTByteArray, NBTClass, NBTDouble, NBTFloat, NBTInt, NBTIntArray, NBTLong, NBTLongArray, NBTPrimitive, NBTShort, NBTString, NBTTypedArray, NotNBT, Objective, ObjectiveClass, ParticleClass, ParticleResource, PlainText, PostEffect, PostEffectClass, Predicate, PredicateClass, RawResource, Recipe, RecipeClass, ResolveNBT, ResolveNBTPart, SandstonePack, Score, Selector, SelectorClass, Set, Shader, SoundEvent, SoundEventClass, StructureClass, Tag, TagClass, TestEnvironment, TestEnvironmentClass, TestInstance, TestInstanceClass, Texture, TextureClass, Timeline, TimelineClass, TradeSet, TradeSetClass, TrialSpawner, TrialSpawnerClass, Trigger, TrimMaterial, TrimMaterialClass, TrimPattern, TrimPatternClass, UUID, UUIDClass, Variable, Variant, VariantClass, VillagerTrade, VillagerTradeClass, WaypointStyle, WaypointStyleClass, WorldClock, WorldClockClass, _, abs, absolute, advancement, attribute, bossbar, clear, clone, comment, createSandstonePack, damage, data, datapack, debug, defaultNamespace, defaultgamemode, depend, dialog, difficulty, effect, enchant, execute, experience, fill, fillbiome, flowVariable, forceload, functionCmd, gamemode, gamerule, getExistingResource, getSandstoneContext, getTempStorage, getVanillaResource, give, hasContext, help, item, jfr, kill, list, loadTags, loc, local, locate, loot, makeCustomResource, mcMetaCache, me, msg, nbtStringifier, particle, perf, place, playsound, random, raw, recipe, rel, relative, reload, resetContext, resetSandstonePack, returnCmd, ride, rotate, sandstonePack, say, schedule, scoreboard, seed, setSandstoneContext, setblock, setidletimeout, setworldspawn, sleep, spawnpoint, spectate, spreadplayers, stopsound, stopwatch, summon, swing, tag, team, teammsg, teleport, tell, tellraw, test, time, title, tm, tp, transfer, trigger, version, w, waypoint, weather, worldborder, xp } from '../_internal/index.js'
1
+ export { Advancement, AdvancementClass, Atlas, AtlasClass, BannerPattern, BannerPatternClass, BlockState, BlockStateClass, ChatType, ChatTypeClass, DamageType, DamageTypeClass, Data, DataArray, DataIndexMap, DataPointClass, DataVariable, Dialog, DialogClass, Enchantment, EnchantmentClass, EnchantmentProvider, EnchantmentProviderClass, Equipment, EquipmentClass, Font, FontClass, Instrument, InstrumentClass, ItemModelDefinition, ItemModelDefinitionClass, ItemModifier, ItemModifierClass, ItemPredicate, JukeboxSong, JukeboxSongClass, Label, LabelClass, Language, LanguageClass, LootTable, LootTableClass, MCFunction, MCFunctionClass, Macro, Model, ModelClass, NBT, NBTAnyValue, NBTByte, NBTByteArray, NBTClass, NBTDouble, NBTFloat, NBTInt, NBTIntArray, NBTLong, NBTLongArray, NBTPrimitive, NBTShort, NBTString, NBTTypedArray, NotNBT, Objective, ObjectiveClass, ParticleClass, ParticleResource, PlainText, PostEffect, PostEffectClass, Predicate, PredicateClass, RawResource, Recipe, RecipeClass, ResolveNBT, ResolveNBTPart, ResolvedNBT, SandstonePack, Score, Selector, SelectorClass, Set, Shader, SoundEvent, SoundEventClass, StructureClass, Tag, TagClass, TestEnvironment, TestEnvironmentClass, TestInstance, TestInstanceClass, Texture, TextureClass, Timeline, TimelineClass, TradeSet, TradeSetClass, TrialSpawner, TrialSpawnerClass, Trigger, TrimMaterial, TrimMaterialClass, TrimPattern, TrimPatternClass, UUID, UUIDClass, Variable, Variant, VariantClass, VillagerTrade, VillagerTradeClass, WaypointStyle, WaypointStyleClass, WorldClock, WorldClockClass, _, abs, absolute, advancement, attribute, bossbar, clear, clone, comment, createSandstonePack, damage, data, datapack, debug, defaultNamespace, defaultgamemode, depend, dialog, difficulty, effect, enchant, execute, experience, fill, fillbiome, flowVariable, forceload, functionCmd, gamemode, gamerule, getExistingResource, getSandstoneContext, getTempStorage, getVanillaResource, give, hasContext, help, item, jfr, kill, list, loadTags, loc, local, locate, loot, makeCustomResource, mcMetaCache, me, msg, nbtResolver, particle, perf, place, playsound, random, randomUUID, raw, recipe, rel, relative, reload, resetContext, resetSandstonePack, returnCmd, ride, rotate, sandstonePack, say, schedule, scoreboard, seed, setSandstoneContext, setblock, setidletimeout, setworldspawn, sleep, spawnpoint, spectate, spreadplayers, stopsound, stopwatch, summon, swing, tag, team, teammsg, teleport, tell, tellraw, test, time, title, tm, tp, transfer, trigger, version, w, waypoint, weather, worldborder, xp } from '../_internal/index.js'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sandstone",
3
3
  "description": "Sandstone, a Typescript library for Minecraft datapacks & resource packs.",
4
- "version": "1.0.0-beta.4",
4
+ "version": "1.0.0",
5
5
  "contributors": [
6
6
  {
7
7
  "name": "TheMrZZ - Florian ERNST",
@@ -17,34 +17,33 @@
17
17
  "url": "https://github.com/sandstone-mc/sandstone/issues"
18
18
  },
19
19
  "dependencies": {
20
- "@sinclair/typebox": "^0.31.21",
20
+ "@sinclair/typebox": "^0.31.28",
21
21
  "@smithed-mc/data-types": "^0.1.2",
22
22
  "@types/nearley": "^2.11.5",
23
- "@types/node": "24",
24
- "@typescript/analyze-trace": "^0.4.0",
25
- "adm-zip": "^0.5.10",
26
- "fs-extra": "^11.1.1",
27
- "lodash": "^4.17.21",
28
- "nanoid": "^3.3.6",
23
+ "@types/node": "^24.13.2",
24
+ "adm-zip": "^0.5.17",
25
+ "fs-extra": "^11.3.5",
26
+ "lodash": "^4.18.1",
29
27
  "nearley": "^2.20.1",
30
28
  "node-fetch": "^3.3.2",
31
- "prismarine-nbt": "^2.2.1",
32
- "semver": "^7.5.4"
29
+ "prismarine-nbt": "^2.8.0",
30
+ "semver": "^7.8.5"
33
31
  },
34
32
  "devDependencies": {
35
33
  "@ampproject/remapping": "^2.3.0",
36
34
  "@parcel/watcher": "^2.5.6",
37
35
  "@sandstone-mc/mcdoc-ts-generator": "^0.2.0",
38
- "@stylistic/eslint-plugin": "^5.7.1",
39
- "@types/adm-zip": "^0.5.2",
40
- "@types/fs-extra": "^11.0.2",
41
- "@types/lodash": "^4.14.199",
42
- "@types/semver": "^7.5.3",
43
- "@typescript/native-preview": "^7.0.0-dev.20260212.1",
36
+ "@stylistic/eslint-plugin": "^5.10.0",
37
+ "@types/adm-zip": "^0.5.8",
38
+ "@types/fs-extra": "^11.0.4",
39
+ "@types/lodash": "^4.17.24",
40
+ "@types/semver": "^7.7.1",
41
+ "@typescript/analyze-trace": "^0.11.1",
42
+ "@typescript/native-preview": "^7.0.0-dev.20260628.1",
44
43
  "magic-string": "^0.30.21",
45
- "oxlint": "^1.42.0",
44
+ "oxlint": "^1.71.0",
46
45
  "source-map-js": "^1.2.1",
47
- "typescript": "^5.9.3"
46
+ "typescript": "^6.0.3"
48
47
  },
49
48
  "directories": {
50
49
  "lib": "src"
@@ -90,6 +89,11 @@
90
89
  "import": "./dist/exports/index.js",
91
90
  "default": "./dist/exports/index.js"
92
91
  },
92
+ "./browser": {
93
+ "types": "./dist/exports/index.d.ts",
94
+ "import": "./dist/browser/sandstone.esm.js",
95
+ "default": "./dist/browser/sandstone.esm.js"
96
+ },
93
97
  "./arguments": {
94
98
  "types": "./dist/exports/arguments/index.d.ts",
95
99
  "import": "./dist/exports/arguments/index.js",
@@ -1,28 +1,25 @@
1
- import type { Macroable, MacroString } from 'sandstone/core'
1
+ import type { Macroable } from 'sandstone/core'
2
2
  import type { VectorClass } from 'sandstone/variables'
3
3
 
4
- type AbsoluteFloat<MACRO extends boolean = false> = MacroString<`${number}`, MACRO>
5
- type RelativeFloat<MACRO extends boolean = false> = `~${MacroString<number | '', MACRO>}`
6
- type LocalFloat<MACRO extends boolean = false> = `^${MacroString<number | '', MACRO>}`
7
- type AbsoluteOrRelativeFloat<MACRO extends boolean = false> = AbsoluteFloat<MACRO> | RelativeFloat<MACRO>
4
+ type AbsoluteFloat<MACRO extends boolean = false> = Macroable<`${number}` | number, MACRO>
5
+ type RelativeFloat<MACRO extends boolean = false> = Macroable<`~${number | ''}`, MACRO>
6
+ type LocalFloat<MACRO extends boolean = false> = Macroable<`^${number | ''}`, MACRO>
7
+ type AbsoluteOrRelativeFloat<MACRO extends boolean = false> = AbsoluteFloat<MACRO> | RelativeFloat
8
8
 
9
- type AbsoluteVec3<MACRO extends boolean = false> =
10
- `${AbsoluteFloat<MACRO>} ${AbsoluteFloat<MACRO>} ${AbsoluteFloat<MACRO>}`
9
+ type AbsoluteVec3<MACRO extends boolean = false> = Macroable<`${number} ${number} ${number}`, MACRO>
11
10
 
12
11
  type AbsoluteOrRelativeVec3<MACRO extends boolean = false> =
13
- `${AbsoluteOrRelativeFloat<MACRO>} ${AbsoluteOrRelativeFloat<MACRO>} ${AbsoluteOrRelativeFloat<MACRO>}`
14
- type LocalVec3<MACRO extends boolean = false> = `${LocalFloat<MACRO>} ${LocalFloat<MACRO>} ${LocalFloat<MACRO>}`
12
+ Macroable<`${number | RelativeFloat} ${number | RelativeFloat} ${number | RelativeFloat}`, MACRO>
13
+ type LocalVec3<MACRO extends boolean = false> = Macroable<`${LocalFloat} ${LocalFloat} ${LocalFloat}`, MACRO>
15
14
 
16
15
  type AbsoluteOrRelativeVec2<MACRO extends boolean = false> =
17
- `${AbsoluteOrRelativeFloat<MACRO>} ${AbsoluteOrRelativeFloat<MACRO>}`
18
- type LocalVec2<MACRO extends boolean = false> = `${LocalFloat<MACRO>} ${LocalFloat<MACRO>}`
19
-
20
- type AbsoluteVectorArrayComponent<MACRO extends boolean = false> = Macroable<AbsoluteFloat<MACRO> | number, MACRO>
16
+ Macroable<`${AbsoluteOrRelativeFloat} ${AbsoluteOrRelativeFloat}`, MACRO>
17
+ type LocalVec2<MACRO extends boolean = false> = Macroable<`${LocalFloat} ${LocalFloat}`, MACRO>
21
18
 
22
19
  type VectorArrayComponent<MACRO extends boolean = false> = Macroable<AbsoluteOrRelativeFloat<MACRO> | LocalFloat<MACRO> | number, MACRO>
23
20
 
24
21
  export type AbsoluteCoordinates<MACRO extends boolean = false> =
25
- | [x: AbsoluteVectorArrayComponent<MACRO>, y: AbsoluteVectorArrayComponent<MACRO>, z: AbsoluteVectorArrayComponent<MACRO>]
22
+ | [x: AbsoluteFloat<MACRO>, y: AbsoluteFloat<MACRO>, z: AbsoluteFloat<MACRO>]
26
23
  | VectorClass<[string, string, string]>
27
24
  | AbsoluteVec3<MACRO>
28
25
 
@@ -21,7 +21,7 @@ export type OBJECTIVE_CRITERIA = (
21
21
  'trigger' |
22
22
  'xp' |
23
23
  `killedByTeam.${DyeColor}` |
24
- `teamKill.${DyeColor}` |
24
+ `teamkill.${DyeColor}` |
25
25
  `minecraft.${'broken' | 'crafted' | 'dropped' | 'picked_up' | 'used'}:minecraft.${SetType<typeof ITEMS_SET>}` |
26
26
  `minecraft.custom:minecraft.${SetType<typeof CUSTOM_STATS_SET>}` |
27
27
  `minecraft.${'killed' | 'killed_by'}:minecraft.${SetType<typeof ENTITY_TYPES_SET>}` |
@@ -1,12 +1,12 @@
1
- import type { MacroString } from 'sandstone/core'
1
+ import type { Macroable } from 'sandstone/core'
2
2
 
3
3
  export type Range<MACRO extends boolean = false> =
4
- | MacroString<number, MACRO>
4
+ | Macroable<number, MACRO>
5
5
  | `${number}`
6
- | `${MacroString<number, MACRO>}..`
7
- | `${MacroString<number, MACRO>}..${MacroString<number, MACRO>}`
8
- | `..${MacroString<number, MACRO>}`
9
- | [min: MacroString<number, MACRO>, max: MacroString<number, MACRO>]
10
- | [min: MacroString<number, MACRO>, max: null | undefined]
11
- | [min: null | undefined, max: MacroString<number, MACRO>]
12
- | [min: MacroString<number, MACRO>]
6
+ | `${number}..`
7
+ | `${number}..${number}`
8
+ | `..${number}`
9
+ | [min: Macroable<number, MACRO>, max: Macroable<number, MACRO>]
10
+ | [min: Macroable<number, MACRO>, max: null | undefined]
11
+ | [min: null | undefined, max: Macroable<number, MACRO>]
12
+ | [min: Macroable<number, MACRO>]
@@ -1,6 +1,4 @@
1
1
  import type { SandstonePack } from 'sandstone/pack'
2
- import { PlaceCommand } from './implementations/block/place'
3
- import { DamageCommand } from './implementations/entity/damage'
4
2
  import {
5
3
  AdvancementCommand,
6
4
  AttributeCommand,
@@ -8,6 +6,7 @@ import {
8
6
  ClearCommand,
9
7
  CloneCommand,
10
8
  CommentCommand,
9
+ DamageCommand,
11
10
  DataCommand,
12
11
  DataPackCommand,
13
12
  DebugCommand,
@@ -35,7 +34,9 @@ import {
35
34
  MeCommand,
36
35
  ParticleCommand,
37
36
  PerfCommand,
37
+ PlaceCommand,
38
38
  PlaySoundCommand,
39
+ RandomCommand,
39
40
  RawCommand,
40
41
  RecipeCommand,
41
42
  ReloadCommand,
@@ -72,7 +73,6 @@ import {
72
73
  WeatherCommand,
73
74
  WorldBorderCommand,
74
75
  } from './implementations'
75
- import { RandomCommand } from './implementations/server/random'
76
76
 
77
77
  function bind<CLASS, METHOD extends string>(pack: SandstonePack, _class: CLASS, method: METHOD) {
78
78
  /* @ts-ignore */
@@ -1,7 +1,7 @@
1
1
  import type { Coordinates, NBTObject, SymbolBlock, SymbolMcdocBlockStates } from 'sandstone/arguments'
2
2
  import type { Macroable, TagClass } from 'sandstone/core'
3
3
  import { CommandNode } from 'sandstone/core/nodes'
4
- import { coordinatesParser, nbtStringifier } from 'sandstone/variables'
4
+ import { coordinatesParser, nbtResolver } from 'sandstone/variables'
5
5
  import { CommandArguments, type FinalCommandOutput } from '../../helpers'
6
6
  import type { Registry } from 'sandstone/arguments/generated/registry'
7
7
  import { blockStateStringifier, type BlockEntity, type BlockStatic, type ParseBlockState } from './setblock'
@@ -82,7 +82,7 @@ export class FillCommand<MACRO extends boolean> extends CommandArguments {
82
82
  nbt?: NBTObject,
83
83
  ): FillArgumentsCommand<MACRO> {
84
84
  const stateStr = state && Object.keys(state).length > 0 ? blockStateStringifier(state) : ''
85
- const nbtStr = nbt ? nbtStringifier(nbt) : ''
85
+ const nbtStr = nbt ? nbtResolver(nbt).toString() : ''
86
86
  const blockArg = `${block}${stateStr}${nbtStr}`
87
87
 
88
88
  return this.subCommand([coordinatesParser(from), coordinatesParser(to), blockArg], FillArgumentsCommand<MACRO>, true)
@@ -236,7 +236,7 @@ export class FillArgumentsCommand<MACRO extends boolean> extends CommandArgument
236
236
  return this.finalCommand(['replace'])
237
237
  }
238
238
  const stateStr = filterState && Object.keys(filterState).length > 0 ? blockStateStringifier(filterState) : ''
239
- const nbtStr = filterNbt ? nbtStringifier(filterNbt) : ''
239
+ const nbtStr = filterNbt ? nbtResolver(filterNbt).toString() : ''
240
240
  return this.subCommand(['replace', `${filter}${stateStr}${nbtStr}`], FillReplaceFilterCommand, true)
241
241
  }
242
242
  }
@@ -1,7 +1,7 @@
1
1
  import type { Coordinates, NBTObject, SymbolBlock, SymbolMcdocBlockStates } from 'sandstone/arguments'
2
2
  import type { Macroable } from 'sandstone/core'
3
3
  import { CommandNode } from 'sandstone/core/nodes'
4
- import { coordinatesParser, nbtStringifier } from 'sandstone/variables'
4
+ import { coordinatesParser, nbtResolver } from 'sandstone/variables'
5
5
  import type { FinalCommandOutput } from '../../helpers'
6
6
  import { CommandArguments } from '../../helpers'
7
7
  import type { Registry } from 'sandstone/arguments/generated/registry'
@@ -158,7 +158,7 @@ export class SetBlockCommand<MACRO extends boolean> extends CommandArguments {
158
158
  : blockStateStringifier(arg3 as any as Record<string, string | number | boolean>)
159
159
  const nbt = typeof arg4 === 'string' || arg4 === undefined ?
160
160
  ''
161
- : nbtStringifier(arg4 as any as NBTObject)
161
+ : nbtResolver(arg4 as any as NBTObject).toString()
162
162
  const setblockType = typeof arg4 === 'string' ? arg4 : arg5
163
163
 
164
164
  return this.finalCommand([coordinatesParser(pos), `${block}${state}${nbt}`, setblockType])
@@ -1,5 +1,6 @@
1
1
  import type { MultiplePlayersArgumentOf } from 'sandstone/arguments'
2
2
  import type { Macroable, TagClass } from 'sandstone/core'
3
+ import { isMacroArgument } from 'sandstone/core/Macro'
3
4
  import { CommandNode } from 'sandstone/core/nodes'
4
5
  import type { ItemPredicateClass } from 'sandstone/variables/ItemPredicate'
5
6
  import { targetParser } from 'sandstone/variables/parsers'
@@ -97,6 +98,9 @@ export class ClearCommand<MACRO extends boolean> extends CommandArguments {
97
98
  itemOrPredicate?: Macroable<Registry['minecraft:item'] | TagClass<'item'>, MACRO> | ItemPredicateClass,
98
99
  maxCount?: Macroable<number, MACRO>,
99
100
  ) {
100
- return this.finalCommand([targetParser(targets), `${itemOrPredicate}`, maxCount])
101
+ const itemArg = isMacroArgument(this.sandstoneCore, itemOrPredicate)
102
+ ? itemOrPredicate
103
+ : `${itemOrPredicate}`
104
+ return this.finalCommand([targetParser(targets), itemArg, maxCount])
101
105
  }
102
106
  }
@@ -33,7 +33,7 @@ import type { DataPointClass } from 'sandstone/variables/Data'
33
33
  import type { ObjectiveClass } from 'sandstone/variables/Objective'
34
34
  import type { ItemPredicateClass } from 'sandstone/variables/ItemPredicate'
35
35
  import { coordinatesParser, rangeParser, rotationParser, targetParser } from 'sandstone/variables/parsers'
36
- import { nbtStringifier } from 'sandstone/variables'
36
+ import { nbtResolver } from 'sandstone/variables'
37
37
  import type { Score } from 'sandstone/variables/Score'
38
38
  import { CommandArguments, FinalCommandOutput } from '../../helpers'
39
39
  import { FunctionCommandNode } from '../server/function'
@@ -208,6 +208,10 @@ export class ExecuteCommandNode extends ContainerCommandNode<SubCommand[]> {
208
208
  }
209
209
 
210
210
  createMCFunction = (currentMCFunction: MCFunctionNode | null) => {
211
+ if (this.createdMCFunction) {
212
+ // This is sus, but was needed. Ideally createMCFunction wouldn't be called multiple times at all.
213
+ return { node: this as ExecuteCommandNode, mcFunction: this.createdMCFunction.node }
214
+ }
211
215
  if (this.isSingleExecute || !currentMCFunction) {
212
216
  return { node: this as ExecuteCommandNode }
213
217
  }
@@ -297,10 +301,27 @@ export class ExecuteStoreArgsCommand<MACRO extends boolean> extends ExecuteComma
297
301
  *
298
302
  * @param objective A scoreboard objective.
299
303
  */
300
- score = (
301
- targets: Macroable<MultipleEntitiesArgument<MACRO>, MACRO>,
302
- objective: Macroable<ObjectiveArgument, MACRO>
303
- ) => this.nestedExecute(['score', targetParser(targets), objective])
304
+ score(
305
+ targets: Macroable<MultipleEntitiesArgument<MACRO>, MACRO>,
306
+ objective: Macroable<ObjectiveArgument, MACRO>,
307
+ ): ExecuteCommand<MACRO>
308
+
309
+ /**
310
+ * Overrides the given score with the final command's return value.
311
+ *
312
+ * @param score The score to override.
313
+ */
314
+ score(score: Score): ExecuteCommand<MACRO>
315
+
316
+ score(...args: any[]) {
317
+ const finalArgs: SubCommand = ['score']
318
+ if (isScore(args[0])) {
319
+ finalArgs.push(args[0].target, args[0].objective.name)
320
+ } else {
321
+ finalArgs.push(targetParser(args[0]), args[1])
322
+ }
323
+ return this.nestedExecute(finalArgs)
324
+ }
304
325
 
305
326
  /**
306
327
  * Uses the `path` within storage `target` to store the return value in.
@@ -551,7 +572,7 @@ export class ExecuteIfUnlessCommand<MACRO extends boolean> extends ExecuteComman
551
572
  const stateStr = state && typeof state === 'object' && Object.keys(state).length > 0
552
573
  ? blockStateStringifier(state as Record<string, string | number | boolean>)
553
574
  : ''
554
- const nbtStr = nbt ? nbtStringifier(nbt as NBTObject) : ''
575
+ const nbtStr = nbt ? nbtResolver(nbt as NBTObject).toString() : ''
555
576
  return this.nestedExecute(['block', coordinatesParser(pos), `${block}${stateStr}${nbtStr}`], true)
556
577
  }
557
578
 
@@ -1,7 +1,7 @@
1
1
  import type { Coordinates, RootNBT, SymbolEntity } from 'sandstone/arguments'
2
2
  import type { Macroable } from 'sandstone/core'
3
3
  import { CommandNode } from 'sandstone/core/nodes'
4
- import { nbtStringifier } from 'sandstone/variables/nbt/NBTs'
4
+ import { nbtResolver } from 'sandstone/variables/nbt/NBTs'
5
5
  import { coordinatesParser } from 'sandstone/variables/parsers'
6
6
  import { CommandArguments } from '../../helpers'
7
7
  import type { Registry } from 'sandstone/arguments/generated/registry'
@@ -65,7 +65,7 @@ export class SummonCommand<MACRO extends boolean> extends CommandArguments {
65
65
  args.push(coordinatesParser(pos))
66
66
  }
67
67
  if (nbt !== undefined) {
68
- args.push(nbtStringifier(nbt as RootNBT))
68
+ args.push(nbtResolver(nbt as RootNBT))
69
69
  }
70
70
  return this.finalCommand(args)
71
71
  }
@@ -4,7 +4,7 @@ import type { DIALOGS } from 'sandstone/arguments/generated/_registry/dialogs'
4
4
  import type { DialogClass, Macroable } from 'sandstone/core'
5
5
  import { CommandNode } from 'sandstone/core/nodes'
6
6
  import { ResourceClass } from 'sandstone/core/resources/resource'
7
- import { nbtStringifier } from 'sandstone/variables'
7
+ import { nbtResolver } from 'sandstone/variables'
8
8
  import { targetParser } from 'sandstone/variables/parsers'
9
9
  import { CommandArguments, type FinalCommandOutput } from '../../helpers'
10
10
 
@@ -31,7 +31,7 @@ export class DialogCommand<MACRO extends boolean> extends CommandArguments {
31
31
  ): FinalCommandOutput {
32
32
  const dialogArg = typeof dialog === 'string' || dialog instanceof ResourceClass
33
33
  ? dialog
34
- : nbtStringifier(dialog as Dialog)
34
+ : nbtResolver(dialog as Dialog)
35
35
  return this.finalCommand(['show', targetParser(targets), dialogArg])
36
36
  }
37
37
 
@@ -1,7 +1,7 @@
1
1
  import type { MultiplePlayersArgumentOf, RootNBT, SymbolDataComponent } from 'sandstone/arguments'
2
2
  import type { Macroable } from 'sandstone/core'
3
3
  import { CommandNode } from 'sandstone/core'
4
- import { nbtStringifier, targetParser } from 'sandstone/variables'
4
+ import { nbtResolver, targetParser } from 'sandstone/variables'
5
5
  import type { FinalCommandOutput } from '../../helpers'
6
6
  import { CommandArguments } from '../../helpers'
7
7
  import type { Registry } from 'sandstone/arguments/generated/registry'
@@ -131,7 +131,7 @@ export function componentPatchStringifier(components: Record<string, RootNBT | R
131
131
  throw new Error(`Attempted to insert a negation component patch of ${key} with a value, use {} instead.`)
132
132
  }
133
133
  } else {
134
- resultPairs.push(`${key}=${nbtStringifier(value)}`)
134
+ resultPairs.push(`${key}=${nbtResolver(value).toString()}`)
135
135
  }
136
136
  }
137
137
 
@@ -1,7 +1,7 @@
1
1
  import type { Coordinates, MultiplePlayersArgumentOf, RootNBT, SymbolParticle, Registry, AbsoluteCoordinates } from 'sandstone/arguments'
2
2
  import type { Macroable } from 'sandstone/core'
3
3
  import { CommandNode } from 'sandstone/core/nodes'
4
- import { coordinatesParser, nbtStringifier, VectorClass } from 'sandstone/variables'
4
+ import { coordinatesParser, nbtResolver, VectorClass } from 'sandstone/variables'
5
5
  import type { FinalCommandOutput } from '../../helpers'
6
6
  import { CommandArguments } from '../../helpers'
7
7
 
@@ -132,7 +132,7 @@ export class ParticleCommand<MACRO extends boolean> extends CommandArguments {
132
132
 
133
133
  // Destructure args based on whether options are present
134
134
  const [particleName, pos, delta, speed, count, mode, viewers] = hasOptions
135
- ? [`${name}${nbtStringifier(arg2 as RootNBT)}`, arg3, arg4, arg5, arg6, arg7, arg8]
135
+ ? [`${name}${nbtResolver(arg2 as RootNBT)}`, arg3, arg4, arg5, arg6, arg7, arg8]
136
136
  : [name, arg2, arg3, arg4, arg5, arg6, arg7]
137
137
 
138
138
  return this.finalCommand([
@@ -3,6 +3,7 @@ import { ContainerCommandNode } from 'sandstone/core/nodes'
3
3
  import { CommandArguments } from '../../helpers'
4
4
  import type { TagClass } from 'sandstone/core/resources/datapack/tag'
5
5
  import type { Macroable, MCFunctionClass, MCFunctionNode, Node } from 'sandstone/core'
6
+ import { isMacroArgument } from 'sandstone/core/Macro'
6
7
 
7
8
  type DebugFunction = string | TagClass<'function'> | MCFunctionClass<any, any> | (() => any | Promise<any>)
8
9
 
@@ -90,6 +91,10 @@ export class DebugCommand<MACRO extends boolean> extends CommandArguments<typeof
90
91
  return this.finalCommand(['function', undefined], node)
91
92
  }
92
93
 
93
- return this.finalCommand(['function', `${func}`], node)
94
+ const funcArg = isMacroArgument(this.sandstoneCore, func)
95
+ ? func
96
+ : `${func}`
97
+
98
+ return this.finalCommand(['function', funcArg], node)
94
99
  }
95
100
  }
@@ -1,9 +1,10 @@
1
1
  import type { RootNBT } from 'sandstone/arguments/nbt'
2
2
  import type { DataPointPickClass, Macroable, MCFunctionClass } from 'sandstone/core'
3
+ import { isMacroArgument } from 'sandstone/core/Macro'
3
4
  import { CommandNode } from 'sandstone/core/nodes'
4
5
  import type { TagClass } from 'sandstone/core/resources/datapack/tag'
5
6
  import type { DATA_TYPES, DataPointClass } from 'sandstone/variables'
6
- import { nbtStringifier } from 'sandstone/variables/nbt/NBTs'
7
+ import { nbtResolver } from 'sandstone/variables/nbt/NBTs'
7
8
  import type { FinalCommandOutput } from '../../helpers'
8
9
  import { CommandArguments } from '../../helpers'
9
10
 
@@ -78,10 +79,14 @@ export class FunctionCommand<MACRO extends boolean> extends CommandArguments {
78
79
  args.push(point.type, point.currentTarget, point.path)
79
80
  }
80
81
  } else {
81
- args.push(typeof params === 'object' && params.toMacro ? params : nbtStringifier(params))
82
+ args.push(typeof params === 'object' && params.toMacro ? params : nbtResolver(params))
82
83
  }
83
84
  }
84
85
 
85
- return this.finalCommand([`${mcFunction}`, ...args])
86
+ const mcFunctionArg = isMacroArgument(this.sandstoneCore, mcFunction)
87
+ ? mcFunction
88
+ : `${mcFunction}`
89
+
90
+ return this.finalCommand([mcFunctionArg, ...args])
86
91
  }
87
92
  }
@@ -2,8 +2,63 @@
2
2
 
3
3
  import type { SymbolGameRule } from 'sandstone/arguments'
4
4
  import type { Macroable } from 'sandstone/core'
5
+ import type { NBTInt } from 'sandstone/variables/nbt/NBTs'
6
+ import type { PositiveWholeNumber, NegativeWholeNumber, SmartRange, IsNegative, ToNegative, PositiveRange, Abs, Enumerate, WholeNumber } from 'sandstone/utils'
5
7
  import { CommandNode } from 'sandstone/core/nodes'
6
- import { CommandArguments } from '../../helpers'
8
+ import { CommandArguments, FinalCommandOutput } from '../../helpers'
9
+
10
+ declare const RangeSymbol: unique symbol;
11
+
12
+ export type Inf = 1e999
13
+ export type NegativeInf = -1e999
14
+
15
+ export type RangedInt<Min, Max = Inf> = number & {
16
+ readonly [RangeSymbol]?: [Min, Max],
17
+ }
18
+
19
+ export type RangeError<Message extends string> = Message & { readonly __brand: "RangeError" }
20
+
21
+ export type ExtractNBTIntRange<T, V extends number> = (
22
+ T extends NBTInt<infer Range>
23
+ ? [number] extends [V]
24
+ ? // --- Display Mode ---
25
+ Range extends { min: infer Min extends number; max: infer Max extends number } ? RangedInt<Min, Max>
26
+ : Range extends { max: infer Max extends number } ? RangedInt<NegativeInf, Max>
27
+ : Range extends { min: infer Min extends number } ? RangedInt<Min, Inf>
28
+ : RangedInt<NegativeInf, Inf>
29
+
30
+ : // --- Validation Mode ---
31
+ V extends WholeNumber<V>
32
+ ? ( // Nested check for boundaries
33
+ Range extends { min: infer Min extends number; max: infer Max extends number }
34
+ ? (V extends SmartRange<Min, Max> ? V : RangeError<`Error: ${V} is out of bounds (${Min}..${Max})`>)
35
+ : Range extends { max: infer Max extends number }
36
+ ? (IsNegative<Max> extends true
37
+ ? (V extends NegativeWholeNumber<V>
38
+ ? (`${V}` extends `-${infer AbsV extends number}`
39
+ ? (AbsV extends Enumerate<Abs<Max>> ? RangeError<`Error: Value must be <= ${Max}`> : V)
40
+ : V)
41
+ : RangeError<`Error: Value must be <= ${Max}`>)
42
+ : (V extends (NegativeWholeNumber<V> | 0 | PositiveRange<1, Max>)
43
+ ? V
44
+ : RangeError<`Error: ${V} must be <= ${Max}`>))
45
+ : Range extends { min: infer Min extends number }
46
+ ? (IsNegative<Min> extends true
47
+ ? (V extends (ToNegative<PositiveRange<1, Abs<Min>>> | 0 | PositiveWholeNumber<V>)
48
+ ? V
49
+ : RangeError<`Error: Value must be >= ${Min}`>)
50
+ : (V extends 0
51
+ ? (Min extends 0 ? 0 : RangeError<`Error: Value must be >= ${Min}`>)
52
+ : V extends PositiveWholeNumber<V>
53
+ ? (`${V}` extends `${infer VN extends number}`
54
+ ? (VN extends Enumerate<Min> ? RangeError<`Error: Value must be >= ${Min}`> : V)
55
+ : V)
56
+ : RangeError<`Error: Value must be >= ${Min}`>))
57
+ : V // Fallback for NBTInt<{}> (V is already verified as WholeNumber)
58
+ )
59
+ : RangeError<`Error: ${V} must be a whole number (no decimals allowed)`>
60
+ : T
61
+ )
7
62
 
8
63
  // Gamerule command
9
64
 
@@ -23,7 +78,7 @@ export class GameRuleCommand<MACRO extends boolean> extends CommandArguments {
23
78
  *
24
79
  * @param value Optional value to set. If not specified, queries current value.
25
80
  * Boolean rules: true/false
26
- * Numeric rules: integer >= 0
81
+ * Numeric rules: integer
27
82
  *
28
83
  * @example
29
84
  * ```ts
@@ -35,7 +90,24 @@ export class GameRuleCommand<MACRO extends boolean> extends CommandArguments {
35
90
  */
36
91
  gamerule<RULE extends Macroable<keyof SymbolGameRule | `${string}:${string}`, MACRO>>(
37
92
  gamerule: RULE,
38
- value?: Macroable<RULE extends keyof SymbolGameRule ? SymbolGameRule[RULE] : number | boolean, MACRO>,
93
+ ): FinalCommandOutput
94
+
95
+ gamerule<
96
+ RULE extends Macroable<keyof SymbolGameRule | (`${string}:${string}` & {}), MACRO>,
97
+ // 1. Keep V as a broad number to avoid early constraint errors
98
+ V extends (RULE extends keyof SymbolGameRule ? number | boolean : number | boolean)
99
+ >(
100
+ gamerule: RULE,
101
+ value: RULE extends keyof SymbolGameRule
102
+ ? (SymbolGameRule[RULE] extends NBTInt<any>
103
+ ? ExtractNBTIntRange<SymbolGameRule[RULE], V & number>
104
+ : Macroable<SymbolGameRule[RULE], MACRO>)
105
+ : V,
106
+ ): FinalCommandOutput
107
+
108
+ gamerule(
109
+ gamerule: any,
110
+ value?: any,
39
111
  ) {
40
112
  return this.finalCommand([gamerule, value])
41
113
  }
@@ -16,14 +16,14 @@ export class RandomCommand<MACRO extends boolean> extends CommandArguments {
16
16
  * Generate random number for command results.
17
17
  *
18
18
  * @param range Number range for random generation.
19
- * Examples: {min: 1, max: 10}, [5, 15], 20
19
+ * Examples: [null, 10], [5, 15], 20
20
20
  *
21
21
  * @param sequence Random sequence identifier for reproducible results.
22
22
  * Examples: 'my_sequence', 'mypack:dice', 'combat_rng'
23
23
  *
24
24
  * @example
25
25
  * ```ts
26
- * random.value({min: 1, max: 6}, 'dice') // D6 roll
26
+ * random.value([1, 6], 'dice') // D6 roll
27
27
  * random.value([10, 20], 'damage_roll') // 10-20 damage
28
28
  * ```
29
29
  */
@@ -43,7 +43,7 @@ export class RandomCommand<MACRO extends boolean> extends CommandArguments {
43
43
  *
44
44
  * @example
45
45
  * ```ts
46
- * random.roll({min: 1, max: 100}) // 1-100 roll
46
+ * random.roll([null, 100]) // roll for a number under 100
47
47
  * random.roll([1, 20], 'public_dice') // D20 with sequence
48
48
  * ```
49
49
  */