Skip to content

Commit ef2ec84

Browse files
authored
feat: add worldgen support (#1)
* worldgen * don't test worldgen - tests with worldgen files are broken in lectern snapshots: mcbeet/lectern#361 * Update TODO.md
1 parent b2674ea commit ef2ec84

File tree

16 files changed

+167
-7
lines changed

16 files changed

+167
-7
lines changed

TODO.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
## TODO:
2-
- add worldgen support
32
- merge nested overlays (overlays in the target pack)
43
- create more tests
54
- allow separate dp and rp default formats
5+
- restore worldgen tests once [lectern #361](https://github.com/mcbeet/lectern/issues/361) is fixed

beet_observer/data_pack.py

Lines changed: 64 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from typing import Any
22

3+
import beet.contrib.worldgen as wg
34
from beet import Context, NamespaceProxy
45

56

@@ -48,6 +49,60 @@ def gen_dp_overlays(ctx: Context, ctx_overlay: Context, overlay_dir: str) -> Non
4849
ctx.data.point_of_interest_type_tags,
4950
ctx_overlay.data.point_of_interest_type_tags,
5051
),
52+
(ctx.data[wg.Dimension], ctx_overlay.data[wg.Dimension]),
53+
(ctx.data[wg.DimensionType], ctx_overlay.data[wg.DimensionType]),
54+
(ctx.data[wg.WorldgenBiome], ctx_overlay.data[wg.WorldgenBiome]),
55+
(
56+
ctx.data[wg.WorldgenConfiguredCarver],
57+
ctx_overlay.data[wg.WorldgenConfiguredCarver],
58+
),
59+
(
60+
ctx.data[wg.WorldgenConfiguredFeature],
61+
ctx_overlay.data[wg.WorldgenConfiguredFeature],
62+
),
63+
(
64+
ctx.data[wg.WorldgenDensityFunction],
65+
ctx_overlay.data[wg.WorldgenDensityFunction],
66+
),
67+
(ctx.data[wg.WorldgenNoise], ctx_overlay.data[wg.WorldgenNoise]),
68+
(
69+
ctx.data[wg.WorldgenNoiseSettings],
70+
ctx_overlay.data[wg.WorldgenNoiseSettings],
71+
),
72+
(
73+
ctx.data[wg.WorldgenPlacedFeature],
74+
ctx_overlay.data[wg.WorldgenPlacedFeature],
75+
),
76+
(
77+
ctx.data[wg.WorldgenProcessorList],
78+
ctx_overlay.data[wg.WorldgenProcessorList],
79+
),
80+
(ctx.data[wg.WorldgenStructure], ctx_overlay.data[wg.WorldgenStructure]),
81+
(ctx.data[wg.WorldgenStructureSet], ctx_overlay.data[wg.WorldgenStructureSet]),
82+
(
83+
ctx.data[wg.WorldgenConfiguredSurfaceBuilder],
84+
ctx_overlay.data[wg.WorldgenConfiguredSurfaceBuilder],
85+
),
86+
(ctx.data[wg.WorldgenTemplatePool], ctx_overlay.data[wg.WorldgenTemplatePool]),
87+
(ctx.data[wg.WorldgenWorldPreset], ctx_overlay.data[wg.WorldgenWorldPreset]),
88+
(
89+
ctx.data[wg.WorldgenFlatLevelGeneratorPreset],
90+
ctx_overlay.data[wg.WorldgenFlatLevelGeneratorPreset],
91+
),
92+
(ctx.data[wg.WorldgenBiomeTag], ctx_overlay.data[wg.WorldgenBiomeTag]),
93+
(
94+
ctx.data[wg.WorldgenStructureSetTag],
95+
ctx_overlay.data[wg.WorldgenStructureSetTag],
96+
),
97+
(ctx.data[wg.WorldgenStructureTag], ctx_overlay.data[wg.WorldgenStructureTag]),
98+
(
99+
ctx.data[wg.WorldgenConfiguredCarverTag],
100+
ctx_overlay.data[wg.WorldgenConfiguredCarverTag],
101+
),
102+
(
103+
ctx.data[wg.WorldgenPlacedFeatureTag],
104+
ctx_overlay.data[wg.WorldgenPlacedFeatureTag],
105+
),
51106
]
52107
# for each file type, check for required overlays
53108
for registry, registry_overlay in file_types:
@@ -155,13 +210,18 @@ def gen_registry_overlay(
155210
ctx.data.overlays[default_dir][name] = registry[name]
156211
del registry[name]
157212
elif type == "addition":
158-
# move function from overlay pack to overlay in build pack
213+
# move file from overlay pack to overlay in build pack
159214
ctx.data.overlays[overlay_dir][name] = registry_overlay[name]
160215
else:
161216
# check if files are exactly the same
162-
if registry[name] != registry_overlay[name]:
163-
# move function from overlay pack to overlay in build pack
164-
ctx.data.overlays[overlay_dir][name] = registry_overlay[name]
217+
try:
218+
if registry[name].data != registry_overlay[name].data:
219+
# move file from overlay pack to overlay in build pack
220+
ctx.data.overlays[overlay_dir][name] = registry_overlay[name]
221+
except AttributeError:
222+
if registry[name] != registry_overlay[name]:
223+
# move file from overlay pack to overlay in build pack
224+
ctx.data.overlays[overlay_dir][name] = registry_overlay[name]
165225

166226
# remove file from overlay pack
167227
if name in registry_overlay:
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "demo:this-is-the-same-in-both",
3+
"generator": {
4+
"type": "minecraft:debug"
5+
}
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "demo:this-only-exists-in-the-overlay",
3+
"generator": {
4+
"type": "minecraft:debug"
5+
}
6+
}

demo_pack/pack.mcmeta

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"pack": {
3+
"pack_format": 57,
4+
"description": "",
5+
"supported_formats": [
6+
48,
7+
57
8+
]
9+
},
10+
"overlays": {
11+
"entries": [
12+
{
13+
"formats": 48,
14+
"directory": "overlay_48"
15+
}
16+
]
17+
}
18+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
data_pack:
2+
load: src
3+
pack_format: 57
4+
supported_formats: [48,57]
5+
6+
pipeline:
7+
- beet_observer
8+
9+
meta:
10+
observer:
11+
overlays:
12+
- process: proc
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "demo:this-only-exists-in-the-overlay",
3+
"generator": {
4+
"type": "minecraft:debug"
5+
}
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "demo:this-is-the-same-in-both",
3+
"generator": {
4+
"type": "minecraft:debug"
5+
}
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"pack": {
3+
"pack_format": 48,
4+
"description": ""
5+
}
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "demo:this-is-the-same-in-both",
3+
"generator": {
4+
"type": "minecraft:debug"
5+
}
6+
}

0 commit comments

Comments
 (0)