@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.
- package/lib/binder/index.d.ts +3 -3
- package/lib/binder/index.js +2 -2
- package/lib/common/index.js +5 -1
- package/lib/dependency/common.d.ts +8 -5
- package/lib/dependency/common.js +15 -12
- package/lib/dependency/index.d.ts +1 -1
- package/lib/dependency/index.js +11 -7
- package/lib/dependency/mcmeta.d.ts +1 -2
- package/lib/dependency/mcmeta.js +27 -70
- package/lib/index.js +21 -5
- package/lib/json/checker/data/common.d.ts +1 -1
- package/lib/json/checker/data/index.d.ts +1 -1
- package/lib/json/checker/data/tag.js +1 -1
- package/lib/json/checker/util/block_states.js +5 -1
- package/lib/json/checker/util/index.js +5 -1
- package/lib/json/checker/util/nbt.d.ts +1 -2
- package/lib/json/checker/util/version.d.ts +12 -12
- package/lib/json/checker/util/version.js +1 -1
- package/lib/json/index.js +5 -1
- package/lib/mcfunction/checker/index.js +108 -26
- package/lib/mcfunction/colorizer/index.js +5 -1
- package/lib/mcfunction/common/index.js +5 -1
- package/lib/mcfunction/completer/argument.js +10 -6
- package/lib/mcfunction/completer/index.js +5 -1
- package/lib/mcfunction/index.d.ts +2 -2
- package/lib/mcfunction/index.js +13 -22
- package/lib/mcfunction/inlayHintProvider.js +5 -1
- package/lib/mcfunction/node/argument.d.ts +3 -1
- package/lib/mcfunction/node/argument.js +23 -11
- package/lib/mcfunction/node/index.js +5 -1
- package/lib/mcfunction/parser/argument.d.ts +2 -1
- package/lib/mcfunction/parser/argument.js +14 -10
- package/lib/mcfunction/parser/index.js +5 -1
- package/lib/mcfunction/signatureHelpProvider.js +5 -1
- package/lib/mcfunction/tree/index.d.ts +0 -5
- package/lib/mcfunction/tree/index.js +5 -6
- package/lib/mcfunction/tree/patch.d.ts +4 -0
- package/lib/mcfunction/tree/patch.js +752 -0
- package/package.json +7 -7
- package/lib/mcfunction/tree/1.15.d.ts +0 -9
- package/lib/mcfunction/tree/1.15.js +0 -542
- package/lib/mcfunction/tree/1.16.d.ts +0 -10
- package/lib/mcfunction/tree/1.16.js +0 -77
- package/lib/mcfunction/tree/1.17.d.ts +0 -12
- package/lib/mcfunction/tree/1.17.js +0 -166
- package/lib/mcfunction/tree/1.18.d.ts +0 -26
- package/lib/mcfunction/tree/1.18.js +0 -6
- package/lib/mcfunction/tree/1.19.d.ts +0 -26
- 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.
|
|
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
|
-
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 {
|
|
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,
|
|
7
|
+
export declare const initialize: (ctx: core.ProjectInitializerContext, commands: McmetaCommands, releaseVersion: ReleaseVersion) => void;
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/mcfunction/index.js
CHANGED
|
@@ -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.
|
|
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
|
|
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,
|
|
40
|
+
const initialize = (ctx, commands, releaseVersion) => {
|
|
49
41
|
const { meta } = ctx;
|
|
50
42
|
mcf.initialize(ctx);
|
|
51
|
-
mcf.CommandTreeRegistry.instance.register(
|
|
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(
|
|
55
|
-
completer: mcf.completer.entry(
|
|
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
|
-
|
|
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(
|
|
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)(
|
|
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.
|
|
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<"
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
60
|
-
return !
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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];
|