1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-09-30 19:22:14 +00:00

Merge branch 'luanti-org:master' into skybox

This commit is contained in:
Mircea Kitsune 2025-07-01 19:40:30 +03:00 committed by GitHub
commit 770ead7624
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
111 changed files with 1815 additions and 1848 deletions

View file

@ -10,7 +10,7 @@ safely without breaking backwards compatibility.
* More information at <http://www.luanti.org/>
* Additional documentation: <https://docs.luanti.org/>
* (Unofficial) Minetest Modding Book by rubenwardy: <https://rubenwardy.com/minetest_modding_book/>
* (Unofficial) Luanti Modding Book by rubenwardy: <https://rubenwardy.com/minetest_modding_book/>
* Modding tools: <https://github.com/luanti-org/modtools>
Introduction
@ -315,6 +315,9 @@ due to their space savings.
Bone weights should be normalized, e.g. using ["normalize all" in Blender](https://docs.blender.org/manual/en/4.2/grease_pencil/modes/weight_paint/weights_menu.html#normalize-all).
Note that nodes using matrix transforms must not be animated.
This also extends to bone overrides, which must not be applied to them.
You can use the [Khronos glTF validator](https://github.com/KhronosGroup/glTF-Validator)
to check whether a model is a valid glTF file.
@ -6478,6 +6481,11 @@ Environment access
* `core.get_node_or_nil(pos)`
* Same as `get_node` but returns `nil` for unloaded areas.
* Note that even loaded areas can contain "ignore" nodes.
* `core.get_node_raw(x, y, z)`
* Same as `get_node` but a faster low-level API
* Returns `content_id`, `param1`, `param2`, and `pos_ok`
* The `content_id` can be mapped to a name using `core.get_name_from_content_id()`
* If `pos_ok` is false, the area is unloaded and `content_id == core.CONTENT_IGNORE`
* `core.get_node_light(pos[, timeofday])`
* Gets the light value at the given position. Note that the light value
"inside" the node at the given position is returned, so you usually want
@ -6583,6 +6591,7 @@ Environment access
* `core.get_value_noise(noiseparams)`
* Return world-specific value noise.
* The actual seed used is the noiseparams seed plus the world seed.
* **Important**: Requires the mapgen environment to be initalized, do not use at load time.
* `core.get_value_noise(seeddiff, octaves, persistence, spread)`
* Deprecated: use `core.get_value_noise(noiseparams)` instead.
* `core.get_perlin(noiseparams)`
@ -6657,6 +6666,9 @@ Environment access
of the *active* mapgen setting `"mapgen_limit"`.
* `chunksize` is an optional number. If it is absent, its value is that
of the *active* mapgen setting `"chunksize"`.
* `core.get_mapgen_chunksize()`
* Returns the currently active chunksize of the mapgen, as a vector.
The size is specified in blocks.
* `core.get_mapgen_setting(name)`
* Gets the *active* mapgen setting (or nil if none exists) in string
format with the following order of precedence:
@ -6836,6 +6848,7 @@ You can find mod channels communication scheme in `doc/mod_channels.png`.
* Server joins channel `channel_name`, and creates it if necessary. You
should listen for incoming messages with
`core.register_on_modchannel_message`
* This returns a [ModChannel] object.
Inventory
---------
@ -6867,10 +6880,15 @@ Formspec
* `core.show_formspec(playername, formname, formspec)`
* `playername`: name of player to show formspec
* `formname`: name passed to `on_player_receive_fields` callbacks.
It should follow the `"modname:<whatever>"` naming convention.
* `formname` must not be empty, unless you want to reshow
the inventory formspec without updating it for future opens.
* It should follow the `"modname:<whatever>"` naming convention.
* If empty: Shows a custom, temporary inventory formspec.
* An inventory formspec shown this way will also be updated if
`ObjectRef:set_inventory_formspec` is called.
* Use `ObjectRef:set_inventory_formspec` to change the player's
inventory formspec for future opens.
* Supported if server AND client are both of version >= 5.13.0.
* `formspec`: formspec to display
* See also: `core.register_on_player_receive_fields`
* `core.close_formspec(playername, formname)`
* `playername`: name of player to close formspec
* `formname`: has to exactly match the one given in `show_formspec`, or the
@ -8648,9 +8666,12 @@ child will follow movement and rotation of that bone.
* Returns `nil` if no attribute found.
* `get_meta()`: Returns metadata associated with the player (a PlayerMetaRef).
* `set_inventory_formspec(formspec)`
* Redefine player's inventory form
* Should usually be called in `on_joinplayer`
* Redefines the player's inventory formspec.
* Should usually be called at least once in the `on_joinplayer` callback.
* If `formspec` is `""`, the player's inventory is disabled.
* If the inventory formspec is currently open on the client, it is
updated immediately.
* See also: `core.register_on_player_receive_fields`
* `get_inventory_formspec()`: returns a formspec string
* `set_formspec_prepend(formspec)`:
* the formspec string will be added to every formspec shown to the user,
@ -9270,6 +9291,8 @@ It can be created via `ValueNoise()` or `core.get_value_noise()`.
For `core.get_value_noise()`, the actual seed used is the noiseparams seed
plus the world seed, to create world-specific noise.
**Important**: These require the mapgen environment to be initalized, do not use at load time.
* `ValueNoise(noiseparams)`
* `ValueNoise(seed, octaves, persistence, spread)` (deprecated)
* `core.get_value_noise(noiseparams)`
@ -9306,6 +9329,8 @@ For each of the functions with an optional `buffer` parameter: If `buffer` is
not nil, this table will be used to store the result instead of creating a new
table.
**Important**: These require the mapgen environment to be initalized, do not use at load time.
### Methods
* `get_2d_map(pos)`: returns a `<size.x>` times `<size.y>` 2D array of 2D noise