nucleation 0.1.184 → 0.2.1
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 +33 -10
- package/api.js +608 -0
- package/nucleation-original.js +52 -28
- package/nucleation.d.ts +144 -131
- package/nucleation_bg.wasm +0 -0
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -109,25 +109,48 @@ println!("{:?}", schematic.get_info());
|
|
|
109
109
|
#### JavaScript (WASM)
|
|
110
110
|
|
|
111
111
|
```ts
|
|
112
|
-
import
|
|
112
|
+
import init from "nucleation";
|
|
113
|
+
import { Schematic } from "nucleation/api";
|
|
114
|
+
await init();
|
|
113
115
|
|
|
114
116
|
const bytes = await fetch("example.litematic").then((r) => r.arrayBuffer());
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
117
|
+
const schem = Schematic.open(new Uint8Array(bytes), { hint: "example.litematic" });
|
|
118
|
+
schem.setBlock([0, 0, 0], "minecraft:gold_block");
|
|
119
|
+
await schem.save("out.schem");
|
|
118
120
|
```
|
|
119
121
|
|
|
120
122
|
#### Python
|
|
121
123
|
|
|
122
124
|
```python
|
|
123
|
-
from nucleation import Schematic
|
|
125
|
+
from nucleation import Schematic, sign, text
|
|
126
|
+
|
|
127
|
+
# Three explicit constructors (legacy `Schematic("file.schem")` still works):
|
|
128
|
+
schem = Schematic.open("example.litematic") # load
|
|
129
|
+
fresh = Schematic.new("my_schematic") # blank
|
|
130
|
+
templ = Schematic.from_template("ab\ncd") # ASCII template
|
|
131
|
+
|
|
132
|
+
# Polished set_block: tuple coords, structured state and NBT, chainable.
|
|
133
|
+
schem.set_block((0, 0, 0), "minecraft:repeater",
|
|
134
|
+
state={"delay": 4, "facing": "east"})
|
|
135
|
+
schem.set_block((0, 1, 0), "minecraft:oak_sign",
|
|
136
|
+
state={"rotation": 8},
|
|
137
|
+
nbt=sign([text("Hello", color="gold"), "world"]))
|
|
138
|
+
|
|
139
|
+
# Format inferred from extension.
|
|
140
|
+
schem.save("out.litematic")
|
|
141
|
+
```
|
|
124
142
|
|
|
125
|
-
|
|
126
|
-
data = f.read()
|
|
143
|
+
For hot loops placing many blocks, prefer the batch / fast-path APIs:
|
|
127
144
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
145
|
+
```python
|
|
146
|
+
# 30+ M placements/sec — one native call.
|
|
147
|
+
schem.set_blocks([(x, 0, 0) for x in range(1_000_000)], "minecraft:stone")
|
|
148
|
+
|
|
149
|
+
# 10+ M placements/sec — pre-resolve once, place by index.
|
|
150
|
+
stone = schem.prepare_block("minecraft:stone")
|
|
151
|
+
place = schem.place
|
|
152
|
+
for x, y, z in positions:
|
|
153
|
+
place(x, y, z, stone)
|
|
131
154
|
```
|
|
132
155
|
|
|
133
156
|
### Building Schematics with ASCII Art
|
package/api.js
ADDED
|
@@ -0,0 +1,608 @@
|
|
|
1
|
+
// Polished JS API for Nucleation, layered over the wasm-bindgen output.
|
|
2
|
+
//
|
|
3
|
+
// The default `nucleation` import still exposes `init`, `SchematicWrapper`,
|
|
4
|
+
// `SchematicBuilderWrapper`, etc. — that surface is unchanged. This sub-module
|
|
5
|
+
// (`nucleation/api`) adds an ergonomic facade analogous to the Python API
|
|
6
|
+
// described in api_upgrade.md.
|
|
7
|
+
//
|
|
8
|
+
// Usage:
|
|
9
|
+
// import init from 'nucleation';
|
|
10
|
+
// import { Schematic, Block, UseBlock } from 'nucleation/api';
|
|
11
|
+
// await init();
|
|
12
|
+
//
|
|
13
|
+
// const schem = Schematic.new('test');
|
|
14
|
+
// schem.setBlock([0, 0, 0], 'minecraft:repeater', { state: { delay: 4 } });
|
|
15
|
+
// schem.save('out.litematic'); // browser: returns Uint8Array if no fs.
|
|
16
|
+
|
|
17
|
+
import init, * as raw from './nucleation.js';
|
|
18
|
+
|
|
19
|
+
export { init };
|
|
20
|
+
export const _raw = raw;
|
|
21
|
+
|
|
22
|
+
// --- Block ----------------------------------------------------------------
|
|
23
|
+
|
|
24
|
+
const SNBT_RAW = '__snbt__';
|
|
25
|
+
|
|
26
|
+
export class Block {
|
|
27
|
+
/**
|
|
28
|
+
* @param {string} id
|
|
29
|
+
* @param {object} [opts]
|
|
30
|
+
* @param {Record<string, string|number|boolean>} [opts.state]
|
|
31
|
+
* @param {Record<string, any>} [opts.nbt]
|
|
32
|
+
*/
|
|
33
|
+
constructor(id, { state = null, nbt = null } = {}) {
|
|
34
|
+
this.id = id;
|
|
35
|
+
this.state = state;
|
|
36
|
+
this.nbt = nbt;
|
|
37
|
+
// Cached lazily on first toString() call. Block is otherwise frozen below.
|
|
38
|
+
this._payload = null;
|
|
39
|
+
this._hasExtras = !!(state && Object.keys(state).length) || !!(nbt && Object.keys(nbt).length);
|
|
40
|
+
Object.seal(this); // allow _payload assignment, prevent new props
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Parse "id[k=v,...]{snbt}" form. */
|
|
44
|
+
static parse(s) {
|
|
45
|
+
if (typeof s !== 'string') {
|
|
46
|
+
throw new TypeError(`Block.parse() expects a string, got ${typeof s}`);
|
|
47
|
+
}
|
|
48
|
+
let rest = s.trim();
|
|
49
|
+
let snbt = null;
|
|
50
|
+
if (rest.endsWith('}')) {
|
|
51
|
+
let depth = 0;
|
|
52
|
+
let cut = -1;
|
|
53
|
+
for (let i = rest.length - 1; i >= 0; i--) {
|
|
54
|
+
const ch = rest[i];
|
|
55
|
+
if (ch === '}') depth++;
|
|
56
|
+
else if (ch === '{') {
|
|
57
|
+
depth--;
|
|
58
|
+
if (depth === 0) {
|
|
59
|
+
cut = i;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (cut >= 0) {
|
|
65
|
+
snbt = rest.slice(cut + 1, -1);
|
|
66
|
+
rest = rest.slice(0, cut);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
let state = null;
|
|
70
|
+
if (rest.endsWith(']')) {
|
|
71
|
+
const cut = rest.lastIndexOf('[');
|
|
72
|
+
if (cut >= 0) {
|
|
73
|
+
const inner = rest.slice(cut + 1, -1);
|
|
74
|
+
rest = rest.slice(0, cut);
|
|
75
|
+
state = {};
|
|
76
|
+
for (const kv of inner.split(',')) {
|
|
77
|
+
if (!kv.trim()) continue;
|
|
78
|
+
const eq = kv.indexOf('=');
|
|
79
|
+
if (eq < 0) continue;
|
|
80
|
+
const k = kv.slice(0, eq).trim();
|
|
81
|
+
const v = kv.slice(eq + 1).trim();
|
|
82
|
+
state[k] = coerceStateValue(v);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const nbt = snbt !== null ? { [SNBT_RAW]: snbt } : null;
|
|
87
|
+
return new Block(rest, { state, nbt });
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
withState(extra) {
|
|
91
|
+
return new Block(this.id, {
|
|
92
|
+
state: { ...(this.state || {}), ...extra },
|
|
93
|
+
nbt: this.nbt,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
withNbt(extra) {
|
|
98
|
+
return new Block(this.id, {
|
|
99
|
+
state: this.state,
|
|
100
|
+
nbt: { ...(this.nbt || {}), ...extra },
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
toString() {
|
|
105
|
+
if (this._payload !== null) return this._payload;
|
|
106
|
+
let out = this.id;
|
|
107
|
+
if (this.state) {
|
|
108
|
+
const parts = Object.entries(this.state).map(
|
|
109
|
+
([k, v]) => `${k}=${stateToStr(v)}`
|
|
110
|
+
);
|
|
111
|
+
if (parts.length) out += `[${parts.join(',')}]`;
|
|
112
|
+
}
|
|
113
|
+
if (this.nbt) {
|
|
114
|
+
if (SNBT_RAW in this.nbt && Object.keys(this.nbt).length === 1) {
|
|
115
|
+
out += `{${this.nbt[SNBT_RAW]}}`;
|
|
116
|
+
} else {
|
|
117
|
+
out += `{${dictToSnbt(this.nbt)}}`;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
this._payload = out;
|
|
121
|
+
return out;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function coerceStateValue(v) {
|
|
126
|
+
if (v === 'true') return true;
|
|
127
|
+
if (v === 'false') return false;
|
|
128
|
+
if (/^-?\d+$/.test(v)) return parseInt(v, 10);
|
|
129
|
+
return v;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function stateToStr(v) {
|
|
133
|
+
if (typeof v === 'boolean') return v ? 'true' : 'false';
|
|
134
|
+
return String(v);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function valueToSnbt(v) {
|
|
138
|
+
if (typeof v === 'boolean') return v ? '1b' : '0b';
|
|
139
|
+
if (typeof v === 'number') {
|
|
140
|
+
return Number.isInteger(v) ? `${v}` : `${v}f`;
|
|
141
|
+
}
|
|
142
|
+
if (typeof v === 'string') {
|
|
143
|
+
return `"${v.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
|
|
144
|
+
}
|
|
145
|
+
if (Array.isArray(v)) return `[${v.map(valueToSnbt).join(',')}]`;
|
|
146
|
+
if (v && typeof v === 'object') return `{${dictToSnbt(v)}}`;
|
|
147
|
+
throw new TypeError(`Cannot encode ${typeof v} as SNBT`);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function dictToSnbt(d) {
|
|
151
|
+
if (SNBT_RAW in d && Object.keys(d).length === 1) return String(d[SNBT_RAW]);
|
|
152
|
+
return Object.entries(d)
|
|
153
|
+
.map(([k, v]) => `${k}:${valueToSnbt(v)}`)
|
|
154
|
+
.join(',');
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// --- Minecraft helpers (chest, sign, text, Item) -------------------------
|
|
158
|
+
//
|
|
159
|
+
// Modern (1.20+) NBT schemas. For pre-1.20 layouts, build the dict by hand
|
|
160
|
+
// or use the `__snbt__` escape hatch in setBlock.
|
|
161
|
+
|
|
162
|
+
export function text(s, opts = {}) {
|
|
163
|
+
if (typeof s !== 'string') {
|
|
164
|
+
throw new TypeError(`text() expects a string, got ${typeof s}`);
|
|
165
|
+
}
|
|
166
|
+
const out = { text: s };
|
|
167
|
+
if (opts.color !== undefined) out.color = opts.color;
|
|
168
|
+
for (const k of ['bold', 'italic', 'underlined', 'strikethrough', 'obfuscated']) {
|
|
169
|
+
if (opts[k] !== undefined) out[k] = opts[k];
|
|
170
|
+
}
|
|
171
|
+
return JSON.stringify(out);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export class Item {
|
|
175
|
+
constructor(id, { count = 1, slot = null, components = null } = {}) {
|
|
176
|
+
this.id = id;
|
|
177
|
+
this.count = count;
|
|
178
|
+
this.slot = slot;
|
|
179
|
+
this.components = components;
|
|
180
|
+
Object.freeze(this);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
function coerceItem(x, defaultSlot) {
|
|
185
|
+
if (x instanceof Item) {
|
|
186
|
+
const d = {
|
|
187
|
+
Slot: x.slot != null ? x.slot : defaultSlot,
|
|
188
|
+
id: x.id,
|
|
189
|
+
Count: x.count,
|
|
190
|
+
};
|
|
191
|
+
if (x.components) d.components = { ...x.components };
|
|
192
|
+
return d;
|
|
193
|
+
}
|
|
194
|
+
if (typeof x === 'string') {
|
|
195
|
+
return { Slot: defaultSlot, id: x, Count: 1 };
|
|
196
|
+
}
|
|
197
|
+
if (Array.isArray(x)) {
|
|
198
|
+
if (x.length === 2) {
|
|
199
|
+
const [id, count] = x;
|
|
200
|
+
return { Slot: defaultSlot, id, Count: count };
|
|
201
|
+
}
|
|
202
|
+
if (x.length === 3) {
|
|
203
|
+
const [id, count, components] = x;
|
|
204
|
+
const d = { Slot: defaultSlot, id, Count: count };
|
|
205
|
+
if (components) d.components = { ...components };
|
|
206
|
+
return d;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
throw new TypeError(
|
|
210
|
+
`Unsupported chest item: ${JSON.stringify(x)}. ` +
|
|
211
|
+
`Use Item(...), 'minecraft:foo', or [id, count, components?].`
|
|
212
|
+
);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
export function chest(items, { name = null, lock = null, lootTable = null } = {}) {
|
|
216
|
+
const out = [];
|
|
217
|
+
if (items && !Array.isArray(items) && typeof items === 'object') {
|
|
218
|
+
// Plain object → explicit-slot map.
|
|
219
|
+
for (const [slotStr, x] of Object.entries(items)) {
|
|
220
|
+
const slot = parseInt(slotStr, 10);
|
|
221
|
+
const d = coerceItem(x, slot);
|
|
222
|
+
d.Slot = slot;
|
|
223
|
+
out.push(d);
|
|
224
|
+
}
|
|
225
|
+
} else {
|
|
226
|
+
let i = 0;
|
|
227
|
+
for (const x of items || []) {
|
|
228
|
+
out.push(coerceItem(x, i));
|
|
229
|
+
i++;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
const nbt = { Items: out };
|
|
233
|
+
if (name !== null) nbt.CustomName = name.startsWith('{') ? name : text(name);
|
|
234
|
+
if (lock !== null) nbt.Lock = lock;
|
|
235
|
+
if (lootTable !== null) nbt.LootTable = lootTable;
|
|
236
|
+
return nbt;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
function signMessages(lines) {
|
|
240
|
+
const msgs = [];
|
|
241
|
+
for (const line of lines || []) {
|
|
242
|
+
if (line == null || line === '') {
|
|
243
|
+
msgs.push('""');
|
|
244
|
+
} else if (typeof line === 'string') {
|
|
245
|
+
msgs.push(line.startsWith('{') ? line : text(line));
|
|
246
|
+
} else {
|
|
247
|
+
throw new TypeError('Sign line must be string (plain or JSON-component)');
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
while (msgs.length < 4) msgs.push('""');
|
|
251
|
+
if (msgs.length > 4) throw new RangeError('A sign has at most 4 lines per side');
|
|
252
|
+
return msgs;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
export function sign(lines = [], { back = [], color = 'black', glowing = false, waxed = false } = {}) {
|
|
256
|
+
return {
|
|
257
|
+
front_text: { messages: signMessages(lines), color, has_glowing_text: glowing },
|
|
258
|
+
back_text: { messages: signMessages(back), color, has_glowing_text: glowing },
|
|
259
|
+
is_waxed: waxed,
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
// --- Events ---------------------------------------------------------------
|
|
264
|
+
|
|
265
|
+
export class UseBlock {
|
|
266
|
+
constructor(pos) {
|
|
267
|
+
this.pos = pos;
|
|
268
|
+
Object.freeze(this);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
export class ButtonPress {
|
|
273
|
+
constructor(pos) {
|
|
274
|
+
this.pos = pos;
|
|
275
|
+
Object.freeze(this);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// --- Cursor ---------------------------------------------------------------
|
|
280
|
+
|
|
281
|
+
export class Cursor {
|
|
282
|
+
constructor(schem, origin, step) {
|
|
283
|
+
this._schem = schem;
|
|
284
|
+
this._origin = origin;
|
|
285
|
+
this.pos = origin;
|
|
286
|
+
this.step = step;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
place(block, opts = {}) {
|
|
290
|
+
const offset = opts.offset || [0, 0, 0];
|
|
291
|
+
const target = [
|
|
292
|
+
this.pos[0] + offset[0],
|
|
293
|
+
this.pos[1] + offset[1],
|
|
294
|
+
this.pos[2] + offset[2],
|
|
295
|
+
];
|
|
296
|
+
this._schem.setBlock(target, block, {
|
|
297
|
+
state: opts.state,
|
|
298
|
+
nbt: opts.nbt,
|
|
299
|
+
});
|
|
300
|
+
return this;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
advance(n = 1) {
|
|
304
|
+
this.pos = [
|
|
305
|
+
this.pos[0] + this.step[0] * n,
|
|
306
|
+
this.pos[1] + this.step[1] * n,
|
|
307
|
+
this.pos[2] + this.step[2] * n,
|
|
308
|
+
];
|
|
309
|
+
return this;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
reset() {
|
|
313
|
+
this.pos = this._origin;
|
|
314
|
+
return this;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// --- Schematic ------------------------------------------------------------
|
|
319
|
+
|
|
320
|
+
const LOAD_EXTS = ['.schem', '.litematic', '.nbt', '.schematic', '.mcstructure'];
|
|
321
|
+
|
|
322
|
+
function suffixOf(path) {
|
|
323
|
+
const m = String(path).toLowerCase().match(/\.[^.\/\\]+$/);
|
|
324
|
+
return m ? m[0] : '';
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
export class Schematic {
|
|
328
|
+
constructor(rawWrapper, { pack = null } = {}) {
|
|
329
|
+
this.raw = rawWrapper;
|
|
330
|
+
this.pack = pack;
|
|
331
|
+
this._pendingBuilder = null;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/** Create a blank schematic. */
|
|
335
|
+
static new(name = 'untitled', { pack = null } = {}) {
|
|
336
|
+
if (typeof name !== 'string') {
|
|
337
|
+
throw new TypeError(`Schematic.new() name must be a string, got ${typeof name}`);
|
|
338
|
+
}
|
|
339
|
+
const w = new raw.SchematicWrapper();
|
|
340
|
+
if (typeof w.set_name === 'function') {
|
|
341
|
+
try { w.set_name(name); } catch {}
|
|
342
|
+
}
|
|
343
|
+
return new Schematic(w, { pack });
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Load from binary data (Uint8Array). Format inferred from the second arg
|
|
348
|
+
* if it ends in a known extension; otherwise from_data() autodetects.
|
|
349
|
+
*/
|
|
350
|
+
static open(data, { hint = null, pack = null } = {}) {
|
|
351
|
+
const w = new raw.SchematicWrapper();
|
|
352
|
+
const ext = hint ? suffixOf(hint) : '';
|
|
353
|
+
if (ext === '.litematic') w.from_litematic(data);
|
|
354
|
+
else if (ext === '.schem' || ext === '.schematic') w.from_schematic(data);
|
|
355
|
+
else if (ext === '.mcstructure') w.from_mcstructure(data);
|
|
356
|
+
else w.from_data(data);
|
|
357
|
+
return new Schematic(w, { pack });
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/** Build from an ASCII-art template via SchematicBuilderWrapper. */
|
|
361
|
+
static fromTemplate(template, { name = 'untitled', pack = null } = {}) {
|
|
362
|
+
const builder = raw.SchematicBuilderWrapper.from_template
|
|
363
|
+
? raw.SchematicBuilderWrapper.from_template(template)
|
|
364
|
+
: new raw.SchematicBuilderWrapper().from_template(template);
|
|
365
|
+
if (typeof builder.name === 'function') builder.name(name);
|
|
366
|
+
const schem = new Schematic(/* placeholder */ null, { pack });
|
|
367
|
+
schem._pendingBuilder = builder;
|
|
368
|
+
schem._pendingName = name;
|
|
369
|
+
return schem;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
_ensureBuilt() {
|
|
373
|
+
if (this._pendingBuilder) {
|
|
374
|
+
this.raw = this._pendingBuilder.build();
|
|
375
|
+
this._pendingBuilder = null;
|
|
376
|
+
}
|
|
377
|
+
return this.raw;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* Pre-resolve a plain block id to a palette index. Pair with `place()`
|
|
382
|
+
* in hot loops to skip the per-call name lookup. Returns the index.
|
|
383
|
+
*/
|
|
384
|
+
prepareBlock(name) {
|
|
385
|
+
this._ensureBuilt();
|
|
386
|
+
return this.raw.prepareBlock(name);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/**
|
|
390
|
+
* Place a block by pre-resolved palette index. Pair with `prepareBlock`.
|
|
391
|
+
*
|
|
392
|
+
* Hot-loop pattern (~10 M placements/sec):
|
|
393
|
+
*
|
|
394
|
+
* const stone = schem.prepareBlock('minecraft:stone');
|
|
395
|
+
* const place = schem.raw.place.bind(schem.raw);
|
|
396
|
+
* for (const [x, y, z] of positions) place(x, y, z, stone);
|
|
397
|
+
*/
|
|
398
|
+
place(x, y, z, paletteIndex) {
|
|
399
|
+
this._ensureBuilt();
|
|
400
|
+
this.raw.place(x, y, z, paletteIndex);
|
|
401
|
+
return this;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
/**
|
|
405
|
+
* setBlock([x, y, z], "id" | Block, { state?, nbt? })
|
|
406
|
+
* setBlock(x, y, z, "id") — legacy form
|
|
407
|
+
*
|
|
408
|
+
* Performance: plain id strings and reused `Block` instances take fast
|
|
409
|
+
* paths (Block payloads cache after first use). For uniform regions or
|
|
410
|
+
* many positions of one block, prefer fill() / raw set_blocks().
|
|
411
|
+
*/
|
|
412
|
+
setBlock(...args) {
|
|
413
|
+
let x, y, z, block, opts;
|
|
414
|
+
if (args.length === 4 && typeof args[0] === 'number') {
|
|
415
|
+
[x, y, z, block] = args;
|
|
416
|
+
opts = null;
|
|
417
|
+
} else if ((args.length === 2 || args.length === 3) && Array.isArray(args[0])) {
|
|
418
|
+
const pos = args[0];
|
|
419
|
+
if (pos.length !== 3 || !pos.every((v) => typeof v === 'number')) {
|
|
420
|
+
throw new TypeError(
|
|
421
|
+
`setBlock((x, y, z), block): first arg must be a 3-tuple of numbers, got [${pos.join(', ')}]`
|
|
422
|
+
);
|
|
423
|
+
}
|
|
424
|
+
[[x, y, z], block, opts = null] = args;
|
|
425
|
+
} else {
|
|
426
|
+
throw new TypeError(
|
|
427
|
+
`setBlock expected (x, y, z, block) or ([x, y, z], block, opts?), got ${args.length} args`
|
|
428
|
+
);
|
|
429
|
+
}
|
|
430
|
+
if (typeof block !== 'string' && !(block instanceof Block)) {
|
|
431
|
+
throw new TypeError(`block must be a string or Block, got ${typeof block}`);
|
|
432
|
+
}
|
|
433
|
+
if (opts && typeof opts !== 'object') {
|
|
434
|
+
throw new TypeError(`setBlock opts must be an object, got ${typeof opts}`);
|
|
435
|
+
}
|
|
436
|
+
if (opts && opts.state != null && (typeof opts.state !== 'object' || Array.isArray(opts.state))) {
|
|
437
|
+
throw new TypeError(`setBlock opts.state must be an object, got ${typeof opts.state}`);
|
|
438
|
+
}
|
|
439
|
+
if (opts && opts.nbt != null && (typeof opts.nbt !== 'object' || Array.isArray(opts.nbt))) {
|
|
440
|
+
throw new TypeError(
|
|
441
|
+
`setBlock opts.nbt must be an object, got ${typeof opts.nbt}. ` +
|
|
442
|
+
`For raw SNBT pass nbt: { __snbt__: '<your-snbt>' }.`
|
|
443
|
+
);
|
|
444
|
+
}
|
|
445
|
+
const inner = this.raw || this._ensureBuilt();
|
|
446
|
+
|
|
447
|
+
// Ultra-fast path: plain id, no opts.
|
|
448
|
+
if (!opts && typeof block === 'string') {
|
|
449
|
+
if (block.indexOf('[') < 0 && block.indexOf('{') < 0) {
|
|
450
|
+
inner.set_block(x, y, z, block);
|
|
451
|
+
return this;
|
|
452
|
+
}
|
|
453
|
+
inner.set_block_from_string(x, y, z, block);
|
|
454
|
+
return this;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
// Fast path: reused Block, no override opts.
|
|
458
|
+
if (!opts && block instanceof Block) {
|
|
459
|
+
if (!block._hasExtras) {
|
|
460
|
+
inner.set_block(x, y, z, block.id);
|
|
461
|
+
} else if (block.nbt) {
|
|
462
|
+
inner.set_block_from_string(x, y, z, block.toString());
|
|
463
|
+
} else {
|
|
464
|
+
const props = {};
|
|
465
|
+
for (const [k, v] of Object.entries(block.state)) props[k] = stateToStr(v);
|
|
466
|
+
inner.set_block_with_properties(x, y, z, block.id, props);
|
|
467
|
+
}
|
|
468
|
+
return this;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
// Slow path: opts may augment.
|
|
472
|
+
opts = opts || {};
|
|
473
|
+
let blockObj;
|
|
474
|
+
if (block instanceof Block) blockObj = block;
|
|
475
|
+
else if (typeof block === 'string') {
|
|
476
|
+
if (!opts.state && !opts.nbt && (block.includes('[') || block.includes('{'))) {
|
|
477
|
+
blockObj = Block.parse(block);
|
|
478
|
+
} else {
|
|
479
|
+
blockObj = new Block(block, { state: opts.state, nbt: opts.nbt });
|
|
480
|
+
}
|
|
481
|
+
} else {
|
|
482
|
+
throw new TypeError(`block must be string or Block, got ${typeof block}`);
|
|
483
|
+
}
|
|
484
|
+
const effState = { ...(blockObj.state || {}), ...(opts.state || {}) };
|
|
485
|
+
const effNbt = { ...(blockObj.nbt || {}), ...(opts.nbt || {}) };
|
|
486
|
+
const hasState = Object.keys(effState).length > 0;
|
|
487
|
+
const hasNbt = Object.keys(effNbt).length > 0;
|
|
488
|
+
|
|
489
|
+
if (hasNbt) {
|
|
490
|
+
const snbt = (SNBT_RAW in effNbt && Object.keys(effNbt).length === 1)
|
|
491
|
+
? String(effNbt[SNBT_RAW])
|
|
492
|
+
: dictToSnbt(effNbt);
|
|
493
|
+
let payload = blockObj.id;
|
|
494
|
+
if (hasState) {
|
|
495
|
+
payload += '[' + Object.entries(effState).map(([k, v]) => `${k}=${stateToStr(v)}`).join(',') + ']';
|
|
496
|
+
}
|
|
497
|
+
payload += '{' + snbt + '}';
|
|
498
|
+
inner.set_block_from_string(x, y, z, payload);
|
|
499
|
+
} else if (hasState) {
|
|
500
|
+
const props = {};
|
|
501
|
+
for (const [k, v] of Object.entries(effState)) props[k] = stateToStr(v);
|
|
502
|
+
inner.set_block_with_properties(x, y, z, blockObj.id, props);
|
|
503
|
+
} else {
|
|
504
|
+
inner.set_block(x, y, z, blockObj.id);
|
|
505
|
+
}
|
|
506
|
+
return this;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
map(char, block, { state = null, nbt = null } = {}) {
|
|
510
|
+
if (!this._pendingBuilder) {
|
|
511
|
+
throw new Error('map() is only valid on Schematic.fromTemplate()');
|
|
512
|
+
}
|
|
513
|
+
let payload;
|
|
514
|
+
if (block instanceof Block) payload = block.toString();
|
|
515
|
+
else if (state || nbt) payload = new Block(block, { state, nbt }).toString();
|
|
516
|
+
else payload = block;
|
|
517
|
+
this._pendingBuilder.map(char, payload);
|
|
518
|
+
return this;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
fill([p1, p2], block) {
|
|
522
|
+
const blockId = block instanceof Block ? block.toString() : block;
|
|
523
|
+
const inner = this._ensureBuilt();
|
|
524
|
+
inner.fillCuboid(p1[0], p1[1], p1[2], p2[0], p2[1], p2[2], blockId);
|
|
525
|
+
return this;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
cursor({ origin = [0, 0, 0], step = [1, 0, 0] } = {}) {
|
|
529
|
+
this._ensureBuilt();
|
|
530
|
+
return new Cursor(this, origin, step);
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
withPack(pack) {
|
|
534
|
+
this.pack = pack;
|
|
535
|
+
return this;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
copy() {
|
|
539
|
+
const inner = this._ensureBuilt();
|
|
540
|
+
const data = inner.to_litematic();
|
|
541
|
+
const w = new raw.SchematicWrapper();
|
|
542
|
+
w.from_litematic(data);
|
|
543
|
+
return new Schematic(w, { pack: this.pack });
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
/** Run a redstone simulation, then sync results back into this schematic. */
|
|
547
|
+
simulate({ ticks = 1, events = [] } = {}) {
|
|
548
|
+
const inner = this._ensureBuilt();
|
|
549
|
+
if (typeof inner.create_simulation_world !== 'function') {
|
|
550
|
+
throw new Error('simulation feature is not available in this WASM build');
|
|
551
|
+
}
|
|
552
|
+
const world = inner.create_simulation_world();
|
|
553
|
+
for (const ev of events) {
|
|
554
|
+
if (ev instanceof UseBlock || ev instanceof ButtonPress) {
|
|
555
|
+
const [x, y, z] = ev.pos;
|
|
556
|
+
world.on_use_block(x, y, z);
|
|
557
|
+
} else {
|
|
558
|
+
throw new TypeError('Unsupported event; use UseBlock or ButtonPress');
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
world.tick(ticks);
|
|
562
|
+
world.sync_to_schematic();
|
|
563
|
+
if (typeof world.into_schematic === 'function') {
|
|
564
|
+
this.raw = world.into_schematic();
|
|
565
|
+
} else if (typeof world.get_schematic === 'function') {
|
|
566
|
+
this.raw = world.get_schematic();
|
|
567
|
+
}
|
|
568
|
+
return this;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
/**
|
|
572
|
+
* Serialize to bytes by format extension; if a Node fs is provided
|
|
573
|
+
* (the default in Node), write to disk.
|
|
574
|
+
*/
|
|
575
|
+
async save(path, { format = null, fs = null } = {}) {
|
|
576
|
+
const inner = this._ensureBuilt();
|
|
577
|
+
const ext = format ? '.' + format : suffixOf(path);
|
|
578
|
+
let bytes;
|
|
579
|
+
if (ext === '.litematic') bytes = inner.to_litematic();
|
|
580
|
+
else if (ext === '.schem' || ext === '.schematic') bytes = inner.to_schematic();
|
|
581
|
+
else if (ext === '.mcstructure') bytes = inner.to_mcstructure();
|
|
582
|
+
else throw new Error(`save: unknown format for ${path}`);
|
|
583
|
+
bytes = bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
|
|
584
|
+
if (typeof process !== 'undefined' && process.versions?.node) {
|
|
585
|
+
const nodeFs = fs || (await import('node:fs/promises'));
|
|
586
|
+
await nodeFs.writeFile(path, bytes);
|
|
587
|
+
return null;
|
|
588
|
+
}
|
|
589
|
+
return bytes;
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
// --- SchematicBuilder shim ------------------------------------------------
|
|
594
|
+
|
|
595
|
+
export class SchematicBuilder {
|
|
596
|
+
constructor() {
|
|
597
|
+
if (typeof console !== 'undefined' && console.warn) {
|
|
598
|
+
console.warn(
|
|
599
|
+
'[nucleation] SchematicBuilder is deprecated; use Schematic.fromTemplate(...)'
|
|
600
|
+
);
|
|
601
|
+
}
|
|
602
|
+
this._raw = new raw.SchematicBuilderWrapper();
|
|
603
|
+
}
|
|
604
|
+
name(n) { this._raw.name(n); return this; }
|
|
605
|
+
fromTemplate(t) { this._raw = raw.SchematicBuilderWrapper.from_template(t); return this; }
|
|
606
|
+
map(c, b) { this._raw.map(c, b); return this; }
|
|
607
|
+
build() { return new Schematic(this._raw.build()); }
|
|
608
|
+
}
|
package/nucleation-original.js
CHANGED
|
@@ -4224,6 +4224,19 @@ export class SchematicWrapper {
|
|
|
4224
4224
|
throw takeFromExternrefTable0(ret[0]);
|
|
4225
4225
|
}
|
|
4226
4226
|
}
|
|
4227
|
+
/**
|
|
4228
|
+
* Pre-resolve a plain block id to a palette index. Pair with
|
|
4229
|
+
* `place(x, y, z, idx)` for the absolute fastest per-block placement
|
|
4230
|
+
* in tight loops with multiple unique ids.
|
|
4231
|
+
* @param {string} block_name
|
|
4232
|
+
* @returns {number}
|
|
4233
|
+
*/
|
|
4234
|
+
prepareBlock(block_name) {
|
|
4235
|
+
const ptr0 = passStringToWasm0(block_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
4236
|
+
const len0 = WASM_VECTOR_LEN;
|
|
4237
|
+
const ret = wasm.schematicwrapper_prepareBlock(this.__wbg_ptr, ptr0, len0);
|
|
4238
|
+
return ret >>> 0;
|
|
4239
|
+
}
|
|
4227
4240
|
/**
|
|
4228
4241
|
* Remove a mobile entity by index. Returns true if removed.
|
|
4229
4242
|
* @param {number} index
|
|
@@ -5065,6 +5078,17 @@ export class SchematicWrapper {
|
|
|
5065
5078
|
SchematicWrapperFinalization.register(this, this.__wbg_ptr, this);
|
|
5066
5079
|
return this;
|
|
5067
5080
|
}
|
|
5081
|
+
/**
|
|
5082
|
+
* Place a block by pre-resolved palette index. Caller must have called
|
|
5083
|
+
* `prepareBlock(name)` first to obtain `palette_index`.
|
|
5084
|
+
* @param {number} x
|
|
5085
|
+
* @param {number} y
|
|
5086
|
+
* @param {number} z
|
|
5087
|
+
* @param {number} palette_index
|
|
5088
|
+
*/
|
|
5089
|
+
place(x, y, z, palette_index) {
|
|
5090
|
+
wasm.schematicwrapper_place(this.__wbg_ptr, x, y, z, palette_index);
|
|
5091
|
+
}
|
|
5068
5092
|
/**
|
|
5069
5093
|
* @returns {Array<any>}
|
|
5070
5094
|
*/
|
|
@@ -5226,6 +5250,34 @@ export class SchematicWrapper {
|
|
|
5226
5250
|
const len0 = WASM_VECTOR_LEN;
|
|
5227
5251
|
wasm.schematicwrapper_set_block(this.__wbg_ptr, x, y, z, ptr0, len0);
|
|
5228
5252
|
}
|
|
5253
|
+
/**
|
|
5254
|
+
* Creates a simulation world for this schematic with default options
|
|
5255
|
+
*
|
|
5256
|
+
* This allows you to simulate redstone circuits and interact with them.
|
|
5257
|
+
* @returns {MchprsWorldWrapper}
|
|
5258
|
+
*/
|
|
5259
|
+
create_simulation_world() {
|
|
5260
|
+
const ret = wasm.schematicwrapper_create_simulation_world(this.__wbg_ptr);
|
|
5261
|
+
if (ret[2]) {
|
|
5262
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
5263
|
+
}
|
|
5264
|
+
return MchprsWorldWrapper.__wrap(ret[0]);
|
|
5265
|
+
}
|
|
5266
|
+
/**
|
|
5267
|
+
* Creates a simulation world for this schematic with custom options
|
|
5268
|
+
*
|
|
5269
|
+
* This allows you to configure simulation behavior like wire state tracking.
|
|
5270
|
+
* @param {SimulationOptionsWrapper} options
|
|
5271
|
+
* @returns {MchprsWorldWrapper}
|
|
5272
|
+
*/
|
|
5273
|
+
create_simulation_world_with_options(options) {
|
|
5274
|
+
_assertClass(options, SimulationOptionsWrapper);
|
|
5275
|
+
const ret = wasm.schematicwrapper_create_simulation_world_with_options(this.__wbg_ptr, options.__wbg_ptr);
|
|
5276
|
+
if (ret[2]) {
|
|
5277
|
+
throw takeFromExternrefTable0(ret[1]);
|
|
5278
|
+
}
|
|
5279
|
+
return MchprsWorldWrapper.__wrap(ret[0]);
|
|
5280
|
+
}
|
|
5229
5281
|
/**
|
|
5230
5282
|
* Generate raw mesh data for custom rendering pipelines.
|
|
5231
5283
|
* @param {ResourcePackWrapper} pack
|
|
@@ -5397,34 +5449,6 @@ export class SchematicWrapper {
|
|
|
5397
5449
|
}
|
|
5398
5450
|
return MeshOutputWrapper.__wrap(ret[0]);
|
|
5399
5451
|
}
|
|
5400
|
-
/**
|
|
5401
|
-
* Creates a simulation world for this schematic with default options
|
|
5402
|
-
*
|
|
5403
|
-
* This allows you to simulate redstone circuits and interact with them.
|
|
5404
|
-
* @returns {MchprsWorldWrapper}
|
|
5405
|
-
*/
|
|
5406
|
-
create_simulation_world() {
|
|
5407
|
-
const ret = wasm.schematicwrapper_create_simulation_world(this.__wbg_ptr);
|
|
5408
|
-
if (ret[2]) {
|
|
5409
|
-
throw takeFromExternrefTable0(ret[1]);
|
|
5410
|
-
}
|
|
5411
|
-
return MchprsWorldWrapper.__wrap(ret[0]);
|
|
5412
|
-
}
|
|
5413
|
-
/**
|
|
5414
|
-
* Creates a simulation world for this schematic with custom options
|
|
5415
|
-
*
|
|
5416
|
-
* This allows you to configure simulation behavior like wire state tracking.
|
|
5417
|
-
* @param {SimulationOptionsWrapper} options
|
|
5418
|
-
* @returns {MchprsWorldWrapper}
|
|
5419
|
-
*/
|
|
5420
|
-
create_simulation_world_with_options(options) {
|
|
5421
|
-
_assertClass(options, SimulationOptionsWrapper);
|
|
5422
|
-
const ret = wasm.schematicwrapper_create_simulation_world_with_options(this.__wbg_ptr, options.__wbg_ptr);
|
|
5423
|
-
if (ret[2]) {
|
|
5424
|
-
throw takeFromExternrefTable0(ret[1]);
|
|
5425
|
-
}
|
|
5426
|
-
return MchprsWorldWrapper.__wrap(ret[0]);
|
|
5427
|
-
}
|
|
5428
5452
|
}
|
|
5429
5453
|
if (Symbol.dispose) SchematicWrapper.prototype[Symbol.dispose] = SchematicWrapper.prototype.free;
|
|
5430
5454
|
|
package/nucleation.d.ts
CHANGED
|
@@ -1224,6 +1224,12 @@ export class SchematicWrapper {
|
|
|
1224
1224
|
* Fast binary snapshot deserialization — bypasses format manager for maximum speed.
|
|
1225
1225
|
*/
|
|
1226
1226
|
fromSnapshot(data: Uint8Array): void;
|
|
1227
|
+
/**
|
|
1228
|
+
* Pre-resolve a plain block id to a palette index. Pair with
|
|
1229
|
+
* `place(x, y, z, idx)` for the absolute fastest per-block placement
|
|
1230
|
+
* in tight loops with multiple unique ids.
|
|
1231
|
+
*/
|
|
1232
|
+
prepareBlock(block_name: string): number;
|
|
1227
1233
|
/**
|
|
1228
1234
|
* Remove a mobile entity by index. Returns true if removed.
|
|
1229
1235
|
*/
|
|
@@ -1366,6 +1372,11 @@ export class SchematicWrapper {
|
|
|
1366
1372
|
createDefinitionRegionFromPoint(name: string, x: number, y: number, z: number): void;
|
|
1367
1373
|
createDefinitionRegionFromBounds(name: string, min: BlockPosition, max: BlockPosition): void;
|
|
1368
1374
|
constructor();
|
|
1375
|
+
/**
|
|
1376
|
+
* Place a block by pre-resolved palette index. Caller must have called
|
|
1377
|
+
* `prepareBlock(name)` first to obtain `palette_index`.
|
|
1378
|
+
*/
|
|
1379
|
+
place(x: number, y: number, z: number, palette_index: number): void;
|
|
1369
1380
|
blocks(): Array<any>;
|
|
1370
1381
|
chunks(chunk_width: number, chunk_height: number, chunk_length: number): Array<any>;
|
|
1371
1382
|
/**
|
|
@@ -1403,6 +1414,18 @@ export class SchematicWrapper {
|
|
|
1403
1414
|
from_data(data: Uint8Array): void;
|
|
1404
1415
|
get_block(x: number, y: number, z: number): string | undefined;
|
|
1405
1416
|
set_block(x: number, y: number, z: number, block_name: string): void;
|
|
1417
|
+
/**
|
|
1418
|
+
* Creates a simulation world for this schematic with default options
|
|
1419
|
+
*
|
|
1420
|
+
* This allows you to simulate redstone circuits and interact with them.
|
|
1421
|
+
*/
|
|
1422
|
+
create_simulation_world(): MchprsWorldWrapper;
|
|
1423
|
+
/**
|
|
1424
|
+
* Creates a simulation world for this schematic with custom options
|
|
1425
|
+
*
|
|
1426
|
+
* This allows you to configure simulation behavior like wire state tracking.
|
|
1427
|
+
*/
|
|
1428
|
+
create_simulation_world_with_options(options: SimulationOptionsWrapper): MchprsWorldWrapper;
|
|
1406
1429
|
/**
|
|
1407
1430
|
* Generate raw mesh data for custom rendering pipelines.
|
|
1408
1431
|
*/
|
|
@@ -1458,18 +1481,6 @@ export class SchematicWrapper {
|
|
|
1458
1481
|
* Generate a USDZ mesh for the entire schematic.
|
|
1459
1482
|
*/
|
|
1460
1483
|
toUsdz(pack: ResourcePackWrapper, config: MeshConfigWrapper): MeshOutputWrapper;
|
|
1461
|
-
/**
|
|
1462
|
-
* Creates a simulation world for this schematic with default options
|
|
1463
|
-
*
|
|
1464
|
-
* This allows you to simulate redstone circuits and interact with them.
|
|
1465
|
-
*/
|
|
1466
|
-
create_simulation_world(): MchprsWorldWrapper;
|
|
1467
|
-
/**
|
|
1468
|
-
* Creates a simulation world for this schematic with custom options
|
|
1469
|
-
*
|
|
1470
|
-
* This allows you to configure simulation behavior like wire state tracking.
|
|
1471
|
-
*/
|
|
1472
|
-
create_simulation_world_with_options(options: SimulationOptionsWrapper): MchprsWorldWrapper;
|
|
1473
1484
|
}
|
|
1474
1485
|
|
|
1475
1486
|
export class ShapeWrapper {
|
|
@@ -2013,6 +2024,8 @@ export interface InitOutput {
|
|
|
2013
2024
|
readonly schematicwrapper_get_tight_dimensions: (a: number) => [number, number];
|
|
2014
2025
|
readonly schematicwrapper_get_volume: (a: number) => number;
|
|
2015
2026
|
readonly schematicwrapper_new: () => number;
|
|
2027
|
+
readonly schematicwrapper_place: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
2028
|
+
readonly schematicwrapper_prepareBlock: (a: number, b: number, c: number) => number;
|
|
2016
2029
|
readonly schematicwrapper_print_schematic: (a: number) => [number, number];
|
|
2017
2030
|
readonly schematicwrapper_removeDefinitionRegion: (a: number, b: number, c: number) => number;
|
|
2018
2031
|
readonly schematicwrapper_remove_entity: (a: number, b: number) => number;
|
|
@@ -2046,9 +2059,124 @@ export interface InitOutput {
|
|
|
2046
2059
|
readonly schematicwrapper_to_world_zip: (a: number, b: number, c: number) => [number, number, number, number];
|
|
2047
2060
|
readonly start: () => void;
|
|
2048
2061
|
readonly schematicwrapper_updateRegion: (a: number, b: number, c: number, d: number) => void;
|
|
2062
|
+
readonly __wbg_palettemanager_free: (a: number, b: number) => void;
|
|
2063
|
+
readonly palettemanager_getConcreteBlocks: () => [number, number];
|
|
2064
|
+
readonly palettemanager_getPaletteByKeywords: (a: number, b: number) => [number, number];
|
|
2065
|
+
readonly palettemanager_getTerracottaBlocks: () => [number, number];
|
|
2066
|
+
readonly palettemanager_getWoolBlocks: () => [number, number];
|
|
2067
|
+
readonly __wbg_mchprsworldwrapper_free: (a: number, b: number) => void;
|
|
2068
|
+
readonly __wbg_simulationoptionswrapper_free: (a: number, b: number) => void;
|
|
2069
|
+
readonly mchprsworldwrapper_checkCustomIoChanges: (a: number) => void;
|
|
2070
|
+
readonly mchprsworldwrapper_clearCustomIoChanges: (a: number) => void;
|
|
2071
|
+
readonly mchprsworldwrapper_flush: (a: number) => void;
|
|
2072
|
+
readonly mchprsworldwrapper_getSignalStrength: (a: number, b: number, c: number, d: number) => number;
|
|
2073
|
+
readonly mchprsworldwrapper_get_lever_power: (a: number, b: number, c: number, d: number) => number;
|
|
2074
|
+
readonly mchprsworldwrapper_get_redstone_power: (a: number, b: number, c: number, d: number) => number;
|
|
2075
|
+
readonly mchprsworldwrapper_get_schematic: (a: number) => number;
|
|
2076
|
+
readonly mchprsworldwrapper_get_truth_table: (a: number) => any;
|
|
2077
|
+
readonly mchprsworldwrapper_into_schematic: (a: number) => number;
|
|
2078
|
+
readonly mchprsworldwrapper_is_lit: (a: number, b: number, c: number, d: number) => number;
|
|
2079
|
+
readonly mchprsworldwrapper_new: (a: number) => [number, number, number];
|
|
2080
|
+
readonly mchprsworldwrapper_on_use_block: (a: number, b: number, c: number, d: number) => void;
|
|
2081
|
+
readonly mchprsworldwrapper_peekCustomIoChanges: (a: number) => any;
|
|
2082
|
+
readonly mchprsworldwrapper_pollCustomIoChanges: (a: number) => any;
|
|
2083
|
+
readonly mchprsworldwrapper_setSignalStrength: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
2084
|
+
readonly mchprsworldwrapper_sync_to_schematic: (a: number) => void;
|
|
2085
|
+
readonly mchprsworldwrapper_tick: (a: number, b: number) => void;
|
|
2086
|
+
readonly mchprsworldwrapper_with_options: (a: number, b: number) => [number, number, number];
|
|
2087
|
+
readonly simulationoptionswrapper_addCustomIo: (a: number, b: number, c: number, d: number) => void;
|
|
2088
|
+
readonly simulationoptionswrapper_clearCustomIo: (a: number) => void;
|
|
2089
|
+
readonly simulationoptionswrapper_io_only: (a: number) => number;
|
|
2090
|
+
readonly simulationoptionswrapper_new: () => number;
|
|
2091
|
+
readonly simulationoptionswrapper_optimize: (a: number) => number;
|
|
2092
|
+
readonly simulationoptionswrapper_set_io_only: (a: number, b: number) => void;
|
|
2093
|
+
readonly simulationoptionswrapper_set_optimize: (a: number, b: number) => void;
|
|
2094
|
+
readonly schematicwrapper_create_simulation_world: (a: number) => [number, number, number];
|
|
2095
|
+
readonly schematicwrapper_create_simulation_world_with_options: (a: number, b: number) => [number, number, number];
|
|
2096
|
+
readonly __wbg_brushwrapper_free: (a: number, b: number) => void;
|
|
2097
|
+
readonly __wbg_definitionregionwrapper_free: (a: number, b: number) => void;
|
|
2098
|
+
readonly __wbg_shapewrapper_free: (a: number, b: number) => void;
|
|
2099
|
+
readonly __wbg_wasmbuildingtool_free: (a: number, b: number) => void;
|
|
2100
|
+
readonly brushwrapper_bilinear_gradient: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number, t: number, u: number, v: number, w: number, x: number) => number;
|
|
2101
|
+
readonly brushwrapper_color: (a: number, b: number, c: number, d: number, e: number) => number;
|
|
2102
|
+
readonly brushwrapper_curveGradient: (a: number, b: number, c: number, d: number, e: number) => [number, number, number];
|
|
2103
|
+
readonly brushwrapper_linear_gradient: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number) => number;
|
|
2104
|
+
readonly brushwrapper_point_gradient: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number, number];
|
|
2105
|
+
readonly brushwrapper_shaded: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
|
|
2106
|
+
readonly brushwrapper_solid: (a: number, b: number) => [number, number, number];
|
|
2107
|
+
readonly definitionregionwrapper_addBounds: (a: number, b: any, c: any) => [number, number, number];
|
|
2108
|
+
readonly definitionregionwrapper_addFilter: (a: number, b: number, c: number) => [number, number, number];
|
|
2109
|
+
readonly definitionregionwrapper_addPoint: (a: number, b: number, c: number, d: number) => number;
|
|
2110
|
+
readonly definitionregionwrapper_boxCount: (a: number) => number;
|
|
2111
|
+
readonly definitionregionwrapper_center: (a: number) => any;
|
|
2112
|
+
readonly definitionregionwrapper_centerF32: (a: number) => any;
|
|
2113
|
+
readonly definitionregionwrapper_clone: (a: number) => number;
|
|
2114
|
+
readonly definitionregionwrapper_connectedComponents: (a: number) => number;
|
|
2115
|
+
readonly definitionregionwrapper_contains: (a: number, b: number, c: number, d: number) => number;
|
|
2116
|
+
readonly definitionregionwrapper_contract: (a: number, b: number) => number;
|
|
2117
|
+
readonly definitionregionwrapper_contracted: (a: number, b: number) => number;
|
|
2118
|
+
readonly definitionregionwrapper_dimensions: (a: number) => any;
|
|
2119
|
+
readonly definitionregionwrapper_excludeBlock: (a: number, b: number, c: number) => [number, number, number];
|
|
2120
|
+
readonly definitionregionwrapper_expand: (a: number, b: number, c: number, d: number) => number;
|
|
2121
|
+
readonly definitionregionwrapper_expanded: (a: number, b: number, c: number, d: number) => number;
|
|
2122
|
+
readonly definitionregionwrapper_filterByBlock: (a: number, b: number, c: number, d: number) => number;
|
|
2123
|
+
readonly definitionregionwrapper_filterByProperties: (a: number, b: number, c: any) => [number, number, number];
|
|
2124
|
+
readonly definitionregionwrapper_fromBoundingBoxes: (a: any) => [number, number, number];
|
|
2125
|
+
readonly definitionregionwrapper_fromBounds: (a: number, b: number) => number;
|
|
2126
|
+
readonly definitionregionwrapper_fromPositions: (a: any) => [number, number, number];
|
|
2127
|
+
readonly definitionregionwrapper_getAllMetadata: (a: number) => any;
|
|
2128
|
+
readonly definitionregionwrapper_getBlocks: (a: number) => [number, number, number];
|
|
2129
|
+
readonly definitionregionwrapper_getBounds: (a: number) => any;
|
|
2130
|
+
readonly definitionregionwrapper_getBox: (a: number, b: number) => any;
|
|
2131
|
+
readonly definitionregionwrapper_getBoxes: (a: number) => any;
|
|
2132
|
+
readonly definitionregionwrapper_getMetadata: (a: number, b: number, c: number) => any;
|
|
2133
|
+
readonly definitionregionwrapper_intersect: (a: number, b: number) => number;
|
|
2134
|
+
readonly definitionregionwrapper_intersected: (a: number, b: number) => number;
|
|
2135
|
+
readonly definitionregionwrapper_intersectsBounds: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number;
|
|
2136
|
+
readonly definitionregionwrapper_isContiguous: (a: number) => number;
|
|
2137
|
+
readonly definitionregionwrapper_isEmpty: (a: number) => number;
|
|
2138
|
+
readonly definitionregionwrapper_merge: (a: number, b: number) => number;
|
|
2139
|
+
readonly definitionregionwrapper_metadataKeys: (a: number) => any;
|
|
2140
|
+
readonly definitionregionwrapper_new: () => number;
|
|
2141
|
+
readonly definitionregionwrapper_positions: (a: number) => any;
|
|
2142
|
+
readonly definitionregionwrapper_positionsSorted: (a: number) => any;
|
|
2143
|
+
readonly definitionregionwrapper_setColor: (a: number, b: number) => number;
|
|
2144
|
+
readonly definitionregionwrapper_setMetadata: (a: number, b: number, c: number, d: number, e: number) => number;
|
|
2145
|
+
readonly definitionregionwrapper_shift: (a: number, b: number, c: number, d: number) => number;
|
|
2146
|
+
readonly definitionregionwrapper_shifted: (a: number, b: number, c: number, d: number) => number;
|
|
2147
|
+
readonly definitionregionwrapper_simplify: (a: number) => number;
|
|
2148
|
+
readonly definitionregionwrapper_subtract: (a: number, b: number) => number;
|
|
2149
|
+
readonly definitionregionwrapper_subtracted: (a: number, b: number) => number;
|
|
2150
|
+
readonly definitionregionwrapper_union: (a: number, b: number) => number;
|
|
2151
|
+
readonly definitionregionwrapper_unionInto: (a: number, b: number) => number;
|
|
2152
|
+
readonly definitionregionwrapper_volume: (a: number) => number;
|
|
2153
|
+
readonly shapewrapper_bezier: (a: number, b: number, c: number, d: number, e: number) => [number, number, number];
|
|
2154
|
+
readonly shapewrapper_cone: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
|
|
2155
|
+
readonly shapewrapper_cuboid: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
|
|
2156
|
+
readonly shapewrapper_cylinder: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
|
|
2157
|
+
readonly shapewrapper_cylinderBetween: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number;
|
|
2158
|
+
readonly shapewrapper_difference: (a: number, b: number) => number;
|
|
2159
|
+
readonly shapewrapper_disk: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
|
|
2160
|
+
readonly shapewrapper_ellipsoid: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
|
|
2161
|
+
readonly shapewrapper_hollow: (a: number, b: number) => number;
|
|
2162
|
+
readonly shapewrapper_intersection: (a: number, b: number) => number;
|
|
2163
|
+
readonly shapewrapper_line: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
|
|
2164
|
+
readonly shapewrapper_plane: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => number;
|
|
2165
|
+
readonly shapewrapper_pyramid: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
|
|
2166
|
+
readonly shapewrapper_sphere: (a: number, b: number, c: number, d: number) => number;
|
|
2167
|
+
readonly shapewrapper_torus: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
|
|
2168
|
+
readonly shapewrapper_triangle: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => number;
|
|
2169
|
+
readonly shapewrapper_union: (a: number, b: number) => number;
|
|
2170
|
+
readonly wasmbuildingtool_fill: (a: number, b: number, c: number) => void;
|
|
2171
|
+
readonly wasmbuildingtool_rstack: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
2172
|
+
readonly definitionregionwrapper_copy: (a: number) => number;
|
|
2173
|
+
readonly __wbg_blockposition_free: (a: number, b: number) => void;
|
|
2049
2174
|
readonly __wbg_chunkmeshiteratorwrapper_free: (a: number, b: number) => void;
|
|
2050
2175
|
readonly __wbg_chunkmeshresultwrapper_free: (a: number, b: number) => void;
|
|
2051
2176
|
readonly __wbg_circuitbuilderwrapper_free: (a: number, b: number) => void;
|
|
2177
|
+
readonly __wbg_get_blockposition_x: (a: number) => number;
|
|
2178
|
+
readonly __wbg_get_blockposition_y: (a: number) => number;
|
|
2179
|
+
readonly __wbg_get_blockposition_z: (a: number) => number;
|
|
2052
2180
|
readonly __wbg_itemmodelconfigwrapper_free: (a: number, b: number) => void;
|
|
2053
2181
|
readonly __wbg_itemmodelresultwrapper_free: (a: number, b: number) => void;
|
|
2054
2182
|
readonly __wbg_meshconfigwrapper_free: (a: number, b: number) => void;
|
|
@@ -2056,9 +2184,13 @@ export interface InitOutput {
|
|
|
2056
2184
|
readonly __wbg_multimeshresultwrapper_free: (a: number, b: number) => void;
|
|
2057
2185
|
readonly __wbg_rawmeshexportwrapper_free: (a: number, b: number) => void;
|
|
2058
2186
|
readonly __wbg_resourcepackwrapper_free: (a: number, b: number) => void;
|
|
2187
|
+
readonly __wbg_set_blockposition_x: (a: number, b: number) => void;
|
|
2188
|
+
readonly __wbg_set_blockposition_y: (a: number, b: number) => void;
|
|
2189
|
+
readonly __wbg_set_blockposition_z: (a: number, b: number) => void;
|
|
2059
2190
|
readonly __wbg_sortstrategywrapper_free: (a: number, b: number) => void;
|
|
2060
2191
|
readonly __wbg_statemodeconstants_free: (a: number, b: number) => void;
|
|
2061
2192
|
readonly __wbg_textureatlaswrapper_free: (a: number, b: number) => void;
|
|
2193
|
+
readonly blockposition_new: (a: number, b: number, c: number) => number;
|
|
2062
2194
|
readonly buildResourcePack: (a: number, b: number) => [number, number, number];
|
|
2063
2195
|
readonly chunkmeshiteratorwrapper_advance: (a: number) => [number, number, number];
|
|
2064
2196
|
readonly chunkmeshiteratorwrapper_chunkCount: (a: number) => number;
|
|
@@ -2226,125 +2358,6 @@ export interface InitOutput {
|
|
|
2226
2358
|
readonly multimeshresultwrapper_meshCount: (a: number) => number;
|
|
2227
2359
|
readonly textureatlaswrapper_height: (a: number) => number;
|
|
2228
2360
|
readonly textureatlaswrapper_width: (a: number) => number;
|
|
2229
|
-
readonly __wbg_blockposition_free: (a: number, b: number) => void;
|
|
2230
|
-
readonly __wbg_get_blockposition_x: (a: number) => number;
|
|
2231
|
-
readonly __wbg_get_blockposition_y: (a: number) => number;
|
|
2232
|
-
readonly __wbg_get_blockposition_z: (a: number) => number;
|
|
2233
|
-
readonly __wbg_mchprsworldwrapper_free: (a: number, b: number) => void;
|
|
2234
|
-
readonly __wbg_set_blockposition_x: (a: number, b: number) => void;
|
|
2235
|
-
readonly __wbg_set_blockposition_y: (a: number, b: number) => void;
|
|
2236
|
-
readonly __wbg_set_blockposition_z: (a: number, b: number) => void;
|
|
2237
|
-
readonly __wbg_simulationoptionswrapper_free: (a: number, b: number) => void;
|
|
2238
|
-
readonly blockposition_new: (a: number, b: number, c: number) => number;
|
|
2239
|
-
readonly mchprsworldwrapper_checkCustomIoChanges: (a: number) => void;
|
|
2240
|
-
readonly mchprsworldwrapper_clearCustomIoChanges: (a: number) => void;
|
|
2241
|
-
readonly mchprsworldwrapper_flush: (a: number) => void;
|
|
2242
|
-
readonly mchprsworldwrapper_getSignalStrength: (a: number, b: number, c: number, d: number) => number;
|
|
2243
|
-
readonly mchprsworldwrapper_get_lever_power: (a: number, b: number, c: number, d: number) => number;
|
|
2244
|
-
readonly mchprsworldwrapper_get_redstone_power: (a: number, b: number, c: number, d: number) => number;
|
|
2245
|
-
readonly mchprsworldwrapper_get_schematic: (a: number) => number;
|
|
2246
|
-
readonly mchprsworldwrapper_get_truth_table: (a: number) => any;
|
|
2247
|
-
readonly mchprsworldwrapper_into_schematic: (a: number) => number;
|
|
2248
|
-
readonly mchprsworldwrapper_is_lit: (a: number, b: number, c: number, d: number) => number;
|
|
2249
|
-
readonly mchprsworldwrapper_new: (a: number) => [number, number, number];
|
|
2250
|
-
readonly mchprsworldwrapper_on_use_block: (a: number, b: number, c: number, d: number) => void;
|
|
2251
|
-
readonly mchprsworldwrapper_peekCustomIoChanges: (a: number) => any;
|
|
2252
|
-
readonly mchprsworldwrapper_pollCustomIoChanges: (a: number) => any;
|
|
2253
|
-
readonly mchprsworldwrapper_setSignalStrength: (a: number, b: number, c: number, d: number, e: number) => void;
|
|
2254
|
-
readonly mchprsworldwrapper_sync_to_schematic: (a: number) => void;
|
|
2255
|
-
readonly mchprsworldwrapper_tick: (a: number, b: number) => void;
|
|
2256
|
-
readonly mchprsworldwrapper_with_options: (a: number, b: number) => [number, number, number];
|
|
2257
|
-
readonly simulationoptionswrapper_addCustomIo: (a: number, b: number, c: number, d: number) => void;
|
|
2258
|
-
readonly simulationoptionswrapper_clearCustomIo: (a: number) => void;
|
|
2259
|
-
readonly simulationoptionswrapper_io_only: (a: number) => number;
|
|
2260
|
-
readonly simulationoptionswrapper_new: () => number;
|
|
2261
|
-
readonly simulationoptionswrapper_optimize: (a: number) => number;
|
|
2262
|
-
readonly simulationoptionswrapper_set_io_only: (a: number, b: number) => void;
|
|
2263
|
-
readonly simulationoptionswrapper_set_optimize: (a: number, b: number) => void;
|
|
2264
|
-
readonly schematicwrapper_create_simulation_world: (a: number) => [number, number, number];
|
|
2265
|
-
readonly schematicwrapper_create_simulation_world_with_options: (a: number, b: number) => [number, number, number];
|
|
2266
|
-
readonly __wbg_palettemanager_free: (a: number, b: number) => void;
|
|
2267
|
-
readonly palettemanager_getConcreteBlocks: () => [number, number];
|
|
2268
|
-
readonly palettemanager_getPaletteByKeywords: (a: number, b: number) => [number, number];
|
|
2269
|
-
readonly palettemanager_getTerracottaBlocks: () => [number, number];
|
|
2270
|
-
readonly palettemanager_getWoolBlocks: () => [number, number];
|
|
2271
|
-
readonly __wbg_brushwrapper_free: (a: number, b: number) => void;
|
|
2272
|
-
readonly __wbg_definitionregionwrapper_free: (a: number, b: number) => void;
|
|
2273
|
-
readonly __wbg_shapewrapper_free: (a: number, b: number) => void;
|
|
2274
|
-
readonly __wbg_wasmbuildingtool_free: (a: number, b: number) => void;
|
|
2275
|
-
readonly brushwrapper_bilinear_gradient: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number, t: number, u: number, v: number, w: number, x: number) => number;
|
|
2276
|
-
readonly brushwrapper_color: (a: number, b: number, c: number, d: number, e: number) => number;
|
|
2277
|
-
readonly brushwrapper_curveGradient: (a: number, b: number, c: number, d: number, e: number) => [number, number, number];
|
|
2278
|
-
readonly brushwrapper_linear_gradient: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number) => number;
|
|
2279
|
-
readonly brushwrapper_point_gradient: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number, number];
|
|
2280
|
-
readonly brushwrapper_shaded: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
|
|
2281
|
-
readonly brushwrapper_solid: (a: number, b: number) => [number, number, number];
|
|
2282
|
-
readonly definitionregionwrapper_addBounds: (a: number, b: any, c: any) => [number, number, number];
|
|
2283
|
-
readonly definitionregionwrapper_addFilter: (a: number, b: number, c: number) => [number, number, number];
|
|
2284
|
-
readonly definitionregionwrapper_addPoint: (a: number, b: number, c: number, d: number) => number;
|
|
2285
|
-
readonly definitionregionwrapper_boxCount: (a: number) => number;
|
|
2286
|
-
readonly definitionregionwrapper_center: (a: number) => any;
|
|
2287
|
-
readonly definitionregionwrapper_centerF32: (a: number) => any;
|
|
2288
|
-
readonly definitionregionwrapper_clone: (a: number) => number;
|
|
2289
|
-
readonly definitionregionwrapper_connectedComponents: (a: number) => number;
|
|
2290
|
-
readonly definitionregionwrapper_contains: (a: number, b: number, c: number, d: number) => number;
|
|
2291
|
-
readonly definitionregionwrapper_contract: (a: number, b: number) => number;
|
|
2292
|
-
readonly definitionregionwrapper_contracted: (a: number, b: number) => number;
|
|
2293
|
-
readonly definitionregionwrapper_dimensions: (a: number) => any;
|
|
2294
|
-
readonly definitionregionwrapper_excludeBlock: (a: number, b: number, c: number) => [number, number, number];
|
|
2295
|
-
readonly definitionregionwrapper_expand: (a: number, b: number, c: number, d: number) => number;
|
|
2296
|
-
readonly definitionregionwrapper_expanded: (a: number, b: number, c: number, d: number) => number;
|
|
2297
|
-
readonly definitionregionwrapper_filterByBlock: (a: number, b: number, c: number, d: number) => number;
|
|
2298
|
-
readonly definitionregionwrapper_filterByProperties: (a: number, b: number, c: any) => [number, number, number];
|
|
2299
|
-
readonly definitionregionwrapper_fromBoundingBoxes: (a: any) => [number, number, number];
|
|
2300
|
-
readonly definitionregionwrapper_fromBounds: (a: number, b: number) => number;
|
|
2301
|
-
readonly definitionregionwrapper_fromPositions: (a: any) => [number, number, number];
|
|
2302
|
-
readonly definitionregionwrapper_getAllMetadata: (a: number) => any;
|
|
2303
|
-
readonly definitionregionwrapper_getBlocks: (a: number) => [number, number, number];
|
|
2304
|
-
readonly definitionregionwrapper_getBounds: (a: number) => any;
|
|
2305
|
-
readonly definitionregionwrapper_getBox: (a: number, b: number) => any;
|
|
2306
|
-
readonly definitionregionwrapper_getBoxes: (a: number) => any;
|
|
2307
|
-
readonly definitionregionwrapper_getMetadata: (a: number, b: number, c: number) => any;
|
|
2308
|
-
readonly definitionregionwrapper_intersect: (a: number, b: number) => number;
|
|
2309
|
-
readonly definitionregionwrapper_intersected: (a: number, b: number) => number;
|
|
2310
|
-
readonly definitionregionwrapper_intersectsBounds: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number;
|
|
2311
|
-
readonly definitionregionwrapper_isContiguous: (a: number) => number;
|
|
2312
|
-
readonly definitionregionwrapper_isEmpty: (a: number) => number;
|
|
2313
|
-
readonly definitionregionwrapper_merge: (a: number, b: number) => number;
|
|
2314
|
-
readonly definitionregionwrapper_metadataKeys: (a: number) => any;
|
|
2315
|
-
readonly definitionregionwrapper_new: () => number;
|
|
2316
|
-
readonly definitionregionwrapper_positions: (a: number) => any;
|
|
2317
|
-
readonly definitionregionwrapper_positionsSorted: (a: number) => any;
|
|
2318
|
-
readonly definitionregionwrapper_setColor: (a: number, b: number) => number;
|
|
2319
|
-
readonly definitionregionwrapper_setMetadata: (a: number, b: number, c: number, d: number, e: number) => number;
|
|
2320
|
-
readonly definitionregionwrapper_shift: (a: number, b: number, c: number, d: number) => number;
|
|
2321
|
-
readonly definitionregionwrapper_shifted: (a: number, b: number, c: number, d: number) => number;
|
|
2322
|
-
readonly definitionregionwrapper_simplify: (a: number) => number;
|
|
2323
|
-
readonly definitionregionwrapper_subtract: (a: number, b: number) => number;
|
|
2324
|
-
readonly definitionregionwrapper_subtracted: (a: number, b: number) => number;
|
|
2325
|
-
readonly definitionregionwrapper_union: (a: number, b: number) => number;
|
|
2326
|
-
readonly definitionregionwrapper_unionInto: (a: number, b: number) => number;
|
|
2327
|
-
readonly definitionregionwrapper_volume: (a: number) => number;
|
|
2328
|
-
readonly shapewrapper_bezier: (a: number, b: number, c: number, d: number, e: number) => [number, number, number];
|
|
2329
|
-
readonly shapewrapper_cone: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
|
|
2330
|
-
readonly shapewrapper_cuboid: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
|
|
2331
|
-
readonly shapewrapper_cylinder: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
|
|
2332
|
-
readonly shapewrapper_cylinderBetween: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number;
|
|
2333
|
-
readonly shapewrapper_difference: (a: number, b: number) => number;
|
|
2334
|
-
readonly shapewrapper_disk: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
|
|
2335
|
-
readonly shapewrapper_ellipsoid: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
|
|
2336
|
-
readonly shapewrapper_hollow: (a: number, b: number) => number;
|
|
2337
|
-
readonly shapewrapper_intersection: (a: number, b: number) => number;
|
|
2338
|
-
readonly shapewrapper_line: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
|
|
2339
|
-
readonly shapewrapper_plane: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => number;
|
|
2340
|
-
readonly shapewrapper_pyramid: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
|
|
2341
|
-
readonly shapewrapper_sphere: (a: number, b: number, c: number, d: number) => number;
|
|
2342
|
-
readonly shapewrapper_torus: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
|
|
2343
|
-
readonly shapewrapper_triangle: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => number;
|
|
2344
|
-
readonly shapewrapper_union: (a: number, b: number) => number;
|
|
2345
|
-
readonly wasmbuildingtool_fill: (a: number, b: number, c: number) => void;
|
|
2346
|
-
readonly wasmbuildingtool_rstack: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
|
|
2347
|
-
readonly definitionregionwrapper_copy: (a: number) => number;
|
|
2348
2361
|
readonly generate_gradient_between_blocks: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => any;
|
|
2349
2362
|
readonly generate_gradient_between_colors: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number) => any;
|
|
2350
2363
|
readonly get_all_colored_blocks: () => any;
|
package/nucleation_bg.wasm
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"Nano nano@schem.at"
|
|
6
6
|
],
|
|
7
7
|
"description": "A high-performance Minecraft schematic parser and utility library",
|
|
8
|
-
"version": "0.1
|
|
8
|
+
"version": "0.2.1",
|
|
9
9
|
"license": "AGPL-3.0-only",
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"nucleation_bg.wasm",
|
|
19
19
|
"nucleation_bg.d.ts",
|
|
20
20
|
"nucleation-cdn-loader.js",
|
|
21
|
+
"api.js",
|
|
21
22
|
"README.md"
|
|
22
23
|
],
|
|
23
24
|
"main": "./nucleation.js",
|
|
@@ -40,6 +41,9 @@
|
|
|
40
41
|
"./cdn-loader": {
|
|
41
42
|
"import": "./nucleation-cdn-loader.js"
|
|
42
43
|
},
|
|
44
|
+
"./api": {
|
|
45
|
+
"import": "./api.js"
|
|
46
|
+
},
|
|
43
47
|
"./package.json": "./package.json"
|
|
44
48
|
},
|
|
45
49
|
"homepage": "https://github.com/Schem-at/Nucleation",
|