11 Commits

28 changed files with 11267 additions and 17 deletions

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

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

@ -13,5 +13,9 @@ read_globals = {
"fl_trees",
"hades_sounds",
"rp_sounds",
"mtt",
"sounds",
"player_api",
"mcl_player",
"fl_player",
}

View File

@ -1,6 +1,6 @@
# XCompat
[![luacheck](https://github.com/mt-mods/xcompat/workflows/luacheck/badge.svg)](https://github.com/mt-mods/xcompat/actions)
[![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/)
Provides cross compatibility between games and mods for sounds and crafting materials.
@ -15,16 +15,16 @@ See the respective sub apis doc file in /doc for detailed documentation.
## Directly supported games and mods
| Games | Sounds | Materials | Textures |
| ----------------- | --------- | --------- | --------- |
| Minetest Game | x | x | x |
| MineClone2 | x | x | |
| Mineclonia | x | x | |
| Hades Revisited | x | x | |
| Farlands Reloaded | x | x | x |
| Exile | x | | |
| KSurvive 2 | x | | |
| Forgotten Lands | x | | |
| 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

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

2
gitattributes Normal file
View File

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

View File

@ -11,6 +11,7 @@ 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)
if key and xcompat.sounds[key] then
@ -43,3 +44,8 @@ minetest.register_on_mods_loaded(function()
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,3 @@
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
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

View File

@ -66,7 +66,7 @@ minetest.register_chatcommand("xcompat_test_sounds", {
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 material: "..sound.." in game: "..gameid)
minetest.chat_send_player(name, "Missing sound: "..sound.." in game: "..gameid)
end
end
end

View File

@ -16,4 +16,40 @@ function functions.can_interact_with_node(player, pos)
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

@ -39,6 +39,7 @@ local materials = {
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",
@ -76,6 +77,7 @@ local materials = {
birch_planks = "fl_trees:aspen_plank",
jungle_leaves = "fl_trees:jungletree_leaves",
bowl = "",
stick = "fl_trees:stick",
}
if minetest.get_modpath("basic_materials") then

View File

@ -46,6 +46,7 @@ local materials = {
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",
@ -83,6 +84,7 @@ local materials = {
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

View File

@ -25,7 +25,7 @@ local materials = {
torch = "mcl_torches:torch",
diamond = "mcl_core:diamond",
clay_lump = "default:clay_lump",
water_bucket = "mcl_buckets:bucket:bucket_water",
water_bucket = "mcl_buckets:bucket_water",
empty_bucket = "mcl_buckets:bucket_empty",
dye_dark_grey = "mcl_dyes:dark_grey",
dye_black = "mcl_dyes:black",
@ -41,6 +41,7 @@ local materials = {
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",
@ -77,6 +78,19 @@ local materials = {
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

View File

@ -39,6 +39,7 @@ local materials = {
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",
@ -75,6 +76,7 @@ local materials = {
birch_planks = "default:aspen_wood",
jungle_leaves = "default:jungleleaves",
bowl = "",
stick = "default:stick",
}
if minetest.registered_items["farming:bowl"] then

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

@ -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