123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- 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.
|