@jsprismarine/spawning 0.0.0 → 0.16.0-unstable-20261029135432
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/CHANGELOG.md +80 -0
- package/LICENSE +373 -0
- package/README.md +207 -0
- package/dist/conditions.cjs.cjs +190 -0
- package/dist/conditions.d.ts +81 -0
- package/dist/conditions.d.ts.map +1 -0
- package/dist/conditions.es.js +186 -0
- package/dist/constants.cjs.cjs +29 -0
- package/dist/constants.d.ts +73 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.es.js +26 -0
- package/dist/despawn.cjs.cjs +25 -0
- package/dist/despawn.d.ts +33 -0
- package/dist/despawn.d.ts.map +1 -0
- package/dist/despawn.es.js +23 -0
- package/dist/engineRules.cjs.cjs +145 -0
- package/dist/engineRules.d.ts +86 -0
- package/dist/engineRules.d.ts.map +1 -0
- package/dist/engineRules.es.js +138 -0
- package/dist/index.cjs.cjs +32 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.es.js +8 -0
- package/dist/rules.cjs.cjs +282 -0
- package/dist/rules.d.ts +152 -0
- package/dist/rules.d.ts.map +1 -0
- package/dist/rules.es.js +277 -0
- package/dist/spawner.cjs.cjs +280 -0
- package/dist/spawner.d.ts +105 -0
- package/dist/spawner.d.ts.map +1 -0
- package/dist/spawner.es.js +278 -0
- package/dist/tables/spawnConstants.cjs.cjs +111 -0
- package/dist/tables/spawnConstants.d.ts +2 -0
- package/dist/tables/spawnConstants.es.js +89 -0
- package/dist/tables/spawnConstants.json.d.ts +2 -0
- package/dist/world.cjs.cjs +51 -0
- package/dist/world.d.ts +111 -0
- package/dist/world.d.ts.map +1 -0
- package/dist/world.es.js +45 -0
- package/package.json +68 -5
package/dist/world.d.ts
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { Difficulty } from './rules';
|
|
2
|
+
/**
|
|
3
|
+
* What the spawner reads about the world.
|
|
4
|
+
*
|
|
5
|
+
* Every fact a spawn rule asks for arrives through this one interface, so a
|
|
6
|
+
* test drives the whole algorithm with a typed double and a server implements
|
|
7
|
+
* it once against its own chunks, light engine and entity index.
|
|
8
|
+
*/
|
|
9
|
+
/** A block position. Spawn positions are integers; distances are measured between centers. */
|
|
10
|
+
export interface SpawnPosition {
|
|
11
|
+
readonly x: number;
|
|
12
|
+
readonly y: number;
|
|
13
|
+
readonly z: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The boolean facts about one position, each named by the rule component or
|
|
17
|
+
* filter test that reads it.
|
|
18
|
+
*
|
|
19
|
+
* `surface` and `underground` select the pass; `underwater` and `lava` are the
|
|
20
|
+
* medium the position sits in; `bubble_column` answers
|
|
21
|
+
* `minecraft:disallow_spawns_in_bubble`; `snow_covered` answers the one
|
|
22
|
+
* `is_snow_covered` test a vanilla biome filter writes.
|
|
23
|
+
*/
|
|
24
|
+
export declare const SPAWN_SITE_FLAGS: readonly ['surface', 'underground', 'underwater', 'lava', 'bubble_column', 'snow_covered'];
|
|
25
|
+
/** One of {@link SPAWN_SITE_FLAGS}. */
|
|
26
|
+
export type SpawnSiteFlag = (typeof SPAWN_SITE_FLAGS)[number];
|
|
27
|
+
/** Which of the two passes a position belongs to. */
|
|
28
|
+
export type SpawnPass = 'surface' | 'underground';
|
|
29
|
+
/** The weather names `adjust_for_weather` reads. */
|
|
30
|
+
export declare const SPAWN_WEATHER: readonly ['clear', 'rain', 'thunder'];
|
|
31
|
+
/** One of {@link SPAWN_WEATHER}. */
|
|
32
|
+
export type SpawnWeather = (typeof SPAWN_WEATHER)[number];
|
|
33
|
+
/** One player the spawner spawns around. */
|
|
34
|
+
export interface SpawnPlayer {
|
|
35
|
+
readonly position: SpawnPosition;
|
|
36
|
+
}
|
|
37
|
+
/** Everything one spawn cycle reads about the world. */
|
|
38
|
+
export interface SpawnWorld {
|
|
39
|
+
/** A boolean fact about one position, named by the component that reads it. */
|
|
40
|
+
site(flag: SpawnSiteFlag, at: SpawnPosition): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* The block identifier at one position, or undefined when the chunk is not
|
|
43
|
+
* loaded, which stops the attempt.
|
|
44
|
+
*/
|
|
45
|
+
block(at: SpawnPosition): string | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Whether the block at one position stops an entity standing in it.
|
|
48
|
+
*
|
|
49
|
+
* The underground pass draws a y uniformly between the world floor and the
|
|
50
|
+
* surface, so most of what it draws is inside rock. Java rejects such a
|
|
51
|
+
* draw in `NaturalSpawner.isSpawnPositionOk`; without this the spawner
|
|
52
|
+
* puts a zombie inside a stone block, where it can path nowhere and never
|
|
53
|
+
* despawns.
|
|
54
|
+
*/
|
|
55
|
+
solid(at: SpawnPosition): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* The light level at one position, 0 to 15, before this package applies the
|
|
58
|
+
* weather darkening that `adjust_for_weather` asks for.
|
|
59
|
+
*/
|
|
60
|
+
light(at: SpawnPosition): number;
|
|
61
|
+
/** The biome tags at one position, which is what `has_biome_tag` compares. */
|
|
62
|
+
biomeTags(at: SpawnPosition): readonly string[];
|
|
63
|
+
/** The biome name at one position, for `is_biome`. */
|
|
64
|
+
biome?(at: SpawnPosition): string;
|
|
65
|
+
/**
|
|
66
|
+
* The lowest y an entity may stand on in one column, which is the position
|
|
67
|
+
* the surface pass tries. Undefined when the column is not loaded, which
|
|
68
|
+
* skips the attempt.
|
|
69
|
+
*/
|
|
70
|
+
surfaceY(x: number, z: number): number | undefined;
|
|
71
|
+
/** The lowest y the world generates, which bounds the underground pass. */
|
|
72
|
+
minY(): number;
|
|
73
|
+
/** The players the spawner spawns around, which is every player in the spawn region. */
|
|
74
|
+
players(): readonly SpawnPlayer[];
|
|
75
|
+
/** How many entities of one population pool stand in the spawn region now. */
|
|
76
|
+
poolCount(pool: string): number;
|
|
77
|
+
/** How many entities of one type stand within `radius` blocks of a position. */
|
|
78
|
+
typeCount(identifier: string, at: SpawnPosition, radius: number): number;
|
|
79
|
+
difficulty(): Difficulty;
|
|
80
|
+
weather(): SpawnWeather;
|
|
81
|
+
/** The world's age in ticks, which is what `minecraft:world_age_filter` compares. */
|
|
82
|
+
age(): number;
|
|
83
|
+
/** Whether a named mob event, such as `minecraft:pillager_patrols_event`, is running. */
|
|
84
|
+
mobEventActive(event: string): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* How far a position is from the nearest village border, negative inside it
|
|
87
|
+
* and undefined when no village is near. `minecraft:player_in_village_filter`
|
|
88
|
+
* reads it.
|
|
89
|
+
*/
|
|
90
|
+
villageBorderDistance?(at: SpawnPosition): number | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Whether Java restricts this entity type to a structure spawn override at this position.
|
|
93
|
+
*
|
|
94
|
+
* `false` means the Java data declares at least one structure override for the entity, but
|
|
95
|
+
* this position is outside every active override. `true` means a matching override covers
|
|
96
|
+
* this position. `undefined` means Java's biome data also permits this entity to spawn
|
|
97
|
+
* outside structures, or that the world has no Java override data for it, so the spawn rule
|
|
98
|
+
* decides as usual.
|
|
99
|
+
*/
|
|
100
|
+
structureSpawnOverrideAt?(identifier: string, at: SpawnPosition): boolean | undefined;
|
|
101
|
+
}
|
|
102
|
+
/** The squared distance between two positions, which is what the range checks compare. */
|
|
103
|
+
export declare const distanceSquared: (from: SpawnPosition, to: SpawnPosition) => number;
|
|
104
|
+
/**
|
|
105
|
+
* The squared distance between two positions on the X and Z axes alone, which
|
|
106
|
+
* is what a chunk radius such as the simulation distance measures.
|
|
107
|
+
*/
|
|
108
|
+
export declare const horizontalDistanceSquared: (from: SpawnPosition, to: SpawnPosition) => number;
|
|
109
|
+
/** Which pass a position belongs to, which the world decides and the conditions read. */
|
|
110
|
+
export declare const passAt: (world: SpawnWorld, at: SpawnPosition) => SpawnPass;
|
|
111
|
+
//# sourceMappingURL=world.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C;;;;;;GAMG;AAEH,8FAA8F;AAC9F,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,YACzB,SAAS,EACT,aAAa,EACb,YAAY,EACZ,MAAM,EACN,eAAe,EACf,cAAc,CACR,CAAC;AAEX,uCAAuC;AACvC,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,qDAAqD;AACrD,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;AAElD,oDAAoD;AACpD,eAAO,MAAM,aAAa,YAAI,OAAO,EAAE,MAAM,EAAE,SAAS,CAAU,CAAC;AAEnE,oCAAoC;AACpC,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,4CAA4C;AAC5C,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;CACpC;AAED,wDAAwD;AACxD,MAAM,WAAW,UAAU;IACvB,+EAA+E;IAC/E,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC;IACtD;;;OAGG;IACH,KAAK,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7C;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC;IAClC;;;OAGG;IACH,KAAK,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM,CAAC;IACjC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,EAAE,aAAa,GAAG,SAAS,MAAM,EAAE,CAAC;IAChD,sDAAsD;IACtD,KAAK,CAAC,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACnD,2EAA2E;IAC3E,IAAI,IAAI,MAAM,CAAC;IACf,wFAAwF;IACxF,OAAO,IAAI,SAAS,WAAW,EAAE,CAAC;IAClC,8EAA8E;IAC9E,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,gFAAgF;IAChF,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACzE,UAAU,IAAI,UAAU,CAAC;IACzB,OAAO,IAAI,YAAY,CAAC;IACxB,qFAAqF;IACrF,GAAG,IAAI,MAAM,CAAC;IACd,yFAAyF;IACzF,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACvC;;;;OAIG;IACH,qBAAqB,CAAC,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;IAC9D;;;;;;;;OAQG;IACH,wBAAwB,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;CACzF;AAED,0FAA0F;AAC1F,eAAO,MAAM,eAAe,SAAU,aAAa,MAAM,aAAa,KAAG,MAKxE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,SAAU,aAAa,MAAM,aAAa,KAAG,MAIlF,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,MAAM,UAAW,UAAU,MAAM,aAAa,KAAG,SACD,CAAC"}
|
package/dist/world.es.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// src/world.ts
|
|
2
|
+
/**
|
|
3
|
+
* The boolean facts about one position, each named by the rule component or
|
|
4
|
+
* filter test that reads it.
|
|
5
|
+
*
|
|
6
|
+
* `surface` and `underground` select the pass; `underwater` and `lava` are the
|
|
7
|
+
* medium the position sits in; `bubble_column` answers
|
|
8
|
+
* `minecraft:disallow_spawns_in_bubble`; `snow_covered` answers the one
|
|
9
|
+
* `is_snow_covered` test a vanilla biome filter writes.
|
|
10
|
+
*/
|
|
11
|
+
var SPAWN_SITE_FLAGS = [
|
|
12
|
+
"surface",
|
|
13
|
+
"underground",
|
|
14
|
+
"underwater",
|
|
15
|
+
"lava",
|
|
16
|
+
"bubble_column",
|
|
17
|
+
"snow_covered"
|
|
18
|
+
];
|
|
19
|
+
/** The weather names `adjust_for_weather` reads. */
|
|
20
|
+
var SPAWN_WEATHER = [
|
|
21
|
+
"clear",
|
|
22
|
+
"rain",
|
|
23
|
+
"thunder"
|
|
24
|
+
];
|
|
25
|
+
/** The squared distance between two positions, which is what the range checks compare. */
|
|
26
|
+
var distanceSquared = (from, to) => {
|
|
27
|
+
const dx = from.x - to.x;
|
|
28
|
+
const dy = from.y - to.y;
|
|
29
|
+
const dz = from.z - to.z;
|
|
30
|
+
return dx * dx + dy * dy + dz * dz;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* The squared distance between two positions on the X and Z axes alone, which
|
|
34
|
+
* is what a chunk radius such as the simulation distance measures.
|
|
35
|
+
*/
|
|
36
|
+
var horizontalDistanceSquared = (from, to) => {
|
|
37
|
+
const dx = from.x - to.x;
|
|
38
|
+
const dz = from.z - to.z;
|
|
39
|
+
return dx * dx + dz * dz;
|
|
40
|
+
};
|
|
41
|
+
/** Which pass a position belongs to, which the world decides and the conditions read. */
|
|
42
|
+
var passAt = (world, at) => world.site("underground", at) ? "underground" : "surface";
|
|
43
|
+
export { SPAWN_SITE_FLAGS, SPAWN_WEATHER, distanceSquared, horizontalDistanceSquared, passAt };
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ybGQuZXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3dvcmxkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlmZmljdWx0eSB9IGZyb20gJy4vcnVsZXMnO1xuXG4vKipcbiAqIFdoYXQgdGhlIHNwYXduZXIgcmVhZHMgYWJvdXQgdGhlIHdvcmxkLlxuICpcbiAqIEV2ZXJ5IGZhY3QgYSBzcGF3biBydWxlIGFza3MgZm9yIGFycml2ZXMgdGhyb3VnaCB0aGlzIG9uZSBpbnRlcmZhY2UsIHNvIGFcbiAqIHRlc3QgZHJpdmVzIHRoZSB3aG9sZSBhbGdvcml0aG0gd2l0aCBhIHR5cGVkIGRvdWJsZSBhbmQgYSBzZXJ2ZXIgaW1wbGVtZW50c1xuICogaXQgb25jZSBhZ2FpbnN0IGl0cyBvd24gY2h1bmtzLCBsaWdodCBlbmdpbmUgYW5kIGVudGl0eSBpbmRleC5cbiAqL1xuXG4vKiogQSBibG9jayBwb3NpdGlvbi4gU3Bhd24gcG9zaXRpb25zIGFyZSBpbnRlZ2VyczsgZGlzdGFuY2VzIGFyZSBtZWFzdXJlZCBiZXR3ZWVuIGNlbnRlcnMuICovXG5leHBvcnQgaW50ZXJmYWNlIFNwYXduUG9zaXRpb24ge1xuICAgIHJlYWRvbmx5IHg6IG51bWJlcjtcbiAgICByZWFkb25seSB5OiBudW1iZXI7XG4gICAgcmVhZG9ubHkgejogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRoZSBib29sZWFuIGZhY3RzIGFib3V0IG9uZSBwb3NpdGlvbiwgZWFjaCBuYW1lZCBieSB0aGUgcnVsZSBjb21wb25lbnQgb3JcbiAqIGZpbHRlciB0ZXN0IHRoYXQgcmVhZHMgaXQuXG4gKlxuICogYHN1cmZhY2VgIGFuZCBgdW5kZXJncm91bmRgIHNlbGVjdCB0aGUgcGFzczsgYHVuZGVyd2F0ZXJgIGFuZCBgbGF2YWAgYXJlIHRoZVxuICogbWVkaXVtIHRoZSBwb3NpdGlvbiBzaXRzIGluOyBgYnViYmxlX2NvbHVtbmAgYW5zd2Vyc1xuICogYG1pbmVjcmFmdDpkaXNhbGxvd19zcGF3bnNfaW5fYnViYmxlYDsgYHNub3dfY292ZXJlZGAgYW5zd2VycyB0aGUgb25lXG4gKiBgaXNfc25vd19jb3ZlcmVkYCB0ZXN0IGEgdmFuaWxsYSBiaW9tZSBmaWx0ZXIgd3JpdGVzLlxuICovXG5leHBvcnQgY29uc3QgU1BBV05fU0lURV9GTEFHUyA9IFtcbiAgICAnc3VyZmFjZScsXG4gICAgJ3VuZGVyZ3JvdW5kJyxcbiAgICAndW5kZXJ3YXRlcicsXG4gICAgJ2xhdmEnLFxuICAgICdidWJibGVfY29sdW1uJyxcbiAgICAnc25vd19jb3ZlcmVkJ1xuXSBhcyBjb25zdDtcblxuLyoqIE9uZSBvZiB7QGxpbmsgU1BBV05fU0lURV9GTEFHU30uICovXG5leHBvcnQgdHlwZSBTcGF3blNpdGVGbGFnID0gKHR5cGVvZiBTUEFXTl9TSVRFX0ZMQUdTKVtudW1iZXJdO1xuXG4vKiogV2hpY2ggb2YgdGhlIHR3byBwYXNzZXMgYSBwb3NpdGlvbiBiZWxvbmdzIHRvLiAqL1xuZXhwb3J0IHR5cGUgU3Bhd25QYXNzID0gJ3N1cmZhY2UnIHwgJ3VuZGVyZ3JvdW5kJztcblxuLyoqIFRoZSB3ZWF0aGVyIG5hbWVzIGBhZGp1c3RfZm9yX3dlYXRoZXJgIHJlYWRzLiAqL1xuZXhwb3J0IGNvbnN0IFNQQVdOX1dFQVRIRVIgPSBbJ2NsZWFyJywgJ3JhaW4nLCAndGh1bmRlciddIGFzIGNvbnN0O1xuXG4vKiogT25lIG9mIHtAbGluayBTUEFXTl9XRUFUSEVSfS4gKi9cbmV4cG9ydCB0eXBlIFNwYXduV2VhdGhlciA9ICh0eXBlb2YgU1BBV05fV0VBVEhFUilbbnVtYmVyXTtcblxuLyoqIE9uZSBwbGF5ZXIgdGhlIHNwYXduZXIgc3Bhd25zIGFyb3VuZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Bhd25QbGF5ZXIge1xuICAgIHJlYWRvbmx5IHBvc2l0aW9uOiBTcGF3blBvc2l0aW9uO1xufVxuXG4vKiogRXZlcnl0aGluZyBvbmUgc3Bhd24gY3ljbGUgcmVhZHMgYWJvdXQgdGhlIHdvcmxkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcGF3bldvcmxkIHtcbiAgICAvKiogQSBib29sZWFuIGZhY3QgYWJvdXQgb25lIHBvc2l0aW9uLCBuYW1lZCBieSB0aGUgY29tcG9uZW50IHRoYXQgcmVhZHMgaXQuICovXG4gICAgc2l0ZShmbGFnOiBTcGF3blNpdGVGbGFnLCBhdDogU3Bhd25Qb3NpdGlvbik6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogVGhlIGJsb2NrIGlkZW50aWZpZXIgYXQgb25lIHBvc2l0aW9uLCBvciB1bmRlZmluZWQgd2hlbiB0aGUgY2h1bmsgaXMgbm90XG4gICAgICogbG9hZGVkLCB3aGljaCBzdG9wcyB0aGUgYXR0ZW1wdC5cbiAgICAgKi9cbiAgICBibG9jayhhdDogU3Bhd25Qb3NpdGlvbik6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBibG9jayBhdCBvbmUgcG9zaXRpb24gc3RvcHMgYW4gZW50aXR5IHN0YW5kaW5nIGluIGl0LlxuICAgICAqXG4gICAgICogVGhlIHVuZGVyZ3JvdW5kIHBhc3MgZHJhd3MgYSB5IHVuaWZvcm1seSBiZXR3ZWVuIHRoZSB3b3JsZCBmbG9vciBhbmQgdGhlXG4gICAgICogc3VyZmFjZSwgc28gbW9zdCBvZiB3aGF0IGl0IGRyYXdzIGlzIGluc2lkZSByb2NrLiBKYXZhIHJlamVjdHMgc3VjaCBhXG4gICAgICogZHJhdyBpbiBgTmF0dXJhbFNwYXduZXIuaXNTcGF3blBvc2l0aW9uT2tgOyB3aXRob3V0IHRoaXMgdGhlIHNwYXduZXJcbiAgICAgKiBwdXRzIGEgem9tYmllIGluc2lkZSBhIHN0b25lIGJsb2NrLCB3aGVyZSBpdCBjYW4gcGF0aCBub3doZXJlIGFuZCBuZXZlclxuICAgICAqIGRlc3Bhd25zLlxuICAgICAqL1xuICAgIHNvbGlkKGF0OiBTcGF3blBvc2l0aW9uKTogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBUaGUgbGlnaHQgbGV2ZWwgYXQgb25lIHBvc2l0aW9uLCAwIHRvIDE1LCBiZWZvcmUgdGhpcyBwYWNrYWdlIGFwcGxpZXMgdGhlXG4gICAgICogd2VhdGhlciBkYXJrZW5pbmcgdGhhdCBgYWRqdXN0X2Zvcl93ZWF0aGVyYCBhc2tzIGZvci5cbiAgICAgKi9cbiAgICBsaWdodChhdDogU3Bhd25Qb3NpdGlvbik6IG51bWJlcjtcbiAgICAvKiogVGhlIGJpb21lIHRhZ3MgYXQgb25lIHBvc2l0aW9uLCB3aGljaCBpcyB3aGF0IGBoYXNfYmlvbWVfdGFnYCBjb21wYXJlcy4gKi9cbiAgICBiaW9tZVRhZ3MoYXQ6IFNwYXduUG9zaXRpb24pOiByZWFkb25seSBzdHJpbmdbXTtcbiAgICAvKiogVGhlIGJpb21lIG5hbWUgYXQgb25lIHBvc2l0aW9uLCBmb3IgYGlzX2Jpb21lYC4gKi9cbiAgICBiaW9tZT8oYXQ6IFNwYXduUG9zaXRpb24pOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIGxvd2VzdCB5IGFuIGVudGl0eSBtYXkgc3RhbmQgb24gaW4gb25lIGNvbHVtbiwgd2hpY2ggaXMgdGhlIHBvc2l0aW9uXG4gICAgICogdGhlIHN1cmZhY2UgcGFzcyB0cmllcy4gVW5kZWZpbmVkIHdoZW4gdGhlIGNvbHVtbiBpcyBub3QgbG9hZGVkLCB3aGljaFxuICAgICAqIHNraXBzIHRoZSBhdHRlbXB0LlxuICAgICAqL1xuICAgIHN1cmZhY2VZKHg6IG51bWJlciwgejogbnVtYmVyKTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKiBUaGUgbG93ZXN0IHkgdGhlIHdvcmxkIGdlbmVyYXRlcywgd2hpY2ggYm91bmRzIHRoZSB1bmRlcmdyb3VuZCBwYXNzLiAqL1xuICAgIG1pblkoKTogbnVtYmVyO1xuICAgIC8qKiBUaGUgcGxheWVycyB0aGUgc3Bhd25lciBzcGF3bnMgYXJvdW5kLCB3aGljaCBpcyBldmVyeSBwbGF5ZXIgaW4gdGhlIHNwYXduIHJlZ2lvbi4gKi9cbiAgICBwbGF5ZXJzKCk6IHJlYWRvbmx5IFNwYXduUGxheWVyW107XG4gICAgLyoqIEhvdyBtYW55IGVudGl0aWVzIG9mIG9uZSBwb3B1bGF0aW9uIHBvb2wgc3RhbmQgaW4gdGhlIHNwYXduIHJlZ2lvbiBub3cuICovXG4gICAgcG9vbENvdW50KHBvb2w6IHN0cmluZyk6IG51bWJlcjtcbiAgICAvKiogSG93IG1hbnkgZW50aXRpZXMgb2Ygb25lIHR5cGUgc3RhbmQgd2l0aGluIGByYWRpdXNgIGJsb2NrcyBvZiBhIHBvc2l0aW9uLiAqL1xuICAgIHR5cGVDb3VudChpZGVudGlmaWVyOiBzdHJpbmcsIGF0OiBTcGF3blBvc2l0aW9uLCByYWRpdXM6IG51bWJlcik6IG51bWJlcjtcbiAgICBkaWZmaWN1bHR5KCk6IERpZmZpY3VsdHk7XG4gICAgd2VhdGhlcigpOiBTcGF3bldlYXRoZXI7XG4gICAgLyoqIFRoZSB3b3JsZCdzIGFnZSBpbiB0aWNrcywgd2hpY2ggaXMgd2hhdCBgbWluZWNyYWZ0OndvcmxkX2FnZV9maWx0ZXJgIGNvbXBhcmVzLiAqL1xuICAgIGFnZSgpOiBudW1iZXI7XG4gICAgLyoqIFdoZXRoZXIgYSBuYW1lZCBtb2IgZXZlbnQsIHN1Y2ggYXMgYG1pbmVjcmFmdDpwaWxsYWdlcl9wYXRyb2xzX2V2ZW50YCwgaXMgcnVubmluZy4gKi9cbiAgICBtb2JFdmVudEFjdGl2ZShldmVudDogc3RyaW5nKTogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBIb3cgZmFyIGEgcG9zaXRpb24gaXMgZnJvbSB0aGUgbmVhcmVzdCB2aWxsYWdlIGJvcmRlciwgbmVnYXRpdmUgaW5zaWRlIGl0XG4gICAgICogYW5kIHVuZGVmaW5lZCB3aGVuIG5vIHZpbGxhZ2UgaXMgbmVhci4gYG1pbmVjcmFmdDpwbGF5ZXJfaW5fdmlsbGFnZV9maWx0ZXJgXG4gICAgICogcmVhZHMgaXQuXG4gICAgICovXG4gICAgdmlsbGFnZUJvcmRlckRpc3RhbmNlPyhhdDogU3Bhd25Qb3NpdGlvbik6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIEphdmEgcmVzdHJpY3RzIHRoaXMgZW50aXR5IHR5cGUgdG8gYSBzdHJ1Y3R1cmUgc3Bhd24gb3ZlcnJpZGUgYXQgdGhpcyBwb3NpdGlvbi5cbiAgICAgKlxuICAgICAqIGBmYWxzZWAgbWVhbnMgdGhlIEphdmEgZGF0YSBkZWNsYXJlcyBhdCBsZWFzdCBvbmUgc3RydWN0dXJlIG92ZXJyaWRlIGZvciB0aGUgZW50aXR5LCBidXRcbiAgICAgKiB0aGlzIHBvc2l0aW9uIGlzIG91dHNpZGUgZXZlcnkgYWN0aXZlIG92ZXJyaWRlLiBgdHJ1ZWAgbWVhbnMgYSBtYXRjaGluZyBvdmVycmlkZSBjb3ZlcnNcbiAgICAgKiB0aGlzIHBvc2l0aW9uLiBgdW5kZWZpbmVkYCBtZWFucyBKYXZhJ3MgYmlvbWUgZGF0YSBhbHNvIHBlcm1pdHMgdGhpcyBlbnRpdHkgdG8gc3Bhd25cbiAgICAgKiBvdXRzaWRlIHN0cnVjdHVyZXMsIG9yIHRoYXQgdGhlIHdvcmxkIGhhcyBubyBKYXZhIG92ZXJyaWRlIGRhdGEgZm9yIGl0LCBzbyB0aGUgc3Bhd24gcnVsZVxuICAgICAqIGRlY2lkZXMgYXMgdXN1YWwuXG4gICAgICovXG4gICAgc3RydWN0dXJlU3Bhd25PdmVycmlkZUF0PyhpZGVudGlmaWVyOiBzdHJpbmcsIGF0OiBTcGF3blBvc2l0aW9uKTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbn1cblxuLyoqIFRoZSBzcXVhcmVkIGRpc3RhbmNlIGJldHdlZW4gdHdvIHBvc2l0aW9ucywgd2hpY2ggaXMgd2hhdCB0aGUgcmFuZ2UgY2hlY2tzIGNvbXBhcmUuICovXG5leHBvcnQgY29uc3QgZGlzdGFuY2VTcXVhcmVkID0gKGZyb206IFNwYXduUG9zaXRpb24sIHRvOiBTcGF3blBvc2l0aW9uKTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBkeCA9IGZyb20ueCAtIHRvLng7XG4gICAgY29uc3QgZHkgPSBmcm9tLnkgLSB0by55O1xuICAgIGNvbnN0IGR6ID0gZnJvbS56IC0gdG8uejtcbiAgICByZXR1cm4gZHggKiBkeCArIGR5ICogZHkgKyBkeiAqIGR6O1xufTtcblxuLyoqXG4gKiBUaGUgc3F1YXJlZCBkaXN0YW5jZSBiZXR3ZWVuIHR3byBwb3NpdGlvbnMgb24gdGhlIFggYW5kIFogYXhlcyBhbG9uZSwgd2hpY2hcbiAqIGlzIHdoYXQgYSBjaHVuayByYWRpdXMgc3VjaCBhcyB0aGUgc2ltdWxhdGlvbiBkaXN0YW5jZSBtZWFzdXJlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGhvcml6b250YWxEaXN0YW5jZVNxdWFyZWQgPSAoZnJvbTogU3Bhd25Qb3NpdGlvbiwgdG86IFNwYXduUG9zaXRpb24pOiBudW1iZXIgPT4ge1xuICAgIGNvbnN0IGR4ID0gZnJvbS54IC0gdG8ueDtcbiAgICBjb25zdCBkeiA9IGZyb20ueiAtIHRvLno7XG4gICAgcmV0dXJuIGR4ICogZHggKyBkeiAqIGR6O1xufTtcblxuLyoqIFdoaWNoIHBhc3MgYSBwb3NpdGlvbiBiZWxvbmdzIHRvLCB3aGljaCB0aGUgd29ybGQgZGVjaWRlcyBhbmQgdGhlIGNvbmRpdGlvbnMgcmVhZC4gKi9cbmV4cG9ydCBjb25zdCBwYXNzQXQgPSAod29ybGQ6IFNwYXduV29ybGQsIGF0OiBTcGF3blBvc2l0aW9uKTogU3Bhd25QYXNzID0+XG4gICAgd29ybGQuc2l0ZSgndW5kZXJncm91bmQnLCBhdCkgPyAndW5kZXJncm91bmQnIDogJ3N1cmZhY2UnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBMEJBLElBQWEsbUJBQW1CO0NBQzVCO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtBQUNKOztBQVNBLElBQWEsZ0JBQWdCO0NBQUM7Q0FBUztDQUFRO0FBQVM7O0FBNkV4RCxJQUFhLG1CQUFtQixNQUFxQixPQUE4QjtDQUMvRSxNQUFNLEtBQUssS0FBSyxJQUFJLEdBQUc7Q0FDdkIsTUFBTSxLQUFLLEtBQUssSUFBSSxHQUFHO0NBQ3ZCLE1BQU0sS0FBSyxLQUFLLElBQUksR0FBRztDQUN2QixPQUFPLEtBQUssS0FBSyxLQUFLLEtBQUssS0FBSztBQUNwQzs7Ozs7QUFNQSxJQUFhLDZCQUE2QixNQUFxQixPQUE4QjtDQUN6RixNQUFNLEtBQUssS0FBSyxJQUFJLEdBQUc7Q0FDdkIsTUFBTSxLQUFLLEtBQUssSUFBSSxHQUFHO0NBQ3ZCLE9BQU8sS0FBSyxLQUFLLEtBQUs7QUFDMUI7O0FBR0EsSUFBYSxVQUFVLE9BQW1CLE9BQ3RDLE1BQU0sS0FBSyxlQUFlLEVBQUUsSUFBSSxnQkFBZ0IifQ==
|
package/package.json
CHANGED
|
@@ -1,8 +1,71 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsprismarine/spawning",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
|
|
3
|
+
"version": "0.16.0-unstable-20261029135432",
|
|
4
|
+
"description": "Bedrock spawn rules: the 24-component grammar, the condition evaluator, population pools and the spawn loop.",
|
|
5
|
+
"sideEffects": false,
|
|
6
|
+
"publishConfig": {
|
|
7
|
+
"access": "public"
|
|
8
|
+
},
|
|
9
|
+
"type": "module",
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"CHANGELOG.md",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
15
|
+
"main": "./dist/index.cjs.cjs",
|
|
16
|
+
"module": "./dist/index.es.js",
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"types": "./dist/index.d.ts",
|
|
21
|
+
"import": "./dist/index.es.js",
|
|
22
|
+
"module": "./dist/index.es.js",
|
|
23
|
+
"require": "./dist/index.cjs.cjs"
|
|
24
|
+
},
|
|
25
|
+
"./*": {
|
|
26
|
+
"types": "./dist/*.d.ts",
|
|
27
|
+
"import": "./dist/*.es.js",
|
|
28
|
+
"module": "./dist/*.es.js",
|
|
29
|
+
"require": "./dist/*.cjs.cjs"
|
|
30
|
+
},
|
|
31
|
+
"./package.json": "./package.json"
|
|
32
|
+
},
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "git+https://github.com/JSPrismarine/JSPrismarine.git"
|
|
36
|
+
},
|
|
37
|
+
"keywords": [
|
|
38
|
+
"jsprismarine",
|
|
39
|
+
"minecraft",
|
|
40
|
+
"bedrock",
|
|
41
|
+
"spawning",
|
|
42
|
+
"spawn-rules",
|
|
43
|
+
"behavior-pack"
|
|
44
|
+
],
|
|
45
|
+
"author": "JSPrismarine",
|
|
46
|
+
"license": "MIT",
|
|
47
|
+
"bugs": {
|
|
48
|
+
"url": "https://github.com/JSPrismarine/JSPrismarine/issues"
|
|
49
|
+
},
|
|
50
|
+
"homepage": "https://github.com/JSPrismarine/JSPrismarine/tree/master/packages/spawning",
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"@jsprismarine/entities": "0.16.0-unstable-20261029135432",
|
|
53
|
+
"@jsprismarine/packs": "0.16.0-unstable-20261029135432",
|
|
54
|
+
"@jsprismarine/predicates": "0.16.0-unstable-20261029135432"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@types/node": "24.19.2",
|
|
58
|
+
"glob": "13.0.6",
|
|
59
|
+
"rimraf": "6.1.3",
|
|
60
|
+
"typescript": "7.0.2",
|
|
61
|
+
"vite": "8.3.5",
|
|
62
|
+
"vitest": "5.0.5"
|
|
63
|
+
},
|
|
64
|
+
"scripts": {
|
|
65
|
+
"clean": "rimraf dist jsp *.tsbuildinfo vite.config.ts.timestamp-* .tsup .turbo",
|
|
66
|
+
"build": "vite build && node ../../scripts/emit-dts.mts",
|
|
67
|
+
"build:watch": "vite build --watch",
|
|
68
|
+
"test": "vitest run",
|
|
69
|
+
"typecheck": "tsc-ts --noEmit && tsc-ts --noEmit -p tsconfig.test.json"
|
|
70
|
+
}
|
|
8
71
|
}
|