sandstone 1.1.3 → 1.1.5

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 (54) hide show
  1. package/dist/_internal/index.d.ts +7 -15
  2. package/dist/_internal/index.d.ts.map +1 -1
  3. package/dist/_internal/index.js +227 -75
  4. package/dist/_internal/index.js.map +1 -1
  5. package/dist/_internal/types/arguments/generated/resources.d.ts +2 -2
  6. package/dist/_internal/types/arguments/generated/resources.d.ts.map +1 -1
  7. package/dist/_internal/types/commands/implementations/block/place.d.ts +1 -1
  8. package/dist/_internal/types/commands/implementations/block/place.d.ts.map +1 -1
  9. package/dist/_internal/types/commands/implementations/server/schedule.d.ts +1 -1
  10. package/dist/_internal/types/core/resources/index.d.ts +1 -1
  11. package/dist/_internal/types/core/resources/resourcepack/blockstate.d.ts +13 -13
  12. package/dist/_internal/types/core/resources/resourcepack/blockstate.d.ts.map +1 -1
  13. package/dist/_internal/types/flow/Flow.d.ts +27 -13
  14. package/dist/_internal/types/flow/Flow.d.ts.map +1 -1
  15. package/dist/_internal/types/flow/conditions/command.d.ts.map +1 -1
  16. package/dist/_internal/types/flow/conditions/condition.d.ts +8 -0
  17. package/dist/_internal/types/flow/conditions/condition.d.ts.map +1 -1
  18. package/dist/_internal/types/flow/conditions/variables/dataPoint.d.ts.map +1 -1
  19. package/dist/_internal/types/flow/loop.d.ts +1 -1
  20. package/dist/_internal/types/pack/index.d.ts +1 -1
  21. package/dist/_internal/types/pack/pack.d.ts +7 -7
  22. package/dist/_internal/types/pack/pack.d.ts.map +1 -1
  23. package/dist/_internal/types/pack/visitors/orTransformationVisitor.d.ts +41 -6
  24. package/dist/_internal/types/pack/visitors/orTransformationVisitor.d.ts.map +1 -1
  25. package/dist/_internal/types/variables/Data.d.ts +1 -1
  26. package/dist/_internal/types/variables/DataSets.d.ts +4 -4
  27. package/dist/_internal/types/variables/DataSets.d.ts.map +1 -1
  28. package/dist/_internal/types/variables/ResolveNBT.d.ts +2 -2
  29. package/dist/_internal/types/variables/abstractClasses.d.ts +9 -0
  30. package/dist/_internal/types/variables/abstractClasses.d.ts.map +1 -1
  31. package/dist/browser/sandstone.esm.js +227 -75
  32. package/dist/browser/sandstone.esm.js.map +1 -1
  33. package/dist/exports/core/index.d.ts +1 -1
  34. package/dist/exports/core/index.js +1 -1
  35. package/dist/exports/index.d.ts +1 -1
  36. package/dist/exports/index.js +1 -1
  37. package/dist/exports/variables/index.d.ts +1 -1
  38. package/dist/exports/variables/index.js +1 -1
  39. package/package.json +3 -3
  40. package/src/arguments/generated/resources.ts +2 -2
  41. package/src/commands/implementations/block/place.ts +1 -1
  42. package/src/core/resources/datapack/itemModifier.ts +2 -2
  43. package/src/core/resources/resourcepack/blockstate.ts +32 -32
  44. package/src/flow/Flow.ts +24 -4
  45. package/src/flow/conditions/command.ts +7 -0
  46. package/src/flow/conditions/condition.ts +9 -0
  47. package/src/flow/conditions/variables/dataPoint.ts +11 -3
  48. package/src/pack/pack.ts +19 -38
  49. package/src/pack/visitors/orTransformationVisitor.ts +311 -37
  50. package/src/sandstone.ts +4 -20
  51. package/src/variables/DataSets.ts +4 -4
  52. package/src/variables/abstractClasses.ts +10 -0
  53. package/src/core/resources/datapack/decoratedPotPattern.ts.disable +0 -47
  54. package/src/core/resources/datapack/slotSource.ts.disable +0 -47
@@ -1,11 +1,11 @@
1
1
  import type { JSONTextComponent } from "./types/arguments/jsonTextComponent.js";
2
2
  import { SandstoneContext, setSandstoneContext, getSandstoneContext, hasContext, resetContext } from "./types/context.js";
3
3
  import type { FillCommand, GiveCommand, SetBlockCommand, AdvancementCommand, AttributeOperationCommand, BossBarCommand, FinalCommandOutput, CloneOptionsCommand, CloneFromDimensionCommand, DamageSourceCommand, DataCommand, DataPackCommand, DebugCommand, DialogCommand, EffectCommand, ExecuteCommand, ExperienceCommand, ForceLoadCommand, ExtractNBTIntRange, LocateCommand, LootCommand, PerfCommand, PlaceCommand, RandomCommand, RecipeCommand, SandstoneCommands, RotateFacingArguments, RideArgumentsCommand, ItemCommand, JFRCommand, ScheduleCommand, ScoreboardCommand, StopwatchCommand, TagArgumentsCommand, TeamCommand, TeleportFacingCommand, TestCommand, TimeCommand, TitleArgumentsCommand, TriggerArgumentsCommand, WaypointCommand, WeatherCommand, WorldBorderCommand, StoreType } from "./types/commands/index.js";
4
- import { AdvancementClassArguments, AtlasClassArguments, BannerPatternClassArguments, BlockStateArguments, ChatTypeClassArguments, DamageTypeClassArguments, DialogClassArguments, EnchantmentClassArguments, EnchantmentProviderClassArguments, EquipmentClassArguments, FontArguments, InstrumentClassArguments, ItemModelDefinitionClassArguments, ItemModifierClassArguments, JukeboxSongClassArguments, LanguageArguments, LootTableClassArguments, MCFunctionClassArguments, ModelClassArguments, ParticleClassArguments, PlainTextArguments, PostEffectClassArguments, PredicateClassArguments, RecipeClassArguments, ShaderClassArguments, SoundEventArguments, SoundsIndexArguments, SulfurCubeArchetypeClassArguments, TagClassArguments, TestEnvironmentClassArguments, TestInstanceClassArguments, TextureArguments, TimelineClassArguments, TradeSetClassArguments, TrialSpawnerClassArguments, TrimMaterialClassArguments, TrimPatternClassArguments, VariantClassArguments, VillagerTradeClassArguments, WaypointStyleClassArguments, WorldClockClassArguments, MCFunctionClass, TagClass, DamageTypeClass, DataPointPickClass, CustomResourceClass, MacroArgument, AdvancementClass, BannerPatternClass, ChatTypeClass, DialogClass, EnchantmentClass, EnchantmentProviderClass, InstrumentClass, ItemModifierClass, JukeboxSongClass, LootTableClass, PredicateClass, RecipeClass, SulfurCubeArchetypeClass, TagValuesJSON, TestEnvironmentClass, TestInstanceClass, TimelineClass, TradeSetClass, TrialSpawnerClass, TrimMaterialClass, TrimPatternClass, VariantType, VariantClass, VillagerTradeClass, WorldClockClass, AtlasClass, BlockStateJSON, BlockStateClass, BlockStateType, EquipmentClass, FontClass, ItemModelDefinitionInput, ItemModelDefinitionClass, LanguageClass, ModelClass, ParticleClass, PostEffectClass, ShaderClass, SoundEventClass, SoundsIndexClass, PlainTextClass, TextureClass, WaypointStyleClass, MacroLiteral, SandstoneCore, ResourceClass } from "./types/core/index.js";
4
+ import { AdvancementClassArguments, AtlasClassArguments, BannerPatternClassArguments, BlockStateDefinitionArguments, ChatTypeClassArguments, DamageTypeClassArguments, DialogClassArguments, EnchantmentClassArguments, EnchantmentProviderClassArguments, EquipmentClassArguments, FontArguments, InstrumentClassArguments, ItemModelDefinitionClassArguments, ItemModifierClassArguments, JukeboxSongClassArguments, LanguageArguments, LootTableClassArguments, MCFunctionClassArguments, ModelClassArguments, ParticleClassArguments, PlainTextArguments, PostEffectClassArguments, PredicateClassArguments, RecipeClassArguments, ShaderClassArguments, SoundEventArguments, SoundsIndexArguments, SulfurCubeArchetypeClassArguments, TagClassArguments, TestEnvironmentClassArguments, TestInstanceClassArguments, TextureArguments, TimelineClassArguments, TradeSetClassArguments, TrialSpawnerClassArguments, TrimMaterialClassArguments, TrimPatternClassArguments, VariantClassArguments, VillagerTradeClassArguments, WaypointStyleClassArguments, WorldClockClassArguments, MCFunctionClass, DataPointPickClass, CustomResourceClass, MacroArgument, TagValuesJSON, VariantType, BlockStateDefinitionJSON, BlockStateDefinitionType, ItemModelDefinitionInput, ShaderClass, PlainTextClass, MacroLiteral, SandstoneCore, ResourceClass } from "./types/core/index.js";
5
5
  import { Flow, Condition } from "./types/flow/index.js";
6
6
  import type { BASIC_CONFLICT_STRATEGIES, LiteralUnion, NamespacedLiteralUnion, SetType, AllKeys, MakeInstanceCallable } from "./types/utils.js";
7
- import type { ObjectiveClass, Score, SelectorClass, LabelClass, UUIDClass, DataPointClass, ItemPredicateClass, DATA_TYPES, TriggerHandler, TriggerClass, _RawLabelClass, TargetlessDataClass, TargetFor, DataClass, DATA_PATH, TargetlessDataPointClass, ResolveNBTClass, DataIndexMap, DataArray, SelectorEntityType, SelectorProperties, UUIDinNumber, UUIDOptions, UUIDinScore, SelectorPickClass, ItemPredicateItem, SleepClass } from "./types/variables/index.js";
8
- import type { AdvancementClass, BannerPatternClass, ChatTypeClass, DamageTypeClass, DialogClass, EnchantmentClass, EnchantmentProviderClass, InstrumentClass, ItemModifierClass, JukeboxSongClass, LootTableClass, PredicateClass, RecipeClass, StructureClass, SulfurCubeArchetypeClass, TagClass, TestEnvironmentClass, TestInstanceClass, TimelineClass, TradeSetClass, TrialSpawnerClass, TrimMaterialClass, TrimPatternClass, VariantClass, VillagerTradeClass, WorldClockClass, AtlasClass, BlockStateClass, EquipmentClass, FontClass, ItemModelDefinitionClass, LanguageClass, ModelClass, ParticleClass, PostEffectClass, SoundEventClass, SoundsIndexClass, TextureClass, WaypointStyleClass } from "./types/core/resources.js";
7
+ import { ObjectiveClass, Score, SelectorClass, LabelClass, UUIDClass, DataPointClass, ItemPredicateClass, DATA_TYPES, TriggerHandler, TriggerClass, _RawLabelClass, TargetlessDataClass, TargetFor, DataClass, DATA_PATH, TargetlessDataPointClass, ResolveNBTClass, DataIndexMapType, DataArrayType, SelectorEntityType, SelectorProperties, UUIDinNumber, UUIDOptions, UUIDinScore, SelectorPickClass, ItemPredicateItem, SleepClass } from "./types/variables/index.js";
8
+ import { AdvancementClass, BannerPatternClass, ChatTypeClass, DamageTypeClass, DialogClass, EnchantmentClass, EnchantmentProviderClass, InstrumentClass, ItemModifierClass, JukeboxSongClass, LootTableClass, PredicateClass, RecipeClass, StructureClass, SulfurCubeArchetypeClass, TagClass, TestEnvironmentClass, TestInstanceClass, TimelineClass, TradeSetClass, TrialSpawnerClass, TrimMaterialClass, TrimPatternClass, VariantClass, VillagerTradeClass, WorldClockClass, AtlasClass, BlockStateDefinitionClass, EquipmentClass, FontClass, ItemModelDefinitionClass, LanguageClass, ModelClass, ParticleClass, PostEffectClass, SoundEventClass, SoundsIndexClass, TextureClass, WaypointStyleClass } from "./types/core/resources/index.js";
9
9
  import type { SingleEntityArgumentOf, MultiplePlayersArgumentOf, Coordinates, GAMEMODES, DIFFICULTIES, MultipleEntitiesArgument, RootNBT, MessageOrSelector, AbsoluteCoordinates, SOUND_SOURCES, Rotation, SinglePlayerArgumentOf, ColumnCoordinates, ObjectiveArgument, MCDocToJSON, SymbolResource, RecipeJSON, REGISTRIES, SOUND_TYPES, TEXTURE_TYPES, OBJECTIVE_CRITERIA, NBTObject, TimeArgument } from "./types/arguments/index.js";
10
10
  import type { ITEMS } from "./types/arguments/generated/_registry/items.js";
11
11
  import type { DAMAGE_TYPES } from "./types/arguments/generated/_registry/damage_types.js";
@@ -2128,7 +2128,7 @@ export declare const RawResource: {
2128
2128
  'minecraft:worldgen/world_preset': WorldPreset;
2129
2129
  zombie_nautilus_variant: ZombieNautilusVariant;
2130
2130
  'minecraft:zombie_nautilus_variant': ZombieNautilusVariant;
2131
- }[`${T}_variant`]>, options?: Omit<Partial<VariantClassArguments<T>>, "variant"> | undefined) => VariantClass<T>, VillagerTrade: (name: string, villagerTrade: VillagerTradeClassArguments["json"], options?: Omit<Partial<VillagerTradeClassArguments>, "json">) => VillagerTradeClass, WorldClock: (name: string, worldClock: WorldClockClassArguments["json"], options?: Omit<Partial<WorldClockClassArguments>, "json">) => WorldClockClass, Atlas: (name: string, json: AtlasClassArguments["json"], options?: Omit<Partial<AtlasClassArguments>, "json">) => AtlasClass, BlockState: <JSON extends BlockStateJSON>(name: string, json: JSON, options?: Omit<Partial<BlockStateArguments<JSON>>, "json"> | undefined) => BlockStateClass<JSON, Extract<AllKeys<JSON>, BlockStateType>>, Equipment: (name: string, json: EquipmentClassArguments["json"], options?: Omit<Partial<EquipmentClassArguments>, "json">) => EquipmentClass, Font: (name: string, providers: FontArguments["providers"], options?: Omit<Partial<FontArguments>, "providers">) => FontClass, ItemModelDefinition: (name: string, definition: ItemModelDefinitionInput, options?: Omit<Partial<ItemModelDefinitionClassArguments>, "definition">) => ItemModelDefinitionClass, Language: (name: string, language: LanguageArguments["language"], options?: Omit<Partial<LanguageArguments>, "language">) => LanguageClass, Model: <Type extends LiteralUnion<"block" | "item">>(type: Type, name: string, json: ModelClassArguments["json"], options?: Omit<Partial<ModelClassArguments>, "json">) => ModelClass<Type>, ParticleResource: (name: string, json: ParticleClassArguments["json"], options?: Omit<Partial<ParticleClassArguments>, "json">) => ParticleClass, PostEffect: (name: string, json: PostEffectClassArguments["json"], options?: Omit<Partial<PostEffectClassArguments>, "json">) => PostEffectClass, Shader: (name: string, json: ShaderClassArguments["json"], options?: Omit<Partial<ShaderClassArguments>, "json">) => ShaderClass, SoundEvent: <Type extends SOUND_TYPES>(type: Type, name: string, sound: SoundEventArguments["sound"], options?: Omit<Partial<SoundEventArguments>, "sound">) => SoundEventClass<Type>, SoundsIndex: (definitions: SoundsIndexArguments["definitions"], namespace?: string, options?: Omit<Partial<SoundsIndexArguments>, "definitions">) => SoundsIndexClass, PlainText: (name: string, text: PlainTextArguments["text"], options?: Partial<PlainTextArguments>) => PlainTextClass, Texture: <Type extends LiteralUnion<TEXTURE_TYPES>>(type: Type, name: string, texture: ArrayBuffer | Buffer<ArrayBufferLike> | Promise<ArrayBuffer | Buffer<ArrayBufferLike>> | undefined, options?: Partial<TextureArguments<Type>> | undefined) => TextureClass<Type>, WaypointStyle: (name: string, json: WaypointStyleClassArguments["json"], options?: Omit<Partial<WaypointStyleClassArguments>, "json">) => WaypointStyleClass, Objective: {
2131
+ }[`${T}_variant`]>, options?: Omit<Partial<VariantClassArguments<T>>, "variant"> | undefined) => VariantClass<T>, VillagerTrade: (name: string, villagerTrade: VillagerTradeClassArguments["json"], options?: Omit<Partial<VillagerTradeClassArguments>, "json">) => VillagerTradeClass, WorldClock: (name: string, worldClock: WorldClockClassArguments["json"], options?: Omit<Partial<WorldClockClassArguments>, "json">) => WorldClockClass, Atlas: (name: string, json: AtlasClassArguments["json"], options?: Omit<Partial<AtlasClassArguments>, "json">) => AtlasClass, BlockStateDefinition: <JSON extends BlockStateDefinitionJSON>(name: string, json: JSON, options?: Omit<Partial<BlockStateDefinitionArguments<JSON>>, "json"> | undefined) => BlockStateDefinitionClass<JSON, Extract<AllKeys<JSON>, BlockStateDefinitionType>>, Equipment: (name: string, json: EquipmentClassArguments["json"], options?: Omit<Partial<EquipmentClassArguments>, "json">) => EquipmentClass, Font: (name: string, providers: FontArguments["providers"], options?: Omit<Partial<FontArguments>, "providers">) => FontClass, ItemModelDefinition: (name: string, definition: ItemModelDefinitionInput, options?: Omit<Partial<ItemModelDefinitionClassArguments>, "definition">) => ItemModelDefinitionClass, Language: (name: string, language: LanguageArguments["language"], options?: Omit<Partial<LanguageArguments>, "language">) => LanguageClass, Model: <Type extends LiteralUnion<"block" | "item">>(type: Type, name: string, json: ModelClassArguments["json"], options?: Omit<Partial<ModelClassArguments>, "json">) => ModelClass<Type>, ParticleResource: (name: string, json: ParticleClassArguments["json"], options?: Omit<Partial<ParticleClassArguments>, "json">) => ParticleClass, PostEffect: (name: string, json: PostEffectClassArguments["json"], options?: Omit<Partial<PostEffectClassArguments>, "json">) => PostEffectClass, Shader: (name: string, json: ShaderClassArguments["json"], options?: Omit<Partial<ShaderClassArguments>, "json">) => ShaderClass, SoundEvent: <Type extends SOUND_TYPES>(type: Type, name: string, sound: SoundEventArguments["sound"], options?: Omit<Partial<SoundEventArguments>, "sound">) => SoundEventClass<Type>, SoundsIndex: (definitions: SoundsIndexArguments["definitions"], namespace?: string, options?: Omit<Partial<SoundsIndexArguments>, "definitions">) => SoundsIndexClass, PlainText: (name: string, text: PlainTextArguments["text"], options?: Partial<PlainTextArguments>) => PlainTextClass, Texture: <Type extends LiteralUnion<TEXTURE_TYPES>>(type: Type, name: string, texture: ArrayBuffer | Buffer<ArrayBufferLike> | Promise<ArrayBuffer | Buffer<ArrayBufferLike>> | undefined, options?: Partial<TextureArguments<Type>> | undefined) => TextureClass<Type>, WaypointStyle: (name: string, json: WaypointStyleClassArguments["json"], options?: Omit<Partial<WaypointStyleClassArguments>, "json">) => WaypointStyleClass, Objective: {
2132
2132
  create: (name: string, criteria?: LiteralUnion<OBJECTIVE_CRITERIA>, display?: JSONTextComponent, options?: {
2133
2133
  alreadyExists?: boolean;
2134
2134
  useDefaultNamespace?: boolean;
@@ -2149,10 +2149,10 @@ export declare const RawResource: {
2149
2149
  }, DataVariable: {
2150
2150
  (initialValue?: NBTObject | DataPointClass<any> | DataPointPickClass, name?: string): DataPointClass<"storage">;
2151
2151
  (score: Score, storeType?: StoreType, scale?: number, name?: string): DataPointClass<"storage">;
2152
- }, getTempStorage: (name: string) => DataPointClass<"storage">, ResolveNBT: (nbt: NBTObject, dataPoint?: DataPointClass<"storage">) => ResolveNBTClass, DataIndexMap: <INITIAL extends RootNBT | Record<string, DataPointClass | DataPointPickClass>>(initialize: INITIAL, dataPoint?: DataPointClass<"storage">) => DataIndexMap<INITIAL>, DataArray: <INITIAL extends readonly NBTObject[] | readonly [
2152
+ }, getTempStorage: (name: string) => DataPointClass<"storage">, ResolveNBT: (nbt: NBTObject, dataPoint?: DataPointClass<"storage">) => ResolveNBTClass, DataIndexMap: <INITIAL extends RootNBT | Record<string, DataPointClass | DataPointPickClass>>(initialize: INITIAL, dataPoint?: DataPointClass<"storage">) => DataIndexMapType<INITIAL>, DataArray: <INITIAL extends readonly NBTObject[] | readonly [
2153
2153
  string,
2154
2154
  DataPointClass | DataPointPickClass
2155
- ]>(initialize: INITIAL, dataPoint?: DataPointClass<"storage">) => DataArray<INITIAL>, Selector: {
2155
+ ]>(initialize: INITIAL, dataPoint?: DataPointClass<"storage">) => DataArrayType<INITIAL>, Selector: {
2156
2156
  (target: "@e"): SelectorClass<false, false, false>;
2157
2157
  (target: "@a"): SelectorClass<false, false, true>;
2158
2158
  (target: "@s" | "@n"): SelectorClass<false, true, false>;
@@ -2394,10 +2394,6 @@ ContentStrategyKind<'default', BASIC_CONFLICT_STRATEGIES>
2394
2394
  * Will override the defined `default` strategy.
2395
2395
  */
2396
2396
  | ContentStrategyKind<'recipe', NonNullable<RecipeClassArguments['onConflict']>>
2397
- /**
2398
- * The conflict strategy to use for Slot sources.
2399
- * Will override the defined `default` strategy.
2400
- */
2401
2397
  /**
2402
2398
  * The conflict strategy to use for Sulfur cube archetypes.
2403
2399
  * Will override the defined `default` strategy.
@@ -2433,10 +2429,6 @@ ContentStrategyKind<'default', BASIC_CONFLICT_STRATEGIES>
2433
2429
  * Will override the defined `default` strategy.
2434
2430
  */
2435
2431
  | ContentStrategyKind<'chat_type', NonNullable<ChatTypeClassArguments['onConflict']>>
2436
- /**
2437
- * The conflict strategy to use for Decorated pot patterns.
2438
- * Will override the defined `default` strategy.
2439
- */
2440
2432
  /**
2441
2433
  * The conflict strategy to use for Dialogs.
2442
2434
  * Will override the defined `default` strategy.
@@ -2511,7 +2503,7 @@ ContentStrategyKind<'default', BASIC_CONFLICT_STRATEGIES>
2511
2503
  * The conflict strategy to use for Block states.
2512
2504
  * Will override the defined `default` strategy.
2513
2505
  */
2514
- | ContentStrategyKind<'block_state', NonNullable<BlockStateArguments<any>['onConflict']>>
2506
+ | ContentStrategyKind<'block_definition', NonNullable<BlockStateDefinitionArguments<any>['onConflict']>>
2515
2507
  /**
2516
2508
  * The conflict strategy to use for Fonts.
2517
2509
  * Will override the defined `default` strategy.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sandstone.ts"],"names":[],"mappings":"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","file":"index.d.ts"}
1
+ {"version":3,"sources":["../../src/sandstone.ts"],"names":[],"mappings":"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","file":"index.d.ts"}
@@ -2508,68 +2508,68 @@ AtlasClass = class AtlasClass extends ResourceClass {
2508
2508
  }
2509
2509
  }
2510
2510
  };
2511
- BlockStateNode = class BlockStateNode extends ContainerNode {
2511
+ BlockStateDefinitionNode = class BlockStateDefinitionNode extends ContainerNode {
2512
2512
  resource;
2513
2513
  constructor(sandstoneCore, resource) {
2514
2514
  super(sandstoneCore);
2515
2515
  this.resource = resource;
2516
2516
  }
2517
- getValue = () => jsonStringify(this.resource.blockStateJSON, this.resource._resourceType);
2517
+ getValue = () => jsonStringify(this.resource.blockStateDefinitionJSON, this.resource._resourceType);
2518
2518
  };
2519
- BlockStateClass = class BlockStateClass extends ResourceClass {
2519
+ BlockStateDefinitionClass = class BlockStateDefinitionClass extends ResourceClass {
2520
2520
  static resourceType = "block_definition";
2521
- blockStateJSON;
2521
+ blockStateDefinitionJSON;
2522
2522
  type;
2523
2523
  constructor(core, name, args) {
2524
- super(core, { packType: core.pack.resourcePack() }, BlockStateNode, BlockStateClass.resourceType, core.pack.resourceToPath(name, RESOURCE_PATHS[BlockStateClass.resourceType].path), args);
2525
- this.blockStateJSON = args.json;
2526
- this.type = Object.keys(this.blockStateJSON)[0];
2524
+ super(core, { packType: core.pack.resourcePack() }, BlockStateDefinitionNode, BlockStateDefinitionClass.resourceType, core.pack.resourceToPath(name, RESOURCE_PATHS[BlockStateDefinitionClass.resourceType].path), args);
2525
+ this.blockStateDefinitionJSON = args.json;
2526
+ this.type = Object.keys(this.blockStateDefinitionJSON)[0];
2527
2527
  this.handleConflicts();
2528
2528
  }
2529
2529
  push(...states) {
2530
2530
  if (this.type === "variants") {
2531
- if (states[0] instanceof BlockStateClass) {
2531
+ if (states[0] instanceof BlockStateDefinitionClass) {
2532
2532
  for (const state of states) {
2533
- this.blockStateJSON.variants = { ...this.blockStateJSON.variants, ...state.blockStateJSON.variants };
2533
+ this.blockStateDefinitionJSON.variants = { ...this.blockStateDefinitionJSON.variants, ...state.blockStateDefinitionJSON.variants };
2534
2534
  }
2535
2535
  } else {
2536
2536
  for (const state of states) {
2537
- this.blockStateJSON.variants = { ...this.blockStateJSON.variants, ...state.variants };
2537
+ this.blockStateDefinitionJSON.variants = { ...this.blockStateDefinitionJSON.variants, ...state.variants };
2538
2538
  }
2539
2539
  }
2540
2540
  }
2541
2541
  if (this.type === "multipart") {
2542
- if (states[0] instanceof BlockStateClass) {
2542
+ if (states[0] instanceof BlockStateDefinitionClass) {
2543
2543
  for (const state of states) {
2544
- this.blockStateJSON.multipart.push(...state.blockStateJSON.multipart);
2544
+ this.blockStateDefinitionJSON.multipart.push(...state.blockStateDefinitionJSON.multipart);
2545
2545
  }
2546
2546
  } else {
2547
2547
  for (const state of states) {
2548
- this.blockStateJSON.multipart.push(...state.multipart);
2548
+ this.blockStateDefinitionJSON.multipart.push(...state.multipart);
2549
2549
  }
2550
2550
  }
2551
2551
  }
2552
2552
  }
2553
2553
  unshift(...states) {
2554
2554
  if (this.type === "variants") {
2555
- if (states[0] instanceof BlockStateClass) {
2555
+ if (states[0] instanceof BlockStateDefinitionClass) {
2556
2556
  for (const state of states) {
2557
- this.blockStateJSON.variants = { ...state.blockStateJSON.variants, ...this.blockStateJSON.variants };
2557
+ this.blockStateDefinitionJSON.variants = { ...state.blockStateDefinitionJSON.variants, ...this.blockStateDefinitionJSON.variants };
2558
2558
  }
2559
2559
  } else {
2560
2560
  for (const state of states) {
2561
- this.blockStateJSON.variants = { ...state.variants, ...this.blockStateJSON.variants };
2561
+ this.blockStateDefinitionJSON.variants = { ...state.variants, ...this.blockStateDefinitionJSON.variants };
2562
2562
  }
2563
2563
  }
2564
2564
  }
2565
2565
  if (this.type === "multipart") {
2566
- if (states[0] instanceof BlockStateClass) {
2566
+ if (states[0] instanceof BlockStateDefinitionClass) {
2567
2567
  for (const state of states) {
2568
- this.blockStateJSON.multipart.unshift(...state.blockStateJSON.multipart);
2568
+ this.blockStateDefinitionJSON.multipart.unshift(...state.blockStateDefinitionJSON.multipart);
2569
2569
  }
2570
2570
  } else {
2571
2571
  for (const state of states) {
2572
- this.blockStateJSON.multipart.unshift(...state.multipart);
2572
+ this.blockStateDefinitionJSON.multipart.unshift(...state.multipart);
2573
2573
  }
2574
2574
  }
2575
2575
  }
@@ -4408,6 +4408,7 @@ WorldBorderCommand = class WorldBorderCommand extends CommandArguments {
4408
4408
  };
4409
4409
  };
4410
4410
  ConditionNode = class ConditionNode extends Node {
4411
+ preNodes;
4411
4412
  };
4412
4413
  SingleConditionNode = class SingleConditionNode extends ConditionNode {
4413
4414
  getValue = (negated = false) => {
@@ -4564,9 +4565,13 @@ DataPointEqualsConditionNode = class DataPointEqualsConditionNode extends Single
4564
4565
  this.value = value;
4565
4566
  const { DataVariable, Variable, commands: commands2 } = sandstoneCore2.pack;
4566
4567
  const { execute: execute2 } = commands2;
4568
+ const mcFunction = sandstoneCore2.getCurrentMCFunctionOrThrow();
4569
+ const before = mcFunction.body.length;
4567
4570
  const anon = DataVariable(this.dataPoint);
4568
4571
  this.conditional = Variable();
4569
4572
  execute2.store.result(this.conditional).run(() => anon.set(this.value));
4573
+ const after = mcFunction.body.length;
4574
+ this.preNodes = mcFunction.body.splice(before, after - before);
4570
4575
  }
4571
4576
  getValue = (negated) => (negated ? ["if", ...this.getCondition()] : ["unless", ...this.getCondition()]).join(" ");
4572
4577
  getCondition() {
@@ -4631,7 +4636,11 @@ CommandConditionNode = class CommandConditionNode extends SingleConditionNode {
4631
4636
  this.result = result;
4632
4637
  const store = sandstoneCore2.pack.commands.execute.store[type];
4633
4638
  this.variable = sandstoneCore2.pack.Variable(undefined, "condition");
4639
+ const mcFunction = sandstoneCore2.getCurrentMCFunctionOrThrow();
4640
+ const before = mcFunction.body.length;
4634
4641
  command(store(this.variable));
4642
+ const after = mcFunction.body.length;
4643
+ this.preNodes = mcFunction.body.splice(before, after - before);
4635
4644
  }
4636
4645
  getCondition() {
4637
4646
  if (this.type === "success") {
@@ -5128,54 +5137,186 @@ LoopTransformationVisitor = class LoopTransformationVisitor extends GenericSands
5128
5137
  visitForINode = this.visitLoopNode;
5129
5138
  visitForOfNode = this.visitLoopNode;
5130
5139
  };
5140
+ FunctionReturnConditionNode = class FunctionReturnConditionNode extends ConditionNode {
5141
+ sandstoneCore;
5142
+ functionName;
5143
+ constructor(sandstoneCore2, functionName) {
5144
+ super(sandstoneCore2);
5145
+ this.sandstoneCore = sandstoneCore2;
5146
+ this.functionName = functionName;
5147
+ }
5148
+ getValue = () => `if function ${this.functionName}`;
5149
+ };
5131
5150
  OrTransformationVisitor = class OrTransformationVisitor extends GenericSandstoneVisitor {
5132
5151
  visitIfNode = (node_) => {
5133
- const { preNodes, conditionNode } = this.parseConditionNode(node_.condition);
5152
+ const { preNodes, conditionNode } = this.parseConditionNode(node_.condition, node_.parentMCFunction);
5134
5153
  node_.condition = conditionNode;
5135
5154
  return [...preNodes, this.genericVisit(node_)];
5136
5155
  };
5137
- parseConditionNode = (node) => {
5156
+ parseConditionNode = (node, parentMCFunction) => {
5138
5157
  if (node instanceof OrNode) {
5139
- return this.parseOrNode(node);
5158
+ return this.parseOrNode(node, parentMCFunction);
5140
5159
  }
5141
5160
  if (node instanceof AndNode) {
5142
- return this.parseAndNode(node);
5161
+ return this.parseAndNode(node, parentMCFunction);
5143
5162
  }
5144
5163
  if (node instanceof NotNode) {
5145
- return this.parseNotNode(node);
5164
+ return this.parseNotNode(node, parentMCFunction);
5146
5165
  }
5147
- return { preNodes: [], conditionNode: node };
5166
+ return { preNodes: [...node.preNodes ?? []], conditionNode: node };
5148
5167
  };
5149
- parseOrNode = (node) => {
5150
- const variable = this.core.pack.Variable(undefined, "condition");
5151
- const conditionNode = variable.equalTo(1)._toMinecraftCondition();
5152
- const realPreNodes = [new ScoreboardCommandNode(this.pack, "players", "reset", variable)];
5153
- const orExecuteNodes = node.conditions.map((condition2) => {
5154
- const { preNodes, conditionNode: parsedConditionNode } = this.parseConditionNode(condition2);
5155
- realPreNodes.push(...preNodes);
5156
- const ifNode = new IfNode(this.core, parsedConditionNode);
5157
- ifNode.body = [new ScoreboardCommandNode(this.pack, "players", "set", variable, 1)];
5158
- return ifNode;
5168
+ parseOrNode = (node, parentMCFunction) => {
5169
+ if (node.conditions.length === 1) {
5170
+ return this.parseConditionNode(node.conditions[0], parentMCFunction);
5171
+ }
5172
+ const parentName = parentMCFunction?.resource.name ?? "__sandstone";
5173
+ const orMCFunction = new MCFunctionClass(this.core, `${parentName}/or_check`, {
5174
+ addToSandstoneCore: true,
5175
+ creator: "sandstone",
5176
+ onConflict: "rename"
5159
5177
  });
5178
+ this.core.enterMCFunction(orMCFunction);
5179
+ try {
5180
+ for (const condition2 of node.conditions) {
5181
+ this.pushCheckBranch(orMCFunction.node, this.parseConditionNode(condition2, orMCFunction.node), false, new ReturnCommandNode(this.pack, [1]));
5182
+ }
5183
+ orMCFunction.node.body.push(new ReturnCommandNode(this.pack, [0]));
5184
+ } finally {
5185
+ this.core.exitMCFunction();
5186
+ }
5160
5187
  return {
5161
- preNodes: [...realPreNodes, ...orExecuteNodes],
5162
- conditionNode
5188
+ preNodes: [],
5189
+ conditionNode: new FunctionReturnConditionNode(this.core, orMCFunction.name)
5163
5190
  };
5164
5191
  };
5165
- parseAndNode = (node) => {
5166
- const finalPreNodes = [];
5167
- const conditionNode = new AndNode(node.sandstoneCore, node.conditions.map((condition2) => {
5168
- const { preNodes, conditionNode: conditionNode2 } = this.parseConditionNode(condition2);
5169
- finalPreNodes.push(...preNodes);
5170
- return conditionNode2;
5171
- }));
5192
+ parseAndNode = (node, parentMCFunction) => {
5193
+ if (node.conditions.length === 1) {
5194
+ return this.parseConditionNode(node.conditions[0], parentMCFunction);
5195
+ }
5196
+ const parsed = node.conditions.map((condition2) => this.parseConditionNode(condition2, parentMCFunction));
5197
+ const anyHasCommands = parsed.some((p) => (p.preNodes ?? []).length > 0);
5198
+ if (!anyHasCommands) {
5199
+ const finalPreNodes = [];
5200
+ const conditionNode = new AndNode(node.sandstoneCore, parsed.map((p) => {
5201
+ finalPreNodes.push(...p.preNodes);
5202
+ return p.conditionNode;
5203
+ }));
5204
+ return { preNodes: finalPreNodes, conditionNode };
5205
+ }
5206
+ const parentName = parentMCFunction?.resource.name ?? "__sandstone";
5207
+ const andMCFunction = new MCFunctionClass(this.core, `${parentName}/and_check`, {
5208
+ addToSandstoneCore: true,
5209
+ creator: "sandstone",
5210
+ onConflict: "rename"
5211
+ });
5212
+ this.core.enterMCFunction(andMCFunction);
5213
+ try {
5214
+ let batch = { preNodes: [], conditionNodes: [] };
5215
+ const flushBatch = () => {
5216
+ if (batch.conditionNodes.length === 0 && batch.preNodes.every((pn) => pn.length === 0)) {
5217
+ batch = { preNodes: [], conditionNodes: [] };
5218
+ return;
5219
+ }
5220
+ const tracker = this.core.pack.Variable(undefined, "and_batch");
5221
+ this.pushBatchedCheckBranch(andMCFunction.node, batch.preNodes.flat(), batch.conditionNodes, tracker);
5222
+ batch = { preNodes: [], conditionNodes: [] };
5223
+ };
5224
+ for (const p of parsed) {
5225
+ if (p.preNodes.length === 0) {
5226
+ batch.preNodes.push(p.preNodes);
5227
+ batch.conditionNodes.push(p.conditionNode);
5228
+ } else {
5229
+ flushBatch();
5230
+ this.pushFailFastBranch(andMCFunction.node, p, new ReturnCommandNode(this.pack, [0]));
5231
+ }
5232
+ }
5233
+ flushBatch();
5234
+ andMCFunction.node.body.push(new ReturnCommandNode(this.pack, [1]));
5235
+ } finally {
5236
+ this.core.exitMCFunction();
5237
+ }
5172
5238
  return {
5173
- preNodes: finalPreNodes,
5174
- conditionNode
5239
+ preNodes: [],
5240
+ conditionNode: new FunctionReturnConditionNode(this.core, andMCFunction.name)
5175
5241
  };
5176
5242
  };
5177
- parseNotNode = (node) => {
5178
- const { preNodes, conditionNode } = this.parseConditionNode(node.condition);
5243
+ pushBatchedCheckBranch = (targetMCFunction, preNodes, conditionNodes, tracker) => {
5244
+ for (const n of preNodes) {
5245
+ targetMCFunction.body.push(n);
5246
+ }
5247
+ targetMCFunction.body.push(new ScoreboardCommandNode(this.pack, "players", "reset", tracker));
5248
+ const args = [];
5249
+ for (const c of conditionNodes) {
5250
+ const condStr = c.getValue(false);
5251
+ const match = condStr.match(/^(if|unless)\s+([\s\S]+)$/);
5252
+ if (!match) {
5253
+ throw new Error(`OrTransformationVisitor: unexpected condition getValue() shape: ${condStr}`);
5254
+ }
5255
+ const [, keyword, condBody] = match;
5256
+ args.push([keyword, condBody]);
5257
+ }
5258
+ if (args.length === 0) {
5259
+ targetMCFunction.body.push(new ScoreboardCommandNode(this.pack, "players", "set", tracker, 1));
5260
+ } else {
5261
+ const executeNode = new ExecuteCommandNode(this.pack, args, {
5262
+ isSingleExecute: true,
5263
+ body: []
5264
+ });
5265
+ targetMCFunction.enterContext(executeNode, false);
5266
+ executeNode.body = [new ScoreboardCommandNode(this.pack, "players", "set", tracker, 1)];
5267
+ targetMCFunction.body.push(executeNode);
5268
+ targetMCFunction.exitContext();
5269
+ }
5270
+ const failCheckNode = new ExecuteCommandNode(this.pack, [["unless", `score ${tracker} matches 1`]], {
5271
+ isSingleExecute: true,
5272
+ body: []
5273
+ });
5274
+ targetMCFunction.enterContext(failCheckNode, false);
5275
+ failCheckNode.body = [new ReturnCommandNode(this.pack, [0])];
5276
+ targetMCFunction.body.push(failCheckNode);
5277
+ targetMCFunction.exitContext();
5278
+ };
5279
+ pushCheckBranch = (targetMCFunction, parsed, negated, bodyNode) => {
5280
+ for (const n of parsed.preNodes) {
5281
+ targetMCFunction.body.push(n);
5282
+ }
5283
+ const condStr = parsed.conditionNode.getValue(negated);
5284
+ const match = condStr.match(/^(if|unless)\s+([\s\S]+)$/);
5285
+ if (!match) {
5286
+ throw new Error(`OrTransformationVisitor: unexpected condition getValue() shape: ${condStr}`);
5287
+ }
5288
+ const [, keyword, condBody] = match;
5289
+ const executeNode = new ExecuteCommandNode(this.pack, [[keyword, condBody]], {
5290
+ isSingleExecute: true,
5291
+ body: []
5292
+ });
5293
+ targetMCFunction.enterContext(executeNode, false);
5294
+ executeNode.body = [bodyNode];
5295
+ targetMCFunction.body.push(executeNode);
5296
+ targetMCFunction.exitContext();
5297
+ };
5298
+ pushFailFastBranch = (targetMCFunction, parsed, bodyNode) => {
5299
+ for (const n of parsed.preNodes) {
5300
+ targetMCFunction.body.push(n);
5301
+ }
5302
+ const condStr = parsed.conditionNode.getValue(true);
5303
+ const match = condStr.match(/^(if|unless)\s+([\s\S]+)$/);
5304
+ if (!match) {
5305
+ throw new Error(`OrTransformationVisitor: unexpected condition getValue() shape: ${condStr}`);
5306
+ }
5307
+ const flippedKeyword = match[1] === "if" ? "unless" : "if";
5308
+ const condBody = match[2];
5309
+ const executeNode = new ExecuteCommandNode(this.pack, [[flippedKeyword, condBody]], {
5310
+ isSingleExecute: true,
5311
+ body: []
5312
+ });
5313
+ targetMCFunction.enterContext(executeNode, false);
5314
+ executeNode.body = [bodyNode];
5315
+ targetMCFunction.body.push(executeNode);
5316
+ targetMCFunction.exitContext();
5317
+ };
5318
+ parseNotNode = (node, parentMCFunction) => {
5319
+ const { preNodes, conditionNode } = this.parseConditionNode(node.condition, parentMCFunction);
5179
5320
  return {
5180
5321
  preNodes,
5181
5322
  conditionNode: new NotNode(node.sandstoneCore, conditionNode)
@@ -6429,6 +6570,7 @@ SleepClass = class SleepClass extends AwaitNode {
6429
6570
  // src/variables/abstractClasses.ts
6430
6571
 
6431
6572
  class ConditionClass {
6573
+ preNodes;
6432
6574
  _toMinecraftCondition() {
6433
6575
  throw new Error("Not implemented");
6434
6576
  }
@@ -8216,7 +8358,7 @@ var init_atlas = __esm(() => {
8216
8358
  });
8217
8359
 
8218
8360
  // src/core/resources/resourcepack/blockstate.ts
8219
- var BlockStateNode, BlockStateClass;
8361
+ var BlockStateDefinitionNode, BlockStateDefinitionClass;
8220
8362
  var init_blockstate = __esm(() => {
8221
8363
  init_arguments();
8222
8364
  init_nodes();
@@ -10255,8 +10397,14 @@ class Flow {
10255
10397
  this.sandstoneCore = sandstoneCore2;
10256
10398
  }
10257
10399
  if = (condition2, callback) => new IfStatement(this.sandstoneCore, conditionToNode(condition2), callback);
10258
- and = (...conditions) => new AndNode(this.sandstoneCore, conditions.map((condition2) => conditionToNode(condition2)));
10259
- or = (...conditions) => new OrNode(this.sandstoneCore, conditions.map((condition2) => conditionToNode(condition2)));
10400
+ and(...args) {
10401
+ const conditions = args[0] instanceof Array ? args[0] : args;
10402
+ return new AndNode(this.sandstoneCore, conditions.map((condition2) => conditionToNode(condition2)));
10403
+ }
10404
+ or(...args) {
10405
+ const conditions = args[0] instanceof Array ? args[0] : args;
10406
+ return new OrNode(this.sandstoneCore, conditions.map((condition2) => conditionToNode(condition2)));
10407
+ }
10260
10408
  not = (condition2) => new NotNode(this.sandstoneCore, conditionToNode(condition2));
10261
10409
  get return() {
10262
10410
  return this.sandstoneCore.pack.commands.returnCmd;
@@ -10516,12 +10664,13 @@ var init_loopTransformationVisitor = __esm(() => {
10516
10664
  });
10517
10665
 
10518
10666
  // src/pack/visitors/orTransformationVisitor.ts
10519
- var OrTransformationVisitor;
10667
+ var FunctionReturnConditionNode, OrTransformationVisitor;
10520
10668
  var init_orTransformationVisitor = __esm(() => {
10521
10669
  init_commands2();
10670
+ init_core();
10522
10671
  init_flow();
10523
10672
  init_visitor();
10524
- });
10673
+ });
10525
10674
 
10526
10675
  // src/pack/visitors/optimizeMacroTemporaries.ts
10527
10676
  var flattenArgs = (args) => args.flatMap((arg) => Array.isArray(arg) ? flattenArgs(arg) : [arg]), referencesStoragePoint = (node, point) => {
@@ -10668,11 +10817,11 @@ class SandstonePack {
10668
10817
  }
10669
10818
  return {
10670
10819
  datapack: {
10671
- packFormat: 61,
10820
+ packFormat: 111,
10672
10821
  description: "A Sandstone datapack"
10673
10822
  },
10674
10823
  resourcepack: {
10675
- packFormat: 46,
10824
+ packFormat: 92,
10676
10825
  description: "A Sandstone resource pack"
10677
10826
  }
10678
10827
  };
@@ -10749,7 +10898,7 @@ class SandstonePack {
10749
10898
  dataPack() {
10750
10899
  let pack = this.packTypes.get("datapack");
10751
10900
  if (!pack) {
10752
- const options = this.packOptions.datapack ?? { packFormat: 98, description: "A Sandstone datapack" };
10901
+ const options = this.packOptions.datapack ?? { packFormat: 111, description: "A Sandstone datapack" };
10753
10902
  pack = this.packTypes.set("datapack", new DataPack(false, options)).get("datapack");
10754
10903
  }
10755
10904
  return pack;
@@ -10757,16 +10906,17 @@ class SandstonePack {
10757
10906
  resourcePack() {
10758
10907
  let pack = this.packTypes.get("resourcepack");
10759
10908
  if (!pack) {
10760
- const options = this.packOptions.resourcepack ?? { packFormat: 79, description: "A Sandstone resource pack" };
10909
+ const options = this.packOptions.resourcepack ?? { packFormat: 92, description: "A Sandstone resource pack" };
10761
10910
  pack = this.packTypes.set("resourcepack", new ResourcePack(options)).get("resourcepack");
10762
10911
  }
10763
10912
  return pack;
10764
10913
  }
10765
10914
  setupLantern = () => {
10766
- const loadStatus = this.Objective.create("load.status", "dummy", undefined, { useDefaultNamespace: false });
10915
+ const loadStatus = this.Objective.create("load.status", "dummy", undefined, { useDefaultNamespace: false, alreadyExists: true });
10767
10916
  const privateInit = this.Tag("function", "load:_private/init", [
10768
10917
  this.MCFunction("load:_private/init", () => {
10769
10918
  this.commands.comment("Reset scoreboards so packs can set values accurate for current load.");
10919
+ this.commands.scoreboard.objectives.add(loadStatus.name, "dummy");
10770
10920
  loadStatus.reset();
10771
10921
  })
10772
10922
  ]);
@@ -10903,10 +11053,10 @@ class SandstonePack {
10903
11053
  return anonymousData;
10904
11054
  }
10905
11055
  DataIndexMap(initialize, dataPoint2) {
10906
- return DataIndexMap(this, initialize, dataPoint2);
11056
+ return DataIndexMapInternal(this, initialize, dataPoint2);
10907
11057
  }
10908
11058
  DataArray(initialize, dataPoint2) {
10909
- return DataArray(this, initialize, dataPoint2);
11059
+ return DataArrayInternal(this, initialize, dataPoint2);
10910
11060
  }
10911
11061
  getTempStorage = (name) => {
10912
11062
  if (tempStorage) {
@@ -11213,12 +11363,12 @@ class SandstonePack {
11213
11363
  onConflict: conflictDefaults("atlas"),
11214
11364
  ...options
11215
11365
  });
11216
- BlockState(name, json, options) {
11217
- return new BlockStateClass(this.core, name, {
11366
+ BlockStateDefinition(name, json, options) {
11367
+ return new BlockStateDefinitionClass(this.core, name, {
11218
11368
  json,
11219
11369
  creator: "user",
11220
11370
  addToSandstoneCore: true,
11221
- onConflict: conflictDefaults("blockstate"),
11371
+ onConflict: conflictDefaults("block_definition"),
11222
11372
  ...options
11223
11373
  });
11224
11374
  }
@@ -52523,7 +52673,7 @@ var init_resources3 = __esm(() => {
52523
52673
  [VillagerTradeClass, "villager_trade"],
52524
52674
  [WorldClockClass, "world_clock"],
52525
52675
  [AtlasClass, "atlas"],
52526
- [BlockStateClass, "block_definition"],
52676
+ [BlockStateDefinitionClass, "block_definition"],
52527
52677
  [EquipmentClass, "equipment"],
52528
52678
  [FontClass, "font"],
52529
52679
  [ItemModelDefinitionClass, "item_definition"],
@@ -52577,7 +52727,7 @@ var init_ItemPredicate = __esm(() => {
52577
52727
  });
52578
52728
 
52579
52729
  // src/variables/DataSets.ts
52580
- function DataIndexMap(pack2, initialize, dataPoint2) {
52730
+ function DataIndexMapInternal(pack2, initialize, dataPoint2) {
52581
52731
  const indexMap = new DataIndexMapClass(pack2, initialize, dataPoint2);
52582
52732
  return new Proxy(indexMap, {
52583
52733
  get(target, p, receiver) {
@@ -52595,7 +52745,7 @@ function DataIndexMap(pack2, initialize, dataPoint2) {
52595
52745
  }
52596
52746
  });
52597
52747
  }
52598
- function DataArray(pack2, initialize, dataPoint2) {
52748
+ function DataArrayInternal(pack2, initialize, dataPoint2) {
52599
52749
  const array = new DataArrayClass(pack2, initialize, dataPoint2);
52600
52750
  return new Proxy(array, {
52601
52751
  get(target, p, receiver) {
@@ -53286,7 +53436,7 @@ var {
53286
53436
  VillagerTrade,
53287
53437
  WorldClock,
53288
53438
  Atlas,
53289
- BlockState,
53439
+ BlockStateDefinition,
53290
53440
  Equipment,
53291
53441
  Font,
53292
53442
  ItemModelDefinition,
@@ -53310,8 +53460,8 @@ var {
53310
53460
  DataVariable,
53311
53461
  getTempStorage,
53312
53462
  ResolveNBT: ResolveNBT2,
53313
- DataIndexMap: DataIndexMap2,
53314
- DataArray: DataArray2,
53463
+ DataIndexMap,
53464
+ DataArray,
53315
53465
  Selector: Selector2,
53316
53466
  UUID: UUID2,
53317
53467
  ItemPredicate: ItemPredicate2,
@@ -53973,14 +54123,16 @@ export {
53973
54123
  DataModifyFromCommand,
53974
54124
  DataModifyCommand,
53975
54125
  DataMergeCommand,
54126
+ DataIndexMapInternal,
53976
54127
  DataIndexMapClass,
53977
- DataIndexMap2 as DataIndexMap,
54128
+ DataIndexMap,
53978
54129
  DataGetCommand,
53979
54130
  DataCommandNode,
53980
54131
  DataCommand,
53981
54132
  DataClass,
54133
+ DataArrayInternal,
53982
54134
  DataArrayClass,
53983
- DataArray2 as DataArray,
54135
+ DataArray,
53984
54136
  Data2 as Data,
53985
54137
  DamageTypeNode,
53986
54138
  DamageTypeClass,
@@ -54044,9 +54196,9 @@ export {
54044
54196
  BossBarCommandNode,
54045
54197
  BossBarCommand,
54046
54198
  BlocksConditionNode,
54047
- BlockStateNode,
54048
- BlockStateClass,
54049
- BlockState,
54199
+ BlockStateDefinitionNode,
54200
+ BlockStateDefinitionClass,
54201
+ BlockStateDefinition,
54050
54202
  BlockConditionNode,
54051
54203
  BiomeConditionNode,
54052
54204
  BannerPatternNode,
@@ -54080,5 +54232,5 @@ export {
54080
54232
  ACTIVITIES_SET
54081
54233
  };
54082
54234
 
54083
- //# debugId=B948D6DA5FED7C0E64756E2164756E21
54235
+ //# debugId=4AE8B281EBDAB42264756E2164756E21
54084
54236
  //# sourceMappingURL=index.js.map