30 Commits

Author SHA1 Message Date
7a136dc739 fix mineclonia ci (#45) 2024-09-24 06:22:25 +02:00
3729628757 add moreores and technic support for mineclone* games (#44) 2024-09-23 18:23:06 -04:00
78295d974c fix https://github.com/mt-mods/xcompat/issues/43 - fix typo 2024-09-21 14:48:05 -04:00
b18dc7ba14 add player compatibility api (#41) 2024-09-08 18:01:52 -04:00
931a16803e sapling on place function (#40) 2024-09-06 22:40:36 +02:00
655486f465 register tests only if enabled (#38)
Co-authored-by: BuckarooBanzay <BuckarooBanzay@users.noreply.github.com>
2024-08-19 01:07:07 -04:00
cb6471e266 add bootup tests for dependent mods (#15)
Co-authored-by: BuckarooBanzay <BuckarooBanzay@users.noreply.github.com>
2024-08-16 15:00:36 -04:00
dc87e255b7 add missing magenta 2024-08-09 22:22:55 -04:00
1ed14f9410 add magenta dye to list of dyes 2024-08-09 18:59:07 -04:00
688f12a970 add material.stick (#36) 2024-07-20 17:52:37 -04:00
34781935d6 c/p typo in commands.lua 2024-07-19 23:13:56 +02:00
cc2da8a2a6 Add cyan dye into xcompat.materials (#31) 2024-06-22 08:24:12 -04:00
37a7fd6cc8 fix https://github.com/mt-mods/xcompat/issues/28 - fuzzy match minetest game forks 2024-06-01 20:37:39 -04:00
bf15b0232f Added Farming Redo and Xfarming bowl to farlands materials (#27) 2024-05-28 19:13:20 -04:00
745bdbe564 fix https://github.com/mt-mods/xcompat/issues/26 -incorrect itemstring 2024-05-27 10:24:15 -04:00
a3ef7ba4a4 forgotten lands sounds support (#25) 2024-05-26 14:01:49 -04:00
b9b6d49619 refactor sounds like textures/materials (#24) 2024-05-26 14:00:33 -04:00
788217bb8e add functions api + documentation (#23) 2024-05-26 12:31:52 -04:00
5b4b19a184 refactor mod (#22) 2024-05-26 11:07:43 -04:00
eb7d9fd4f6 Added flint, bowls, aspen/birch(planks, logs, leaves) and apple/oak(planks, logs) (#21)
Co-authored-by: wsor4035 <24964441+wsor4035@users.noreply.github.com>
2024-05-25 14:45:57 -04:00
215b094515 fix https://github.com/mt-mods/xcompat/issues/20 - correct some nodestrings 2024-05-25 12:12:20 -04:00
08bb0d0ed5 add some materials for moretrees game agnostic pr (#19) 2024-05-23 23:12:17 -04:00
3da43ebf4e adds stuff for home workshop game agnostic pr (#16) 2024-04-14 06:23:38 -04:00
28df57dd5f Add sandstone to materials (#13) 2024-03-11 09:02:49 +01:00
62227b7c88 add missed materials from basic materials and update mod.conf (#12) 2024-03-08 18:30:07 -05:00
9f56ea7ff4 add game compat chart (#10) 2024-03-04 01:55:26 -05:00
e73007760e adds texture api (#9) 2024-03-03 14:14:02 -05:00
95d24b4e26 fix https://github.com/mt-mods/xcompat/issues/5 - avoid table global (#6) 2024-02-29 22:39:17 -05:00
53c0826bff Minor fixes and cleanup (#3) 2024-02-27 17:28:29 +11:00
1860fa44b6 drop sound_api global legacy support as not known to be used (#2)
* drop sound_api support as not known to be used

* update .luacheckrc and move some globals over to read

* move one global back in .luacheckrc
2024-02-25 12:03:21 -05:00
51 changed files with 12624 additions and 588 deletions

View File

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

23
.github/workflows/farlands_reloaded.yml vendored Normal file
View File

@ -0,0 +1,23 @@
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

23
.github/workflows/hades_revisited.yml vendored Normal file
View File

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

23
.github/workflows/mineclonia.yml vendored Normal file
View File

@ -0,0 +1,23 @@
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

23
.github/workflows/minetest_game.yml vendored Normal file
View File

@ -0,0 +1,23 @@
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

23
.github/workflows/voxelibre.yml vendored Normal file
View File

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

View File

@ -1,15 +1,34 @@
# xcompat # XCompat
a mod that aims to facilitate other mods to be game agnostic by handling sounds and crafting [![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/)
thanks to: Provides cross compatibility between games and mods for sounds and crafting materials.
* MisterE, OgelGames, and Blockhead for naming advice/suggestion
* luk3yx, Blockhead, Buckaroo for bouncing ideas on the concept of this mod
## Installing Thanks to:
* MisterE, OgelGames, and Blockhead for naming advice/suggestion.
* luk3yx, Blockhead, BuckarooBanzai for bouncing ideas on the concept of this mod.
clone via git or install via contentdb (soon) ## Usage
## Dev Docs See the respective sub apis doc file in /doc for detailed documentation.
Can be found at /DEV.md ## Directly supported games and mods
| Games | Sounds | Materials | Textures | Player |
| ----------------- | --------- | --------- | --------- | ------ |
| Minetest Game | x | x | x | x |
| MineClone2 | x | x | | x |
| Mineclonia | x | x | | x |
| Hades Revisited | x | x | | |
| Farlands Reloaded | 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`

13
doc/functions.md Normal file
View File

@ -0,0 +1,13 @@
# 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

12
doc/gameid.md Normal file
View File

@ -0,0 +1,12 @@
# 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

3
doc/materials.md Normal file
View File

@ -0,0 +1,3 @@
# Materials API
consult `/src/materials/minetest.lua` at this time

13
doc/player.md Normal file
View File

@ -0,0 +1,13 @@
# Player API
mimic mtg player_api
## NOTE
`xcompat.player.player_attached`
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
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:
https://github.com/minetest/minetest/issues/15133

View File

@ -1,8 +1,6 @@
# Xcompat dev docs # 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 +20,7 @@ where:
* key: string name of the field from the sound api you want to use, for example `node_sound_stone_defaults` * 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. * 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
@ -35,7 +33,3 @@ 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
## Materials API
consult `/src/materials.lua` at this time

3
doc/textures.md Normal file
View File

@ -0,0 +1,3 @@
# Textures API
consult `/src/texture/minetest.lua` at this time

2
gitattributes Normal file
View File

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

View File

@ -1,10 +1,18 @@
local modpath = minetest.get_modpath("xcompat") local modpath = minetest.get_modpath("xcompat")
xcompat = { xcompat = {
sounds = dofile(modpath .. "/src/sounds.lua"), modpath = modpath,
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")
local function validate_sound(key) local function validate_sound(key)
if key and xcompat.sounds[key] then if key and xcompat.sounds[key] then
return true return true
@ -34,3 +42,10 @@ minetest.register_on_mods_loaded(function()
old_reg_node(name, def) old_reg_node(name, def)
end end
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,2 +1,3 @@
name = xcompat name = xcompat
optional_depends = default, fl_stone, fl_trees, mcl_sounds, hades_sounds, ks_sounds, nodes_nature, fl_topsoil, fl_trees 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

10
mtt.lua Normal file
View File

@ -0,0 +1,10 @@
-- 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

76
src/commands.lua Normal file
View File

@ -0,0 +1,76 @@
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
})

55
src/functions.lua Normal file
View File

@ -0,0 +1,55 @@
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

33
src/gameid.lua Normal file
View File

@ -0,0 +1,33 @@
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,242 +1,8 @@
local materials = { local filename = xcompat.gameid
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 minetest.get_modpath("moreores") then --if we dont have a materials file for the game, use minetest
materials.silver_ingot = "moreores:silver_ingot" if not xcompat.utilities.file_exists(xcompat.modpath .. "/src/materials/" .. filename .. ".lua") then
filename = "minetest"
end end
if minetest.get_modpath("mcl_core") then return dofile(xcompat.modpath .. "/src/materials/" .. filename .. ".lua")
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

@ -0,0 +1,93 @@
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",
}
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

@ -0,0 +1,107 @@
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",
}
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

@ -0,0 +1,96 @@
--note this file handles mineclonia, mineclone2, and its rename voxelibre
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:copper_block",
steel_block = "mcl_core:iron_block",
gold_block = "mcl_core:gold_block",
tin_block = "mcl_core:iron_block",
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",
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_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",
dye_cyan = "mcl_dyes:cyan",
dye_magenta = "mcl_dyes:magenta",
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",
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",
apple_leaves = "mcl_trees:leaves_oak",
apple_log = "mcl_trees:tree_oak",
apple_planks = "mcl_trees:wood_oak",
birch_leaves = "mcl_trees:leaves_birch",
birch_log = "mcl_trees:tree_birch",
birch_planks = "mcl_trees:wood_birch",
jungle_leaves = "mcl_trees:leaves_jungle",
bowl = "mcl_core:bowl",
stick = "mcl_core:stick",
}
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

106
src/materials/minetest.lua Normal file
View File

@ -0,0 +1,106 @@
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",
}
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

8
src/player.lua Normal file
View File

@ -0,0 +1,8 @@
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

@ -0,0 +1,51 @@
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

40
src/player/mineclonia.lua Normal file
View File

@ -0,0 +1,40 @@
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

41
src/player/minetest.lua Normal file
View File

@ -0,0 +1,41 @@
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

@ -0,0 +1,41 @@
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,297 +1,8 @@
local sound_api = {} local filename = xcompat.gameid
--convert some games for api usage --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
--ks_sounds conversion filename = "xcompat_agnostic"
--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 end
function ks.node_sound_wood_defaults(table) return dofile(xcompat.modpath .. "/src/sounds/" .. filename .. ".lua")
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

67
src/sounds/exile.lua Normal file
View File

@ -0,0 +1,67 @@
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

@ -0,0 +1,65 @@
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

@ -0,0 +1,63 @@
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

@ -0,0 +1,66 @@
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

107
src/sounds/ksurvive2.lua Normal file
View File

@ -0,0 +1,107 @@
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

67
src/sounds/mineclonia.lua Normal file
View File

@ -0,0 +1,67 @@
--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

67
src/sounds/minetest.lua Normal file
View File

@ -0,0 +1,67 @@
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

@ -0,0 +1,63 @@
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

8
src/textures.lua Normal file
View File

@ -0,0 +1,8 @@
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

@ -0,0 +1,57 @@
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

57
src/textures/minetest.lua Normal file
View File

@ -0,0 +1,57 @@
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

@ -0,0 +1,65 @@
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

8
src/utilities.lua Normal file
View File

@ -0,0 +1,8 @@
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

@ -0,0 +1,356 @@
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

3517
test/nodelist/mineclonia.txt Normal file

File diff suppressed because it is too large Load Diff

1494
test/nodelist/minetest.txt Normal file

File diff suppressed because it is too large Load Diff

2530
test/nodelist/voxelibre.txt Normal file

File diff suppressed because it is too large Load Diff