@spyglassmc/java-edition 0.1.0 → 0.1.3

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 (49) hide show
  1. package/lib/binder/index.d.ts +3 -3
  2. package/lib/binder/index.js +2 -2
  3. package/lib/common/index.js +5 -1
  4. package/lib/dependency/common.d.ts +8 -5
  5. package/lib/dependency/common.js +15 -12
  6. package/lib/dependency/index.d.ts +1 -1
  7. package/lib/dependency/index.js +11 -7
  8. package/lib/dependency/mcmeta.d.ts +1 -2
  9. package/lib/dependency/mcmeta.js +27 -70
  10. package/lib/index.js +21 -5
  11. package/lib/json/checker/data/common.d.ts +1 -1
  12. package/lib/json/checker/data/index.d.ts +1 -1
  13. package/lib/json/checker/data/tag.js +1 -1
  14. package/lib/json/checker/util/block_states.js +5 -1
  15. package/lib/json/checker/util/index.js +5 -1
  16. package/lib/json/checker/util/nbt.d.ts +1 -2
  17. package/lib/json/checker/util/version.d.ts +12 -12
  18. package/lib/json/checker/util/version.js +1 -1
  19. package/lib/json/index.js +5 -1
  20. package/lib/mcfunction/checker/index.js +108 -26
  21. package/lib/mcfunction/colorizer/index.js +5 -1
  22. package/lib/mcfunction/common/index.js +5 -1
  23. package/lib/mcfunction/completer/argument.js +10 -6
  24. package/lib/mcfunction/completer/index.js +5 -1
  25. package/lib/mcfunction/index.d.ts +2 -2
  26. package/lib/mcfunction/index.js +13 -22
  27. package/lib/mcfunction/inlayHintProvider.js +5 -1
  28. package/lib/mcfunction/node/argument.d.ts +3 -1
  29. package/lib/mcfunction/node/argument.js +23 -11
  30. package/lib/mcfunction/node/index.js +5 -1
  31. package/lib/mcfunction/parser/argument.d.ts +2 -1
  32. package/lib/mcfunction/parser/argument.js +14 -10
  33. package/lib/mcfunction/parser/index.js +5 -1
  34. package/lib/mcfunction/signatureHelpProvider.js +5 -1
  35. package/lib/mcfunction/tree/index.d.ts +0 -5
  36. package/lib/mcfunction/tree/index.js +5 -6
  37. package/lib/mcfunction/tree/patch.d.ts +4 -0
  38. package/lib/mcfunction/tree/patch.js +752 -0
  39. package/package.json +7 -7
  40. package/lib/mcfunction/tree/1.15.d.ts +0 -9
  41. package/lib/mcfunction/tree/1.15.js +0 -542
  42. package/lib/mcfunction/tree/1.16.d.ts +0 -10
  43. package/lib/mcfunction/tree/1.16.js +0 -77
  44. package/lib/mcfunction/tree/1.17.d.ts +0 -12
  45. package/lib/mcfunction/tree/1.17.js +0 -166
  46. package/lib/mcfunction/tree/1.18.d.ts +0 -26
  47. package/lib/mcfunction/tree/1.18.js +0 -6
  48. package/lib/mcfunction/tree/1.19.d.ts +0 -26
  49. package/lib/mcfunction/tree/1.19.js +0 -6
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -25,7 +29,6 @@ const json = __importStar(require("@spyglassmc/json"));
25
29
  const lib_1 = require("@spyglassmc/locales/lib");
26
30
  const mcf = __importStar(require("@spyglassmc/mcfunction"));
27
31
  const nbt = __importStar(require("@spyglassmc/nbt"));
28
- const nbtdoc = __importStar(require("@spyglassmc/nbtdoc"));
29
32
  const common_1 = require("../../common");
30
33
  const text_component_1 = require("../../json/checker/data/text_component");
31
34
  const node_1 = require("../node");
@@ -43,6 +46,23 @@ const getNode = (nodes, index) => {
43
46
  return nodes[index]?.children[0];
44
47
  };
45
48
  const rootCommand = (nodes, index, ctx) => {
49
+ for (const { children: [node] } of nodes) {
50
+ if (node_1.BlockNode.is(node)) {
51
+ block(node, ctx);
52
+ }
53
+ else if (node_1.EntityNode.is(node)) {
54
+ entity(node, ctx);
55
+ }
56
+ else if (node_1.ItemNode.is(node)) {
57
+ item(node, ctx);
58
+ }
59
+ else if (node_1.ParticleNode.is(node)) {
60
+ particle(node, ctx);
61
+ }
62
+ else if (json.JsonNode.is(node)) {
63
+ (0, text_component_1.text_component)(node, { ...ctx, context: '' });
64
+ }
65
+ }
46
66
  if (getName(nodes, index) === 'data') {
47
67
  if (getName(nodes, index + 1) === 'get') {
48
68
  nbtPath(nodes, index + 2, ctx);
@@ -53,26 +73,61 @@ const rootCommand = (nodes, index, ctx) => {
53
73
  else if (getName(nodes, index + 1) === 'modify') {
54
74
  nbtPath(nodes, index + 2, ctx);
55
75
  const targetPath = getNode(nodes, index + 4);
56
- const operation = getName(nodes, index + 5);
57
- const sourceTypeIndex = operation === 'insert' ? index + 7 : index + 6;
58
- if (getName(nodes, sourceTypeIndex) === 'from') {
59
- // `from <$nbtPath$>`
60
- nbtPath(nodes, sourceTypeIndex + 1, ctx);
61
- const sourcePath = getNode(nodes, sourceTypeIndex + 3);
62
- if (nbt.NbtPathNode.is(targetPath) && nbt.NbtPathNode.is(sourcePath)) {
63
- const { errorMessage } = nbtdoc.checkAssignability({ source: sourcePath.targetType, target: targetPath.targetType });
64
- if (errorMessage) {
65
- ctx.err.report(errorMessage, core.Range.span(targetPath, sourcePath), 2 /* Warning */);
66
- }
67
- }
68
- }
69
- else if (getName(nodes, sourceTypeIndex) === 'value') {
70
- // `value <value: nbt_tag>`
71
- const valueNode = getNode(nodes, sourceTypeIndex + 1);
72
- if (nbt.NbtPathNode.is(targetPath) && targetPath.targetType && nbt.NbtNode.is(valueNode)) {
73
- nbt.checker.fieldValue(targetPath.targetType, { allowUnknownKey: true })(valueNode, ctx);
74
- }
75
- }
76
+ // if (nbt.NbtPathNode.is(targetPath)) {
77
+ // const operationNode = getNode(nodes, index + 5)
78
+ // const operation = getName(nodes, index + 5) as 'append' | 'insert' | 'merge' | 'prepend' | 'set' | undefined
79
+ // const sourceTypeIndex = operation === 'insert' ? index + 7 : index + 6
80
+ // let targetMcdocType: mcdoc.McdocType | undefined = targetPath.targetType ? mcdoc.simplifyType(targetPath.targetType) : undefined
81
+ // const isType = (type: mcdoc.McdocType['kind']) => !targetMcdocType || targetMcdocType.kind === type || (targetMcdocType.type === 'union' && targetMcdocType.members.some(m => m.type === type))
82
+ // if (operation === 'merge') {
83
+ // if (!(isType('compound') || isType('index'))) {
84
+ // ctx.err.report(
85
+ // localize('mcfunction.checker.command.data-modify-unapplicable-operation', localeQuote(operation), localize('nbt.node.compound'), localeQuote(mcdoc.McdocType.toString(targetMcdocType))),
86
+ // core.Range.span(targetPath, operationNode!),
87
+ // core.ErrorSeverity.Warning
88
+ // )
89
+ // targetMcdocType = undefined
90
+ // }
91
+ // } else if (operation === 'append' || operation === 'insert' || operation === 'prepend') {
92
+ // if (isType('list') || isType('byte_array') || isType('int_array') || isType('long_array')) {
93
+ // if (targetMcdocType?.type === 'list') {
94
+ // targetMcdocType = targetMcdocType.item
95
+ // } else if (targetMcdocType?.type === 'byte_array') {
96
+ // targetMcdocType = { type: 'byte', valueRange: targetMcdocType.valueRange }
97
+ // } else if (targetMcdocType?.type === 'int_array') {
98
+ // targetMcdocType = { type: 'int', valueRange: targetMcdocType.valueRange }
99
+ // } else if (targetMcdocType?.type === 'long_array') {
100
+ // targetMcdocType = { type: 'long', valueRange: targetMcdocType.valueRange }
101
+ // }
102
+ // } else {
103
+ // ctx.err.report(
104
+ // localize('mcfunction.checker.command.data-modify-unapplicable-operation', localeQuote(operation), localize('nbt.node.list'), localeQuote(mcdoc.McdocType.toString(targetMcdocType))),
105
+ // core.Range.span(targetPath, operationNode!),
106
+ // core.ErrorSeverity.Warning
107
+ // )
108
+ // targetMcdocType = undefined
109
+ // }
110
+ // }
111
+ // if (targetMcdocType) {
112
+ // if (getName(nodes, sourceTypeIndex) === 'from') {
113
+ // // `from <$nbtPath$>`
114
+ // nbtPath(nodes, sourceTypeIndex + 1, ctx)
115
+ // const sourcePath = getNode(nodes, sourceTypeIndex + 3)
116
+ // if (nbt.NbtPathNode.is(sourcePath)) {
117
+ // const { errorMessage } = mcdoc.checkAssignability({ source: sourcePath.targetType, target: targetMcdocType })
118
+ // if (errorMessage) {
119
+ // ctx.err.report(errorMessage, core.Range.span(targetPath, sourcePath), core.ErrorSeverity.Warning)
120
+ // }
121
+ // }
122
+ // } else if (getName(nodes, sourceTypeIndex) === 'value') {
123
+ // // `value <value: nbt_tag>`
124
+ // const valueNode = getNode(nodes, sourceTypeIndex + 1)
125
+ // if (nbt.NbtNode.is(valueNode)) {
126
+ // nbt.checker.fieldValue(targetMcdocType, { allowUnknownKey: true })(valueNode, ctx)
127
+ // }
128
+ // }
129
+ // }
130
+ // }
76
131
  }
77
132
  else if (getName(nodes, index + 1) === 'remove') {
78
133
  nbtPath(nodes, index + 2, ctx);
@@ -94,12 +149,34 @@ const rootCommand = (nodes, index, ctx) => {
94
149
  else if (getName(nodes, index) === 'summon') {
95
150
  summonNbt(nodes, index + 1, ctx);
96
151
  }
97
- for (const { children: [node] } of nodes) {
98
- if (json.JsonNode.is(node)) {
99
- (0, text_component_1.text_component)(node, { ...ctx, context: '' });
100
- }
152
+ };
153
+ //#region Checkers for argument nodes
154
+ const block = (node, ctx) => {
155
+ if (!node.nbt) {
156
+ return;
101
157
  }
158
+ nbt.checker.index('block', core.ResourceLocationNode.toString(node.id, 'full'))(node.nbt, ctx);
159
+ };
160
+ const entity = (node, ctx) => {
161
+ const nbtPair = node.selector?.arguments?.children.find(pair => pair.key?.value === 'nbt');
162
+ if (!nbtPair) {
163
+ return;
164
+ }
165
+ const types = (0, exports.getTypesFromEntity)(node, ctx);
166
+ const nbtValue = nbtPair.value;
167
+ nbt.checker.index('entity_type', types)(nbtValue, ctx);
168
+ };
169
+ const item = (node, ctx) => {
170
+ if (!node.nbt) {
171
+ return;
172
+ }
173
+ nbt.checker.index('item', core.ResourceLocationNode.toString(node.id, 'full'))(node.nbt, ctx);
174
+ };
175
+ const particle = (node, ctx) => {
176
+ core.checker.dispatchSync(node, ctx);
102
177
  };
178
+ //#endregion
179
+ //#region Checkers for command argument structure.
103
180
  /**
104
181
  * - `block <targetPos: block_pos> <nbt: nbt_compound_tag>`
105
182
  * - `entity <target: entity> <nbt: nbt_compound_tag>`
@@ -178,6 +255,7 @@ const summonNbt = (nodes, index, ctx) => {
178
255
  nbt.checker.index('entity_type', core.ResourceLocationNode.toString(typeNode, 'full'))(nbtNode, ctx);
179
256
  }
180
257
  };
258
+ //#endregion
181
259
  const getTypesFromEntity = (entity, ctx) => {
182
260
  if (entity.playerName !== undefined || entity.selector?.playersOnly) {
183
261
  return ['minecraft:player'];
@@ -212,6 +290,10 @@ const getTypesFromEntity = (entity, ctx) => {
212
290
  exports.getTypesFromEntity = getTypesFromEntity;
213
291
  function register(meta) {
214
292
  meta.registerChecker('mcfunction:command', exports.command);
293
+ meta.registerChecker('mcfunction:block', block);
294
+ meta.registerChecker('mcfunction:entity', entity);
295
+ meta.registerChecker('mcfunction:item', item);
296
+ meta.registerChecker('mcfunction:particle', particle);
215
297
  }
216
298
  exports.register = register;
217
299
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -150,7 +154,7 @@ const blockStates = (node, ctx) => {
150
154
  return Object.keys(states)
151
155
  .filter(k => pair?.key?.value === k || !existingKeys.some(ek => ek.value === k))
152
156
  .map(k => core_1.CompletionItem.create(k, range, {
153
- kind: 10 /* Property */,
157
+ kind: 10 /* CompletionKind.Property */,
154
158
  detail: (0, locales_1.localize)('mcfunction.completer.block.states.default-value', (0, locales_1.localeQuote)(states[k][0])),
155
159
  insertText: new core_1.InsertTextBuilder()
156
160
  .literal(k)
@@ -162,7 +166,7 @@ const blockStates = (node, ctx) => {
162
166
  value: (_record, pair, ctx) => {
163
167
  if (pair.key && states[pair.key.value]) {
164
168
  return states[pair.key.value].map(v => core_1.CompletionItem.create(v, pair.value ?? ctx.offset, {
165
- kind: 12 /* Value */,
169
+ kind: 12 /* CompletionKind.Value */,
166
170
  }));
167
171
  }
168
172
  return [];
@@ -245,9 +249,9 @@ const selectorArguments = (node, ctx) => {
245
249
  return core_1.completer.record({
246
250
  key: (record, pair, _ctx, range, insertValue, insertComma) => {
247
251
  return [...node_1.EntitySelectorNode.ArgumentKeys]
248
- .filter(k => node_1.EntitySelectorNode.canKeyExist(selector, record, k) === 0 /* Ok */)
252
+ .filter(k => node_1.EntitySelectorNode.canKeyExist(selector, record, k) === 0 /* EntitySelectorNode.Result.Ok */)
249
253
  .map(k => core_1.CompletionItem.create(k, range, {
250
- kind: 10 /* Property */,
254
+ kind: 10 /* CompletionKind.Property */,
251
255
  insertText: new core_1.InsertTextBuilder()
252
256
  .literal(k)
253
257
  .if(insertValue, b => b.literal('=').placeholder()) // TODO
@@ -264,7 +268,7 @@ const selectorArguments = (node, ctx) => {
264
268
  })(node, ctx);
265
269
  };
266
270
  const intRange = (node, _ctx) => {
267
- return [core_1.CompletionItem.create('-2147483648..2147483647', node, { kind: 21 /* Constant */ })];
271
+ return [core_1.CompletionItem.create('-2147483648..2147483647', node, { kind: 21 /* CompletionKind.Constant */ })];
268
272
  };
269
273
  const vector = (node, _ctx) => {
270
274
  const createCompletion = (coordinate, sortText) => core_1.CompletionItem.create(new Array(node.options.dimension).fill(coordinate).join(' '), node, { sortText });
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -1,8 +1,8 @@
1
1
  import type * as core from '@spyglassmc/core';
2
- import type { MajorVersion, McmetaCommands } from '../dependency';
2
+ import type { McmetaCommands, ReleaseVersion } from '../dependency';
3
3
  export * as checker from './checker';
4
4
  export * as colorizer from './colorizer';
5
5
  export * as completer from './completer';
6
6
  export * as parser from './parser';
7
- export declare const initialize: (ctx: core.ProjectInitializerContext, commands: McmetaCommands, majorVersion: MajorVersion) => void;
7
+ export declare const initialize: (ctx: core.ProjectInitializerContext, commands: McmetaCommands, releaseVersion: ReleaseVersion) => void;
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -27,46 +31,33 @@ const completer = __importStar(require("./completer"));
27
31
  const inlayHintProvider_1 = require("./inlayHintProvider");
28
32
  const parser = __importStar(require("./parser"));
29
33
  const signatureHelpProvider_1 = require("./signatureHelpProvider");
30
- const tree_1 = require("./tree");
34
+ const patch_1 = require("./tree/patch");
31
35
  exports.checker = __importStar(require("./checker"));
32
36
  exports.colorizer = __importStar(require("./colorizer"));
33
37
  exports.completer = __importStar(require("./completer"));
34
38
  exports.parser = __importStar(require("./parser"));
35
- // DOCS: Update here when a new major version of Minecraft is released.
36
- const Trees = new Map([
37
- ['1.15', tree_1.Tree1_15],
38
- ['1.16', tree_1.Tree1_16],
39
- ['1.17', tree_1.Tree1_17],
40
- ['1.18', tree_1.Tree1_18],
41
- ['1.19', tree_1.Tree1_19],
42
- ]);
43
- const LatestTree = (() => {
44
- const values = [...Trees.values()];
45
- return values[values.length - 1];
46
- })();
47
39
  /* istanbul ignore next */
48
- const initialize = (ctx, commands, majorVersion) => {
40
+ const initialize = (ctx, commands, releaseVersion) => {
49
41
  const { meta } = ctx;
50
42
  mcf.initialize(ctx);
51
- mcf.CommandTreeRegistry.instance.register(majorVersion, commands, Trees.get(majorVersion) ?? LatestTree);
43
+ mcf.CommandTreeRegistry.instance.register(releaseVersion, commands, (0, patch_1.getPatch)(releaseVersion));
52
44
  meta.registerLanguage('mcfunction', {
53
45
  extensions: ['.mcfunction'],
54
- parser: mcf.entry(majorVersion, parser.argument),
55
- completer: mcf.completer.entry(majorVersion, completer.getMockNodes),
46
+ parser: mcf.entry(releaseVersion, parser.argument),
47
+ completer: mcf.completer.entry(releaseVersion, completer.getMockNodes),
56
48
  triggerCharacters: [' ', '[', '=', '!', ',', '{', ':', '/', '.', '"', "'"],
57
49
  });
58
50
  meta.registerParser('mcfunction:block_predicate', parser.blockPredicate);
59
51
  meta.registerParser('mcfunction:component', parser.component);
60
- // TODO: 'mcfunction:particle'
61
- // TODO: Uncomment in `SpecialStrings` in `nbtdocUtil.ts` as well.
52
+ meta.registerParser('mcfunction:particle', parser.particle);
62
53
  meta.registerParser('mcfunction:tag', parser.tag());
63
54
  meta.registerParser('mcfunction:team', parser.team());
64
- meta.registerParser('mcfunction:command', mcf.command(mcf.CommandTreeRegistry.instance.get(majorVersion), parser.argument));
55
+ meta.registerParser('mcfunction:command', mcf.command(mcf.CommandTreeRegistry.instance.get(releaseVersion), parser.argument));
65
56
  checker.register(meta);
66
57
  colorizer.register(meta);
67
58
  completer.register(meta);
68
59
  meta.registerInlayHintProvider(inlayHintProvider_1.inlayHintProvider);
69
- meta.registerSignatureHelpProvider((0, signatureHelpProvider_1.signatureHelpProvider)(majorVersion));
60
+ meta.registerSignatureHelpProvider((0, signatureHelpProvider_1.signatureHelpProvider)(releaseVersion));
70
61
  };
71
62
  exports.initialize = initialize;
72
63
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -80,7 +80,7 @@ export interface EntitySelectorNode extends core.AstNode {
80
80
  export declare namespace EntitySelectorNode {
81
81
  function is(node: core.AstNode | undefined): node is EntitySelectorNode;
82
82
  function mock(range: core.RangeLike): EntitySelectorNode;
83
- const ArgumentKeys: Set<"predicate" | "tag" | "team" | "type" | "x" | "y" | "z" | "sort" | "level" | "advancements" | "nbt" | "name" | "scores" | "limit" | "distance" | "gamemode" | "dx" | "dy" | "dz" | "x_rotation" | "y_rotation">;
83
+ const ArgumentKeys: Set<"sort" | "type" | "predicate" | "tag" | "team" | "x" | "y" | "z" | "level" | "advancements" | "nbt" | "name" | "scores" | "limit" | "distance" | "gamemode" | "dx" | "dy" | "dz" | "x_rotation" | "y_rotation">;
84
84
  type ArgumentKey = typeof ArgumentKeys extends Set<infer T> ? T : undefined;
85
85
  const enum Result {
86
86
  Ok = 0,
@@ -111,6 +111,7 @@ export interface ItemNode extends core.AstNode {
111
111
  nbt?: nbt.NbtCompoundNode;
112
112
  }
113
113
  export declare namespace ItemNode {
114
+ function is(node: core.AstNode | undefined): node is ItemNode;
114
115
  function mock(range: core.RangeLike, isPredicate: boolean): ItemNode;
115
116
  }
116
117
  export interface IntRangeNode extends core.AstNode {
@@ -145,6 +146,7 @@ export declare namespace ParticleNode {
145
146
  const SpecialTypes: Set<"block" | "item" | "block_marker" | "dust" | "dust_color_transition" | "falling_dust" | "sculk_charge" | "vibration">;
146
147
  export type SpecialType = typeof SpecialTypes extends Set<infer T> ? T : undefined;
147
148
  export function isSpecialType(type: string | undefined): type is SpecialType;
149
+ export function is(node: core.AstNode | undefined): node is ParticleNode;
148
150
  export function mock(range: core.RangeLike): ParticleNode;
149
151
  export {};
150
152
  }
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -134,26 +138,26 @@ var EntitySelectorNode;
134
138
  case 'dz':
135
139
  case 'x_rotation':
136
140
  case 'y_rotation':
137
- return hasKey(key) ? 1 /* Duplicated */ : 0 /* Ok */;
141
+ return hasKey(key) ? 1 /* Result.Duplicated */ : 0 /* Result.Ok */;
138
142
  case 'gamemode':
139
143
  case 'name':
140
144
  case 'team':
141
- return hasNonInvertedKey(key) ? 1 /* Duplicated */ : 0 /* Ok */;
145
+ return hasNonInvertedKey(key) ? 1 /* Result.Duplicated */ : 0 /* Result.Ok */;
142
146
  case 'limit':
143
147
  case 'sort':
144
148
  return selector.currentEntity
145
- ? 2 /* NotApplicable */
149
+ ? 2 /* Result.NotApplicable */
146
150
  : hasKey(key)
147
- ? 1 /* Duplicated */
148
- : 0 /* Ok */;
151
+ ? 1 /* Result.Duplicated */
152
+ : 0 /* Result.Ok */;
149
153
  case 'type':
150
154
  return selector.typeLimited
151
155
  ? hasKey(key)
152
- ? 1 /* Duplicated */
153
- : 2 /* NotApplicable */
154
- : 0 /* Ok */;
156
+ ? 1 /* Result.Duplicated */
157
+ : 2 /* Result.NotApplicable */
158
+ : 0 /* Result.Ok */;
155
159
  }
156
- return 0 /* Ok */;
160
+ return 0 /* Result.Ok */;
157
161
  }
158
162
  EntitySelectorNode.canKeyExist = canKeyExist;
159
163
  })(EntitySelectorNode = exports.EntitySelectorNode || (exports.EntitySelectorNode = {}));
@@ -166,6 +170,10 @@ var EntityNode;
166
170
  })(EntityNode = exports.EntityNode || (exports.EntityNode = {}));
167
171
  var ItemNode;
168
172
  (function (ItemNode) {
173
+ function is(node) {
174
+ return node?.type === 'mcfunction:item';
175
+ }
176
+ ItemNode.is = is;
169
177
  function mock(range, isPredicate) {
170
178
  const id = core.ResourceLocationNode.mock(range, { category: 'item', allowTag: isPredicate });
171
179
  return {
@@ -231,6 +239,10 @@ var ParticleNode;
231
239
  return SpecialTypes.has(type);
232
240
  }
233
241
  ParticleNode.isSpecialType = isSpecialType;
242
+ function is(node) {
243
+ return node?.type === 'mcfunction:particle';
244
+ }
245
+ ParticleNode.is = is;
234
246
  function mock(range) {
235
247
  const id = core.ResourceLocationNode.mock(range, { category: 'particle_type' });
236
248
  return {
@@ -273,7 +285,7 @@ var VectorNode;
273
285
  range: core.Range.get(range),
274
286
  children: [],
275
287
  options,
276
- system: 0 /* World */,
288
+ system: 0 /* CoordinateSystem.World */,
277
289
  };
278
290
  }
279
291
  VectorNode.mock = mock;
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -1,7 +1,7 @@
1
1
  import * as core from '@spyglassmc/core';
2
2
  import * as json from '@spyglassmc/json';
3
3
  import * as mcf from '@spyglassmc/mcfunction';
4
- import type { BlockNode } from '../node';
4
+ import type { BlockNode, ParticleNode } from '../node';
5
5
  /**
6
6
  * @returns The parser for the specified argument tree node. All argument parsers used in the `mcfunction` package
7
7
  * fail on empty input.
@@ -9,6 +9,7 @@ import type { BlockNode } from '../node';
9
9
  export declare const argument: mcf.ArgumentParserGetter;
10
10
  export declare const blockPredicate: core.InfallibleParser<BlockNode>;
11
11
  export declare const component: core.Parser<json.JsonNode>;
12
+ export declare const particle: core.InfallibleParser<ParticleNode>;
12
13
  export declare const scoreHolderFakeName: core.Parser<core.SymbolNode>;
13
14
  export declare function tag(terminators?: string[]): core.InfallibleParser<core.SymbolNode>;
14
15
  export declare function team(usageType?: core.SymbolUsageType, terminators?: string[]): core.InfallibleParser<core.SymbolNode>;
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -19,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
19
23
  return result;
20
24
  };
21
25
  Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.team = exports.tag = exports.scoreHolderFakeName = exports.component = exports.blockPredicate = exports.argument = void 0;
26
+ exports.team = exports.tag = exports.scoreHolderFakeName = exports.particle = exports.component = exports.blockPredicate = exports.argument = void 0;
23
27
  const core = __importStar(require("@spyglassmc/core"));
24
28
  const core_1 = require("@spyglassmc/core");
25
29
  const json = __importStar(require("@spyglassmc/json"));
@@ -56,8 +60,8 @@ const FakeNameMaxLength = 40;
56
60
  const ObjectiveMaxLength = 16;
57
61
  const PlayerNameMaxLength = 16;
58
62
  function shouldValidateLength(ctx) {
59
- const major = ctx.project['loadedVersion'];
60
- return !major || dependency_1.MajorVersion.cmp(major, '1.18') < 0;
63
+ const release = ctx.project['loadedVersion'];
64
+ return !release || dependency_1.ReleaseVersion.cmp(release, '1.18') < 0;
61
65
  }
62
66
  /**
63
67
  * @returns The parser for the specified argument tree node. All argument parsers used in the `mcfunction` package
@@ -163,7 +167,7 @@ const argument = (rawTreeNode) => {
163
167
  colorTokenType: 'operator',
164
168
  }));
165
169
  case 'minecraft:particle':
166
- return wrap(particle);
170
+ return wrap(exports.particle);
167
171
  case 'minecraft:resource':
168
172
  case 'minecraft:resource_or_tag':
169
173
  return wrap(core.resourceLocation({
@@ -363,7 +367,7 @@ const message = (src, ctx) => {
363
367
  }
364
368
  return ans;
365
369
  };
366
- const particle = (() => {
370
+ exports.particle = (() => {
367
371
  const sep = core.map(mcf.sep, () => []);
368
372
  const vec = vector({ dimension: 3 });
369
373
  const color = core.map(vec, res => ({
@@ -909,10 +913,10 @@ function vector(options) {
909
913
  range: core.Range.create(src),
910
914
  children: [],
911
915
  options,
912
- system: 0 /* World */,
916
+ system: 0 /* CoordinateSystem.World */,
913
917
  };
914
918
  if (src.peek() === '^') {
915
- ans.system = 1 /* Local */;
919
+ ans.system = 1 /* CoordinateSystem.Local */;
916
920
  }
917
921
  for (let i = 0; i < options.dimension; i++) {
918
922
  if (i > 0) {
@@ -920,11 +924,11 @@ function vector(options) {
920
924
  }
921
925
  const coord = options.integersOnly ? coordinate(options.integersOnly)(src, ctx) : coordinate(options.integersOnly)(src, ctx);
922
926
  ans.children.push(coord);
923
- if ((ans.system === 1 /* Local */) !== (coord.notation === '^')) {
927
+ if ((ans.system === 1 /* CoordinateSystem.Local */) !== (coord.notation === '^')) {
924
928
  ctx.err.report((0, locales_1.localize)('mcfunction.parser.vector.mixed'), coord);
925
929
  }
926
930
  }
927
- if (options.noLocal && ans.system === 1 /* Local */) {
931
+ if (options.noLocal && ans.system === 1 /* CoordinateSystem.Local */) {
928
932
  ctx.err.report((0, locales_1.localize)('mcfunction.parser.vector.local-disallowed'), ans);
929
933
  }
930
934
  ans.range.end = src.cursor;
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -1,7 +1,2 @@
1
- export * from './1.15';
2
- export * from './1.16';
3
- export * from './1.17';
4
- export * from './1.18';
5
- export * from './1.19';
6
1
  export * from './argument';
7
2
  //# sourceMappingURL=index.d.ts.map