@spyglassmc/java-edition 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -0
- package/lib/binder/index.d.ts +15 -0
- package/lib/binder/index.js +102 -0
- package/lib/common/index.d.ts +7 -0
- package/lib/common/index.js +60 -0
- package/lib/dependency/common.d.ts +26 -0
- package/lib/dependency/common.js +39 -0
- package/lib/dependency/index.d.ts +30 -0
- package/lib/dependency/index.js +172 -0
- package/lib/dependency/mcmeta.d.ts +79 -0
- package/lib/dependency/mcmeta.js +205 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.js +76 -0
- package/lib/json/checker/data/advancement.d.ts +14 -0
- package/lib/json/checker/data/advancement.js +450 -0
- package/lib/json/checker/data/biome.d.ts +4 -0
- package/lib/json/checker/data/biome.js +151 -0
- package/lib/json/checker/data/common.d.ts +22 -0
- package/lib/json/checker/data/common.js +286 -0
- package/lib/json/checker/data/dimension.d.ts +4 -0
- package/lib/json/checker/data/dimension.js +238 -0
- package/lib/json/checker/data/feature.d.ts +9 -0
- package/lib/json/checker/data/feature.js +733 -0
- package/lib/json/checker/data/index.d.ts +4 -0
- package/lib/json/checker/data/index.js +43 -0
- package/lib/json/checker/data/loot_table.d.ts +8 -0
- package/lib/json/checker/data/loot_table.js +279 -0
- package/lib/json/checker/data/recipe.d.ts +2 -0
- package/lib/json/checker/data/recipe.js +53 -0
- package/lib/json/checker/data/structure.d.ts +8 -0
- package/lib/json/checker/data/structure.js +148 -0
- package/lib/json/checker/data/tag.d.ts +7 -0
- package/lib/json/checker/data/tag.js +38 -0
- package/lib/json/checker/data/text_component.d.ts +2 -0
- package/lib/json/checker/data/text_component.js +142 -0
- package/lib/json/checker/index.d.ts +5 -0
- package/lib/json/checker/index.js +28 -0
- package/lib/json/checker/util/advancement.d.ts +3 -0
- package/lib/json/checker/util/advancement.js +20 -0
- package/lib/json/checker/util/block_states.d.ts +13 -0
- package/lib/json/checker/util/block_states.js +85 -0
- package/lib/json/checker/util/color.d.ts +4 -0
- package/lib/json/checker/util/color.js +64 -0
- package/lib/json/checker/util/index.d.ts +8 -0
- package/lib/json/checker/util/index.js +20 -0
- package/lib/json/checker/util/nbt.d.ts +17 -0
- package/lib/json/checker/util/nbt.js +71 -0
- package/lib/json/checker/util/recipe.d.ts +6 -0
- package/lib/json/checker/util/recipe.js +16 -0
- package/lib/json/checker/util/uuid.d.ts +2 -0
- package/lib/json/checker/util/uuid.js +12 -0
- package/lib/json/checker/util/version.d.ts +46 -0
- package/lib/json/checker/util/version.js +54 -0
- package/lib/json/index.d.ts +4 -0
- package/lib/json/index.js +32 -0
- package/lib/mcfunction/checker/index.d.ts +7 -0
- package/lib/mcfunction/checker/index.js +217 -0
- package/lib/mcfunction/colorizer/index.d.ts +6 -0
- package/lib/mcfunction/colorizer/index.js +38 -0
- package/lib/mcfunction/common/index.d.ts +7 -0
- package/lib/mcfunction/common/index.js +47 -0
- package/lib/mcfunction/completer/argument.d.ts +5 -0
- package/lib/mcfunction/completer/argument.js +292 -0
- package/lib/mcfunction/completer/index.d.ts +2 -0
- package/lib/mcfunction/completer/index.js +14 -0
- package/lib/mcfunction/index.d.ts +8 -0
- package/lib/mcfunction/index.js +72 -0
- package/lib/mcfunction/inlayHintProvider.d.ts +4 -0
- package/lib/mcfunction/inlayHintProvider.js +40 -0
- package/lib/mcfunction/node/argument.d.ts +187 -0
- package/lib/mcfunction/node/argument.js +281 -0
- package/lib/mcfunction/node/index.d.ts +2 -0
- package/lib/mcfunction/node/index.js +14 -0
- package/lib/mcfunction/parser/argument.d.ts +15 -0
- package/lib/mcfunction/parser/argument.js +934 -0
- package/lib/mcfunction/parser/index.d.ts +2 -0
- package/lib/mcfunction/parser/index.js +14 -0
- package/lib/mcfunction/signatureHelpProvider.d.ts +8 -0
- package/lib/mcfunction/signatureHelpProvider.js +103 -0
- package/lib/mcfunction/tree/1.15.d.ts +9 -0
- package/lib/mcfunction/tree/1.15.js +542 -0
- package/lib/mcfunction/tree/1.16.d.ts +10 -0
- package/lib/mcfunction/tree/1.16.js +77 -0
- package/lib/mcfunction/tree/1.17.d.ts +12 -0
- package/lib/mcfunction/tree/1.17.js +166 -0
- package/lib/mcfunction/tree/1.18.d.ts +26 -0
- package/lib/mcfunction/tree/1.18.js +6 -0
- package/lib/mcfunction/tree/1.19.d.ts +26 -0
- package/lib/mcfunction/tree/1.19.js +6 -0
- package/lib/mcfunction/tree/argument.d.ts +179 -0
- package/lib/mcfunction/tree/argument.js +3 -0
- package/lib/mcfunction/tree/index.d.ts +7 -0
- package/lib/mcfunction/tree/index.js +19 -0
- package/package.json +41 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./argument"), exports);
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type * as core from '@spyglassmc/core';
|
|
2
|
+
import type { MajorVersion, McmetaCommands } from '../dependency';
|
|
3
|
+
export * as checker from './checker';
|
|
4
|
+
export * as colorizer from './colorizer';
|
|
5
|
+
export * as completer from './completer';
|
|
6
|
+
export * as parser from './parser';
|
|
7
|
+
export declare const initialize: (ctx: core.ProjectInitializerContext, commands: McmetaCommands, majorVersion: MajorVersion) => void;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.initialize = exports.parser = exports.completer = exports.colorizer = exports.checker = void 0;
|
|
23
|
+
const mcf = __importStar(require("@spyglassmc/mcfunction"));
|
|
24
|
+
const checker = __importStar(require("./checker"));
|
|
25
|
+
const colorizer = __importStar(require("./colorizer"));
|
|
26
|
+
const completer = __importStar(require("./completer"));
|
|
27
|
+
const inlayHintProvider_1 = require("./inlayHintProvider");
|
|
28
|
+
const parser = __importStar(require("./parser"));
|
|
29
|
+
const signatureHelpProvider_1 = require("./signatureHelpProvider");
|
|
30
|
+
const tree_1 = require("./tree");
|
|
31
|
+
exports.checker = __importStar(require("./checker"));
|
|
32
|
+
exports.colorizer = __importStar(require("./colorizer"));
|
|
33
|
+
exports.completer = __importStar(require("./completer"));
|
|
34
|
+
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
|
+
/* istanbul ignore next */
|
|
48
|
+
const initialize = (ctx, commands, majorVersion) => {
|
|
49
|
+
const { meta } = ctx;
|
|
50
|
+
mcf.initialize(ctx);
|
|
51
|
+
mcf.CommandTreeRegistry.instance.register(majorVersion, commands, Trees.get(majorVersion) ?? LatestTree);
|
|
52
|
+
meta.registerLanguage('mcfunction', {
|
|
53
|
+
extensions: ['.mcfunction'],
|
|
54
|
+
parser: mcf.entry(majorVersion, parser.argument),
|
|
55
|
+
completer: mcf.completer.entry(majorVersion, completer.getMockNodes),
|
|
56
|
+
triggerCharacters: [' ', '[', '=', '!', ',', '{', ':', '/', '.', '"', "'"],
|
|
57
|
+
});
|
|
58
|
+
meta.registerParser('mcfunction:block_predicate', parser.blockPredicate);
|
|
59
|
+
meta.registerParser('mcfunction:component', parser.component);
|
|
60
|
+
// TODO: 'mcfunction:particle'
|
|
61
|
+
// TODO: Uncomment in `SpecialStrings` in `nbtdocUtil.ts` as well.
|
|
62
|
+
meta.registerParser('mcfunction:tag', parser.tag());
|
|
63
|
+
meta.registerParser('mcfunction:team', parser.team());
|
|
64
|
+
meta.registerParser('mcfunction:command', mcf.command(mcf.CommandTreeRegistry.instance.get(majorVersion), parser.argument));
|
|
65
|
+
checker.register(meta);
|
|
66
|
+
colorizer.register(meta);
|
|
67
|
+
completer.register(meta);
|
|
68
|
+
meta.registerInlayHintProvider(inlayHintProvider_1.inlayHintProvider);
|
|
69
|
+
meta.registerSignatureHelpProvider((0, signatureHelpProvider_1.signatureHelpProvider)(majorVersion));
|
|
70
|
+
};
|
|
71
|
+
exports.initialize = initialize;
|
|
72
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.inlayHintProvider = void 0;
|
|
23
|
+
const core = __importStar(require("@spyglassmc/core"));
|
|
24
|
+
const mcf = __importStar(require("@spyglassmc/mcfunction"));
|
|
25
|
+
const inlayHintProvider = (node, ctx) => {
|
|
26
|
+
if (node.children[0]?.type !== 'mcfunction:entry') {
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
const ans = [];
|
|
30
|
+
core.traversePreOrder(node, _ => true, mcf.CommandChildNode.is, n => {
|
|
31
|
+
const node = n;
|
|
32
|
+
const config = ctx.config.env.feature.inlayHint;
|
|
33
|
+
if (config === true || (typeof config === 'object' && config.enabledNodes.includes(node.children[0].type))) {
|
|
34
|
+
ans.push({ offset: node.range.start, text: `${node.path[node.path.length - 1]}:` });
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
return ans;
|
|
38
|
+
};
|
|
39
|
+
exports.inlayHintProvider = inlayHintProvider;
|
|
40
|
+
//# sourceMappingURL=inlayHintProvider.js.map
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import * as core from '@spyglassmc/core';
|
|
2
|
+
import type * as nbt from '@spyglassmc/nbt';
|
|
3
|
+
export interface BlockStatesNode extends core.RecordBaseNode<core.StringNode, core.StringNode> {
|
|
4
|
+
type: 'mcfunction:block/states';
|
|
5
|
+
}
|
|
6
|
+
export declare namespace BlockStatesNode {
|
|
7
|
+
function is(node: core.AstNode): node is BlockStatesNode;
|
|
8
|
+
}
|
|
9
|
+
export interface BlockNode extends core.AstNode {
|
|
10
|
+
type: 'mcfunction:block';
|
|
11
|
+
children: (core.ResourceLocationNode | BlockStatesNode | nbt.NbtCompoundNode)[];
|
|
12
|
+
id: core.ResourceLocationNode;
|
|
13
|
+
states?: BlockStatesNode;
|
|
14
|
+
nbt?: nbt.NbtCompoundNode;
|
|
15
|
+
}
|
|
16
|
+
export declare namespace BlockNode {
|
|
17
|
+
function is(node: core.AstNode | undefined): node is BlockNode;
|
|
18
|
+
function mock(range: core.RangeLike, isPredicate: boolean): BlockNode;
|
|
19
|
+
}
|
|
20
|
+
export declare const CoordinateNotations: readonly ["", "~", "^"];
|
|
21
|
+
export declare type CoordinateNodeNotation = typeof CoordinateNotations[number];
|
|
22
|
+
export interface CoordinateNode extends core.FloatBaseNode {
|
|
23
|
+
type: 'mcfunction:coordinate';
|
|
24
|
+
notation: CoordinateNodeNotation;
|
|
25
|
+
}
|
|
26
|
+
export declare namespace CoordinateNode {
|
|
27
|
+
function mock(range: core.RangeLike): CoordinateNode;
|
|
28
|
+
/**
|
|
29
|
+
* @returns A number in the range `[-180.0, 180.0)`.
|
|
30
|
+
*/
|
|
31
|
+
function toDegree(node: CoordinateNode): number;
|
|
32
|
+
}
|
|
33
|
+
export declare const enum CoordinateSystem {
|
|
34
|
+
World = 0,
|
|
35
|
+
Local = 1
|
|
36
|
+
}
|
|
37
|
+
export interface EntitySelectorAdvancementsArgumentCriteriaNode extends core.RecordBaseNode<core.StringNode, core.BooleanNode> {
|
|
38
|
+
type: 'mcfunction:entity_selector/arguments/advancements/criteria';
|
|
39
|
+
}
|
|
40
|
+
export interface EntitySelectorAdvancementsArgumentNode extends core.RecordBaseNode<core.ResourceLocationNode, core.BooleanNode | EntitySelectorAdvancementsArgumentCriteriaNode> {
|
|
41
|
+
type: 'mcfunction:entity_selector/arguments/advancements';
|
|
42
|
+
}
|
|
43
|
+
export interface EntitySelectorScoresArgumentNode extends core.RecordBaseNode<core.SymbolNode, IntRangeNode> {
|
|
44
|
+
type: 'mcfunction:entity_selector/arguments/scores';
|
|
45
|
+
}
|
|
46
|
+
export interface EntitySelectorInvertableArgumentValueNode<T extends core.AstNode> extends core.SequenceNode<core.LiteralNode | T> {
|
|
47
|
+
type: 'mcfunction:entity_selector/arguments/value/invertable';
|
|
48
|
+
value: T;
|
|
49
|
+
inverted: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface EntitySelectorArgumentsNode extends core.RecordBaseNode<core.StringNode, any> {
|
|
52
|
+
type: 'mcfunction:entity_selector/arguments';
|
|
53
|
+
}
|
|
54
|
+
export declare namespace EntitySelectorArgumentsNode {
|
|
55
|
+
function is(node: core.AstNode): node is EntitySelectorArgumentsNode;
|
|
56
|
+
}
|
|
57
|
+
export declare const EntitySelectorVariables: readonly ["a", "e", "p", "r", "s"];
|
|
58
|
+
export declare type EntitySelectorVariable = typeof EntitySelectorVariables[number];
|
|
59
|
+
export declare namespace EntitySelectorVariable {
|
|
60
|
+
function is(value: string): value is EntitySelectorVariable;
|
|
61
|
+
}
|
|
62
|
+
export declare const EntitySelectorAtVariables: ("@a" | "@e" | "@p" | "@r" | "@s")[];
|
|
63
|
+
export declare type EntitySelectorAtVariable = typeof EntitySelectorAtVariables[number];
|
|
64
|
+
export declare namespace EntitySelectorAtVariable {
|
|
65
|
+
function is(value: string): value is EntitySelectorAtVariable;
|
|
66
|
+
}
|
|
67
|
+
export interface EntitySelectorNode extends core.AstNode {
|
|
68
|
+
type: 'mcfunction:entity_selector';
|
|
69
|
+
children: [core.LiteralNode, ...[] | [EntitySelectorArgumentsNode]];
|
|
70
|
+
variable: EntitySelectorVariable;
|
|
71
|
+
arguments?: EntitySelectorArgumentsNode;
|
|
72
|
+
currentEntity?: boolean;
|
|
73
|
+
dimensionLimited?: boolean;
|
|
74
|
+
playersOnly?: boolean;
|
|
75
|
+
predicates?: string[];
|
|
76
|
+
chunkLimited?: boolean;
|
|
77
|
+
single?: boolean;
|
|
78
|
+
typeLimited?: boolean;
|
|
79
|
+
}
|
|
80
|
+
export declare namespace EntitySelectorNode {
|
|
81
|
+
function is(node: core.AstNode | undefined): node is EntitySelectorNode;
|
|
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">;
|
|
84
|
+
type ArgumentKey = typeof ArgumentKeys extends Set<infer T> ? T : undefined;
|
|
85
|
+
const enum Result {
|
|
86
|
+
Ok = 0,
|
|
87
|
+
Duplicated = 1,
|
|
88
|
+
NotApplicable = 2
|
|
89
|
+
}
|
|
90
|
+
function canKeyExist(selector: EntitySelectorNode, argument: EntitySelectorArgumentsNode, key: string): Result;
|
|
91
|
+
}
|
|
92
|
+
export interface EntityNode extends core.AstNode {
|
|
93
|
+
type: 'mcfunction:entity';
|
|
94
|
+
children: [core.StringNode | EntitySelectorNode | UuidNode];
|
|
95
|
+
playerName?: core.StringNode;
|
|
96
|
+
selector?: EntitySelectorNode;
|
|
97
|
+
uuid?: UuidNode;
|
|
98
|
+
}
|
|
99
|
+
export declare namespace EntityNode {
|
|
100
|
+
function is(node: core.AstNode | undefined): node is EntityNode;
|
|
101
|
+
}
|
|
102
|
+
export interface FloatRangeNode extends core.AstNode {
|
|
103
|
+
type: 'mcfunction:float_range';
|
|
104
|
+
children: (core.FloatNode | core.LiteralNode)[];
|
|
105
|
+
value: [number | undefined, number | undefined];
|
|
106
|
+
}
|
|
107
|
+
export interface ItemNode extends core.AstNode {
|
|
108
|
+
type: 'mcfunction:item';
|
|
109
|
+
children: (core.ResourceLocationNode | nbt.NbtCompoundNode)[];
|
|
110
|
+
id: core.ResourceLocationNode;
|
|
111
|
+
nbt?: nbt.NbtCompoundNode;
|
|
112
|
+
}
|
|
113
|
+
export declare namespace ItemNode {
|
|
114
|
+
function mock(range: core.RangeLike, isPredicate: boolean): ItemNode;
|
|
115
|
+
}
|
|
116
|
+
export interface IntRangeNode extends core.AstNode {
|
|
117
|
+
type: 'mcfunction:int_range';
|
|
118
|
+
children: (core.IntegerNode | core.LiteralNode)[];
|
|
119
|
+
value: [number | undefined, number | undefined];
|
|
120
|
+
}
|
|
121
|
+
export declare namespace IntRangeNode {
|
|
122
|
+
function mock(range: core.RangeLike): IntRangeNode;
|
|
123
|
+
}
|
|
124
|
+
export interface MessageNode extends core.AstNode {
|
|
125
|
+
type: 'mcfunction:message';
|
|
126
|
+
children: (core.StringNode | EntitySelectorNode)[];
|
|
127
|
+
}
|
|
128
|
+
export interface ObjectiveCriteriaNode extends core.AstNode {
|
|
129
|
+
type: 'mcfunction:objective_criteria';
|
|
130
|
+
children?: [core.ResourceLocationNode, core.ResourceLocationNode];
|
|
131
|
+
simpleValue?: string;
|
|
132
|
+
}
|
|
133
|
+
export declare namespace ObjectiveCriteriaNode {
|
|
134
|
+
const SimpleValues: string[];
|
|
135
|
+
const ComplexCategories: Map<string, "activity" | "attribute" | "block" | "block_entity_type" | "block_predicate_type" | "chunk_status" | "custom_stat" | "enchantment" | "entity_type" | "float_provider_type" | "fluid" | "game_event" | "height_provider_type" | "int_provider_type" | "item" | "loot_condition_type" | "loot_function_type" | "loot_nbt_provider_type" | "loot_number_provider_type" | "loot_pool_entry_type" | "loot_score_provider_type" | "memory_module_type" | "menu" | "mob_effect" | "motive" | "particle_type" | "point_of_interest_type" | "pos_rule_test" | "position_source_type" | "potion" | "recipe_serializer" | "recipe_type" | "rule_test" | "schedule" | "sensor_type" | "sound_event" | "stat_type" | "villager_profession" | "villager_type" | "worldgen/biome_source" | "worldgen/block_placer_type" | "worldgen/block_state_provider_type" | "worldgen/carver" | "worldgen/chunk_generator" | "worldgen/decorator" | "worldgen/feature" | "worldgen/feature_size_type" | "worldgen/foliage_placer_type" | "worldgen/material_condition" | "worldgen/material_rule" | "worldgen/placement_modifier_type" | "worldgen/structure_feature" | "worldgen/structure_piece" | "worldgen/structure_pool_element" | "worldgen/structure_processor" | "worldgen/surface_builder" | "worldgen/tree_decorator_type" | "worldgen/trunk_placer_type">;
|
|
136
|
+
const ComplexSep = ":";
|
|
137
|
+
function mock(range: core.RangeLike): ObjectiveCriteriaNode;
|
|
138
|
+
}
|
|
139
|
+
export interface ParticleNode extends core.AstNode {
|
|
140
|
+
type: 'mcfunction:particle';
|
|
141
|
+
children?: (core.FloatNode | core.IntegerNode | core.ResourceLocationNode | BlockNode | ItemNode | VectorNode)[];
|
|
142
|
+
id: core.ResourceLocationNode;
|
|
143
|
+
}
|
|
144
|
+
export declare namespace ParticleNode {
|
|
145
|
+
const SpecialTypes: Set<"block" | "item" | "block_marker" | "dust" | "dust_color_transition" | "falling_dust" | "sculk_charge" | "vibration">;
|
|
146
|
+
export type SpecialType = typeof SpecialTypes extends Set<infer T> ? T : undefined;
|
|
147
|
+
export function isSpecialType(type: string | undefined): type is SpecialType;
|
|
148
|
+
export function mock(range: core.RangeLike): ParticleNode;
|
|
149
|
+
export {};
|
|
150
|
+
}
|
|
151
|
+
export interface ScoreHolderNode extends core.AstNode {
|
|
152
|
+
type: 'mcfunction:score_holder';
|
|
153
|
+
children: [core.SymbolNode | EntitySelectorNode];
|
|
154
|
+
fakeName?: core.SymbolNode;
|
|
155
|
+
selector?: EntitySelectorNode;
|
|
156
|
+
}
|
|
157
|
+
export declare namespace ScoreHolderNode {
|
|
158
|
+
function mock(range: core.RangeLike): ScoreHolderNode;
|
|
159
|
+
}
|
|
160
|
+
export interface TimeNode extends core.AstNode {
|
|
161
|
+
type: 'mcfunction:time';
|
|
162
|
+
children: (core.FloatNode | core.LiteralNode)[];
|
|
163
|
+
value: number;
|
|
164
|
+
unit?: string;
|
|
165
|
+
}
|
|
166
|
+
export declare namespace TimeNode {
|
|
167
|
+
const UnitToTicks: Map<string, number>;
|
|
168
|
+
const Units: string[];
|
|
169
|
+
}
|
|
170
|
+
export interface UuidNode extends core.AstNode {
|
|
171
|
+
type: 'mcfunction:uuid';
|
|
172
|
+
bits: [bigint, bigint];
|
|
173
|
+
}
|
|
174
|
+
export interface VectorNode extends core.SequenceNode<CoordinateNode> {
|
|
175
|
+
type: 'mcfunction:vector';
|
|
176
|
+
options: VectorNode.Options;
|
|
177
|
+
system: CoordinateSystem;
|
|
178
|
+
}
|
|
179
|
+
export declare namespace VectorNode {
|
|
180
|
+
interface Options {
|
|
181
|
+
dimension: 2 | 3;
|
|
182
|
+
integersOnly?: boolean;
|
|
183
|
+
noLocal?: boolean;
|
|
184
|
+
}
|
|
185
|
+
function mock(range: core.RangeLike, options: Options): VectorNode;
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=argument.d.ts.map
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.VectorNode = exports.TimeNode = exports.ScoreHolderNode = exports.ParticleNode = exports.ObjectiveCriteriaNode = exports.IntRangeNode = exports.ItemNode = exports.EntityNode = exports.EntitySelectorNode = exports.EntitySelectorAtVariable = exports.EntitySelectorAtVariables = exports.EntitySelectorVariable = exports.EntitySelectorVariables = exports.EntitySelectorArgumentsNode = exports.CoordinateNode = exports.CoordinateNotations = exports.BlockNode = exports.BlockStatesNode = void 0;
|
|
23
|
+
const core = __importStar(require("@spyglassmc/core"));
|
|
24
|
+
var BlockStatesNode;
|
|
25
|
+
(function (BlockStatesNode) {
|
|
26
|
+
/* istanbul ignore next */
|
|
27
|
+
function is(node) {
|
|
28
|
+
return node.type === 'mcfunction:block/states';
|
|
29
|
+
}
|
|
30
|
+
BlockStatesNode.is = is;
|
|
31
|
+
})(BlockStatesNode = exports.BlockStatesNode || (exports.BlockStatesNode = {}));
|
|
32
|
+
var BlockNode;
|
|
33
|
+
(function (BlockNode) {
|
|
34
|
+
function is(node) {
|
|
35
|
+
return node?.type === 'mcfunction:block';
|
|
36
|
+
}
|
|
37
|
+
BlockNode.is = is;
|
|
38
|
+
function mock(range, isPredicate) {
|
|
39
|
+
const id = core.ResourceLocationNode.mock(range, { category: 'block', allowTag: isPredicate });
|
|
40
|
+
return {
|
|
41
|
+
type: 'mcfunction:block',
|
|
42
|
+
range: core.Range.get(range),
|
|
43
|
+
children: [id],
|
|
44
|
+
id,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
BlockNode.mock = mock;
|
|
48
|
+
})(BlockNode = exports.BlockNode || (exports.BlockNode = {}));
|
|
49
|
+
exports.CoordinateNotations = ['', '~', '^'];
|
|
50
|
+
var CoordinateNode;
|
|
51
|
+
(function (CoordinateNode) {
|
|
52
|
+
function mock(range) {
|
|
53
|
+
return {
|
|
54
|
+
type: 'mcfunction:coordinate',
|
|
55
|
+
range: core.Range.get(range),
|
|
56
|
+
notation: '',
|
|
57
|
+
value: 0,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
CoordinateNode.mock = mock;
|
|
61
|
+
/**
|
|
62
|
+
* @returns A number in the range `[-180.0, 180.0)`.
|
|
63
|
+
*/
|
|
64
|
+
function toDegree(node) {
|
|
65
|
+
// TODO: For relative coordinates, const value = (node.value + baseCoordinate) % 360
|
|
66
|
+
const value = node.value % 360;
|
|
67
|
+
return value >= 180
|
|
68
|
+
? value - 360
|
|
69
|
+
: value < -180 ? value + 360 : value;
|
|
70
|
+
}
|
|
71
|
+
CoordinateNode.toDegree = toDegree;
|
|
72
|
+
})(CoordinateNode = exports.CoordinateNode || (exports.CoordinateNode = {}));
|
|
73
|
+
var EntitySelectorArgumentsNode;
|
|
74
|
+
(function (EntitySelectorArgumentsNode) {
|
|
75
|
+
/* istanbul ignore next */
|
|
76
|
+
function is(node) {
|
|
77
|
+
return node.type === 'mcfunction:entity_selector/arguments';
|
|
78
|
+
}
|
|
79
|
+
EntitySelectorArgumentsNode.is = is;
|
|
80
|
+
})(EntitySelectorArgumentsNode = exports.EntitySelectorArgumentsNode || (exports.EntitySelectorArgumentsNode = {}));
|
|
81
|
+
exports.EntitySelectorVariables = ['a', 'e', 'p', 'r', 's'];
|
|
82
|
+
var EntitySelectorVariable;
|
|
83
|
+
(function (EntitySelectorVariable) {
|
|
84
|
+
/* istanbul ignore next */
|
|
85
|
+
function is(value) {
|
|
86
|
+
return exports.EntitySelectorVariables.includes(value);
|
|
87
|
+
}
|
|
88
|
+
EntitySelectorVariable.is = is;
|
|
89
|
+
})(EntitySelectorVariable = exports.EntitySelectorVariable || (exports.EntitySelectorVariable = {}));
|
|
90
|
+
exports.EntitySelectorAtVariables = exports.EntitySelectorVariables.map(v => `@${v}`);
|
|
91
|
+
var EntitySelectorAtVariable;
|
|
92
|
+
(function (EntitySelectorAtVariable) {
|
|
93
|
+
/* istanbul ignore next */
|
|
94
|
+
function is(value) {
|
|
95
|
+
return exports.EntitySelectorAtVariables.includes(value);
|
|
96
|
+
}
|
|
97
|
+
EntitySelectorAtVariable.is = is;
|
|
98
|
+
})(EntitySelectorAtVariable = exports.EntitySelectorAtVariable || (exports.EntitySelectorAtVariable = {}));
|
|
99
|
+
var EntitySelectorNode;
|
|
100
|
+
(function (EntitySelectorNode) {
|
|
101
|
+
/* istanbul ignore next */
|
|
102
|
+
function is(node) {
|
|
103
|
+
return node?.type === 'mcfunction:entity_selector';
|
|
104
|
+
}
|
|
105
|
+
EntitySelectorNode.is = is;
|
|
106
|
+
function mock(range) {
|
|
107
|
+
const literal = core.LiteralNode.mock(range, { pool: exports.EntitySelectorAtVariables, colorTokenType: 'keyword' });
|
|
108
|
+
return {
|
|
109
|
+
type: 'mcfunction:entity_selector',
|
|
110
|
+
range: core.Range.get(range),
|
|
111
|
+
children: [literal],
|
|
112
|
+
variable: 'e',
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
EntitySelectorNode.mock = mock;
|
|
116
|
+
EntitySelectorNode.ArgumentKeys = new Set([
|
|
117
|
+
'advancements', 'distance', 'gamemode', 'level', 'limit', 'name',
|
|
118
|
+
'nbt', 'predicate', 'scores', 'sort', 'tag', 'team', 'type',
|
|
119
|
+
'x', 'y', 'z', 'dx', 'dy', 'dz', 'x_rotation', 'y_rotation',
|
|
120
|
+
]);
|
|
121
|
+
function canKeyExist(selector, argument, key) {
|
|
122
|
+
const hasKey = (key) => !!argument.children.find(p => p.key?.value === key);
|
|
123
|
+
const hasNonInvertedKey = (key) => !!argument.children.find(p => p.key?.value === key && !p.value?.inverted);
|
|
124
|
+
switch (key) {
|
|
125
|
+
case 'advancements':
|
|
126
|
+
case 'distance':
|
|
127
|
+
case 'level':
|
|
128
|
+
case 'scores':
|
|
129
|
+
case 'x':
|
|
130
|
+
case 'y':
|
|
131
|
+
case 'z':
|
|
132
|
+
case 'dx':
|
|
133
|
+
case 'dy':
|
|
134
|
+
case 'dz':
|
|
135
|
+
case 'x_rotation':
|
|
136
|
+
case 'y_rotation':
|
|
137
|
+
return hasKey(key) ? 1 /* Duplicated */ : 0 /* Ok */;
|
|
138
|
+
case 'gamemode':
|
|
139
|
+
case 'name':
|
|
140
|
+
case 'team':
|
|
141
|
+
return hasNonInvertedKey(key) ? 1 /* Duplicated */ : 0 /* Ok */;
|
|
142
|
+
case 'limit':
|
|
143
|
+
case 'sort':
|
|
144
|
+
return selector.currentEntity
|
|
145
|
+
? 2 /* NotApplicable */
|
|
146
|
+
: hasKey(key)
|
|
147
|
+
? 1 /* Duplicated */
|
|
148
|
+
: 0 /* Ok */;
|
|
149
|
+
case 'type':
|
|
150
|
+
return selector.typeLimited
|
|
151
|
+
? hasKey(key)
|
|
152
|
+
? 1 /* Duplicated */
|
|
153
|
+
: 2 /* NotApplicable */
|
|
154
|
+
: 0 /* Ok */;
|
|
155
|
+
}
|
|
156
|
+
return 0 /* Ok */;
|
|
157
|
+
}
|
|
158
|
+
EntitySelectorNode.canKeyExist = canKeyExist;
|
|
159
|
+
})(EntitySelectorNode = exports.EntitySelectorNode || (exports.EntitySelectorNode = {}));
|
|
160
|
+
var EntityNode;
|
|
161
|
+
(function (EntityNode) {
|
|
162
|
+
function is(node) {
|
|
163
|
+
return node?.type === 'mcfunction:entity';
|
|
164
|
+
}
|
|
165
|
+
EntityNode.is = is;
|
|
166
|
+
})(EntityNode = exports.EntityNode || (exports.EntityNode = {}));
|
|
167
|
+
var ItemNode;
|
|
168
|
+
(function (ItemNode) {
|
|
169
|
+
function mock(range, isPredicate) {
|
|
170
|
+
const id = core.ResourceLocationNode.mock(range, { category: 'item', allowTag: isPredicate });
|
|
171
|
+
return {
|
|
172
|
+
type: 'mcfunction:item',
|
|
173
|
+
range: core.Range.get(range),
|
|
174
|
+
children: [id],
|
|
175
|
+
id,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
ItemNode.mock = mock;
|
|
179
|
+
})(ItemNode = exports.ItemNode || (exports.ItemNode = {}));
|
|
180
|
+
var IntRangeNode;
|
|
181
|
+
(function (IntRangeNode) {
|
|
182
|
+
function mock(range) {
|
|
183
|
+
return {
|
|
184
|
+
type: 'mcfunction:int_range',
|
|
185
|
+
range: core.Range.get(range),
|
|
186
|
+
children: [],
|
|
187
|
+
value: [undefined, undefined],
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
IntRangeNode.mock = mock;
|
|
191
|
+
})(IntRangeNode = exports.IntRangeNode || (exports.IntRangeNode = {}));
|
|
192
|
+
var ObjectiveCriteriaNode;
|
|
193
|
+
(function (ObjectiveCriteriaNode) {
|
|
194
|
+
ObjectiveCriteriaNode.SimpleValues = [
|
|
195
|
+
'air', 'armor', 'deathCount', 'dummy', 'food', 'health', 'level',
|
|
196
|
+
'playerKillCount', 'totalKillCount', 'trigger', 'xp',
|
|
197
|
+
];
|
|
198
|
+
ObjectiveCriteriaNode.ComplexCategories = new Map([
|
|
199
|
+
['broken', 'item'],
|
|
200
|
+
['crafted', 'item'],
|
|
201
|
+
['custom', 'custom_stat'],
|
|
202
|
+
['dropped', 'item'],
|
|
203
|
+
['killed', 'entity_type'],
|
|
204
|
+
['killed_by', 'entity_type'],
|
|
205
|
+
['mined', 'block'],
|
|
206
|
+
['picked_up', 'item'],
|
|
207
|
+
['used', 'item'],
|
|
208
|
+
]);
|
|
209
|
+
ObjectiveCriteriaNode.ComplexSep = ':';
|
|
210
|
+
function mock(range) {
|
|
211
|
+
return {
|
|
212
|
+
type: 'mcfunction:objective_criteria',
|
|
213
|
+
range: core.Range.get(range),
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
ObjectiveCriteriaNode.mock = mock;
|
|
217
|
+
})(ObjectiveCriteriaNode = exports.ObjectiveCriteriaNode || (exports.ObjectiveCriteriaNode = {}));
|
|
218
|
+
var ParticleNode;
|
|
219
|
+
(function (ParticleNode) {
|
|
220
|
+
const SpecialTypes = new Set([
|
|
221
|
+
'block',
|
|
222
|
+
'block_marker',
|
|
223
|
+
'dust',
|
|
224
|
+
'dust_color_transition',
|
|
225
|
+
'falling_dust',
|
|
226
|
+
'item',
|
|
227
|
+
'sculk_charge',
|
|
228
|
+
'vibration',
|
|
229
|
+
]);
|
|
230
|
+
function isSpecialType(type) {
|
|
231
|
+
return SpecialTypes.has(type);
|
|
232
|
+
}
|
|
233
|
+
ParticleNode.isSpecialType = isSpecialType;
|
|
234
|
+
function mock(range) {
|
|
235
|
+
const id = core.ResourceLocationNode.mock(range, { category: 'particle_type' });
|
|
236
|
+
return {
|
|
237
|
+
type: 'mcfunction:particle',
|
|
238
|
+
range: core.Range.get(range),
|
|
239
|
+
children: [id],
|
|
240
|
+
id,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
ParticleNode.mock = mock;
|
|
244
|
+
})(ParticleNode = exports.ParticleNode || (exports.ParticleNode = {}));
|
|
245
|
+
var ScoreHolderNode;
|
|
246
|
+
(function (ScoreHolderNode) {
|
|
247
|
+
function mock(range) {
|
|
248
|
+
const fakeName = core.SymbolNode.mock(range, { category: 'score_holder' });
|
|
249
|
+
return {
|
|
250
|
+
type: 'mcfunction:score_holder',
|
|
251
|
+
range: core.Range.get(range),
|
|
252
|
+
children: [fakeName],
|
|
253
|
+
fakeName,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
ScoreHolderNode.mock = mock;
|
|
257
|
+
})(ScoreHolderNode = exports.ScoreHolderNode || (exports.ScoreHolderNode = {}));
|
|
258
|
+
var TimeNode;
|
|
259
|
+
(function (TimeNode) {
|
|
260
|
+
TimeNode.UnitToTicks = new Map([
|
|
261
|
+
['', 1],
|
|
262
|
+
['t', 1],
|
|
263
|
+
['s', 20],
|
|
264
|
+
['d', 24000],
|
|
265
|
+
]);
|
|
266
|
+
TimeNode.Units = [...TimeNode.UnitToTicks.keys()];
|
|
267
|
+
})(TimeNode = exports.TimeNode || (exports.TimeNode = {}));
|
|
268
|
+
var VectorNode;
|
|
269
|
+
(function (VectorNode) {
|
|
270
|
+
function mock(range, options) {
|
|
271
|
+
return {
|
|
272
|
+
type: 'mcfunction:vector',
|
|
273
|
+
range: core.Range.get(range),
|
|
274
|
+
children: [],
|
|
275
|
+
options,
|
|
276
|
+
system: 0 /* World */,
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
VectorNode.mock = mock;
|
|
280
|
+
})(VectorNode = exports.VectorNode || (exports.VectorNode = {}));
|
|
281
|
+
//# sourceMappingURL=argument.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./argument"), exports);
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as core from '@spyglassmc/core';
|
|
2
|
+
import * as json from '@spyglassmc/json';
|
|
3
|
+
import * as mcf from '@spyglassmc/mcfunction';
|
|
4
|
+
import type { BlockNode } from '../node';
|
|
5
|
+
/**
|
|
6
|
+
* @returns The parser for the specified argument tree node. All argument parsers used in the `mcfunction` package
|
|
7
|
+
* fail on empty input.
|
|
8
|
+
*/
|
|
9
|
+
export declare const argument: mcf.ArgumentParserGetter;
|
|
10
|
+
export declare const blockPredicate: core.InfallibleParser<BlockNode>;
|
|
11
|
+
export declare const component: core.Parser<json.JsonNode>;
|
|
12
|
+
export declare const scoreHolderFakeName: core.Parser<core.SymbolNode>;
|
|
13
|
+
export declare function tag(terminators?: string[]): core.InfallibleParser<core.SymbolNode>;
|
|
14
|
+
export declare function team(usageType?: core.SymbolUsageType, terminators?: string[]): core.InfallibleParser<core.SymbolNode>;
|
|
15
|
+
//# sourceMappingURL=argument.d.ts.map
|