@spyglassmc/java-edition 0.3.2 → 0.3.4

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