|
1 | | -# OreSpawn Integration Notes For Coding Agents |
| 1 | +# OreSpawn Documentation Map |
2 | 2 |
|
3 | | -OreSpawn 4.0 is a required NeoForge mod and declarative world-generation engine. |
4 | | -Public API major version 1 consists only of `zone.moddev.mc.orespawn.api`. Treat |
5 | | -every other Java package as internal and unstable. |
| 3 | +This index is for navigating the documentation to learn how to integrate with |
| 4 | +and use OreSpawn with a mod or modpack. |
| 5 | +Start with [DEVELOPER_GUIDE.md](DEVELOPER_GUIDE.md). |
6 | 6 |
|
7 | | -Integration entry points: |
| 7 | +Use the focused guides for implementation details: |
8 | 8 |
|
9 | | -- Java declarations: `OreSpawnApi.enqueue(WorldgenProvider)` during |
10 | | - `InterModEnqueueEvent`. |
11 | | -- Packaged declarations: `data/<modid>/orespawn/provider.json`. |
12 | | -- Pack overrides: `config/<modid>-orespawn.json`. |
13 | | -- Active queries: `getActiveProfile(MinecraftServer)` and |
14 | | - `createSampler(ServerLevel)`. |
15 | | -- Native-ore takeover: disable only when `isOreTakeoverActive(modid)` is true. |
16 | | - |
17 | | -Configuration contracts: |
18 | | - |
19 | | -- Global `config/orespawn-worldgen.json`: schema 6. |
20 | | -- World `serverconfig/orespawn-worldgen.json`: schema 5. |
21 | | -- Provider files: schema 4; legacy schemas 1-3 remain accepted. |
22 | | -- Ore placement accepts fixed `quantity` or paired inclusive |
23 | | - `min_quantity`/`max_quantity` values in the range 1-64. A complete range is |
24 | | - authoritative when both forms exist. |
25 | | -- `dimension_selectors.orespawn:all_except_nether_end` applies to ordinary |
26 | | - dimensions but never Nether or End. Explicit dimension entries override it |
27 | | - per ore and must also drive vanilla-feature suppression. |
28 | | -- JSON Schemas and examples are under `META-INF/orespawn/docs/` in the jar. |
29 | | -- Schema 4 providers may declare `biome_palettes` and `dimension_materials`. |
30 | | - Palettes wrap the native dimension biome source. Region presets are 128, |
31 | | - 256, 512, 1024, and 2048 blocks. |
32 | | - |
33 | | -Lifecycle and ownership: |
34 | | - |
35 | | -- NeoForge setup is parallel. Never mutate OreSpawn internals directly. |
36 | | -- A pack override file is authoritative over packaged and API definitions for |
37 | | - the same provider. A malformed override fails closed. |
38 | | -- Provider rule IDs use the provider namespace. A rule's `block` or weighted |
39 | | - output may reference any installed block. |
40 | | -- Definitions freeze at load completion and change only after restart or an |
41 | | - operator `/orespawn reload`. |
42 | | -- Auto-selected templates apply only to fresh worlds with no explicit |
43 | | - `default_template`. Highest priority wins, then lexical ID. Existing world |
44 | | - profiles never auto-switch. |
45 | | - |
46 | | -Performance constraints: |
47 | | - |
48 | | -- Do not request callbacks in block-generation loops. |
49 | | -- Registry IDs remain `ResourceLocation` values until setup-time baking. |
50 | | -- Dimension, tag, alias, biome, geome, family, pattern, and block-state |
51 | | - resolution occurs before generation. |
52 | | -- Biome palettes bake holders, climate bounds, namespace filters, weights, |
53 | | - surfaces, and dimension materials. Provider callbacks never run in selection. |
54 | | -- Ore rules support `uniform`, `triangle`, `bottom_triangle`, and |
55 | | - `uniform_bottom_triangle` height distributions plus a 0-1 |
56 | | - `discard_chance_on_air_exposure` value for buried deposits. |
57 | | -- The chunk hot path must contain no config reads, registry access, strings, |
58 | | - logging, reflection, or per-block allocation. |
59 | | -- Cache biome filters as registry keys, never `Biome` object identities; |
60 | | - dynamic-registry biome instances are not identity-stable. |
61 | | -- Ore and flat-bedrock retrogen are bounded and marker-based. Terrain strata |
62 | | - are never retrogened. |
63 | | - |
64 | | -Compatibility defaults: |
65 | | - |
66 | | -- Standalone OreSpawn is passive: no rocks, terrain dimensions, fluid deposits, ore |
67 | | - suppression, retrogen, or flat bedrock are enabled by default. |
68 | | -- The Overworld is the conventional geology target, but a provider must opt it |
69 | | - in. Nether and End terrain remain untouched unless explicitly configured. |
70 | | -- Mineralogy 6 is a provider, not a public-API compatibility facade. Do not use |
71 | | - removed `zone.moddev.mc.mineralogy.api` classes. |
72 | | - |
73 | | -Common tasks are documented in `API.md`, `PROVIDERS.md`, `FEATURES.md`, |
74 | | -`TEMPLATES.md`, `BIOMES.md`, and `DIMENSIONS.md`. Start with |
75 | | -`DEVELOPER_GUIDE.md` when the task is broader than one isolated schema or API |
76 | | -question. |
| 9 | +- [API.md](API.md) for the supported Java API; |
| 10 | +- [PROVIDERS.md](PROVIDERS.md) for packaged and configurable providers; |
| 11 | +- [FEATURES.md](FEATURES.md) for rocks, ores, deposits, and geology; |
| 12 | +- [BIOMES.md](BIOMES.md) and [DIMENSIONS.md](DIMENSIONS.md) for world integration; |
| 13 | +- [TEMPLATES.md](TEMPLATES.md) for selectable world styles; |
| 14 | +- [CONFIGURATION.md](CONFIGURATION.md) for configuration behavior; |
| 15 | +- [README.md](README.md) for schemas, examples, and the complete documentation index. |
0 commit comments