mirror of
https://github.com/minetest-mods/nether.git
synced 2024-12-27 19:30:28 +01:00
52038017f3
* bug fixes Fixes wrong new_y_min when shift_existing_biomes() shifts a biome below the nether floor, find_surface_anchorPos() no longer assumes y=0 will be outside the nether. Nil-reference fixed when a mods tries to register a portal after mods are finished loading, but the portal shape+material was already registered by another mod. * Make ShiftExistingBiomes available via API makes the ShiftExistingBiomes function available to other mods via the nether global, since it's not a simple function and biomes would also need to be shifted if another mod wants to add a second nether layer. * Allow layers to extend the depth of nether effects Mods can set/lower nether.DEPTH_FLOOR_LAYERS when creating a layer under the nether. This allows multiple layer mods to know where their ceiling should start, and to be included in the effects which only happen in the nether. * document nether API More of a tentative interop guide than an API. Use snake_case for API functions.
78 lines
3.7 KiB
Plaintext
78 lines
3.7 KiB
Plaintext
Modding/interop guide to Nether
|
|
===============================
|
|
|
|
For portals API see portal_api.txt
|
|
|
|
The Nether mod exposes some of its functions and data via the lua global
|
|
`nether` and `nether.mapgen`
|
|
|
|
|
|
* `nether.DEPTH_CEILING`: [read-only] Y value of the top of the Nether.
|
|
|
|
* `nether.DEPTH_FLOOR`: [read-only] Y value of the bottom of the Nether.
|
|
|
|
* `nether.DEPTH_FLOOR_LAYERS`: [writable] Gives the bottom Y of all
|
|
locations that wish to be considered part of the Nether.
|
|
DEPTH_FLOOR_LAYERS Allows mods to insert extra layers below the
|
|
Nether, by knowing where their layer ceiling should start, and letting
|
|
the layers be included in effects which only happen in the Nether.
|
|
If a mod wishes to add a layer below the Nether it should read
|
|
`nether.DEPTH_FLOOR_LAYERS` to find the bottom Y of the Nether and any
|
|
other layers already under the Nether. The mod should leave a small gap
|
|
between DEPTH_FLOOR_LAYERS and its ceiling (e.g. use DEPTH_FLOOR_LAYERS - 6
|
|
for its ceiling Y, so there is room to shift edge-case biomes), then set
|
|
`nether.DEPTH_FLOOR_LAYERS` to reflect the mod's floor Y value, and call
|
|
`shift_existing_biomes()` with DEPTH_FLOOR_LAYERS as the `floor_y` argument.
|
|
|
|
* `nether.NETHER_REALM_ENABLED`: [read-only] Gets the value of the "Enable
|
|
Nether realm & portal" setting the nether mod exposes in Minetest's
|
|
"All Settings" -> "Mods" -> "nether" options.
|
|
When false, the entire nether mapgen is disabled (not run), and the portal
|
|
to it is not registered. Reasons someone might disable the Nether realm
|
|
include if a nether-layer mod was to be used as the Nether instead, or if
|
|
the portal mechanic was desired in a game without the Nether, etc.
|
|
|
|
* `nether.useBiomes`: [read-only] When this is false, the Nether interop
|
|
functions below are not available (nil).
|
|
Indicates that the biomes-enabled mapgen is in use. The Nether mod falls back
|
|
to older mapgen code for v6 maps and old versions of Minetest, the older
|
|
mapgen code doesn't use biomes and doesn't provide API/interop functions.
|
|
|
|
|
|
Mapgen functions available when nether.useBiomes is true
|
|
--------------------------------------------------------
|
|
|
|
The following functions are nil if `nether.useBiomes` is false,
|
|
and also nil if `nether.NETHER_REALM_ENABLED` is false.
|
|
|
|
* `nether.mapgen.shift_existing_biomes(floor_y, ceiling_y)` Move any existing
|
|
biomes out of the y-range specified by `floor_y` and `ceiling_y`.
|
|
|
|
* `nether.mapgen.get_region(pos)`: Returns two values, (region, noise) where
|
|
`region` is a value from `nether.mapgen.RegionEnum` and `noise` is the
|
|
unadjusted cave perlin value.
|
|
* `nether.mapgen.RegionEnum` values are tables which contain an invariant
|
|
`name` and a localized `desc`. Current region names include overworld,
|
|
positive, positive shell, center, center shell, negative, and negative
|
|
shell.
|
|
"positive" corresponds to conventional Nether caverns, and "center"
|
|
corresponds to the Mantle region.
|
|
|
|
* `nether.mapgen.get_cave_point_perlin()`: Returns the PerlinNoise object for
|
|
the Nether's cavern noise.
|
|
|
|
* `nether.mapgen.get_cave_perlin_at(pos)`: Returns the Nether cavern noise
|
|
value at a given 3D position.
|
|
|
|
|
|
Other mapgen functions
|
|
-------------------------------------------
|
|
|
|
If the Nether realm is enabled, then this function will be available
|
|
regardless of whether `nether.useBiomes` is true:
|
|
|
|
* `nether.find_nether_ground_y(target_x, target_z, start_y, player_name)`
|
|
Uses knowledge of the nether mapgen algorithm to return a suitable ground
|
|
level for placing a portal.
|
|
* `player_name` is optional, allowing a player to spawn a remote portal
|
|
in their own protected areas. |