3 Commits

Author SHA1 Message Date
wsor4035
d266415853 move one global back in .luacheckrc 2024-02-25 11:55:25 -05:00
wsor4035
b832ca00da update .luacheckrc and move some globals over to read 2024-02-25 11:54:11 -05:00
wsor4035
d3ddfb09b1 drop sound_api support as not known to be used 2024-02-25 11:50:23 -05:00
57 changed files with 584 additions and 12700 deletions

7
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,7 @@
version: 2
updates:
- package-ecosystem: gitsubmodule
directory: "/"
schedule:
interval: daily
open-pull-requests-limit: 20

View File

@@ -1,23 +0,0 @@
name: farlands_reloaded
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@main
- uses: buckaroobanzay/mtt@main
with:
modname: xcompat
git_game_repo: https://github.com/TerraQuest-Studios/farlands_reloaded
git_dependencies: |
https://github.com/mt-mods/unifieddyes
https://github.com/mt-mods/basic_materials
https://github.com/OgelGames/fakelib
https://github.com/mt-mods/pipeworks
https://github.com/mt-mods/steel
https://github.com/mt-mods/display_modpack
https://github.com/mt-mods/homedecor_modpack
additional_config: |
mtt_nodelist = farlands_reloaded.txt

View File

@@ -1,23 +0,0 @@
name: hades_revisited
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@main
- uses: buckaroobanzay/mtt@main
with:
modname: xcompat
git_game_repo: https://codeberg.org/Wuzzy/Hades_Revisited
git_dependencies: |
https://github.com/mt-mods/unifieddyes
https://github.com/mt-mods/basic_materials
https://github.com/OgelGames/fakelib
https://github.com/mt-mods/pipeworks
https://github.com/mt-mods/steel
https://github.com/mt-mods/display_modpack
https://github.com/mt-mods/homedecor_modpack
additional_config: |
mtt_nodelist = hades_revisited.txt

View File

@@ -1,10 +1,13 @@
name: luacheck
on: [push, pull_request]
jobs:
luacheck:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@main
- name: Luacheck
uses: lunarmodules/luacheck@master
- uses: actions/checkout@master
- name: apt
run: sudo apt-get install -y luarocks
- name: luacheck install
run: luarocks install --local luacheck
- name: luacheck run
run: $HOME/.luarocks/bin/luacheck ./

View File

@@ -1,23 +0,0 @@
name: mineclonia
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@main
- uses: buckaroobanzay/mtt@main
with:
modname: xcompat
git_game_repo: https://codeberg.org/mineclonia/mineclonia
git_dependencies: |
https://github.com/mt-mods/unifieddyes
https://github.com/mt-mods/basic_materials
https://github.com/OgelGames/fakelib
https://github.com/mt-mods/pipeworks
https://github.com/mt-mods/steel
https://github.com/mt-mods/display_modpack
https://github.com/mt-mods/homedecor_modpack
additional_config: |
mtt_nodelist = mineclonia.txt

View File

@@ -1,23 +0,0 @@
name: minetest_game
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@main
- uses: buckaroobanzay/mtt@main
with:
modname: xcompat
git_game_repo: https://github.com/minetest/minetest_game
git_dependencies: |
https://github.com/mt-mods/unifieddyes
https://github.com/mt-mods/basic_materials
https://github.com/OgelGames/fakelib
https://github.com/mt-mods/pipeworks
https://github.com/mt-mods/steel
https://github.com/mt-mods/display_modpack
https://github.com/mt-mods/homedecor_modpack
additional_config: |
mtt_nodelist = minetest.txt

View File

@@ -1,23 +0,0 @@
name: voxelibre
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@main
- uses: buckaroobanzay/mtt@main
with:
modname: xcompat
git_game_repo: https://git.minetest.land/VoxeLibre/VoxeLibre/
git_dependencies: |
https://github.com/mt-mods/unifieddyes
https://github.com/mt-mods/basic_materials
https://github.com/OgelGames/fakelib
https://github.com/mt-mods/pipeworks
https://github.com/mt-mods/steel
https://github.com/mt-mods/display_modpack
https://github.com/mt-mods/homedecor_modpack
additional_config: |
mtt_nodelist = voxelibre.txt

View File

@@ -1,26 +1,22 @@
unused_args = false
allow_defined_top = true
exclude_files = {".luacheckrc"}
globals = {
"minetest",
"core",
"xcompat",
"minetest", "xcompat",
}
read_globals = {
string = {fields = {"split"}},
string = {fields = {"split"}},
table = {fields = {"copy", "getn"}},
"default",
"mcl_sounds",
"ks_sounds",
"nodes_nature",
"fl_stone",
"fl_topsoil",
"fl_trees",
"hades_sounds",
"rp_sounds",
"mtt",
"sounds",
"player_api",
"mcl_player",
"fl_player",
"stairs",
--luac
"math", "table",
-- Builtin
"vector", "ItemStack", "dump", "DIR_DELIM", "VoxelArea", "Settings", "PcgRandom", "VoxelManip", "PseudoRandom",
--mod produced
"default", "mcl_sounds", "ks_sounds", "nodes_nature", "fl_stone", "fl_topsoil", "fl_trees", "hades_sounds", "rp_sounds",
}

View File

@@ -1,7 +1,8 @@
# Sound API
# Xcompat dev docs
## 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.
@@ -21,9 +22,9 @@ where:
* key: string name of the field from the sound api you want to use, for example `node_sound_stone_defaults`
* input: table input of fields you want passed to the key field, used to override specific sounds.
## 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
minetest.register_node(nodename, {
@@ -35,11 +36,6 @@ minetest.register_node(nodename, {
* input: optional table to override some or all of returned values
## Materials API
## 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.
consult `/src/materials.lua` at this time

View File

@@ -1,5 +1,5 @@
MIT Copyright 2021-2025 wsor4035, mt-mods and contributors
MIT Copyright 2021-2024 wsor4035
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

View File

@@ -1,34 +1,15 @@
# XCompat
# xcompat
[![luacheck](https://github.com/mt-mods/xcompat/actions/workflows/luacheck.yml/badge.svg?branch=master)](https://github.com/mt-mods/xcompat/actions/workflows/luacheck.yml)
[![ContentDB](https://content.minetest.net/packages/mt-mods/xcompat/shields/downloads/)](https://content.minetest.net/packages/mt-mods/xcompat/)
a mod that aims to facilitate other mods to be game agnostic by handling sounds and crafting
Provides cross compatibility between games and mods for sounds and crafting materials.
thanks to:
* MisterE, OgelGames, and Blockhead for naming advice/suggestion
* luk3yx, Blockhead, Buckaroo for bouncing ideas on the concept of this mod
Thanks to:
* MisterE, OgelGames, and Blockhead for naming advice/suggestion.
* luk3yx, Blockhead, BuckarooBanzai for bouncing ideas on the concept of this mod.
## Installing
## Usage
clone via git or install via contentdb (soon)
See the respective sub apis doc file in /doc for detailed documentation.
## Dev Docs
## Directly supported games and mods
| Games | Sounds | Materials | Textures | Player | Stairs |
| ----------------- | --------- | --------- | --------- | ------ | ------ |
| Minetest Game | x | x | x | x | x |
| MineClone2 | x | x | | x | |
| Mineclonia | x | x | | x | |
| Hades Revisited | x | x | | | |
| Farlands Reloaded | x | x | x | x | x |
| Exile | x | | | | |
| KSurvive 2 | x | | | | |
| Forgotten Lands | x | | | | |
For functions see /doc/functions.md for the specifics relating to the function
**Mods**
* `basic_materials`
* `mesecons_materials`
* `moreores`
Can be found at /DEV.md

View File

@@ -1,16 +0,0 @@
# Functions API
## `can_interact_with_node(player, pos)`
returns `bool`
checks for the ability to interact with a node via:
* if a player
* owner metadata key
* `protection_bypass`
supports
* minetest game default if present
* else polyfill

View File

@@ -1,12 +0,0 @@
# GameId API
## minetest versions >= 5.7
simply returns `minetest.get_game_info().id`
## minetest versions < 5.7
approximates the gameid value via a hardcoded table of gameid =\> modname,
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
readme for which games are supported

View File

@@ -1,26 +0,0 @@
# Materials API
## Usage
The materials can be accessed anywhere in your mod with `xcompat.materials.material_name`.
Behind the scenes, xcompat 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.
## 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.

View File

@@ -1,21 +0,0 @@
# Player API
## Usage
The player api can be accessed in your script through `xcompat.player`.
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`.
## Note on `xcompat.player.player_attached`
Reading & writing to this object works, but because it's a proxy table it can't
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).

View File

@@ -1,30 +0,0 @@
you can use this via `xcompat.stairs.register(nodename, def)`
an example would be:
```lua
xcompat.stairs.register(
"xcompat_stairs_test:fake_node",
core.registered_nodes["xcompat_stairs_test:fake_node"]
)
```
if the game you are running on isnt supported (see readme),
it falls back to using a polyfill. each backend adds aliases
to the polyfill, mainly so that if we add a future backend
that ran on polyfill, everything keeps working (yay)
at this time stairsplus/moreblocks compatibility/upgrading
isnt supported, however should be added in the future. for
now, in your mod code do something like the following:
```lua
if core.registered_modes("moreblocks") then
--call stairs plus
else
xcompat.stairs.register(node, def)
end
```
that way in the future nothing will break when support is
added and at your convince the first part of the if can be
removed

View File

@@ -1,20 +0,0 @@
# Textures API
## 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`.

View File

@@ -1,2 +0,0 @@
test export-ignore
.github export-ignore

View File

@@ -1,19 +1,10 @@
local modpath = minetest.get_modpath("xcompat")
xcompat = {
modpath = modpath,
sounds = dofile(modpath .. "/src/sounds.lua"),
materials = dofile(modpath .. "/src/materials.lua"),
}
xcompat.gameid = dofile(modpath .. "/src/gameid.lua")
xcompat.utilities = dofile(modpath .. "/src/utilities.lua")
xcompat.sounds = dofile(modpath .. "/src/sounds.lua")
xcompat.materials = dofile(modpath .. "/src/materials.lua")
xcompat.textures = dofile(modpath .. "/src/textures.lua")
xcompat.functions = dofile(modpath .. "/src/functions.lua")
xcompat.player = dofile(modpath .. "/src/player.lua")
xcompat.stairs = dofile(modpath .. "/src/stairs.lua")
local function validate_sound(key)
if key and xcompat.sounds[key] then
return true
@@ -43,10 +34,3 @@ minetest.register_on_mods_loaded(function()
old_reg_node(name, def)
end
end)
dofile(modpath .. "/src/commands.lua")
if minetest.get_modpath("mtt") and mtt.enabled then
-- register tests
dofile(modpath .. "/mtt.lua")
end

View File

@@ -1,3 +1,2 @@
name = xcompat
description = Provides cross compatibility between mods and games for sounds and crafting materials.
optional_depends = default, fl_stone, fl_trees, mcl_sounds, hades_sounds, ks_sounds, nodes_nature, fl_topsoil, fl_trees, mcl_core, farming, x_farming, sounds, mtt, player_api, mcl_player, fl_player, stairs
optional_depends = default, fl_stone, fl_trees, mcl_sounds, hades_sounds, ks_sounds, nodes_nature, fl_topsoil, fl_trees

10
mtt.lua
View File

@@ -1,10 +0,0 @@
-- emerge a part of the world (basic smoketest)
mtt.emerge_area({ x=0, y=0, z=0 }, { x=10, y=10, z=10 })
-- check nodelist
local mtt_nodelist = minetest.settings:get("mtt_nodelist")
if mtt_nodelist then
-- nodelist specified, check if all the required nodes are present
mtt.validate_nodenames(minetest.get_modpath("xcompat") .. "/test/nodelist/" .. mtt_nodelist)
end

View File

@@ -1,76 +0,0 @@
local materials_list = minetest.get_dir_list(xcompat.modpath.."/src/materials", false)
local materials = {}
for _, material in ipairs(materials_list) do
local gameid = material:sub(1, -5)
materials[gameid] = dofile(xcompat.modpath.."/src/materials/"..material)
end
local textures_list = minetest.get_dir_list(xcompat.modpath.."/src/textures", false)
local textures = {}
for _, texture in ipairs(textures_list) do
local gameid = texture:sub(1, -5)
textures[gameid] = dofile(xcompat.modpath.."/src/textures/"..texture)
end
local sounds_list = minetest.get_dir_list(xcompat.modpath.."/src/sounds", false)
local sounds = {}
for _, sound in ipairs(sounds_list) do
local gameid = sound:sub(1, -5)
sounds[gameid] = dofile(xcompat.modpath.."/src/sounds/"..sound)
end
minetest.register_chatcommand("xcompat_test_materials", {
description = "Test materials",
privs = {server=true},
func = function(name, _)
local reference_materials = materials["minetest"]
for gameid, game_materials in pairs(materials) do
for material, _ in pairs(reference_materials) do
if not game_materials[material] then
minetest.chat_send_player(name, "Missing material: "..material.." in game: "..gameid)
end
end
end
minetest.chat_send_player(name, "Materials test complete")
end
})
--WARNING: only handles top level of table currently
--TODO: handle nested tables
minetest.register_chatcommand("xcompat_test_textures", {
description = "Test textures",
privs = {server=true},
func = function(name, _)
local reference_textures = textures["xcompat_agnostic"]
for gameid, game_textures in pairs(textures) do
for texture, _ in pairs(reference_textures) do
if not game_textures[texture] then
minetest.chat_send_player(name, "Missing texture: "..texture.." in game: "..gameid)
end
end
end
minetest.chat_send_player(name, "Textures test complete")
end
})
minetest.register_chatcommand("xcompat_test_sounds", {
description = "Test sounds",
privs = {server=true},
func = function(name, _)
local reference_sounds = sounds["xcompat_agnostic"]
for gameid, game_sounds in pairs(sounds) do
for sound, _ in pairs(reference_sounds) do
if not game_sounds[sound] then
minetest.chat_send_player(name, "Missing sound: "..sound.." in game: "..gameid)
end
end
end
minetest.chat_send_player(name, "Sounds test complete")
end
})

View File

@@ -1,55 +0,0 @@
local functions = {}
function functions.can_interact_with_node(player, pos)
--if we have default, use it
if default then return default.can_interact_with_node(player, pos) end
local owner = minetest.get_meta(pos):get_string("owner") or ""
--check that we have a valid player
if not player or not player:is_player() then return false end
--check there privs for compat with areas
if minetest.check_player_privs(player, "protection_bypass") then return true end
--if a normal player, check if they are the owner
if owner == "" or owner == player:get_player_name() then return true end
return false
end
function functions.sapling_on_place(
itemstack, player, pointed_thing, sapling_name, minp_relative, maxp_relative, interval
)
if default then
return default.sapling_on_place(
itemstack, player, pointed_thing, sapling_name, minp_relative, maxp_relative, interval
)
end
local pos = pointed_thing.above
local pname = player and player:get_player_name() or ""
local below_node = minetest.get_node_or_nil(pointed_thing.under)
if below_node and minetest.registered_items[below_node.name] and
minetest.registered_items[below_node.name].buildable_to then
pos = pointed_thing.under
end
--check protection
if minetest.is_protected(pos, pname) then
minetest.record_protection_violation(pos, pname)
return itemstack
end
--actually place sapling
minetest.set_node(pos, {name = sapling_name})
--handle survival
if not minetest.is_creative_enabled(pname) then
itemstack:take_item()
end
return itemstack
end
return functions

View File

@@ -1,33 +0,0 @@
local game_alias = {
mineclone2 = "mineclonia",
}
local game_modnames = {
mineclonia = "mcl_core",
farlands_reloaded = "fl_core",
minetest = "default",
hades = "hades_core",
exile = "exile_env_sounds",
ksurvive2 = "ks_metals",
}
local gameid = "xcompat_unknown_gameid"
if type(minetest.get_game_info) == "function" then
gameid = minetest.get_game_info().id
else
for game, modname in pairs(game_modnames) do
if minetest.get_modpath(modname) then
gameid = game
break
end
end
end
--for games that are similar/derviatives of other games
if game_alias[gameid] then gameid = game_alias[gameid] end
--while minetest game derviates are not supported, we can still try to detect them
if minetest.get_modpath("default") then gameid = "minetest" end
return gameid

View File

@@ -1,8 +1,242 @@
local filename = xcompat.gameid
local materials = {
dirt = "default:dirt",
sand = "default:sand",
gravel = "default:gravel",
copper_ingot = "default:copper_ingot",
steel_ingot = "default:steel_ingot",
gold_ingot = "default:gold_ingot",
tin_ingot = "default:tin_ingot",
mese = "default:mese",
mese_crystal = "default:mese_crystal",
mese_crystal_fragment = "default:mese_crystal_fragment",
torch = "default:torch",
diamond = "default:diamond",
clay_lump = "default:clay_lump",
water_bucket = "bucket:bucket_water",
empty_bucket = "bucket:bucket_empty",
dye_dark_grey = "dye:dark_grey",
dye_black = "dye:black",
dye_white = "dye:white",
dye_green = "dye:green",
dye_red = "dye:red",
dye_yellow = "dye:yellow",
dye_brown = "dye:brown",
dye_blue = "dye:blue",
dye_violet = "dye:violet",
dye_grey = "dye:grey",
dye_dark_green = "dye:dark_green",
dye_orange = "dye:orange",
dye_pink = "dye:pink",
silicon = "mesecons_materials:silicon",
string = "farming:string",
paper = "default:paper",
book = "default:book",
iron_lump = "default:iron_lump",
wool_grey = "wool:grey",
wool_green = "wool:green",
wool_dark_green = "wool:dark_green",
wool_brown = "wool:brown",
wool_black = "wool:black",
wool_white = "wool:white",
slab_stone = "stairs:slab_stone",
slab_wood = "stairs:slab_wood",
glass = "default:glass",
glass_block = "default:glass",
glass_bottle = "vessels:glass_bottle",
coal_lump = "default:coal_lump",
stone = "default:stone",
desert_stone = "default:desert_stone",
desert_sand = "default:desert_sand",
chest = "default:chest",
cobble = "default:cobble",
brick = "default:brick",
obsidian_glass = "default:obsidian_glass",
}
--if we dont have a materials file for the game, use minetest
if not xcompat.utilities.file_exists(xcompat.modpath .. "/src/materials/" .. filename .. ".lua") then
filename = "minetest"
if minetest.get_modpath("moreores") then
materials.silver_ingot = "moreores:silver_ingot"
end
return dofile(xcompat.modpath .. "/src/materials/" .. filename .. ".lua")
if minetest.get_modpath("mcl_core") then
materials = {
dirt = "mcl_core:dirt",
sand = "mcl_core:sand",
gravel = "mcl_core:gravel",
copper_ingot = "mcl_copper:copper_ingot",
steel_ingot = "mcl_core:iron_ingot",
gold_ingot = "mcl_core:gold_ingot",
tin_ingot = "mcl_core:iron_ingot",
mese = "mesecons_torch:redstoneblock",
mese_crystal = "mesecons:redstone",
mese_crystal_fragment = "mcl_core:iron_ingot",
torch = "mcl_torches:torch",
diamond = "mcl_core:diamond",
clay_lump = "default:clay_lump",
water_bucket = "mcl_buckets:bucket:bucket_water",
empty_bucket = "mcl_buckets:bucket_empty",
dye_dark_grey = "mcl_dyes:dark_grey",
dye_black = "mcl_dyes:black",
dye_white = "mcl_dyes:white",
dye_green = "mcl_dyes:green",
dye_red = "mcl_dyes:red",
dye_yellow = "mcl_dyes:yellow",
dye_brown = "mcl_dyes:brown",
dye_blue = "mcl_dyes:blue",
dye_violet = "mcl_dyes:violet",
dye_grey = "mcl_dyes:grey",
dye_dark_green = "mcl_dyes:dark_green",
dye_orange = "mcl_dyes:orange",
dye_pink = "mcl_dyes:pink",
silicon = "mcl_core:iron_ingot",
string = "mcl_mobitems:string",
paper = "mcl_core:paper",
book = "mcl_core:book",
iron_lump = "mcl_core:stone_with_iron",
wool_grey = "mcl_wool:grey",
wool_green = "mcl_wool:green",
wool_dark_green = "mcl_wool:dark_green",
wool_brown = "mcl_wool:brown",
wool_black = "mcl_wool:black",
wool_white = "mcl_wool:white",
slab_stone = "mcl_stairs:slab_stone",
slab_wood = "mcl_stairs:slab_wood",
glass = "mcl_core:glass",
glass_block = "mcl_core:glass",
glass_bottle = "mcl_core:glass_bottle",
coal_lump = "mcl_core:coal",
stone = "mcl_core:stone",
desert_stone = "mcl_core:redsandstone",
desert_sand = "mcl_core:sand",
chest = "mcl_chests:chest",
cobble = "mcl_core:cobble",
brick = "mcl_core:brick",
}
elseif minetest.get_modpath("fl_ores") and minetest.get_modpath("fl_stone") then
materials = {
dirt = "fl_topsoil:dirt",
sand = "fl_stone:sand",
gravel = "fl_topsoil:gravel",
steel_ingot = "fl_ores:iron_ingot",
gold_ingot = "fl_ores:gold_ingot",
mese = "fl_ores:iron_ingot",
mese_crystal = "fl_ores:iron_ingot",
mese_crystal_fragment = "fl_ores:iron_ingot",
torch = "fl_light_sources:torch",
diamond = "fl_ores:diamond",
clay_lump = "fl_bricks:clay_lump",
water_bucket = "fl_bucket:bucket_water",
empty_bucket = "fl_bucket:bucket",
dye_dark_grey = "fl_dyes:dark_grey_dye",
dye_black = "fl_dyes:black_dye",
dye_white = "fl_dyes:white_dye",
dye_green = "fl_dyes:green_dye",
dye_red = "fl_dyes:red_dye",
dye_yellow = "fl_dyes:yellow_dye",
dye_brown = "fl_dyes:brown_dye",
dye_blue = "fl_dyes:blue_dye",
dye_violet = "fl_dyes:violet_dye",
dye_grey = "fl_dyes:grey_dye",
dye_dark_green = "fl_dyes:dark_green_dye",
dye_orange = "fl_dyes:orange_dye",
dye_pink = "fl_dyes:pink_dye",
copper_ingot = "fl_ores:copper_ingot",
tin_ingot = "fl_ores:tin_ingot",
silver_ingot = "fl_ores:iron_ingot",
silicon = "mesecons_materials:silicon",
string = "fl_plantlife:oxeye_daisy",
paper = "basic_materials:plastic_sheet",
iron_lump = "fl_ores:iron_ore",
wool_grey = "",
wool_green = "",
wool_dark_green = "",
wool_brown = "",
wool_black = "",
wool_white = "",
slab_stone = "fl_stone:stone_slab",
slab_wood = "fl_trees:apple_plank_slab",
glass = "fl_glass:framed_glass",
glass_block = "fl_glass:framed_glass",
glass_bottle = "fl_bottles:bottle",
coal_lump = "fl_ores:coal_ore",
stone = "fl_stone:stone",
desert_stone = "fl_stone:desert_stone",
desert_sand = "fl_stone:desert_sand",
chest = "fl_storage:wood_chest",
cobble = "fl_stone:stone_rubble",
brick = "",
}
elseif minetest.get_modpath("hades_core") then
materials = {
sand = "hades_core:fertile_sand",
gravel = "hades_core:gravel",
copper_ingot = "hades_core:copper_ingot",
steel_ingot = "hades_core:steel_ingot",
gold_ingot = "hades_core:gold_ingot",
tin_ingot = "hades_core:tin_ingot",
silver_ingot = "--unknown--",
mese = "hades_core:mese",
mese_crystal = "hades_core:mese_crystal",
mese_crystal_fragment = "hades_core:mese_crystal_fragment",
torch = "hades_torches:torch",
diamond = "hades_core:diamond",
clay_lump = "hades_core:clay_lump",
clay_brick = "hades_core:clay_brick",
--[[
Since hades doesnt have buckets or water for the user,
using dirt from near water to pull the water out
]]
water_bucket = "hades_core:dirt",
empty_bucket = "hades_core:fertile_sand",
dye_dark_grey = "dye:dark_grey",
dye_black = "dye:black",
dye_white = "dye:white",
dye_green = "dye:green",
dye_red = "dye:red",
dye_yellow = "dye:yellow",
dye_brown = "dye:brown",
dye_blue = "dye:blue",
dye_violet = "dye:violet",
dye_grey = "dye:grey",
dye_dark_green = "dye:dark_green",
dye_orange = "dye:orange",
dye_pink = "dye:pink",
silicon = "hades_materials:silicon",
string = "hades_farming:string",
paper = "hades_core:paper",
book = "hades_core:book",
iron_lump = "hades_core:iron_lump",
wool_grey = "wool:grey",
wool_green = "wool:green",
wool_dark_green = "wool:dark_green",
wool_brown = "wool:brown",
wool_black = "wool:black",
wool_white = "wool:white",
slab_stone = "stairs:slab_stone",
slab_wood = "stairs:slab_wood",
glass = "hades_core:glass",
glass_block = "hades_core:glass",
glass_bottle = "vessels:glass_bottle",
obsidian_glass = "hades_core:obsidian_glass",
coal_lump = "hades_core:coal_lump",
stone = "hades_core:stone",
desert_stone = "hades_core:stone_baked",
desert_sand = "hades_core:volcanic_sand",
chest = "hades_chests:chest";
cobble = "hades_core:cobble",
brick = "hades_core:brick"
}
if minetest.get_modpath("hades_bucket") then
materials["water_bucket"] = "hades_bucket:bucket_water"
materials["empty_bucket"] = "hades_bucket:bucket_empty"
end
if minetest.get_modpath("hades_extraores") then
materials["silver_ingot"] = "hades_extraores:silver_ingot"
end
if minetest.get_modpath("hades_default") then
materials.desert_sand = "hades_default:desert_sand"
end
end
return materials

View File

@@ -1,94 +0,0 @@
local materials = {
sand = "fl_stone:sand",
sandstone = "fl_stone:sandstone",
gravel = "fl_topsoil:gravel",
flint = "fl_topsoil:flint",
copper_ingot = "fl_ores:copper_ingot",
steel_ingot = "fl_ores:iron_ingot",
gold_ingot = "fl_ores:gold_ingot",
tin_ingot = "fl_ores:tin_ingot",
copper_block = "fl_ores:copper_block",
steel_block = "fl_ores:iron_block",
gold_block = "fl_ores:gold_block",
tin_block = "fl_ores:tin_block",
axe_steel = "fl_tools:steel_axe",
axe_diamond = "fl_tools:diamond_axe",
axe_bronze = "fl_tools:bronze_axe",
axe_stone = "fl_tools:stone_axe",
axe_wood = "fl_tools:wood_axe",
pick_steel = "fl_tools:steel_pick",
mese = "fl_ores:iron_ingot",
mese_crystal = "fl_ores:iron_ingot",
mese_crystal_fragment = "fl_ores:iron_ingot",
torch = "fl_light_sources:torch",
diamond = "fl_ores:diamond",
clay_lump = "fl_bricks:clay_lump",
water_bucket = "fl_bucket:bucket_water",
empty_bucket = "fl_bucket:bucket",
dye_dark_grey = "fl_dyes:dark_grey_dye",
dye_black = "fl_dyes:black_dye",
dye_white = "fl_dyes:white_dye",
dye_green = "fl_dyes:green_dye",
dye_red = "fl_dyes:red_dye",
dye_yellow = "fl_dyes:yellow_dye",
dye_brown = "fl_dyes:brown_dye",
dye_blue = "fl_dyes:blue_dye",
dye_violet = "fl_dyes:violet_dye",
dye_grey = "fl_dyes:grey_dye",
dye_dark_green = "fl_dyes:dark_green_dye",
dye_orange = "fl_dyes:orange_dye",
dye_pink = "fl_dyes:pink_dye",
dye_cyan = "fl_dyes:cyan_dye",
dye_magenta = "fl_dyes:magenta_dye",
silver_ingot = "fl_ores:iron_ingot",
silicon = "mesecons_materials:silicon",
string = "fl_plantlife:oxeye_daisy",
paper = "",
book = "",
iron_lump = "fl_ores:iron_ore",
wool_grey = "",
wool_green = "",
wool_dark_green = "",
wool_brown = "",
wool_black = "",
wool_white = "",
slab_stone = "fl_stone:stone_slab",
slab_wood = "fl_trees:apple_plank_slab",
glass = "fl_glass:framed_glass",
glass_block = "fl_glass:framed_glass",
glass_bottle = "fl_bottles:bottle",
coal_lump = "fl_ores:coal_ore",
stone = "fl_stone:stone",
desert_stone = "fl_stone:desert_stone",
desert_sand = "fl_stone:desert_sand",
chest = "fl_storage:wood_chest",
cobble = "fl_stone:stone_rubble",
brick = "",
obsidian_glass = "",
water_source = "fl_liquids:water_source",
water_flowing = "fl_liquids:water_flowing",
dirt = "fl_stone:dirt",
dirt_with_grass = "fl_topsoil:dirt_with_grass",
apple_leaves = "fl_trees:apple_leaves",
apple_log = "fl_trees:apple_trunk",
apple_planks = "fl_trees:apple_plank",
birch_leaves = "fl_trees:aspen_leaves",
birch_log = "fl_trees:aspen_trunk",
birch_planks = "fl_trees:aspen_plank",
jungle_leaves = "fl_trees:jungletree_leaves",
bowl = "",
stick = "fl_trees:stick",
obsidian = "",
}
if minetest.get_modpath("basic_materials") then
materials.paper = "basic_materials:plastic_sheet"
end
if minetest.registered_items["farming:bowl"] then
materials.bowl = "farming:bowl"
elseif minetest.get_modpath("x_farming") then
materials.bowl = "x_farming:bowl"
end
return materials

View File

@@ -1,108 +0,0 @@
local materials = {
sand = "hades_core:fertile_sand",
sandstone = "hades_core:sandstone",
gravel = "hades_core:gravel",
flint = "",
copper_ingot = "hades_core:copper_ingot",
steel_ingot = "hades_core:steel_ingot",
gold_ingot = "hades_core:gold_ingot",
tin_ingot = "hades_core:tin_ingot",
silver_ingot = "--unknown--",
copper_block = "hades_core:copperblock",
steel_block = "hades_core:steelblock",
gold_block = "hades_core:goldblock",
tin_block = "hades_core:tinblock",
axe_steel = "hades_core:axe_steel",
axe_diamond = "hades_core:axe_diamond",
axe_bronze = "hades_core:axe_bronze",
axe_stone = "hades_core:axe_stone",
axe_wood = "hades_core:axe_wood",
pick_steel = "hades_core:pick_steel",
mese = "hades_core:mese",
mese_crystal = "hades_core:mese_crystal",
mese_crystal_fragment = "hades_core:mese_crystal_fragment",
torch = "hades_torches:torch",
diamond = "hades_core:diamond",
clay_lump = "hades_core:clay_lump",
clay_brick = "hades_core:clay_brick",
--[[
Since hades doesnt have buckets or water for the user,
using dirt from near water to pull the water out
]]
water_bucket = "hades_core:dirt",
empty_bucket = "hades_core:fertile_sand",
dye_dark_grey = "dye:dark_grey",
dye_black = "dye:black",
dye_white = "dye:white",
dye_green = "dye:green",
dye_red = "dye:red",
dye_yellow = "dye:yellow",
dye_brown = "dye:brown",
dye_blue = "dye:blue",
dye_violet = "dye:violet",
dye_grey = "dye:grey",
dye_dark_green = "dye:dark_green",
dye_orange = "dye:orange",
dye_pink = "dye:pink",
dye_cyan = "dye:cyan",
dye_magenta = "dye:magenta",
silicon = "hades_materials:silicon",
string = "hades_farming:string",
paper = "hades_core:paper",
book = "hades_core:book",
iron_lump = "hades_core:iron_lump",
wool_grey = "wool:grey",
wool_green = "wool:green",
wool_dark_green = "wool:dark_green",
wool_brown = "wool:brown",
wool_black = "wool:black",
wool_white = "wool:white",
slab_stone = "stairs:slab_stone",
slab_wood = "stairs:slab_wood",
glass = "hades_core:glass",
glass_block = "hades_core:glass",
glass_bottle = "vessels:glass_bottle",
obsidian_glass = "hades_core:obsidian_glass",
coal_lump = "hades_core:coal_lump",
stone = "hades_core:stone",
desert_stone = "hades_core:stone_baked",
desert_sand = "hades_core:volcanic_sand",
chest = "hades_chests:chest";
cobble = "hades_core:cobble",
brick = "hades_core:brick",
water_source = "hades_core:water_source",
water_flowing = "hades_core:water_flowing",
dirt = "hades_core:dirt",
dirt_with_grass = "hades_core:dirt_with_grass",
apple_leaves = "hades_trees:leaves",
apple_log = "hades_trees:tree",
apple_planks = "hades_trees:wood",
birch_leaves = "hades_core:birch_leaves",
birch_log = "hades_trees:birch_tree",
birch_planks = "hades_trees:cream_wood",
jungle_leaves = "hades_trees:jungle_leaves",
--hades has no bowl but you get plate on eat so makes most sense?
bowl = "hades_food:plate",
stick = "hades_core:stick",
obsidian = "hades_core:obsidian",
}
if minetest.get_modpath("hades_bucket") then
materials["water_bucket"] = "hades_bucket:bucket_water"
materials["empty_bucket"] = "hades_bucket:bucket_empty"
end
if minetest.get_modpath("hades_extraores") then
materials["silver_ingot"] = "hades_extraores:silver_ingot"
materials["aluminum_ingot"] = "hades_extraores:aluminum_ingot"
end
if minetest.get_modpath("hades_default") then
materials.desert_sand = "hades_default:desert_sand"
end
if minetest.get_modpath("hades_technic") then
materials.lead_ingot = "hades_technic:lead_ingot"
materials.carbon_steel_ingot = "hades_technic:carbon_steel_ingot"
materials.stainless_steel_ingot = "hades_technic:stainless_steel_ingot"
end
return materials

View File

@@ -1,118 +0,0 @@
--note this file handles mineclonia, mineclone2, and its rename voxelibre
local mcl_dyes = minetest.get_modpath("mcl_dyes")
local mcl_dyes_name = mcl_dyes and "mcl_dyes" or "mcl_dye"
local materials = {
sand = "mcl_core:sand",
sandstone = "mcl_core:sandstone",
gravel = "mcl_core:gravel",
flint = "mcl_core:flint",
copper_ingot = "mcl_copper:copper_ingot",
steel_ingot = "mcl_core:iron_ingot",
gold_ingot = "mcl_core:gold_ingot",
tin_ingot = "mcl_core:iron_ingot",
copper_block = "mcl_copper:block",
steel_block = "mcl_core:ironblock",
gold_block = "mcl_core:goldblock",
tin_block = "mcl_core:ironblock",
axe_steel = "mcl_core:axe_steel",
axe_diamond = "mcl_core:axe_diamond",
axe_bronze = "mcl_core:axe_bronze",
axe_stone = "mcl_core:axe_stone",
axe_wood = "mcl_core:axe_wood",
pick_steel = "mcl_core:pick_steel",
torch = "mcl_torches:torch",
diamond = "mcl_core:diamond",
clay_lump = "mcl_core:clay_lump",
water_bucket = "mcl_buckets:bucket_water",
empty_bucket = "mcl_buckets:bucket_empty",
dye_dark_grey = mcl_dyes_name .. ":dark_grey",
dye_black = mcl_dyes_name .. ":black",
dye_white = mcl_dyes_name .. ":white",
dye_green = mcl_dyes_name .. ":green",
dye_red = mcl_dyes_name .. ":red",
dye_yellow = mcl_dyes_name .. ":yellow",
dye_brown = mcl_dyes_name .. ":brown",
dye_blue = mcl_dyes_name .. ":blue",
dye_violet = mcl_dyes_name .. ":violet",
dye_grey = mcl_dyes_name .. ":grey",
dye_dark_green = mcl_dyes_name .. ":dark_green",
dye_orange = mcl_dyes_name .. ":orange",
dye_pink = mcl_dyes_name .. ":pink",
dye_cyan = mcl_dyes_name .. ":cyan",
dye_magenta = mcl_dyes_name .. ":magenta",
silicon = "mcl_core:iron_ingot",
string = "mcl_mobitems:string",
paper = "mcl_core:paper",
book = "mcl_books:book",
iron_lump = "mcl_raw_ores:raw_iron",
wool_grey = "mcl_wool:grey",
wool_green = "mcl_wool:green",
wool_dark_green = "mcl_wool:dark_green",
wool_brown = "mcl_wool:brown",
wool_black = "mcl_wool:black",
wool_white = "mcl_wool:white",
slab_stone = "mcl_stairs:slab_stone",
slab_wood = "mcl_stairs:slab_wood",
glass = "mcl_core:glass",
glass_block = "mcl_core:glass",
glass_bottle = "mcl_potions:glass_bottle",
coal_lump = "mcl_core:coal_lump",
stone = "mcl_core:stone",
desert_stone = "mcl_core:redsandstone",
desert_sand = "mcl_core:sand",
chest = "mcl_chests:chest",
cobble = "mcl_core:cobble",
brick = "mcl_core:brick",
obsidian_glass = "",
water_source = "mcl_core:water_source",
water_flowing = "mcl_core:water_flowing",
dirt = "mcl_core:dirt",
dirt_with_grass = "mcl_core:dirt_with_grass",
bowl = "mcl_core:bowl",
stick = "mcl_core:stick",
obsidian = "mcl_core:obsidian",
}
if minetest.get_modpath("mcl_redstone") then
materials.mese = "mcl_redstone_torch:redstoneblock"
materials.mese_crystal = "mcl_redstone:redstone"
materials.mese_crystal_fragment = "mcl_core:iron_ingot"
else
materials.mese = "mesecons_torch:redstoneblock"
materials.mese_crystal = "mesecons:redstone"
materials.mese_crystal_fragment = "mcl_core:iron_ingot"
end
if minetest.get_modpath("mcl_trees") then
materials.apple_leaves = "mcl_trees:leaves_oak"
materials.apple_log = "mcl_trees:tree_oak"
materials.apple_planks = "mcl_trees:wood_oak"
materials.birch_leaves = "mcl_trees:leaves_birch"
materials.birch_log = "mcl_trees:tree_birch"
materials.birch_planks = "mcl_trees:wood_birch"
materials.jungle_leaves = "mcl_trees:leaves_jungle"
else
materials.apple_leaves = "mcl_core:leaves"
materials.apple_log = "mcl_core:tree"
materials.apple_planks = "mcl_core:wood"
materials.birch_leaves = "mcl_core:birchleaves"
materials.birch_log = "mcl_core:birchtree"
materials.birch_planks = "mcl_core:birchwood"
materials.jungle_leaves = "mcl_core:jungleleaves"
end
if minetest.get_modpath("moreores") then
materials.tin_ingot = "moreores:tin_ingot"
materials.tin_block = "moreores:tin_block"
materials.silver_ingot = "moreores:silver_ingot"
end
if minetest.get_modpath("technic") then
materials.lead_ingot = "technic:lead_ingot"
materials.carbon_steel_ingot = "technic:carbon_steel_ingot"
materials.stainless_steel_ingot = "technic:stainless_steel_ingot"
end
return materials

View File

@@ -1,107 +0,0 @@
local materials = {
sand = "default:sand",
sandstone = "default:sandstone",
gravel = "default:gravel",
flint = "default:flint",
copper_ingot = "default:copper_ingot",
steel_ingot = "default:steel_ingot",
gold_ingot = "default:gold_ingot",
tin_ingot = "default:tin_ingot",
copper_block = "default:copperblock",
steel_block = "default:steelblock",
gold_block = "default:goldblock",
tin_block = "default:tinblock",
axe_steel = "default:axe_steel",
axe_diamond = "default:axe_diamond",
axe_bronze = "default:axe_bronze",
axe_stone = "default:axe_stone",
axe_wood = "default:axe_wood",
pick_steel = "default:pick_steel",
mese = "default:mese",
mese_crystal = "default:mese_crystal",
mese_crystal_fragment = "default:mese_crystal_fragment",
torch = "default:torch",
diamond = "default:diamond",
clay_lump = "default:clay_lump",
water_bucket = "bucket:bucket_water",
empty_bucket = "bucket:bucket_empty",
dye_dark_grey = "dye:dark_grey",
dye_black = "dye:black",
dye_white = "dye:white",
dye_green = "dye:green",
dye_red = "dye:red",
dye_yellow = "dye:yellow",
dye_brown = "dye:brown",
dye_blue = "dye:blue",
dye_violet = "dye:violet",
dye_grey = "dye:grey",
dye_dark_green = "dye:dark_green",
dye_orange = "dye:orange",
dye_pink = "dye:pink",
dye_cyan = "dye:cyan",
dye_magenta = "dye:magenta",
silicon = "mesecons_materials:silicon",
string = "farming:string",
paper = "default:paper",
book = "default:book",
iron_lump = "default:iron_lump",
wool_grey = "wool:grey",
wool_green = "wool:green",
wool_dark_green = "wool:dark_green",
wool_brown = "wool:brown",
wool_black = "wool:black",
wool_white = "wool:white",
slab_stone = "stairs:slab_stone",
slab_wood = "stairs:slab_wood",
glass = "default:glass",
glass_block = "default:glass",
glass_bottle = "vessels:glass_bottle",
coal_lump = "default:coal_lump",
stone = "default:stone",
desert_stone = "default:desert_stone",
desert_sand = "default:desert_sand",
chest = "default:chest",
cobble = "default:cobble",
brick = "default:brick",
obsidian_glass = "default:obsidian_glass",
water_source = "default:water_source",
water_flowing = "default:water_flowing",
dirt = "default:dirt",
dirt_with_grass = "default:dirt_with_grass",
apple_leaves = "default:leaves",
apple_log = "default:tree",
apple_planks = "default:wood",
birch_leaves = "default:aspen_leaves",
birch_log = "default:aspen_tree",
birch_planks = "default:aspen_wood",
jungle_leaves = "default:jungleleaves",
bowl = "",
stick = "default:stick",
obsidian = "default:obsidian",
}
if minetest.registered_items["farming:bowl"] then
materials.bowl = "farming:bowl"
elseif minetest.get_modpath("x_farming") then
materials.bowl = "x_farming:bowl"
end
if minetest.get_modpath("moreores") then
materials.silver_ingot = "moreores:silver_ingot"
end
if minetest.get_modpath("technic") then
materials.lead_ingot = "technic:lead_ingot"
materials.carbon_steel_ingot = "technic:carbon_steel_ingot"
materials.stainless_steel_ingot = "technic:stainless_steel_ingot"
end
if minetest.get_modpath("aloz") then
materials.aluminum_ingot = "aloz:aluminum_ingot"
end
if minetest.get_modpath("techage") then
materials.aluminum_ingot = "techage:aluminum"
end
return materials

View File

@@ -1,8 +0,0 @@
local filename = xcompat.gameid
--if we dont have a player file for the game, use minetest
if not xcompat.utilities.file_exists(xcompat.modpath .. "/src/player/" .. filename .. ".lua") then
filename = "xcompat_agnostic"
end
return dofile(xcompat.modpath .. "/src/player/" .. filename .. ".lua")

View File

@@ -1,51 +0,0 @@
local papi = {}
local models = {}
function papi.register_model(name, def)
models[name] = def
end
function papi.set_model(player, model_name)
local model = models[model_name]
if not model then return end
player:set_properties({
mesh = model_name,
textures = model.textures,
visual = "mesh",
visual_size = model.visual_size,
stepheight = model.stepheight
})
end
function papi.get_animation(_)
--stub to keep from crashing
end
function papi.get_textures(player)
return player:get_properties().textures
end
function papi.set_textures(player, textures)
player:set_properties({textures = textures})
end
function papi.set_animation(player, anim_name, speed, loop)
player:set_animation(fl_player.animations[anim_name], speed, 0, loop)
end
local metatable = {
__index = function (_, key)
return fl_player.ignore[key]
end,
__newindex = function (_, key, value)
rawset(fl_player.ignore, key, value)
end
}
papi.player_attached = {}
setmetatable(papi.player_attached, metatable)
return papi

View File

@@ -1,40 +0,0 @@
local papi = {}
function papi.register_model(name, def)
return mcl_player.player_register_model(name, def)
end
function papi.set_model(player, model)
return mcl_player.player_set_model(player, model)
end
function papi.get_animation(player)
return mcl_player.player_get_animation(player)
end
function papi.get_textures(player)
return player:get_properties().textures
end
function papi.set_textures(player, textures)
player:set_properties({textures = textures})
end
function papi.set_animation(player, anim_name, speed, _)
return mcl_player.player_set_animation(player, anim_name, speed)
end
local metatable = {
__index = function (_, key)
return mcl_player.player_attached[key]
end,
__newindex = function (_, key, value)
rawset(mcl_player.player_attached, key, value)
end
}
papi.player_attached = {}
setmetatable(papi.player_attached, metatable)
return papi

View File

@@ -1,41 +0,0 @@
local papi = {}
function papi.register_model(name, def)
return player_api.register_model(name, def)
end
function papi.set_model(player, model)
return player_api.set_model(player, model)
end
function papi.get_animation(player)
return player_api.get_animation(player)
end
function papi.get_textures(player)
return player_api.get_textures(player)
end
function papi.set_textures(player, texture)
return player_api.set_textures(player, texture)
end
function papi.set_animation(player, anim_name, speed, loop)
return player_api.set_animation(player, anim_name, speed, loop)
end
local metatable = {
__index = function (_, key)
return player_api.player_attached[key]
end,
__newindex = function (_, key, value)
rawset(player_api.player_attached, key, value)
end
}
papi.player_attached = {}
setmetatable(papi.player_attached, metatable)
return papi

View File

@@ -1,41 +0,0 @@
local papi = {}
local models = {}
function papi.register_model(name, def)
models[name] = def
end
function papi.set_model(player, model_name)
local model = models[model_name]
if not model then return end
player:set_properties({
mesh = model_name,
textures = model.textures,
visual = "mesh",
visual_size = model.visual_size,
stepheight = model.stepheight
})
end
function papi.get_animation(_)
--stub to keep from crashing
end
function papi.get_textures(player)
return player:get_properties().textures
end
function papi.set_textures(player, textures)
player:set_properties({textures = textures})
end
function papi.set_animation(_, _, _, _)
--stub to keep from crashing
end
--nothing to do here as we have no globalstep .....that we know about anyways
papi.player_attached = {}
return papi

View File

@@ -1,8 +1,297 @@
local filename = xcompat.gameid
local sound_api = {}
--if we dont have a materials file for the game, use minetest
if not xcompat.utilities.file_exists(xcompat.modpath .. "/src/sounds/" .. filename .. ".lua") then
filename = "xcompat_agnostic"
--convert some games for api usage
--ks_sounds conversion
--currently loggy and bedrock are ignored
local ks = {}
function ks.node_sound_defaults(table)
table = table or {}
table.footstep = table.footstep or ks_sounds.generalnode_sounds.footstep
table.dug = table.dug or ks_sounds.generalnode_sounds.dug
table.dig = table.dig or ks_sounds.generalnode_sounds.dig
table.place = table.place or ks_sounds.generalnode_sounds.place
return table
end
return dofile(xcompat.modpath .. "/src/sounds/" .. filename .. ".lua")
function ks.node_sound_wood_defaults(table)
table = table or {}
table.footstep = table.footstep or ks_sounds.woodennode_sounds.footstep
table.dug = table.dug or ks_sounds.woodennode_sounds.dug
table.dig = table.dig or ks_sounds.woodennode_sounds.dig
table.place = table.place or ks_sounds.woodennode_sounds.place
ks.node_sound_defaults(table)
return table
end
function ks.node_sound_leaves_defaults(table)
table = table or {}
table.footstep = table.footstep or ks_sounds.leafynode_sounds.footstep
table.dug = table.dug or ks_sounds.leafynode_sounds.dug
table.dig = table.dig or ks_sounds.leafynode_sounds.dig
table.place = table.place or ks_sounds.leafynode_sounds.place
ks.node_sound_defaults(table)
return table
end
function ks.node_sound_snow_defaults(table)
table = table or {}
table.footstep = table.footstep or ks_sounds.snowynode_sounds.footstep
table.dug = table.dug or ks_sounds.snowynode_sounds.dug
table.dig = table.dig or ks_sounds.snowynode_sounds.dig
table.place = table.place or ks_sounds.snowynode_sounds.place
ks.node_sound_defaults(table)
return table
end
--api
function sound_api.node_sound_default(table)
if minetest.get_modpath("default") then
return default.node_sound_defaults(table)
elseif minetest.get_modpath("mcl_sounds") then
return mcl_sounds.node_sound_defaults(table)
elseif minetest.get_modpath("ks_sounds") then
return ks.node_sound_default(table)
elseif minetest.get_modpath("nodes_nature") then
return nodes_nature.node_sound_default(table)
elseif minetest.get_modpath("hades_sounds") then
return hades_sounds.node_sound_defaults(table)
elseif minetest.get_modpath("rp_sounds") then
return rp_sounds.node_sound_defaults(table)
else
return table
end
end
function sound_api.node_sound_stone_defaults(table)
if minetest.get_modpath("default") then
return default.node_sound_stone_defaults(table)
elseif minetest.get_modpath("mcl_sounds") then
return mcl_sounds.node_sound_stone_defaults(table)
elseif minetest.get_modpath("nodes_nature") then
return nodes_nature.node_sound_stone_defaults(table)
elseif minetest.get_modpath("fl_stone") then
return fl_stone.sounds.stone(table)
elseif minetest.get_modpath("hades_sounds") then
return hades_sounds.node_sound_stone_defaults(table)
elseif minetest.get_modpath("rp_sounds") then
return rp_sounds.node_sound_stone_defaults(table)
else
return table
end
end
function sound_api.node_sound_dirt_defaults(table)
if minetest.get_modpath("default") then
return default.node_sound_dirt_defaults(table)
elseif minetest.get_modpath("mcl_sounds") then
return mcl_sounds.node_sound_dirt_defaults(table)
elseif minetest.get_modpath("nodes_nature") then
return nodes_nature.node_sound_dirt_defaults(table)
--s/dirt/grass
elseif minetest.get_modpath("fl_topsoil") then
return fl_topsoil.sounds.grass(table)
elseif minetest.get_modpath("hades_sounds") then
return hades_sounds.node_sound_dirt_defaults(table)
elseif minetest.get_modpath("rp_sounds") then
return rp_sounds.node_sound_dirt_defaults(table)
else
return table
end
end
--return dirt as some games use dirt vs grass
function sound_api.node_sound_grass_defaults(table)
if minetest.get_modpath("hades_sounds") then
return hades_sounds.node_sound_grass_defaults(table)
else
return sound_api.node_sound_dirt_defaults(table)
end
end
function sound_api.node_sound_sand_defaults(table)
if minetest.get_modpath("default") then
return default.node_sound_sand_defaults(table)
elseif minetest.get_modpath("mcl_sounds") then
return mcl_sounds.node_sound_sand_defaults(table)
elseif minetest.get_modpath("nodes_nature") then
return nodes_nature.node_sound_sand_defaults(table)
elseif minetest.get_modpath("fl_stone") then
return fl_stone.sounds.sand(table)
elseif minetest.get_modpath("hades_sounds") then
return hades_sounds.node_sound_sand_defaults(table)
elseif minetest.get_modpath("rp_sounds") then
return rp_sounds.node_sound_sand_defaults(table)
else
return table
end
end
function sound_api.node_sound_gravel_defaults(table)
if minetest.get_modpath("default") then
return default.node_sound_gravel_defaults(table)
--s/gravel/sand
elseif minetest.get_modpath("mcl_sounds") then
return mcl_sounds.node_sound_sand_defaults(table)
elseif minetest.get_modpath("nodes_nature") then
return nodes_nature.node_sound_gravel_defaults(table)
elseif minetest.get_modpath("fl_topsoil") then
return fl_topsoil.sounds.gravel(table)
elseif minetest.get_modpath("hades_sounds") then
return hades_sounds.node_sound_gravel_defaults(table)
else
return table
end
end
function sound_api.node_sound_wood_defaults(table)
if minetest.get_modpath("default") then
return default.node_sound_wood_defaults(table)
elseif minetest.get_modpath("mcl_sounds") then
return mcl_sounds.node_sound_wood_defaults(table)
elseif minetest.get_modpath("ks_sounds") then
return ks.node_sound_wood_default(table)
elseif minetest.get_modpath("nodes_nature") then
return nodes_nature.node_sound_wood_defaults(table)
elseif minetest.get_modpath("fl_trees") then
return fl_trees.sounds.wood(table)
elseif minetest.get_modpath("hades_sounds") then
return hades_sounds.node_sound_wood_defaults(table)
elseif minetest.get_modpath("rp_sounds") then
return rp_sounds.node_sound_wood_defaults(table)
else
return table
end
end
function sound_api.node_sound_leaves_defaults(table)
if minetest.get_modpath("default") then
return default.node_sound_leaves_defaults(table)
elseif minetest.get_modpath("mcl_sounds") then
return mcl_sounds.node_sound_leaves_defaults(table)
elseif minetest.get_modpath("ks_sounds") then
return ks.node_sound_leaves_default(table)
elseif minetest.get_modpath("nodes_nature") then
return nodes_nature.node_sound_leaves_defaults(table)
elseif minetest.get_modpath("hades_sounds") then
return hades_sounds.node_sound_leaves_defaults(table)
elseif minetest.get_modpath("rp_sounds") then
return rp_sounds.node_sound_leaves_defaults(table)
else
return table
end
end
function sound_api.node_sound_glass_defaults(table)
if minetest.get_modpath("default") then
return default.node_sound_glass_defaults(table)
elseif minetest.get_modpath("mcl_sounds") then
return mcl_sounds.node_sound_glass_defaults(table)
elseif minetest.get_modpath("nodes_nature") then
return nodes_nature.node_sound_glass_defaults(table)
elseif minetest.get_modpath("hades_sounds") then
return hades_sounds.node_sound_glass_defaults(table)
elseif minetest.get_modpath("rp_sounds") then
return rp_sounds.node_sound_glass_defaults(table)
else
return table
end
end
function sound_api.node_sound_ice_defaults(table)
if minetest.get_modpath("default") then
return default.node_sound_ice_defaults(table)
--s/ice/glass
elseif minetest.get_modpath("mcl_sounds") then
return mcl_sounds.node_sound_glass_defaults(table)
--s/ice/glass
elseif minetest.get_modpath("nodes_nature") then
return nodes_nature.node_sound_glass_defaults(table)
--s/ice/glass
elseif minetest.get_modpath("hades_sounds") then
return hades_sounds.node_sound_glass_defaults(table)
else
return table
end
end
function sound_api.node_sound_metal_defaults(table)
if minetest.get_modpath("default") then
return default.node_sound_metal_defaults(table)
elseif minetest.get_modpath("mcl_sounds") then
return mcl_sounds.node_sound_metal_defaults(table)
elseif minetest.get_modpath("hades_sounds") then
return hades_sounds.node_sound_metal_defaults(table)
else
return table
end
end
function sound_api.node_sound_water_defaults(table)
if minetest.get_modpath("default") then
return default.node_sound_water_defaults(table)
elseif minetest.get_modpath("mcl_sounds") then
return mcl_sounds.node_sound_water_defaults(table)
elseif minetest.get_modpath("nodes_nature") then
return nodes_nature.node_sound_water_defaults(table)
elseif minetest.get_modpath("hades_sounds") then
return hades_sounds.node_sound_water_defaults(table)
elseif minetest.get_modpath("rp_sounds") then
return rp_sounds.node_sound_water_defaults(table)
else
return table
end
end
function sound_api.node_sound_lava_defaults(table)
--s/lava/water
if minetest.get_modpath("default") then
return default.node_sound_water_defaults(table)
elseif minetest.get_modpath("mcl_sounds") then
return mcl_sounds.node_sound_lava_defaults(table)
--s/lava/water
elseif minetest.get_modpath("nodes_nature") then
return nodes_nature.node_sound_water_defaults(table)
elseif minetest.get_modpath("hades_sounds") then
return hades_sounds.node_sound_lava_defaults(table)
--s/lava/water
elseif minetest.get_modpath("rp_sounds") then
return rp_sounds.node_sound_water_defaults(table)
else
return table
end
end
function sound_api.node_sound_snow_defaults(table)
if minetest.get_modpath("default") then
return default.node_sound_snow_defaults(table)
elseif minetest.get_modpath("mcl_sounds") then
return mcl_sounds.node_sound_snow_defaults(table)
elseif minetest.get_modpath("ks_sounds") then
return ks.node_sound_snow_default(table)
elseif minetest.get_modpath("nodes_nature") then
return nodes_nature.node_sound_snow_defaults(table)
elseif minetest.get_modpath("fl_topsoil") then
return fl_topsoil.sounds.snow(table)
elseif minetest.get_modpath("rp_sounds") then
return rp_sounds.node_sound_snow_defaults(table)
else
return table
end
end
function sound_api.node_sound_wool_defaults(table)
--s/wool/default
if minetest.get_modpath("default") then
return default.node_sound_defaults(table)
elseif minetest.get_modpath("mcl_sounds") then
return mcl_sounds.node_sound_wool_defaults(table)
else
return table
end
end
return sound_api

View File

@@ -1,67 +0,0 @@
local sound_api = {}
function sound_api.node_sound_default(soundtable)
return nodes_nature.node_sound_default(soundtable)
end
function sound_api.node_sound_stone_defaults(soundtable)
return nodes_nature.node_sound_stone_defaults(soundtable)
end
function sound_api.node_sound_dirt_defaults(soundtable)
return nodes_nature.node_sound_dirt_defaults(soundtable)
end
--return dirt as some games use dirt vs grass
function sound_api.node_sound_grass_defaults(soundtable)
return sound_api.node_sound_dirt_defaults(soundtable)
end
function sound_api.node_sound_sand_defaults(soundtable)
return nodes_nature.node_sound_sand_defaults(soundtable)
end
function sound_api.node_sound_gravel_defaults(soundtable)
return nodes_nature.node_sound_gravel_defaults(soundtable)
end
function sound_api.node_sound_wood_defaults(soundtable)
return nodes_nature.node_sound_wood_defaults(soundtable)
end
function sound_api.node_sound_leaves_defaults(soundtable)
return nodes_nature.node_sound_leaves_defaults(soundtable)
end
function sound_api.node_sound_glass_defaults(soundtable)
return nodes_nature.node_sound_glass_defaults(soundtable)
end
function sound_api.node_sound_ice_defaults(soundtable)
--s/ice/glass
return nodes_nature.node_sound_glass_defaults(soundtable)
end
function sound_api.node_sound_metal_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_water_defaults(soundtable)
return nodes_nature.node_sound_water_defaults(soundtable)
end
function sound_api.node_sound_lava_defaults(soundtable)
--s/lava/water
return nodes_nature.node_sound_water_defaults(soundtable)
end
function sound_api.node_sound_snow_defaults(soundtable)
return nodes_nature.node_sound_snow_defaults(soundtable)
end
function sound_api.node_sound_wool_defaults(soundtable)
return soundtable
end
return sound_api

View File

@@ -1,65 +0,0 @@
local sound_api = {}
function sound_api.node_sound_default(soundtable)
return soundtable
end
function sound_api.node_sound_stone_defaults(soundtable)
return fl_stone.sounds.stone(soundtable)
end
function sound_api.node_sound_dirt_defaults(soundtable)
return fl_topsoil.sounds.grass(soundtable)
end
--return dirt as some games use dirt vs grass
function sound_api.node_sound_grass_defaults(soundtable)
return sound_api.node_sound_dirt_defaults(soundtable)
end
function sound_api.node_sound_sand_defaults(soundtable)
return fl_stone.sounds.sand(soundtable)
end
function sound_api.node_sound_gravel_defaults(soundtable)
return fl_topsoil.sounds.gravel(soundtable)
end
function sound_api.node_sound_wood_defaults(soundtable)
return fl_trees.sounds.wood(soundtable)
end
function sound_api.node_sound_leaves_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_glass_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_ice_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_metal_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_water_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_lava_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_snow_defaults(soundtable)
return fl_topsoil.sounds.snow(soundtable)
end
function sound_api.node_sound_wool_defaults(soundtable)
return soundtable
end
return sound_api

View File

@@ -1,63 +0,0 @@
local sound_api = {}
function sound_api.node_sound_default(soundtable)
return soundtable
end
function sound_api.node_sound_stone_defaults(soundtable)
return sounds.stone(soundtable)
end
function sound_api.node_sound_dirt_defaults(soundtable)
return sounds.dirt(soundtable)
end
function sound_api.node_sound_grass_defaults(soundtable)
return sounds.grass(soundtable)
end
function sound_api.node_sound_sand_defaults(soundtable)
return sounds.sand(soundtable)
end
function sound_api.node_sound_gravel_defaults(soundtable)
return sounds.gravel(soundtable)
end
function sound_api.node_sound_wood_defaults(soundtable)
return sounds.wood(soundtable)
end
function sound_api.node_sound_leaves_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_glass_defaults(soundtable)
return sounds.glass(soundtable)
end
function sound_api.node_sound_ice_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_metal_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_water_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_lava_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_snow_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_wool_defaults(soundtable)
return soundtable
end
return sound_api

View File

@@ -1,66 +0,0 @@
local sound_api = {}
function sound_api.node_sound_default(soundtable)
return hades_sounds.node_sound_defaults(soundtable)
end
function sound_api.node_sound_stone_defaults(soundtable)
return hades_sounds.node_sound_stone_defaults(soundtable)
end
function sound_api.node_sound_dirt_defaults(soundtable)
return hades_sounds.node_sound_dirt_defaults(soundtable)
end
--return dirt as some games use dirt vs grass
function sound_api.node_sound_grass_defaults(soundtable)
return hades_sounds.node_sound_grass_defaults(soundtable)
end
function sound_api.node_sound_sand_defaults(soundtable)
return hades_sounds.node_sound_sand_defaults(soundtable)
end
function sound_api.node_sound_gravel_defaults(soundtable)
return hades_sounds.node_sound_gravel_defaults(soundtable)
end
function sound_api.node_sound_wood_defaults(soundtable)
return hades_sounds.node_sound_wood_defaults(soundtable)
end
function sound_api.node_sound_leaves_defaults(soundtable)
return hades_sounds.node_sound_leaves_defaults(soundtable)
end
function sound_api.node_sound_glass_defaults(soundtable)
return hades_sounds.node_sound_glass_defaults(soundtable)
end
function sound_api.node_sound_ice_defaults(soundtable)
--s/ice/glass
return hades_sounds.node_sound_glass_defaults(soundtable)
end
function sound_api.node_sound_metal_defaults(soundtable)
return hades_sounds.node_sound_metal_defaults(soundtable)
end
function sound_api.node_sound_water_defaults(soundtable)
return hades_sounds.node_sound_water_defaults(soundtable)
end
function sound_api.node_sound_lava_defaults(soundtable)
return hades_sounds.node_sound_lava_defaults(soundtable)
end
function sound_api.node_sound_snow_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_wool_defaults(soundtable)
return soundtable
end
return sound_api

View File

@@ -1,107 +0,0 @@
local sound_api = {}
--ks_sounds conversion
--currently loggy and bedrock are ignored
local ks = {}
function ks.node_sound_defaults(soundtable)
soundtable = soundtable or {}
soundtable.footstep = soundtable.footstep or ks_sounds.generalnode_sounds.footstep
soundtable.dug = soundtable.dug or ks_sounds.generalnode_sounds.dug
soundtable.dig = soundtable.dig or ks_sounds.generalnode_sounds.dig
soundtable.place = soundtable.place or ks_sounds.generalnode_sounds.place
return soundtable
end
function ks.node_sound_wood_defaults(soundtable)
soundtable = soundtable or {}
soundtable.footstep = soundtable.footstep or ks_sounds.woodennode_sounds.footstep
soundtable.dug = soundtable.dug or ks_sounds.woodennode_sounds.dug
soundtable.dig = soundtable.dig or ks_sounds.woodennode_sounds.dig
soundtable.place = soundtable.place or ks_sounds.woodennode_sounds.place
ks.node_sound_defaults(soundtable)
return soundtable
end
function ks.node_sound_leaves_defaults(soundtable)
soundtable = soundtable or {}
soundtable.footstep = soundtable.footstep or ks_sounds.leafynode_sounds.footstep
soundtable.dug = soundtable.dug or ks_sounds.leafynode_sounds.dug
soundtable.dig = soundtable.dig or ks_sounds.leafynode_sounds.dig
soundtable.place = soundtable.place or ks_sounds.leafynode_sounds.place
ks.node_sound_defaults(soundtable)
return soundtable
end
function ks.node_sound_snow_defaults(soundtable)
soundtable = soundtable or {}
soundtable.footstep = soundtable.footstep or ks_sounds.snowynode_sounds.footstep
soundtable.dug = soundtable.dug or ks_sounds.snowynode_sounds.dug
soundtable.dig = soundtable.dig or ks_sounds.snowynode_sounds.dig
soundtable.place = soundtable.place or ks_sounds.snowynode_sounds.place
ks.node_sound_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_default(soundtable)
return ks.node_sound_default(soundtable)
end
function sound_api.node_sound_stone_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_dirt_defaults(soundtable)
return soundtable
end
--return dirt as some games use dirt vs grass
function sound_api.node_sound_grass_defaults(soundtable)
return sound_api.node_sound_dirt_defaults(soundtable)
end
function sound_api.node_sound_sand_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_gravel_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_wood_defaults(soundtable)
return ks.node_sound_wood_default(soundtable)
end
function sound_api.node_sound_leaves_defaults(soundtable)
return ks.node_sound_leaves_default(soundtable)
end
function sound_api.node_sound_glass_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_ice_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_metal_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_water_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_lava_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_snow_defaults(soundtable)
return ks.node_sound_snow_default(soundtable)
end
function sound_api.node_sound_wool_defaults(soundtable)
return soundtable
end
return sound_api

View File

@@ -1,67 +0,0 @@
--note this file handles mineclonia, mineclone2, and its rename voxelibre
local sound_api = {}
function sound_api.node_sound_default(soundtable)
return mcl_sounds.node_sound_defaults(soundtable)
end
function sound_api.node_sound_stone_defaults(soundtable)
return mcl_sounds.node_sound_stone_defaults(soundtable)
end
function sound_api.node_sound_dirt_defaults(soundtable)
return mcl_sounds.node_sound_dirt_defaults(soundtable)
end
--return dirt as some games use dirt vs grass
function sound_api.node_sound_grass_defaults(soundtable)
return sound_api.node_sound_dirt_defaults(soundtable)
end
function sound_api.node_sound_sand_defaults(soundtable)
return mcl_sounds.node_sound_sand_defaults(soundtable)
end
function sound_api.node_sound_gravel_defaults(soundtable)
return mcl_sounds.node_sound_sand_defaults(soundtable)
end
function sound_api.node_sound_wood_defaults(soundtable)
return mcl_sounds.node_sound_wood_defaults(soundtable)
end
function sound_api.node_sound_leaves_defaults(soundtable)
return mcl_sounds.node_sound_leaves_defaults(soundtable)
end
function sound_api.node_sound_glass_defaults(soundtable)
return mcl_sounds.node_sound_glass_defaults(soundtable)
end
function sound_api.node_sound_ice_defaults(soundtable)
return mcl_sounds.node_sound_glass_defaults(soundtable)
end
function sound_api.node_sound_metal_defaults(soundtable)
return mcl_sounds.node_sound_metal_defaults(soundtable)
end
function sound_api.node_sound_water_defaults(soundtable)
return mcl_sounds.node_sound_water_defaults(soundtable)
end
function sound_api.node_sound_lava_defaults(soundtable)
return mcl_sounds.node_sound_lava_defaults(soundtable)
end
function sound_api.node_sound_snow_defaults(soundtable)
return mcl_sounds.node_sound_snow_defaults(soundtable)
end
function sound_api.node_sound_wool_defaults(soundtable)
return mcl_sounds.node_sound_wool_defaults(soundtable)
end
return sound_api

View File

@@ -1,67 +0,0 @@
local sound_api = {}
function sound_api.node_sound_default(soundtable)
return default.node_sound_defaults(soundtable)
end
function sound_api.node_sound_stone_defaults(soundtable)
return default.node_sound_stone_defaults(soundtable)
end
function sound_api.node_sound_dirt_defaults(soundtable)
return default.node_sound_dirt_defaults(soundtable)
end
--return dirt as some games use dirt vs grass
function sound_api.node_sound_grass_defaults(soundtable)
return sound_api.node_sound_dirt_defaults(soundtable)
end
function sound_api.node_sound_sand_defaults(soundtable)
return default.node_sound_sand_defaults(soundtable)
end
function sound_api.node_sound_gravel_defaults(soundtable)
return default.node_sound_gravel_defaults(soundtable)
end
function sound_api.node_sound_wood_defaults(soundtable)
return default.node_sound_wood_defaults(soundtable)
end
function sound_api.node_sound_leaves_defaults(soundtable)
return default.node_sound_leaves_defaults(soundtable)
end
function sound_api.node_sound_glass_defaults(soundtable)
return default.node_sound_glass_defaults(soundtable)
end
function sound_api.node_sound_ice_defaults(soundtable)
return default.node_sound_ice_defaults(soundtable)
end
function sound_api.node_sound_metal_defaults(soundtable)
return default.node_sound_metal_defaults(soundtable)
end
function sound_api.node_sound_water_defaults(soundtable)
return default.node_sound_water_defaults(soundtable)
end
function sound_api.node_sound_lava_defaults(soundtable)
--s/lava/water
return default.node_sound_water_defaults(soundtable)
end
function sound_api.node_sound_snow_defaults(soundtable)
return default.node_sound_snow_defaults(soundtable)
end
function sound_api.node_sound_wool_defaults(soundtable)
--s/wool/default
return default.node_sound_defaults(soundtable)
end
return sound_api

View File

@@ -1,63 +0,0 @@
local sound_api = {}
function sound_api.node_sound_default(soundtable)
return soundtable
end
function sound_api.node_sound_stone_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_dirt_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_grass_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_sand_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_gravel_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_wood_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_leaves_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_glass_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_ice_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_metal_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_water_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_lava_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_snow_defaults(soundtable)
return soundtable
end
function sound_api.node_sound_wool_defaults(soundtable)
return soundtable
end
return sound_api

View File

@@ -1,8 +0,0 @@
local filename = xcompat.gameid
--if we dont have a stairs file for the game, use xcompat_agnostic
if not xcompat.utilities.file_exists(xcompat.modpath .. "/src/stairs/" .. filename .. ".lua") then
filename = "xcompat_agnostic"
end
return dofile(xcompat.modpath .. "/src/stairs/" .. filename .. ".lua")

View File

@@ -1,25 +0,0 @@
local function register(name, _)
local splitName = name:split(":")
local sName = splitName[2]
local groups = core.registered_nodes[name].groups
groups.stairable = 1
core.override_item(name, {groups = groups})
local flStairNameOverrides = {
["stair_inner"] = "inner_stair",
["stair_outer"] = "outer_stair"
}
for _, type in pairs({"slab", "stair", "stair_inner", "stair_outer"}) do
minetest.register_alias(
splitName[1] .. ":" .. type .. "_" .. sName,
splitName[1] .. ":" .. sName .. "_" .. (flStairNameOverrides[type] or type)
)
end
end
return {register = register}

View File

@@ -1,19 +0,0 @@
local function register(name, def)
local splitName = name:split(":")
local sName = splitName[2]
stairs.register_stair_and_slab(
sName,
nil,
def.groups,
def.tiles,
def.description,
def.sounds
)
for _, type in pairs({"slab", "stair", "stair_inner", "stair_outer"}) do
minetest.register_alias(splitName[1] .. ":" .. type .. "_" .. sName, "stairs:" .. type .. "_" .. sName)
end
end
return {register = register}

View File

@@ -1,48 +0,0 @@
local stairtable = {
{
"slab",
{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
},
{
"stair",
{
{-0.5, -0.5, -0.5, 0.5, 0.0, 0.5},
{-0.5, 0.0, 0.0, 0.5, 0.5, 0.5},
},
},
{
"stair_inner",
{
{-0.5, -0.5, -0.5, 0.5, 0.0, 0.5},
{-0.5, 0.0, 0.0, 0.5, 0.5, 0.5},
{-0.5, 0.0, -0.5, 0.0, 0.5, 0.0},
},
},
{
"stair_outer",
{
{-0.5, -0.5, -0.5, 0.5, 0.0, 0.5},
{-0.5, 0.0, 0.0, 0.0, 0.5, 0.5},
},
},
}
local function register(name, def)
for _, sdef in pairs(stairtable) do
local split = name:split(":")
local ndef = table.copy(def)
local item_name = ":" .. sdef[1] .. "_" .. split[2]
ndef.description = def.description .. " " .. string.gsub(sdef[1], "_", " ")
ndef.paramtype, ndef.paramtype2 = "light", "facedir"
ndef.drawtype = "nodebox"
ndef.node_box = {
type = "fixed",
fixed = sdef[2],
}
minetest.register_node(":" .. split[1] .. item_name, ndef)
end
end
return {register = register}

View File

@@ -1,8 +0,0 @@
local filename = xcompat.gameid
--if we dont have a materials file for the game, use minetest
if not xcompat.utilities.file_exists(xcompat.modpath .. "/src/textures/" .. filename .. ".lua") then
filename = "xcompat_agnostic"
end
return dofile(xcompat.modpath .. "/src/textures/" .. filename .. ".lua")

View File

@@ -1,57 +0,0 @@
local textures = {
gravel = "farlands_gravel.png",
brick = "farlands_brick.png",
metal = {
steel = {
ore = "farlands_iron_ingot.png",
ingot = "farlands_iron_ingot.png",
block = "farlands_iron_block.png",
},
gold = {
ore = "farlands_gold_ore.png",
ingot = "farlands_gold_ingot.png",
block = "farlands_gold_block.png",
},
},
glass = {
pane = "farlands_glass.png",
detail = "farlands_glass_detail.png",
},
wood = {
apple = {
sapling = "farlands_apple_sapling.png",
planks = "farlands_apple_planks.png",
trunk_side = "farlands_apple_trunk.png",
trunk_top = "farlands_apple_trunk_top.png",
leaves = "farlands_apple_leaves.png",
},
jungle = {
sapling = "farlands_jungletree_sapling.png",
planks = "farlands_jungletree_planks.png",
trunk_side = "farlands_jungletree_trunk.png",
trunk_top = "farlands_jungletree_trunk_top.png",
leaves = "farlands_jungletree_leaves.png",
},
},
water = {
tile = "farlands_water.png",
animated = {
source = "farlands_water_source_animated.png",
flowing = "farlands_water_flowing_animated.png",
},
},
wool = {
white = "farlands_wool.png",
black = "farlands_wool.png",
grey = "farlands_wool.png",
dark_grey = "farlands_wool.png",
},
grass = {
top = "farlands_grass.png",
side = "farlands_dirt.png^farlands_grass_side.png",
dirt = "farlands_dirt.png",
},
}
return textures

View File

@@ -1,57 +0,0 @@
local textures = {
gravel = "default_gravel.png",
brick = "default_brick.png",
metal = {
steel = {
ore = "default_iron_lump.png",
ingot = "default_steel_ingot.png",
block = "default_steel_block.png",
},
gold = {
ore = "default_gold_lump.png",
ingot = "default_gold_ingot.png",
block = "default_gold_block.png",
},
},
glass = {
pane = "default_glass.png",
detail = "default_glass_detail.png",
},
wood = {
apple = {
sapling = "default_sapling.png",
planks = "default_wood.png",
trunk_side = "default_tree.png",
trunk_top = "default_tree_top.png",
leaves = "default_leaves.png",
},
jungle = {
sapling = "default_junglesapling.png",
planks = "default_junglewood.png",
trunk_side = "default_jungletree.png",
trunk_top = "default_jungletree_top.png",
leaves = "default_jungleleaves.png",
},
},
water = {
tile = "default_water.png",
animated = {
source = "default_water_source_animated.png",
flowing = "default_water_flowing_animated.png",
},
},
wool = {
white = "wool_white.png",
black = "wool_black.png",
grey = "wool_grey.png",
dark_grey = "wool_dark_grey.png",
},
grass = {
top = "default_grass.png",
side = "default_dirt.png^default_grass_side.png",
dirt = "default_dirt.png",
},
}
return textures

View File

@@ -1,65 +0,0 @@
local textures = {
gravel = "[combine:16x16^[noalpha^[colorize:#3a3b3c",
brick = "[combine:16x16^[noalpha^[colorize:#AA4A44",
metal = {
steel = {
ore = "[combine:16x16^[noalpha^[colorize:#D3D3D3",
ingot = "[combine:16x16^[noalpha^[colorize:#D3D3D3",
block = "[combine:16x16^[noalpha^[colorize:#D3D3D3",
},
gold = {
ore = "[combine:16x16^[noalpha^[colorize:#FFD700",
ingot = "[combine:16x16^[noalpha^[colorize:#FFD700",
block = "[combine:16x16^[noalpha^[colorize:#FFD700",
},
},
glass = {
pane = "[combine:16x16:" ..
"0,0=\\[combine\\:1x16\\^[noalpha\\^[colorize\\:#ffffff:" ..
"0,0=\\[combine\\:16x1\\^[noalpha\\^[colorize\\:#ffffff:" ..
"0,15=\\[combine\\:16x1\\^[noalpha\\^[colorize\\:#ffffff:" ..
"15,0=\\[combine\\:1x16\\^[noalpha\\^[colorize\\:#ffffff",
detail = "[combine:16x16:" ..
"0,0=\\[combine\\:1x16\\^[noalpha\\^[colorize\\:#ffffff:" ..
"0,0=\\[combine\\:16x1\\^[noalpha\\^[colorize\\:#ffffff:" ..
"0,15=\\[combine\\:16x1\\^[noalpha\\^[colorize\\:#ffffff:" ..
"15,0=\\[combine\\:1x16\\^[noalpha\\^[colorize\\:#ffffff",
},
wood = {
apple = {
sapling = "[combine:16x16^[noalpha^[colorize:#654321",
planks = "[combine:16x16^[noalpha^[colorize:#654321",
trunk_side = "[combine:16x16^[noalpha^[colorize:#654321",
trunk_top = "[combine:16x16^[noalpha^[colorize:#654321",
leaves = "[combine:16x16^[noalpha^[colorize:#654321",
},
jungle = {
sapling = "[combine:16x16^[noalpha^[colorize:#563d2d",
planks = "[combine:16x16^[noalpha^[colorize:#563d2d",
trunk_side = "[combine:16x16^[noalpha^[colorize:#563d2d",
trunk_top = "[combine:16x16^[noalpha^[colorize:#563d2d",
leaves = "[combine:16x16^[noalpha^[colorize:#563d2d",
},
},
water = {
tile = "[combine:16x16^[noalpha^[colorize:#00008b",
animated = {
source = "[combine:16x16^[noalpha^[colorize:#00008b",
flowing = "[combine:16x16^[noalpha^[colorize:#00008b",
},
},
wool = {
white = "[combine:16x16^[noalpha^[colorize:#ffffff",
black = "[combine:16x16^[noalpha^[colorize:#000000",
grey = "[combine:16x16^[noalpha^[colorize:#313b3c",
dark_grey = "[combine:16x16^[noalpha^[colorize:#313b3c",
},
grass = {
top = "[combine:16x16^[noalpha^[colorize:#006400",
side = "[combine:16x16^[noalpha^[colorize:#006400",
dirt = "[combine:16x16^[noalpha^[colorize:#563d2d",
},
}
return textures

View File

@@ -1,8 +0,0 @@
local utilities = {}
function utilities.file_exists(name)
local f=io.open(name,"r")
if f~=nil then io.close(f) return true else return false end
end
return utilities

View File

@@ -1,356 +0,0 @@
fl_furniture:yellow_ipe_table
fl_trees:palm_trunk
fl_stone:mossy_stone
fl_trees:acacia_sapling
fl_doors:copper_door_a
fl_trees:jungletree_plank
fl_workshop:furnace_active
fl_topsoil:wet_farmland
fl_trees:spruce_leaves
fl_stone:stone_brick
fl_light_sources:lantern
fl_plantlife:red_mushroom_leaves
fl_stone:basalt
fl_topsoil:condensed_ice
fl_doors:apple_door_b
fl_beds:bed_pink
fl_plantlife:petunia_blue
fl_trees:acacia_leaves
fl_stone:basalt_block
fl_ores:coal_in_tuff
fl_topsoil:sea_grass_3
fl_agriculture:carrot_2
fl_beds:bed_violet
fl_stone:basalt_rubble
fl_furniture:spruce_bench
fl_ores:copper_in_tuff
fl_trees:willow_plank
fl_trees:yellow_ipe_plank_fence
fl_storage:spruce_vessel_shelf
fl_beds:bed_blue
fl_stone:stone_block
fl_stone:tuff_rubble
fl_ores:mithite_in_stone
fl_topsoil:savannah_dirt_with_grass
fl_furniture:pine_table
fl_trees:pine_plank_fence
fl_furniture:baobab_chair
fl_plantlife:grass_2
fl_trees:pine_sapling
fl_beds:bed_dark_green
fl_plantlife:cactus
fl_storage:spruce_book_shelf
fl_signs:sign_wood
fl_plantlife:pink_ground_flower
fl_doors:steel_door_b
fl_topsoil:sea_grass_1
fl_trees:aspen_leaves
fl_stone:ors_brick
fl_doors:jungletree_door_a
fl_paintings:forest
fl_storage:spruce_multi_shelf
fl_beds:bed_red
fl_tnt:tnt
fl_beds:bed_brown
fl_storage:pine_multi_shelf
fl_ores:mithite_block
fl_beds:bed_orange
fl_ores:coal_in_desert_stone
fl_plantlife:red_ground_flower
fl_ores:gold_in_desert_stone
fl_stone:silver_sandstone_block
fl_storage:wood_chest
fl_furniture:aspen_table
fl_doors:aspen_door_a
fl_stone:ors
fl_stone:sandstone_brick
fl_doors:pine_door_b
fl_furniture:acacia_table
fl_trees:acacia_trunk
fl_stone:mossy_stone_block
fl_doors:baobab_door_b
fl_plantlife:pansy_purple
fl_industrial:conveyor_funnel
fl_stone:savannah_rubble
fl_trains:straight_rise_track
fl_storage:baobab_book_shelf
fl_plantlife:purple_allium
fl_ores:diamond_block
fl_topsoil:dirt_with_grass
fl_plantlife:ground_waterlily
fl_plantlife:flowerpot
fl_plantlife:grass_4
fl_storage:pine_book_shelf
fl_doors:palm_door_a
fl_furniture:willow_table
fl_trains:straight_45_track
fl_trees:palm_leaves
fl_glass:framed_glass_panes
fl_storage:yellow_ipe_vessel_shelf
fl_ores:coal_block
fl_plantlife:dandelion_yellow
fl_beds:bed_cyan
fl_topsoil:gravel
fl_storage:acacia_book_shelf
fl_furniture:baobab_bench
fl_furniture:willow_bench
fl_plantlife:savannah_grass_1
fl_industrial:conveyor
fl_storage:acacia_vessel_shelf
fl_light_sources:chain
fl_trees:spruce_plank
fl_trees:apple_leaves
fl_trees:baobab_leaves
fl_stone:silver_sand
fl_stone:desert_stone
fl_furniture:spruce_chair
fl_ores:copper_in_desert_stone
fl_topsoil:snow_block
fl_ores:mithite_in_savannah
fl_trees:acacia_plank
fl_topsoil:dirt
fl_fire:fire
fl_stone:gneiss_rubble
fl_furniture:acacia_bench
fl_storage:willow_vessel_shelf
fl_plantlife:lantana
fl_stone:sandstone
fl_furniture:jungletree_chair
fl_workshop:furnace
fl_stone:gneiss
fl_agriculture:potato_4
fl_topsoil:permafrost_with_stones
fl_topsoil:snow
fl_trees:baobab_plank
fl_stone:tuff_brick
fl_stone:desert_sandstone_block
fl_bones:bone_block
fl_stone:basalt_brick
fl_doors:steel_door_a
fl_furniture:aspen_bench
fl_ores:tin_in_savannah
fl_trees:palm_plank_fence
fl_doors:apple_door_a
fl_wool:wool
fl_furniture:spruce_table
fl_agriculture:carrot_1
fl_ores:iron_in_stone
fl_stone:desert_sandstone_brick
fl_storage:apple_empty_shelf
fl_stone:gneiss_block
fl_stone:mossy_stone_rubble
fl_agriculture:carrot_3
fl_trees:willow_trunk
fl_trees:pine_leaves
fl_trains:curve_right_track
fl_doors:copper_door_b
fl_doors:jungletree_door_b
fl_furniture:jungletree_bench
fl_doors:willow_door_b
fl_topsoil:sea_grass_2
fl_ores:gold_in_ors
fl_doors:willow_door_a
fl_trains:switch_right_track
fl_doors:aspen_door_b
fl_doors:palm_door_b
fl_stone:stone
fl_plantlife:rose
fl_doors:yellow_ipe_door_b
fl_doors:yellow_ipe_door_a
fl_plantlife:grass_3
fl_storage:apple_vessel_shelf
fl_plantlife:tulip
fl_light_sources:torch
fl_trees:palm_sapling
fl_doors:blocker_top
fl_bricks:terracotta
fl_bricks:clay_block
fl_bricks:brick
fl_agriculture:carrot_4
fl_paintings:cthulhu
fl_trees:aspen_trunk
fl_furniture:willow_chair
fl_glass:tinted_framed_glass_panes
fl_stone:sandstone_block
fl_glass:tinted_framed_glass
fl_ores:gold_block
fl_furniture:apple_chair
fl_glass:framed_glass
fl_storage:pine_vessel_shelf
fl_beds:bed_yellow
fl_beds:bed_black
fl_stone:silver_sandstone
fl_beds:bed_dark_grey
fl_beds:bed_green
fl_ores:tin_in_tuff
fl_beds:bed_grey
fl_beds:bed_magenta
fl_beds:bed_white
fl_wildlife:spawner
fl_wool:wool_carpet
fl_paintings:dragon
fl_topsoil:dirt_with_snow
fl_ores:tin_block
fl_furniture:baobab_table
fl_dyes:demo_node
fl_plantlife:viola
fl_ores:diamond_in_ors
fl_plantlife:savannah_grass_4
fl_plantlife:oxeye_daisy
fl_plantlife:geranium
fl_plantlife:mushroom_trunk
fl_stone:ors_rubble
fl_doors:baobab_door_a
fl_light_sources:lantern_c
fl_doors:acacia_door_b
fl_plantlife:petunia_white
fl_storage:spruce_empty_shelf
fl_plantlife:petunia_pink
fl_ores:tin_in_stone
fl_ores:mithite_in_desert_stone
fl_stone:desert_sand
fl_plantlife:pansy_blue
fl_plantlife:frozen_rose
fl_ores:gold_in_tuff
fl_stone:savannah_brick
fl_ores:coal_in_savannah
fl_plantlife:blue_ground_flower
fl_ores:iron_in_desert_stone
fl_industrial:injector
fl_trees:aspen_plank_fence
fl_plantlife:savannah_grass_2
fl_plantlife:dandelion_white
fl_plantlife:flame_lily
fl_plantlife:brown_mushroom
fl_plantlife:red_mushroom
fl_trees:jungletree_plank_fence
fl_plantlife:brown_mushroom_leaves
fl_plantlife:raw_mushroom_leaves
fl_plantlife:savannah_grass_5
fl_stone:tuff_block
fl_plantlife:savannah_grass_3
fl_trees:acacia_plank_fence
fl_trees:jungletree_sapling
fl_furniture:pine_bench
fl_plantlife:grass_1
fl_plantlife:lavender_flower
fl_ores:coal_in_stone
fl_plantlife:grass_5
fl_ores:bronze_block
fl_trees:yellow_ipe_plank
fl_stone:gneiss_brick
fl_ores:diamond_in_savannah
fl_trees:pine_plank
fl_ores:diamond_in_desert_stone
fl_ores:diamond_in_tuff
fl_storage:baobab_empty_shelf
fl_storage:yellow_ipe_empty_shelf
fl_paintings:landscape
fl_stairs:tablesaw
fl_furniture:yellow_ipe_chair
fl_ores:copper_in_ors
fl_trees:apple_trunk
fl_trees:yellow_ipe_leaves
fl_trees:dead_aspen_leaves
fl_liquids:water_flowing
fl_furniture:aspen_chair
fl_plantlife:lobelia
fl_topsoil:dry_farmland
fl_trees:apple_plank
ignore
fl_trains:switch_left_track
fl_storage:willow_empty_shelf
fl_trees:spruce_plank_fence
fl_ores:copper_in_savannah
fl_stone:sand
fl_furniture:pine_chair
fl_storage:aspen_empty_shelf
fl_topsoil:coarse_dirt
fl_storage:acacia_multi_shelf
fl_ores:mithite_in_ors
fl_paintings:waterlilie
fl_stone:tuff
fl_stone:savannah_block
fl_trees:willow_plank_fence
fl_storage:baobab_vessel_shelf
fl_furniture:apple_table
fl_paintings:rose
fl_liquids:river_water_source
fl_trees:pine_trunk
fl_storage:aspen_vessel_shelf
fl_topsoil:ice
fl_storage:aspen_book_shelf
fl_liquids:lava_source
fl_agriculture:potato_2
fl_storage:aspen_multi_shelf
fl_storage:willow_book_shelf
fl_furniture:acacia_chair
fl_trains:crossing_track
fl_trees:apple_plank_fence
fl_liquids:river_water_flowing
fl_trees:baobab_sapling
fl_ores:gold_in_stone
fl_trains:curve_left_track
fl_trains:straight_track
fl_doors:acacia_door_a
fl_storage:apple_multi_shelf
fl_trees:aspen_plank
fl_trees:spruce_trunk
fl_stone:desert_stone_rubble
fl_trees:baobab_trunk
fl_ores:copper_in_stone
fl_industrial:conveyor_left
fl_storage:acacia_empty_shelf
fl_trees:palm_plank
fl_agriculture:potato_1
fl_trees:apple_sapling
fl_trees:baobab_plank_fence
fl_furniture:yellow_ipe_bench
fl_ores:tin_in_desert_stone
fl_furniture:palm_bench
fl_storage:yellow_ipe_book_shelf
fl_stone:savannah
fl_furniture:apple_bench
fl_ores:iron_block
fl_furniture:palm_chair
fl_glass:tinted_connected_glass
fl_agriculture:potato_3
fl_trees:aspen_sapling
fl_storage:baobab_multi_shelf
fl_storage:willow_multi_shelf
fl_furniture:palm_table
fl_furniture:jungletree_table
fl_trees:jungletree_trunk
fl_stone:stone_rubble
fl_doors:pine_door_a
fl_storage:pine_empty_shelf
fl_stone:mossy_stone_brick
fl_stone:ors_block
fl_paintings:possessedwoman
fl_storage:apple_book_shelf
fl_storage:yellow_ipe_multi_shelf
fl_stone:desert_stone_block
fl_stone:desert_stone_brick
fl_trees:jungletree_leaves
fl_liquids:water_source
fl_stone:desert_sandstone
fl_trees:willow_leaves
fl_workshop:anvil
fl_paintings:mistiriusgirl
fl_trees:yellow_ipe_trunk
fl_topsoil:savannah_dirt
fl_ores:coal_in_ors
fl_topsoil:permafrost
fl_liquids:lava_flowing
fl_ores:iron_in_ors
fl_industrial:conveyor_right
fl_ores:iron_in_tuff
fl_ores:iron_in_savannah
fl_ores:copper_block
fl_stone:silver_sandstone_brick
air
fl_ores:gold_in_savannah
fl_ores:tin_in_ors
fl_ores:mithite_in_tuff
fl_stone:bedrock
fl_ores:diamond_in_stone

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff