mirror of
https://github.com/mt-mods/xcompat.git
synced 2025-10-30 15:55:38 +01:00
Add explanations of textures & player api usage, non-function sounds, and some minor touch-up of docs (#55)
This commit is contained in:
@@ -1,13 +1,16 @@
|
|||||||
# Functions API
|
# Functions API
|
||||||
|
|
||||||
## `can_interact_with_node(player, pos)`
|
## `can_interact_with_node(player, pos)`
|
||||||
|
|
||||||
returns `bool`
|
returns `bool`
|
||||||
|
|
||||||
checks for the ability to interact with a node via:
|
checks for the ability to interact with a node via:
|
||||||
|
|
||||||
* if a player
|
* if a player
|
||||||
* owner metadata key
|
* owner metadata key
|
||||||
* protection_bypass
|
* `protection_bypass`
|
||||||
|
|
||||||
supports
|
supports
|
||||||
|
|
||||||
* minetest game default if present
|
* minetest game default if present
|
||||||
* else polyfill
|
* else polyfill
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ simply returns `minetest.get_game_info().id`
|
|||||||
|
|
||||||
## minetest versions < 5.7
|
## minetest versions < 5.7
|
||||||
|
|
||||||
approximates the gameid value via a hardcoded table of gameid=>modname
|
approximates the gameid value via a hardcoded table of gameid =\> modname,
|
||||||
and then checks via `minetest.get_modpath()`. If it fails, it falls
|
and then checks via `minetest.get_modpath()`. If it fails, it falls
|
||||||
back to using `xcompat_unknown_gameid` as the id. See the chart in the
|
back to using `xcompat_unknown_gameid` as the id. See the chart in the
|
||||||
readme for which games are supported
|
readme for which games are supported
|
||||||
|
|||||||
@@ -1,11 +1,26 @@
|
|||||||
# Materials API
|
# Materials API
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
The materials can be accessed anywhere in your mod with `xcompat.materials.material_name`.
|
The materials can be accessed anywhere in your mod with `xcompat.materials.material_name`.
|
||||||
|
|
||||||
**Example**: `xcompat.materials.steel_ingot` returns the string of whichever item would closest represent the steel_ingot material in the current game.
|
Behind the scenes, xcompat automatically changes the `xcompat.materials`
|
||||||
|
variable to contain the correct materials for whichever game the mod is
|
||||||
|
launched in.
|
||||||
|
|
||||||
Behind the scenes, the xcompat mod automatically changes the `xcompat.materials` variable to contain the correct materials for whichever game the mod is launched in.
|
## Game support
|
||||||
|
|
||||||
See the [the support table in the readme](https://github.com/mt-mods/xcompat/tree/master?tab=readme-ov-file#directly-supported-games-and-mods) for an overview of supported games, and see the contents of `/src/materials/` for the supported materials and their names.
|
See the [the support table in the readme](https://github.com/mt-mods/xcompat/tree/master?tab=readme-ov-file#directly-supported-games-and-mods)
|
||||||
|
for an overview of supported games, and see the contents of `/src/materials/`
|
||||||
|
for the supported materials and their names.
|
||||||
|
|
||||||
**Example**: the `/src/materials/mineclonia.lua` file shows what the keys of `xcompat.materials` resolve to when playing Mineclonia, such as `xcompat.materials.steel_ingot` resolving to `mcl_core:iron_ingot`, and `xcompat.materials.mesa_crystal` resolving to `mcl_redstone:redstone` if supported.
|
## Examples
|
||||||
|
|
||||||
|
Writing `xcompat.materials.steel_ingot` returns the string of whichever item
|
||||||
|
would closest represent the `steel_ingot` material in the current game.
|
||||||
|
|
||||||
|
The `/src/materials/mineclonia.lua` file shows what the keys of
|
||||||
|
`xcompat.materials` resolve to when playing Mineclonia, such as
|
||||||
|
`xcompat.materials.steel_ingot` resolving to `mcl_core:iron_ingot`, and
|
||||||
|
`xcompat.materials.mesa_crystal` resolving to `mcl_redstone:redstone` if
|
||||||
|
supported.
|
||||||
|
|||||||
@@ -1,13 +1,21 @@
|
|||||||
# Player API
|
# Player API
|
||||||
|
|
||||||
mimic mtg player_api
|
## Usage
|
||||||
|
|
||||||
## NOTE
|
The player api can be accessed in your script through `xcompat.player`.
|
||||||
|
|
||||||
`xcompat.player.player_attached`
|
This object mimics the `player_api` from Minetest Game, and should be a drop-in
|
||||||
|
replacement in most cases. You should be able to simply replace instances
|
||||||
|
of `player_api` in your script with `xcompat.player`.
|
||||||
|
|
||||||
read/write from it is fine, looping over it is not as it is a proxy table. this
|
|
||||||
would need lua5.2 __pairs/__ipairs metamethods support which i could polyfill
|
## Note on `xcompat.player.player_attached`
|
||||||
for using https://stackoverflow.com/a/77354254 but didnt feel like doing at
|
|
||||||
this time. (luajit supports this via 5.2 extensions). additionally see issue:
|
Reading & writing to this object works, but because it's a proxy table it can't
|
||||||
https://github.com/minetest/minetest/issues/15133
|
be looped over.
|
||||||
|
|
||||||
|
Looping over this object would require lua5.2 `__pairs`/`__ipairs` metamethod support.
|
||||||
|
It would be possible to implement support for this through polyfill,
|
||||||
|
using [this method](https://stackoverflow.com/a/77354254)
|
||||||
|
(luajit supports this via 5.2 extensions), but it's not implemented as of now.
|
||||||
|
Additionally see [this engine issue](https://github.com/minetest/minetest/issues/15133).
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
# Sound API
|
# Sound API
|
||||||
|
|
||||||
|
|
||||||
## Option 1: Agnostically depend
|
## Option 1: Agnostically depend
|
||||||
|
|
||||||
You can do this by using a custom field in your node def instead of the `sounds` key.
|
You can do this by using a custom field in your node def instead of the `sounds` key.
|
||||||
@@ -22,7 +23,7 @@ where:
|
|||||||
|
|
||||||
## Option 2: Hard depend
|
## Option 2: Hard depend
|
||||||
|
|
||||||
add this mod to your mod.confs depends and directly call the sound_api as follows
|
add this mod to your mod.confs depends and directly call the `sound_api` as follows
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
minetest.register_node(nodename, {
|
minetest.register_node(nodename, {
|
||||||
@@ -32,4 +33,13 @@ minetest.register_node(nodename, {
|
|||||||
})
|
})
|
||||||
```
|
```
|
||||||
|
|
||||||
* input: optional table to override some or all of returned values
|
* input: optional table to override some or all of returned values
|
||||||
|
|
||||||
|
|
||||||
|
## Note
|
||||||
|
|
||||||
|
In some instances, when sounds are defined by strings and the sound doesn't
|
||||||
|
belong to a block or anything mod-specific, xcompat may not be needed. E.g.
|
||||||
|
the sound `"default_dig_choppy"` is accessed in the same way in both Mineclonia
|
||||||
|
and Minetest Game, without xcompat.
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,20 @@
|
|||||||
# Textures API
|
# Textures API
|
||||||
|
|
||||||
consult `/src/texture/minetest.lua` at this time
|
## Usage
|
||||||
|
|
||||||
|
To use a texture in your mod, find the texture you want by looking at one of
|
||||||
|
the files in `/src/texture`, and append its path to `xcompat.textures`.
|
||||||
|
|
||||||
|
If a texture isn't supported for the current game, xcompat creates a solid
|
||||||
|
color texture using texture modifiers as a fallback, ensuring compatibility.
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
| Path | Result in Minetest Game |
|
||||||
|
| - | - |
|
||||||
|
| xcompat.textures.wool.white | `"wool_white.png"` |
|
||||||
|
| xcompat.textures.wood.apple.planks | `"default_wood.png"` |
|
||||||
|
| xcompat.textures.wood.jungle.leaves | `"default_jungleleaves.png"` |
|
||||||
|
| xcompat.textures.glass.pane | `"default_glass.png"` |
|
||||||
|
|
||||||
|
For games like Minetest and Mineclonia, see the file `/src/textures/minetest.lua`.
|
||||||
|
|||||||
Reference in New Issue
Block a user