-
Notifications
You must be signed in to change notification settings - Fork 25
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Make ShiftExistingBiomes available via API (#40)
* 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.
- Loading branch information
Showing
8 changed files
with
122 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters