mirror of
				https://github.com/mt-mods/xcompat.git
				synced 2025-10-31 08:15:28 +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, { | ||||||
| @@ -33,3 +34,12 @@ 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