@spyglassmc/java-edition 0.3.3 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/lib/binder/index.d.ts +1 -1
  2. package/lib/binder/index.js +1 -1
  3. package/lib/dependency/common.d.ts +0 -4
  4. package/lib/dependency/common.js +0 -15
  5. package/lib/dependency/index.d.ts +8 -0
  6. package/lib/dependency/index.js +23 -1
  7. package/lib/dependency/mcmeta.d.ts +1 -1
  8. package/lib/dependency/mcmeta.js +45 -15
  9. package/lib/index.js +2 -0
  10. package/lib/mcfunction/checker/index.js +1 -2
  11. package/lib/mcfunction/common/index.d.ts +4 -0
  12. package/lib/mcfunction/common/index.js +25 -0
  13. package/lib/mcfunction/completer/argument.js +10 -1
  14. package/lib/mcfunction/inlayHintProvider.js +2 -1
  15. package/lib/mcfunction/node/argument.d.ts +2 -2
  16. package/lib/mcfunction/parser/argument.js +19 -10
  17. package/lib/mcfunction/tree/argument.d.ts +19 -1
  18. package/lib/mcfunction/tree/patch.js +39 -1
  19. package/package.json +7 -7
  20. package/lib/json/checker/data/advancement.d.ts +0 -14
  21. package/lib/json/checker/data/advancement.js +0 -458
  22. package/lib/json/checker/data/biome.d.ts +0 -4
  23. package/lib/json/checker/data/biome.js +0 -148
  24. package/lib/json/checker/data/common.d.ts +0 -22
  25. package/lib/json/checker/data/common.js +0 -278
  26. package/lib/json/checker/data/dimension.d.ts +0 -4
  27. package/lib/json/checker/data/dimension.js +0 -224
  28. package/lib/json/checker/data/feature.d.ts +0 -9
  29. package/lib/json/checker/data/feature.js +0 -748
  30. package/lib/json/checker/data/index.d.ts +0 -4
  31. package/lib/json/checker/data/index.js +0 -40
  32. package/lib/json/checker/data/loot_table.d.ts +0 -8
  33. package/lib/json/checker/data/loot_table.js +0 -295
  34. package/lib/json/checker/data/recipe.d.ts +0 -2
  35. package/lib/json/checker/data/recipe.js +0 -50
  36. package/lib/json/checker/data/structure.d.ts +0 -8
  37. package/lib/json/checker/data/structure.js +0 -155
  38. package/lib/json/checker/data/tag.d.ts +0 -7
  39. package/lib/json/checker/data/tag.js +0 -35
  40. package/lib/json/checker/data/text_component.d.ts +0 -2
  41. package/lib/json/checker/data/text_component.js +0 -155
  42. package/lib/json/checker/util/advancement.d.ts +0 -3
  43. package/lib/json/checker/util/advancement.js +0 -17
  44. package/lib/json/checker/util/block_states.d.ts +0 -13
  45. package/lib/json/checker/util/block_states.js +0 -63
  46. package/lib/json/checker/util/color.d.ts +0 -4
  47. package/lib/json/checker/util/color.js +0 -65
  48. package/lib/json/checker/util/index.d.ts +0 -8
  49. package/lib/json/checker/util/index.js +0 -8
  50. package/lib/json/checker/util/nbt.d.ts +0 -16
  51. package/lib/json/checker/util/nbt.js +0 -68
  52. package/lib/json/checker/util/recipe.d.ts +0 -6
  53. package/lib/json/checker/util/recipe.js +0 -13
  54. package/lib/json/checker/util/uuid.d.ts +0 -2
  55. package/lib/json/checker/util/uuid.js +0 -9
  56. package/lib/json/checker/util/version.d.ts +0 -46
  57. package/lib/json/checker/util/version.js +0 -48
@@ -1,748 +0,0 @@
1
- import { JsonArrayNode, JsonObjectNode } from '@spyglassmc/json';
2
- import { any, as, boolean, dispatch, extract, float, floatRange, int, intRange, listOf, literal, opt, pick, record, ref, resource, simpleString, } from '@spyglassmc/json/lib/checker/primitives/index.js';
3
- import { renamed, versioned } from '../util/index.js';
4
- import { block_state, Direction, floatProvider, fluid_state, height_provider, HeightmapType, inclusiveRange, intProvider, noise_parameters, uniformInt, Y_SIZE, } from './common.js';
5
- import { processor_list_ref, rule_test } from './structure.js';
6
- function intersection(...values) {
7
- return [
8
- ...new Set([]
9
- .concat(...values)
10
- .filter((e) => values.every((a) => a.includes(e)))),
11
- ];
12
- }
13
- function blockStateIntProperties(node, ctx) {
14
- if (node && JsonObjectNode.is(node)) {
15
- let block = extract('Name', node.children);
16
- if (block) {
17
- if (!block.startsWith('minecraft:')) {
18
- block = `minecraft:${block}`;
19
- }
20
- return Object.values(ctx.symbols.query(ctx.doc, 'block', block).symbol?.members ?? {})
21
- .filter((m) => m?.subcategory === 'state')
22
- .filter((m) => Object.keys(m.members ?? {})[0]?.match(/^\d+$/))
23
- .map((m) => m.identifier);
24
- }
25
- }
26
- else if (node && JsonArrayNode.is(node)) {
27
- const values = node.children
28
- .map((item) => item.value)
29
- .filter((n) => n)
30
- .map((n) => blockStateIntProperties(n, ctx));
31
- return intersection(...values);
32
- }
33
- return [];
34
- }
35
- function blockProviderProperties(node, ctx) {
36
- if (!node || !JsonObjectNode.is(node))
37
- return [];
38
- switch (extract('type', node.children)?.replace(/^minecraft:/, '')) {
39
- case 'dual_noise_provider':
40
- case 'noise_provider':
41
- const states = node.children.find((p) => p.key?.value === 'states')
42
- ?.value;
43
- return blockStateIntProperties(states, ctx);
44
- case 'noise_threshold':
45
- const lowStates = node.children.find((p) => p.key?.value === 'low_states')?.value;
46
- const highStates = node.children.find((p) => p.key?.value === 'high_states')?.value;
47
- return intersection(blockStateIntProperties(lowStates, ctx), blockStateIntProperties(highStates, ctx));
48
- case 'randomized_int_state_provider':
49
- const source = node.children.find((p) => p.key?.value === 'source')
50
- ?.value;
51
- return blockProviderProperties(source, ctx);
52
- case 'rotated_block_provider':
53
- case 'simple_state_provider':
54
- const state = node.children.find((p) => p.key?.value === 'state')
55
- ?.value;
56
- return blockStateIntProperties(state, ctx);
57
- case 'weighted_state_provider':
58
- const entries = node.children.find((p) => p.key?.value === 'entries')?.value;
59
- if (entries && JsonArrayNode.is(entries)) {
60
- const values = entries.children
61
- .map((n) => n.value &&
62
- JsonObjectNode.is(n.value) &&
63
- n.value.children.find((p) => p.key?.value === 'data')
64
- ?.value)
65
- .filter((n) => n)
66
- .map((n) => blockStateIntProperties(n, ctx));
67
- return intersection(...values);
68
- }
69
- }
70
- return [];
71
- }
72
- const noiseProvider = {
73
- seed: int,
74
- noise: noise_parameters,
75
- scale: floatRange(0, undefined), // TODO: disallow 0
76
- };
77
- const block_state_provider = as('block_state_provider', dispatch('type', (type, props, ctx) => record({
78
- type: resource('worldgen/block_state_provider_type'),
79
- ...pick(type, {
80
- dual_noise_provider: {
81
- ...noiseProvider,
82
- variety: inclusiveRange(1, 64),
83
- slow_noise: noise_parameters,
84
- slow_scale: floatRange(0, undefined),
85
- states: listOf(block_state),
86
- },
87
- noise_threshold_provider: {
88
- ...noiseProvider,
89
- threshold: floatRange(-1, 1),
90
- high_chance: floatRange(0, 1),
91
- default_state: block_state,
92
- low_states: listOf(block_state),
93
- high_states: listOf(block_state),
94
- },
95
- noise_provider: {
96
- ...noiseProvider,
97
- states: listOf(block_state),
98
- },
99
- randomized_int_state_provider: {
100
- // FIXME: Temporary solution to make tests pass when ensureBindingStarted is not given.
101
- property: ctx.ensureBindingStarted
102
- ? literal(blockProviderProperties(props.find((p) => p.key?.value === 'source')?.value, ctx))
103
- : simpleString,
104
- values: intProvider(),
105
- source: block_state_provider,
106
- },
107
- rotated_block_provider: {
108
- state: block_state,
109
- },
110
- simple_state_provider: {
111
- state: block_state,
112
- },
113
- weighted_state_provider: {
114
- entries: listOf(record({
115
- weight: intRange(1, undefined),
116
- data: block_state,
117
- })),
118
- },
119
- }),
120
- })));
121
- const blockPredicateOffset = {
122
- offset: opt(listOf(intRange(-16, 16))),
123
- };
124
- const block_predicate_worldgen = as('block_predicate_worldgen', dispatch('type', (type) => record({
125
- type: resource('block_predicate_type'),
126
- ...pick(type, {
127
- all_of: {
128
- predicates: listOf(block_predicate_worldgen),
129
- },
130
- any_of: {
131
- predicates: listOf(block_predicate_worldgen),
132
- },
133
- has_sturdy_face: {
134
- ...blockPredicateOffset,
135
- direction: literal(Direction),
136
- },
137
- inside_world_bounds: {
138
- ...blockPredicateOffset,
139
- },
140
- matching_block_tag: {
141
- ...blockPredicateOffset,
142
- tag: resource('tag/block'),
143
- },
144
- matching_blocks: {
145
- ...blockPredicateOffset,
146
- blocks: listOf(resource('block')),
147
- },
148
- matching_fluids: {
149
- ...blockPredicateOffset,
150
- fluids: listOf(resource('fluid')),
151
- },
152
- not: {
153
- predicate: block_predicate_worldgen,
154
- },
155
- would_survive: {
156
- ...blockPredicateOffset,
157
- state: block_state,
158
- },
159
- }),
160
- })));
161
- const block_placer = as('block_placer', dispatch('type', (type, _, ctx) => record({
162
- type: resource('worldgen/block_placer_type'),
163
- ...pick(type, {
164
- column_placer: {
165
- ...versioned(ctx, {
166
- min_size: int,
167
- extra_size: int,
168
- }, '1.17', {
169
- size: intProvider(0, undefined),
170
- }),
171
- },
172
- }),
173
- })));
174
- const feature_size = as('feature_size', dispatch('type', (type) => record({
175
- type: resource('worldgen/feature_size_type'),
176
- min_clipped_height: opt(intRange(0, 80)),
177
- ...pick(type, {
178
- two_layers_feature_size: {
179
- limit: opt(intRange(0, 81), 1),
180
- lower_size: opt(intRange(0, 16), 0),
181
- upper_size: opt(intRange(0, 16), 1),
182
- },
183
- three_layers_feature_size: {
184
- limit: opt(intRange(0, 81), 1),
185
- upper_limit: opt(intRange(0, 80), 1),
186
- lower_size: opt(intRange(0, 16), 0),
187
- middle_size: opt(intRange(0, 16), 1),
188
- upper_size: opt(intRange(0, 16), 1),
189
- },
190
- }),
191
- })));
192
- const trunk_placer = as('trunk_placer', dispatch('type', (type) => record({
193
- type: resource('worldgen/trunk_placer_type'),
194
- base_height: intRange(0, 32),
195
- height_rand_a: intRange(0, 24),
196
- height_rand_b: intRange(0, 24),
197
- ...pick(type, {
198
- bending_trunk_placer: {
199
- bend_length: intProvider(1, 64),
200
- min_height_for_leaves: opt(intRange(1, undefined), 1),
201
- },
202
- }),
203
- })));
204
- const foliage_placer = as('foliage_placer', dispatch('type', (type, _, ctx) => record({
205
- type: resource('worldgen/foliage_placer_type'),
206
- radius: versioned(ctx, uniformInt(0, 8, 8), '1.17', intProvider(0, 16)),
207
- offset: versioned(ctx, uniformInt(0, 8, 8), '1.17', intProvider(0, 16)),
208
- ...pick(type, {
209
- blob_foliage_placer: {
210
- height: intRange(0, 16),
211
- },
212
- bush_foliage_placer: {
213
- height: intRange(0, 16),
214
- },
215
- fancy_foliage_placer: {
216
- height: intRange(0, 16),
217
- },
218
- jungle_foliage_placer: {
219
- height: intRange(0, 16),
220
- },
221
- mega_pine_foliage_placer: {
222
- crown_height: versioned(ctx, uniformInt(0, 16, 8), '1.17', intProvider(0, 24)),
223
- },
224
- pine_foliage_placer: {
225
- height: versioned(ctx, uniformInt(0, 16, 8), '1.17', intProvider(0, 24)),
226
- },
227
- random_spread_foliage_placer: {
228
- foliage_height: intProvider(1, 512),
229
- leaf_placement_attempts: intRange(0, 256),
230
- },
231
- spruce_foliage_placer: {
232
- trunk_height: versioned(ctx, uniformInt(0, 16, 8), '1.17', intProvider(0, 24)),
233
- },
234
- }),
235
- })));
236
- const tree_decorator = as('tree_decorator', dispatch('type', (type) => record({
237
- type: resource('worldgen/tree_decorator_type'),
238
- ...pick(type, {
239
- alter_ground: {
240
- provider: block_state_provider,
241
- },
242
- beehive: {
243
- probability: floatRange(0, 1),
244
- },
245
- cocoa: {
246
- probability: floatRange(0, 1),
247
- },
248
- }),
249
- })));
250
- const DiskConfig = (ctx) => ({
251
- state: block_state,
252
- radius: versioned(ctx, uniformInt(0, 4, 4), '1.17', intProvider(0, 8)),
253
- half_height: intRange(0, 4),
254
- targets: listOf(block_state),
255
- });
256
- const RandomPatchConfig = (ctx) => versioned(ctx, {
257
- state_provider: block_state_provider,
258
- block_placer: block_placer,
259
- whitelist: listOf(block_state),
260
- blacklist: listOf(block_state),
261
- ...versioned(ctx, {
262
- tries: int,
263
- xspread: int,
264
- yspread: int,
265
- zspread: int,
266
- can_replace: boolean,
267
- project: boolean,
268
- need_water: boolean,
269
- }, '1.17', {
270
- tries: opt(intRange(1, undefined), 128),
271
- xspread: opt(intRange(0, undefined), 7),
272
- yspread: opt(intRange(0, undefined), 3),
273
- zspread: opt(intRange(0, undefined), 7),
274
- can_replace: opt(boolean, false),
275
- project: opt(boolean, true),
276
- need_water: opt(boolean, false),
277
- }),
278
- }, '1.18', {
279
- tries: opt(intRange(1, undefined), 128),
280
- xz_spread: opt(intRange(0, undefined)),
281
- y_spread: opt(intRange(0, undefined)),
282
- feature: placed_feature_ref,
283
- });
284
- const HugeMushroomConfig = {
285
- foliage_radius: opt(int, 2),
286
- cap_provider: block_state_provider,
287
- stem_provider: block_state_provider,
288
- };
289
- const OreConfig = (ctx) => ({
290
- size: intRange(0, 64),
291
- ...versioned(ctx, {
292
- state: block_state,
293
- target: rule_test,
294
- }, '1.17', {
295
- discard_chance_on_air_exposure: floatRange(0, 1),
296
- targets: listOf(record({
297
- state: block_state,
298
- target: rule_test,
299
- })),
300
- }),
301
- });
302
- const CountConfig = (ctx) => ({
303
- count: versioned(ctx, uniformInt(-10, 128, 128), '1.17', intProvider(0, 256)),
304
- });
305
- // until 1.16
306
- const RangeConfig = {
307
- maximum: int,
308
- bottom_offset: int,
309
- top_offset: int,
310
- };
311
- const VegetationPatchConfig = (ctx) => ({
312
- surface: literal(['floor', 'ceiling']),
313
- depth: intProvider(1, 128),
314
- vertical_range: intRange(1, 256),
315
- extra_bottom_block_chance: floatRange(0, 1),
316
- extra_edge_column_chance: floatRange(0, 1),
317
- vegetation_chance: floatRange(0, 1),
318
- xz_radius: intProvider(),
319
- replaceable: resource('tag/block'),
320
- ground_state: block_state_provider,
321
- vegetation_feature: versioned(ctx, ref(() => configured_feature_ref), '1.18', ref(() => placed_feature_ref)),
322
- });
323
- // until 1.17
324
- export const configured_decorator = as('decorator', dispatch('type', (type, _, ctx) => record({
325
- type: resource('worldgen/decorator'),
326
- config: record(pick(type, {
327
- carving_mask: {
328
- step: literal(['air', 'liquid']),
329
- probability: versioned(ctx, floatRange(0, 1), '1.16'),
330
- },
331
- cave_surface: {
332
- surface: literal(['floor', 'ceiling']),
333
- floor_to_ceiling_search_range: int,
334
- },
335
- chance: {
336
- chance: int,
337
- },
338
- count: CountConfig(ctx),
339
- count_extra: {
340
- count: int,
341
- extra_chance: float,
342
- extra_count: int,
343
- },
344
- count_multilayer: CountConfig(ctx),
345
- count_noise: {
346
- noise_level: float,
347
- below_noise: int,
348
- above_noise: int,
349
- },
350
- count_noise_biased: {
351
- noise_to_count_ratio: int,
352
- noise_factor: float,
353
- noise_offset: opt(float, 0),
354
- },
355
- decorated: {
356
- outer: configured_decorator,
357
- inner: configured_decorator,
358
- },
359
- depth_average: {
360
- baseline: int,
361
- spread: int,
362
- },
363
- fire: CountConfig(ctx),
364
- glowstone: CountConfig(ctx),
365
- heightmap: {
366
- heightmap: versioned(ctx, '1.17', literal(HeightmapType)),
367
- },
368
- heightmap_spread_double: {
369
- heightmap: versioned(ctx, '1.17', literal(HeightmapType)),
370
- },
371
- lava_lake: {
372
- chance: int,
373
- },
374
- range: {
375
- ...versioned(ctx, RangeConfig, '1.17', {
376
- height: height_provider,
377
- }),
378
- },
379
- range_biased: RangeConfig,
380
- range_very_biased: RangeConfig,
381
- water_depth_threshold: {
382
- max_water_depth: int,
383
- },
384
- water_lake: {
385
- chance: int,
386
- },
387
- })),
388
- })));
389
- export const placement_modifier = as('placement_modifier', dispatch('type', (type) => record({
390
- type: resource('worldgen/placement_modifier_type'),
391
- ...pick(type, {
392
- block_predicate_filter: {
393
- predicate: block_predicate_worldgen,
394
- },
395
- carving_mask: {
396
- step: literal(['air', 'liquid']),
397
- },
398
- rarity_filter: {
399
- chance: intRange(1, undefined),
400
- },
401
- count: {
402
- count: intProvider(0, 256),
403
- },
404
- count_on_every_layer: {
405
- count: intProvider(0, 256),
406
- },
407
- noise_threshold_count: {
408
- noise_level: float,
409
- below_noise: int,
410
- above_noise: int,
411
- },
412
- noise_based_count: {
413
- noise_to_count_ratio: int,
414
- noise_factor: float,
415
- noise_offset: opt(float),
416
- },
417
- environment_scan: {
418
- direction_of_search: literal(['up', 'down']),
419
- max_steps: intRange(1, 32),
420
- target_condition: block_predicate_worldgen,
421
- allowed_search_condition: opt(block_predicate_worldgen),
422
- },
423
- heightmap: {
424
- heightmap: literal(HeightmapType),
425
- },
426
- height_range: {
427
- height: height_provider,
428
- },
429
- random_offset: {
430
- xz_spread: intProvider(-16, 16),
431
- y_spread: intProvider(-16, 16),
432
- },
433
- surface_relative_threshold_filter: {
434
- heigtmap: literal(HeightmapType),
435
- min_inclusive: opt(int),
436
- max_inclusive: opt(int),
437
- },
438
- surface_water_depth_filter: {
439
- max_water_depth: int,
440
- },
441
- }),
442
- })));
443
- export const configured_feature = as('feature', dispatch('type', (type, _, ctx) => record({
444
- type: resource('worldgen/feature'),
445
- config: record(pick(type, {
446
- bamboo: {
447
- probability: floatRange(0, 1),
448
- },
449
- basalt_columns: {
450
- reach: versioned(ctx, uniformInt(0, 2, 1), '1.17', intProvider(0, 3)),
451
- height: versioned(ctx, uniformInt(1, 5, 5), '1.17', intProvider(1, 10)),
452
- },
453
- block_column: {
454
- direction: literal(Direction),
455
- allowed_placement: block_predicate_worldgen,
456
- prioritize_tip: boolean,
457
- layers: listOf(record({
458
- height: intProvider(0, undefined),
459
- provider: block_state_provider,
460
- })),
461
- },
462
- block_pile: {
463
- state_provider: block_state_provider,
464
- },
465
- decorated: {
466
- decorator: configured_decorator,
467
- feature: configured_feature_ref,
468
- },
469
- delta_feature: {
470
- contents: block_state,
471
- rim: block_state,
472
- size: versioned(ctx, uniformInt(0, 8, 8), '1.17', intProvider(0, 16)),
473
- rim_size: versioned(ctx, uniformInt(0, 8, 8), '1.17', intProvider(0, 16)),
474
- },
475
- disk: DiskConfig(ctx),
476
- dripstone_cluster: {
477
- floor_to_ceiling_search_range: intRange(1, 512),
478
- height: intProvider(0, 128),
479
- radius: intProvider(0, 128),
480
- max_stalagmite_stalactite_height_diff: intRange(0, 64),
481
- height_deviation: intRange(0, 64),
482
- dripstone_block_layer_thickness: intProvider(0, 128),
483
- density: floatProvider(0, 2),
484
- wetness: floatProvider(0, 2),
485
- chance_of_dripstone_column_at_max_distance_from_center: floatRange(0, 1),
486
- max_distance_from_edge_affecting_chance_of_dripstone_column: intRange(1, 64),
487
- max_distance_from_center_affecting_height_bias: intRange(1, 64),
488
- },
489
- emerald_ore: {
490
- state: block_state,
491
- target: block_state,
492
- },
493
- end_gateway: {
494
- exit: opt(listOf(int)),
495
- exact: boolean,
496
- },
497
- end_spike: {
498
- crystal_invulnerable: opt(boolean, false),
499
- crystal_beam_target: opt(listOf(int)),
500
- spikes: listOf(record({
501
- centerX: opt(int, 0),
502
- centerZ: opt(int, 0),
503
- radius: opt(int, 0),
504
- height: opt(int, 0),
505
- guarded: opt(boolean, false),
506
- })),
507
- },
508
- fill_layer: {
509
- height: intRange(0, Y_SIZE),
510
- state: block_state,
511
- },
512
- flower: RandomPatchConfig(ctx),
513
- forest_rock: {
514
- state: block_state,
515
- },
516
- fossil: {
517
- max_empty_corners_allowed: intRange(0, 7),
518
- fossil_structures: listOf(resource('structure')),
519
- overlay_structures: listOf(resource('structure')),
520
- fossil_processors: processor_list_ref,
521
- overlay_processors: processor_list_ref,
522
- },
523
- geode: {
524
- blocks: record({
525
- filling_provider: block_state_provider,
526
- inner_layer_provider: block_state_provider,
527
- alternate_inner_layer_provider: block_state_provider,
528
- middle_layer_provider: block_state_provider,
529
- outer_layer_provider: block_state_provider,
530
- inner_placements: listOf(block_state),
531
- cannot_replace: resource('tag/block'),
532
- invalid_blocks: resource('tag/block'),
533
- }),
534
- layers: record({
535
- filling: opt(floatRange(0.01, 50), 1.7),
536
- inner_layer: opt(floatRange(0.01, 50), 2.2),
537
- middle_layer: opt(floatRange(0.01, 50), 3.2),
538
- outer_layer: opt(floatRange(0.01, 50), 4.2),
539
- }),
540
- crack: record({
541
- generate_crack_chance: opt(floatRange(0, 1), 1),
542
- base_crack_size: opt(floatRange(0, 5), 2),
543
- crack_point_offset: opt(intRange(0, 10), 2),
544
- }),
545
- noise_multiplier: opt(floatRange(0, 1), 0.05),
546
- use_potential_placements_chance: opt(floatRange(0, 1), 0.35),
547
- use_alternate_layer0_chance: opt(floatRange(0, 1), 0),
548
- placements_require_layer0_alternate: opt(boolean, true),
549
- outer_wall_distance: opt(intProvider(0, 10), {
550
- value: { min_inclusive: 0, max_inclusive: 10 },
551
- }),
552
- distribution_points: opt(intProvider(1, 20), {
553
- value: { min_inclusive: 3, max_inclusive: 4 },
554
- }),
555
- point_offset: opt(intProvider(0, 10), {
556
- value: { min_inclusive: 1, max_inclusive: 2 },
557
- }),
558
- min_gen_offset: opt(int, -16),
559
- max_gen_offset: opt(int, 16),
560
- invalid_blocks_threshold: int,
561
- },
562
- glow_lichen: {
563
- search_range: opt(intRange(1, 64), 10),
564
- chance_of_spreading: opt(floatRange(0, 1), 0.5),
565
- can_place_on_floor: opt(boolean, false),
566
- can_place_on_wall: opt(boolean, false),
567
- can_place_on_ceiling: opt(boolean, false),
568
- can_be_placed_on: listOf(versioned(ctx, block_state, '1.18', resource('block'))),
569
- },
570
- growing_plant: {
571
- direction: literal(Direction),
572
- allow_water: boolean,
573
- height_distribution: listOf(record({
574
- weight: int,
575
- data: intProvider(),
576
- })),
577
- body_provider: block_state_provider,
578
- head_provider: block_state_provider,
579
- },
580
- huge_brown_mushroom: HugeMushroomConfig,
581
- huge_fungus: {
582
- planted: opt(boolean, false),
583
- hat_state: block_state,
584
- decor_state: block_state,
585
- stem_state: block_state,
586
- valid_base_block: block_state,
587
- },
588
- huge_red_mushroom: HugeMushroomConfig,
589
- ice_patch: DiskConfig(ctx),
590
- iceberg: {
591
- state: block_state,
592
- },
593
- lake: versioned(ctx, {
594
- state: block_state,
595
- }, '1.18', {
596
- fluid: block_state_provider,
597
- barrier: block_state_provider,
598
- }),
599
- large_dripstone: {
600
- floor_to_ceiling_search_range: opt(intRange(1, 512), 30),
601
- column_radius: intProvider(0, 20),
602
- height_scale: floatProvider(0, 20),
603
- max_column_radius_to_cave_height_ratio: floatRange(0, 1),
604
- stalactite_bluntness: floatProvider(0.1, 10),
605
- stalagmite_bluntness: floatProvider(0.1, 10),
606
- wind_speed: floatProvider(0, 2),
607
- min_radius_for_wind: intRange(0, 100),
608
- min_bluntness_for_wind: floatRange(0, 5),
609
- },
610
- nether_forest_vegetation: {
611
- state_provider: block_state_provider,
612
- ...versioned(ctx, '1.18', {
613
- spread_width: intRange(1, undefined),
614
- spread_height: intProvider(1, undefined),
615
- }),
616
- },
617
- netherrack_replace_blobs: {
618
- radius: versioned(ctx, uniformInt(), '1.17', intProvider(0, 12)),
619
- state: block_state,
620
- target: block_state,
621
- },
622
- no_bonemeal_flower: RandomPatchConfig(ctx),
623
- no_surface_ore: OreConfig(ctx),
624
- ore: OreConfig(ctx),
625
- pointed_dripstone: {
626
- chance_of_taller_dripstone: floatRange(0, 1),
627
- chance_of_directional_spread: floatRange(0, 1),
628
- chance_of_spread_radius2: floatRange(0, 1),
629
- chance_of_spread_radius3: floatRange(0, 1),
630
- },
631
- random_boolean_selector: {
632
- feature_false: versioned(ctx, configured_feature_ref, '1.18', placed_feature_ref),
633
- feature_true: versioned(ctx, configured_feature_ref, '1.18', placed_feature_ref),
634
- },
635
- random_patch: RandomPatchConfig(ctx),
636
- random_selector: {
637
- features: listOf(record({
638
- chance: floatRange(0, 1),
639
- feature: versioned(ctx, configured_feature_ref, '1.18', placed_feature_ref),
640
- })),
641
- default: versioned(ctx, configured_feature_ref, '1.18', placed_feature_ref),
642
- },
643
- replace_single_block: {
644
- targets: listOf(record({
645
- state: block_state,
646
- target: rule_test,
647
- })),
648
- },
649
- root_system: {
650
- required_vertical_space_for_tree: intRange(1, 64),
651
- root_radius: intRange(1, 64),
652
- root_placement_attempts: intRange(1, 256),
653
- root_column_max_height: intRange(1, 4096),
654
- hanging_root_radius: intRange(1, 64),
655
- hanging_roots_vertical_span: intRange(0, 16),
656
- hanging_root_placement_attempts: intRange(0, 256),
657
- allowed_vertical_water_for_tree: intRange(1, 64),
658
- root_replaceable: resource('tag/block'),
659
- root_state_provider: block_state_provider,
660
- hanging_root_state_provider: block_state_provider,
661
- allowed_tree_position: versioned(ctx, '1.18', block_predicate_worldgen),
662
- feature: versioned(ctx, configured_feature_ref, '1.18', placed_feature_ref),
663
- },
664
- scattered_ore: OreConfig(ctx),
665
- sea_pickle: CountConfig(ctx),
666
- seagrass: {
667
- probability: floatRange(0, 1),
668
- },
669
- simple_block: {
670
- ...versioned(ctx, versioned(ctx, {
671
- to_place: block_state,
672
- place_on: listOf(block_state),
673
- place_in: listOf(block_state),
674
- place_under: listOf(block_state),
675
- }, '1.17', {
676
- to_place: block_state_provider,
677
- place_on: opt(listOf(block_state), []),
678
- place_in: opt(listOf(block_state), []),
679
- place_under: opt(listOf(block_state), []),
680
- }), '1.18', {
681
- to_place: block_state_provider,
682
- }),
683
- },
684
- simple_random_selector: {
685
- features: versioned(ctx, configured_feature_list_ref, '1.18', placed_feature_list_ref),
686
- },
687
- small_dripstone: {
688
- max_placements: opt(intRange(0, 100), 5),
689
- empty_space_search_radius: opt(intRange(0, 20), 10),
690
- max_offset_from_origin: opt(intRange(0, 20), 2),
691
- chance_of_taller_dripstone: opt(floatRange(0, 1), 0.2),
692
- },
693
- spring_feature: {
694
- requires_block_below: opt(boolean, true),
695
- rock_count: opt(int, 4),
696
- hole_count: opt(int, 1),
697
- state: fluid_state,
698
- valid_blocks: listOf(resource('block')),
699
- },
700
- tree: {
701
- ignore_vines: opt(boolean, false),
702
- force_dirt: opt(versioned(ctx, '1.17', boolean), false),
703
- max_water_depth: versioned(ctx, int, '1.17'),
704
- heightmap: versioned(ctx, literal(HeightmapType), '1.17'),
705
- minimum_size: feature_size,
706
- dirt_provider: versioned(ctx, '1.17', block_state_provider),
707
- sapling_provider: versioned(ctx, '1.17', versioned(ctx, block_state_provider, '1.18')),
708
- trunk_provider: block_state_provider,
709
- ...renamed(ctx, 'leaves_provider', '1.17', 'foliage_provider', block_state_provider),
710
- trunk_placer: trunk_placer,
711
- foliage_placer: foliage_placer,
712
- decorators: listOf(tree_decorator),
713
- },
714
- twisting_vines: versioned(ctx, {}, '1.18', {
715
- spread_width: intRange(1, undefined),
716
- spread_height: intRange(1, undefined),
717
- max_height: intRange(1, undefined),
718
- }),
719
- underwater_magma: {
720
- floor_search_range: intRange(0, 512),
721
- placement_radius_around_floor: intRange(0, 64),
722
- placement_probability_per_valid_position: floatRange(0, 1),
723
- },
724
- vegetation_patch: VegetationPatchConfig(ctx),
725
- waterlogged_vegetation_patch: VegetationPatchConfig(ctx),
726
- })),
727
- })));
728
- export const configured_feature_ref = any([
729
- resource('worldgen/configured_feature'),
730
- configured_feature,
731
- ]);
732
- export const configured_feature_list_ref = any([
733
- listOf(resource('worldgen/configured_feature')),
734
- listOf(configured_feature),
735
- ]);
736
- export const placed_feature = as('placed_feature', record({
737
- feature: configured_feature_ref,
738
- placement: listOf(placement_modifier),
739
- }));
740
- export const placed_feature_ref = any([
741
- resource('worldgen/placed_feature'),
742
- placed_feature,
743
- ]);
744
- export const placed_feature_list_ref = any([
745
- listOf(resource('worldgen/placed_feature')),
746
- listOf(placed_feature),
747
- ]);
748
- //# sourceMappingURL=feature.js.map