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.