2019-08-30 23:05:56 +02:00
--
-- Register lib_material nodes
--
--
--
-- Define constants that can be used in csv
local S = lib_materials.intllib
local function read_node_str ( node_str )
if # node_str > 0 then
local node , count = node_str : match ( " ([^%s]+)%s*(%d*) " )
return node , tonumber ( count ) or 1
end
end
2019-10-13 08:53:09 +02:00
--## register dirt nodes for with grass, with litter, and with ground cover and for biome specific ground cover.
--## Dirts:
--## Dirt,Black Dirt,Brown Dirt,Clay Dirt,Clayey Dirt,Red Clay,White Clay,Coarse Dirt,Compacted Dirt, Dark Dirt,
--## Dried Dirt,Dry Dirt,Loam,Mud 01,Mud 02,Dried Mud,Peat,Permafrost,Red Dirt,Sandy Dirt,Silt 01,Silt 02,Silt 03,Silty Dirt,Sod
--## Dirts are registered as standalone nodes, as well as, with each of several grass or other ground cover types, listed below.
--## Grass(es)(Bamboo,Brown,Cold,Crystal,Dry,Fiery,Grass(Default),Gray,Green,Grove,Jungle 01,Mushroom,Prairie),
--## Coniferous Litter,Fungal Litter,Leaf Litter 01,Leaf Litter 02,Rainforest Litter,Stones,Vines,Snow,Soil,Wet Soil,Stone,Cobblestone,Desert Cobblestone
--## Dirts are also registered for each biome ground cover, according to temperature, humidity and altitude. Example: 'dirt_with_grass_warm_humid_lowland'.
local temperatures = { " hot " , " warm " , " temperate " , " cool " }
local humidities = { " humid " , " semihumid " , " temperate " , " semiarid " }
local elevations = { " coastal " , " lowland " , " shelf " , " highland " }
local palettes1 = {
hot_humid = " #93fc54:80 " ,
hot_semihumid = " #fcd953:80 " ,
hot_temperate = " #fc9754:80 " ,
hot_semiarid = " #fc5458:80 " ,
warm_humid = " #81da62:72 " ,
warm_semihumid = " #dacf61:72 " ,
warm_temperate = " #daa062:72 " ,
warm_semiarid = " #da6e62:72 " ,
temperate_humid = " #36e44b:64 " ,
temperate_semihumid = " #b1e436:64 " ,
temperate_temperate = " #e4d136:64 " ,
temperate_semiarid = " #e48836:64 " ,
cool_humid = " #43e9a5:48 " ,
cool_semihumid = " #69e942:48 " ,
cool_temperate = " #ace943:48 " ,
cool_semiarid = " #e9df43:48 " ,
}
local textures = { }
if lib_materials.color_grass_use then
textures = {
coastal = {
" lib_materials_grass_jungle_01_top.png " , " lib_materials_grass_jungle_01_side.png "
} ,
lowland = {
" lib_materials_grass_default_top.png " , " lib_materials_grass_default_side.png "
} ,
shelf = {
" lib_materials_grass_dry_default_top.png " , " lib_materials_grass_dry_default_side.png "
} ,
highland = {
" lib_materials_grass_brown_top.png " , " lib_materials_grass_brown_side.png "
}
}
else
textures = {
coastal = {
" lib_materials_grass_coastal_top.png " , " lib_materials_grass_coastal_side.png "
} ,
lowland = {
" lib_materials_grass_lowland_top.png " , " lib_materials_grass_lowland_side.png "
} ,
shelf = {
" lib_materials_grass_shelf_top.png " , " lib_materials_grass_shelf_side.png "
} ,
highland = {
" lib_materials_grass_highland_top.png " , " lib_materials_grass_highland_side.png "
}
}
end
local palettes2 = {
{
" #43e9a5:80 " , " #36e44b:80 " , " #81da62:80 " , " #93fc54:80 "
} ,
{
" #69e942:80 " , " #b1e436:80 " , " #dacf61:80 " , " #fcd953:80 "
} ,
{
" #ace943:80 " , " #e4d136:80 " , " #daa062:80 " , " #fc9754:80 "
} ,
{
" #e9df43:80 " , " #e48836:80 " , " #da6e62:80 " , " #fc5458:80 "
}
}
local grasses = {
{ " Wet " , " lib_materials_grass_jungle_01_top.png " , " lib_materials_grass_jungle_01_side.png " } ,
{ " Lush " , " lib_materials_grass_default_top.png " , " lib_materials_grass_default_side.png " } ,
{ " Dry " , " lib_materials_grass_dry_default_top.png " , " lib_materials_grass_dry_default_side.png " } ,
{ " Brown " , " lib_materials_grass_brown_top.png " , " lib_materials_grass_brown_side.png " }
}
--Grass Top with Grass Sides over Dirt
local covers = {
{ " grass " , " Grass " , " lib_materials_grass_default_top.png " , " lib_materials_grass_default_side.png " } ,
{ " grass_bamboo " , " Bamboo Grass " , " lib_materials_grass_bamboo_top.png " , " lib_materials_grass_bamboo_side.png " } ,
{ " grass_brown " , " Brown Grass " , " lib_materials_grass_brown_top.png " , " lib_materials_grass_brown_side.png " } ,
{ " grass_cold " , " Cold Grass " , " lib_materials_grass_cold_top.png " , " lib_materials_grass_cold_side.png " } ,
{ " grass_crystal " , " Crystal Grass " , " lib_materials_grass_crystal_top.png " , " lib_materials_grass_crystal_side.png " } ,
{ " grass_dry " , " Dry Grass " , " lib_materials_grass_dry_default_top.png " , " lib_materials_grass_dry_default_side.png " } ,
{ " grass_fiery " , " Fiery Grass " , " lib_materials_grass_fiery_top.png " , " lib_materials_grass_fiery_side.png " } ,
{ " grass_gray " , " Gray Grass " , " lib_materials_grass_gray_top.png " , " lib_materials_grass_gray_side.png " } ,
{ " grass_green " , " Green Grass " , " lib_materials_grass_green_top.png " , " lib_materials_grass_green_side.png " } ,
{ " grass_grove " , " Grove Grass " , " lib_materials_grass_grove_top.png " , " lib_materials_grass_grove_side.png " } ,
{ " grass_jungle_01 " , " Jungle Grass 01 " , " lib_materials_grass_jungle_01_top.png " , " lib_materials_grass_jungle_01_side.png " } ,
{ " grass_mushroom " , " Mushroom Grass " , " lib_materials_grass_mushroom_top.png " , " lib_materials_grass_mushroom_side.png " } ,
{ " grass_prairie " , " Prairie Grass " , " lib_materials_grass_prairie_top.png " , " lib_materials_grass_prairie_side.png " } ,
{ " litter_coniferous " , " Coniferous Litter " , " lib_materials_litter_coniferous.png " , " lib_materials_litter_coniferous_side.png " } ,
{ " litter_rainforest " , " Rainforest Litter " , " lib_materials_litter_rainforest.png " , " lib_materials_litter_rainforest_side.png " } ,
{ " snow " , " Snow " , " lib_materials_snow.png " , " lib_materials_snow_side.png " } ,
}
--Soil Top with Soil Sides masked over Dirt
--lib_materials_ground_soil_wet.png lib_materials_ground_soil_wet_side.png
local soils = {
{ " soil " , " Soil " , " lib_materials_dirt_soil_mask.png " } ,
{ " soil_wet " , " Wet Soil " , " lib_materials_dirt_soil_wet_mask.png " , " lib_materials_dirt_with_soil_wet_side.png " } ,
}
--Dirt with Stone nodes. Uses mask over dirt.
local stone_dirts = {
{ " stone " , " Stone " , " lib_materials_stone_default.png^( " , " ^[mask:lib_materials_mask_stone.png) " } ,
{ " stone_cobble " , " Cobblestone " , " lib_materials_stone_cobble_default.png^( " , " ^[mask:lib_materials_mask_cobble.png) " } ,
{ " stone_desert_cobble " , " Desert Cobblestone " , " lib_materials_stone_desert_cobble.png^( " , " ^[mask:lib_materials_mask_cobble.png) " } ,
}
--Dirt with Litter nodes that use alpha texture over dirt.
local alpha_litter_dirts = {
{ " litter_fungi " , " Fungal Litter " , " lib_materials_litter_vine.png " , " lib_materials_grass_fungi_side.png " } ,
{ " litter_leaf_01 " , " Leaf Litter 01 " , " lib_materials_litter_leaf_01.png " , " lib_materials_litter_coniferous_side.png " } ,
{ " litter_leaf_02 " , " Leaf Litter 02 " , " lib_materials_litter_leaf_02.png " , " lib_materials_litter_coniferous_side.png " } ,
{ " litter_stones " , " Stones " , " lib_materials_litter_stones.png " , " lib_materials_litter_stones_side.png " } ,
{ " litter_vine " , " Vines " , " lib_materials_litter_vine.png " , " lib_materials_litter_coniferous_side.png " } ,
}
2019-08-30 23:05:56 +02:00
for i , stone in ipairs ( lib_materials.read_csv ( " | " , lib_materials.path .. " /nodes.csv " ) ) do
--Node_Name|Description|Alias_Mod|Alias_Node|Tile_String|Draw_Type|Param_Type|ParamType2|LightSource|Walkable|Pointable|Climbable|Diggable|Buildable|Use_Alpha|Alpha|Sun_Prop|Damage_Per_Second|Grnd_Cnt|Legacy|Groups|Groups2|Max_Drops|Drops|Sounds|Group_Cracky|Group_Crumbly|Group_Choppy|Group_Snappy|Group_Bendy|Group_Oddly_Breakable_by_Hand|Group_Level|Group_Stone|Group_Sand|Group_Glass|Group_Ore|Group_Metal|Group_Mineral|Group_Ice|Group_Snowy|Group_Dirt|Group_Grass|Group_Soil|Group_BakedClay|Group_Liquid|Group_Lava|Group_Igniter|Group_Mud|Group_Oil|Group_Flammable|Group_Quicksand|Group_Water|Group_Puts_Out_FIre|Group_Cools_Lava|Group_Falling_Node|Group_Not_In_Creative_Inventory|Group_Drown|Group_Disable_Jump|Group_Mohs|Group_RockType|Grp_MatType|LiquidType|LiquidViscosity|LiquidRange|LiquidRenew|LiquidAltSource|LiquidAltFlow|PostEffectColor
local node_name , descript , alias_mod , alias_node , tile_string , particle_img , draw_type , param_type , param2 , light , walk , point , climb , dig , build , use_alpha , alpha , sun_prop , damage , grnd_cont , leg_min , groups , groups2 , max_drop , drops , sounds , grp_crack , grp_crumb , grp_chop , grp_snap , grp_bend , grp_obh , grp_lvl , grp_stone , grp_sand , grp_glass , grp_ore , grp_metal , grp_mineral , grp_ice , grp_snow , grp_dirt , grp_grass , grp_soil , grp_bclay , grp_liquid , grp_lava , grp_ignite , grp_mud , grp_oil , grp_flam , grp_quick , grp_water , grp_pof , grp_cool_lava , grp_fall_node , grp_nici , drown , grp_nojump , grp_mohs , grp_rocktype , grp_mattype , liq_type , liq_visc , liq_range , liq_renew , liq_altsrc , liq_altflow , liq_pec , vframe_w , vframe_h , vframe_l = unpack ( stone )
-- Parse node names: transform empty strings into nil and separate node and count
node_name = read_node_str ( node_name )
--descript = read_node_str(descript)
alias_mod = read_node_str ( alias_mod )
alias_node = read_node_str ( alias_node )
local new_node_def = { }
local new_node_type = 1
new_node_def.tiles = { }
new_node_def.groups = { }
new_node_def.sounds = { }
if grp_dirt ~= " " and grp_grass == " " then
if tonumber ( grp_dirt ) > 0 then
new_node_type = 2
end
end
if string.find ( draw_type , " liquid " ) then
new_node_type = 3
end
if descript ~= " " then
new_node_def.description = S ( " " .. descript .. " " )
end
if draw_type ~= " " then
new_node_def.drawtype = draw_type
end
if param_type ~= " " then
new_node_def.paramtype = param_type
end
if param2 ~= " " then
new_node_def.paramtype2 = param2
end
if light ~= " " then
new_node_def.light_source = tonumber ( light )
end
if walk ~= " " then
if string.lower ( walk ) == " true " then
new_node_def.walkable = true
else
new_node_def.walkable = false
end
end
if point ~= " " then
if string.lower ( point ) == " true " then
new_node_def.pointable = true
else
new_node_def.pointable = false
end
end
if climb ~= " " then
if string.lower ( climb ) == " true " then
new_node_def.climbable = true
else
new_node_def.climbable = false
end
end
if dig ~= " " then
if string.lower ( dig ) == " true " then
new_node_def.diggable = true
else
new_node_def.diggable = false
end
end
if build ~= " " then
if string.lower ( build ) == " true " then
new_node_def.buildable_to = true
else
new_node_def.buildable_to = false
end
end
if use_alpha ~= " " then
new_node_def.use_texture_alpha = string.lower ( use_alpha )
end
if alpha ~= " " then
if string.lower ( alpha ) == " true " then
new_node_def.alpha = true
else
new_node_def.alpha = false
end
end
if alpha ~= " " then
new_node_def.alpha = tonumber ( alpha )
end
if sun_prop ~= " " then
if string.lower ( sun_prop ) == " true " then
new_node_def.sunlight_propagates = true
else
new_node_def.sunlight_propagates = false
end
end
if damage ~= " " then
if tonumber ( damage ) > 0 then
new_node_def.damage_per_second = tonumber ( damage )
end
end
if grnd_cont ~= " " then
if string.lower ( grnd_cont ) == " true " then
new_node_def.is_ground_content = true
else
new_node_def.is_ground_content = false
end
end
if leg_min ~= " " then
if string.lower ( leg_min ) == " true " then
new_node_def.legacy_mineral = true
else
new_node_def.legacy_mineral = false
end
end
if drown ~= " " then
new_node_def.drowning = tonumber ( drown )
end
if liq_type ~= " " then
new_node_def.liquidtype = liq_type
end
if liq_altflow ~= " " then
new_node_def.liquid_alternative_flowing = " lib_materials: " .. liq_altflow
end
if liq_altsrc ~= " " then
new_node_def.liquid_alternative_source = " lib_materials: " .. liq_altsrc
end
if liq_renew ~= " " then
if string.lower ( liq_renew ) == " true " then
new_node_def.liquid_renewable = true
else
new_node_def.liquid_renewable = false
end
end
if liq_renew ~= " " then
new_node_def.liquid_renewable = string.lower ( liq_renew )
end
if liq_visc ~= " " then
new_node_def.liquid_viscosity = tonumber ( liq_visc )
end
if liq_range ~= " " then
new_node_def.liquid_range = tonumber ( liq_range )
end
if liq_pec ~= " " then
--new_node_def.post_effect_color = liq_pec
end
if drops == " " then
drops = nil
end
if drops then
if drops : find ( " [^%,% ] " ) then
local new_drop1 , new_drop2 , new_drop3 , new_drop4 , new_drop5 , new_drop6
new_node_def.drop = { }
if max_drop then
new_node_def.drop . max_items = max_drop
end
new_node_def.drop . items = { }
new_drop1 , new_drop2 , new_drop3 , new_drop4 , new_drop5 , new_drop6 = unpack ( drops : split ( " , " , true ) )
local new_drop_name , new_drop_rarity
if new_drop1 then
new_drop_name , new_drop_rarity = unpack ( new_drop1 : split ( " " , true ) )
if new_drop_name then
if new_drop_rarity then
new_node_def.drop . items [ 1 ] = { items = { new_drop_name } , rarity = tonumber ( new_drop_rarity ) }
else
new_node_def.drop . items [ 1 ] = { items = { new_drop_name } }
end
else
new_node_def.drop . items [ 1 ] = { items = { new_drop1 } }
end
else
new_node_def.drop . items [ 1 ] = { items = { drops } }
end
if new_drop2 then
new_drop_name , new_drop_rarity = unpack ( new_drop2 : split ( " " , true ) )
if new_drop_name then
if new_drop_rarity then
new_node_def.drop . items [ 2 ] = { items = { new_drop_name } , rarity = tonumber ( new_drop_rarity ) }
else
new_node_def.drop . items [ 2 ] = { items = { new_drop_name } }
end
else
new_node_def.drop . items [ 2 ] = { items = { new_drop2 } }
end
else
new_node_def.drop . items [ 2 ] = { items = { drops } }
end
if new_drop3 then
new_drop_name , new_drop_rarity = unpack ( new_drop3 : split ( " " , true ) )
if new_drop_name then
if new_drop_rarity then
new_node_def.drop . items [ 3 ] = { items = { new_drop_name } , rarity = tonumber ( new_drop_rarity ) }
else
new_node_def.drop . items [ 3 ] = { items = { new_drop_name } }
end
else
new_node_def.drop . items [ 3 ] = { items = { new_drop3 } }
end
else
new_node_def.drop . items [ 3 ] = { items = { drops } }
end
if new_drop4 then
new_drop_name , new_drop_rarity = unpack ( new_drop4 : split ( " " , true ) )
if new_drop_name then
if new_drop_rarity then
new_node_def.drop . items [ 4 ] = { items = { new_drop_name } , rarity = tonumber ( new_drop_rarity ) }
else
new_node_def.drop . items [ 4 ] = { items = { new_drop_name } }
end
else
new_node_def.drop . items [ 4 ] = { items = { new_drop4 } }
end
else
new_node_def.drop . items [ 4 ] = { items = { drops } }
end
if new_drop5 then
new_drop_name , new_drop_rarity = unpack ( new_drop5 : split ( " " , true ) )
if new_drop_name then
if new_drop_rarity then
new_node_def.drop . items [ 5 ] = { items = { new_drop_name } , rarity = tonumber ( new_drop_rarity ) }
else
new_node_def.drop . items [ 5 ] = { items = { new_drop_name } }
end
else
new_node_def.drop . items [ 5 ] = { items = { new_drop5 } }
end
else
new_node_def.drop . items [ 5 ] = { items = { drops } }
end
if new_drop6 then
new_drop_name , new_drop_rarity = unpack ( new_drop6 : split ( " " , true ) )
if new_drop_name then
if new_drop_rarity then
new_node_def.drop . items [ 6 ] = { items = { new_drop_name } , rarity = tonumber ( new_drop_rarity ) }
else
new_node_def.drop . items [ 6 ] = { items = { new_drop_name } }
end
else
new_node_def.drop . items [ 6 ] = { items = { new_drop6 } }
end
else
new_node_def.drop . items [ 6 ] = { items = { drops } }
end
else
new_node_def.drop = drops
end
end
local new_tile1 , new_tile2 , new_tile3 , new_tile4 , new_tile5 , new_tile6
if tile_string then
if tile_string : find ( " [^%,% ] " ) then
new_tile1 , new_tile2 , new_tile3 , new_tile4 , new_tile5 , new_tile6 = unpack ( tile_string : split ( " , " , true ) )
else
new_tile1 = tile_string
end
end
if particle_img then
if particle_img ~= " " then
new_node_def.particle_image = particle_img
--else
--new_node_def.particle_image = new_tile1
end
end
if new_node_type == 3 then --Fluids
if draw_type == " flowingliquid " then
new_node_def.tiles [ 1 ] = new_tile1
new_node_def.special_tiles = {
{
name = new_tile2 ,
backface_culling = false ,
animation = {
type = " vertical_frames " ,
aspect_w = tonumber ( vframe_w ) ,
aspect_h = tonumber ( vframe_h ) ,
length = tonumber ( vframe_l ) ,
} ,
} ,
{
name = new_tile2 ,
backface_culling = true ,
animation = {
type = " vertical_frames " ,
aspect_w = tonumber ( vframe_w ) ,
aspect_h = tonumber ( vframe_h ) ,
length = tonumber ( vframe_l ) ,
} ,
} ,
}
else
new_node_def.tiles = {
{
name = new_tile1 ,
backface_culling = false ,
animation = {
type = " vertical_frames " ,
aspect_w = tonumber ( vframe_w ) ,
aspect_h = tonumber ( vframe_h ) ,
length = tonumber ( vframe_l ) ,
} ,
} ,
{
name = new_tile1 ,
backface_culling = true ,
animation = {
type = " vertical_frames " ,
aspect_w = tonumber ( vframe_w ) ,
aspect_h = tonumber ( vframe_h ) ,
length = tonumber ( vframe_l ) ,
} ,
} ,
}
end
else
if new_tile1 then
new_node_def.tiles [ 1 ] = new_tile1
end
if new_tile2 and new_tile2 ~= " " then
new_node_def.tiles [ 2 ] = new_tile2
else
new_node_def.tiles [ 2 ] = new_tile1
end
if new_tile3 and new_tile3 ~= " " then
new_node_def.tiles [ 3 ] = new_tile3
else
new_node_def.tiles [ 3 ] = new_tile2
end
if new_tile4 and new_tile4 ~= " " then
new_node_def.tiles [ 4 ] = new_tile4
else
new_node_def.tiles [ 4 ] = new_tile3
end
if new_tile5 and new_tile5 ~= " " then
new_node_def.tiles [ 5 ] = new_tile5
else
new_node_def.tiles [ 5 ] = new_tile3
end
if new_tile6 and new_tile6 ~= " " then
new_node_def.tiles [ 6 ] = new_tile6
else
new_node_def.tiles [ 6 ] = new_tile3
end
end
if sounds and sounds ~= " " then
--sounds = assert(loadstring(sounds))() or lib_materials.node_sound_stone_defaults(),
--new_node_def.sounds = assert(loadstring(sounds))() or lib_materials.node_sound_stone_defaults()
if sounds == " dirt " then
new_node_def.sounds = lib_materials.node_sound_dirt_defaults ( )
elseif sounds == " stone " then
new_node_def.sounds = lib_materials.node_sound_stone_defaults ( )
elseif sounds == " sand " then
new_node_def.sounds = lib_materials.node_sound_sand_defaults ( )
elseif sounds == " gravel " then
new_node_def.sounds = lib_materials.node_sound_gravel_defaults ( )
elseif sounds == " glass " then
new_node_def.sounds = lib_materials.node_sound_glass_defaults ( )
2019-09-24 00:31:31 +02:00
elseif sounds == " grass " then
new_node_def.sounds = lib_materials.node_sound_leaves_defaults ( )
2019-08-30 23:05:56 +02:00
elseif sounds == " metal " then
new_node_def.sounds = lib_materials.node_sound_metal_defaults ( )
elseif sounds == " water " then
new_node_def.sounds = lib_materials.node_sound_water_defaults ( )
elseif sounds == " snow " then
new_node_def.sounds = lib_materials.node_sound_snow_defaults ( )
else
end
end
if groups2 then
local new_node_groups = groups2 : split ( " , " , true )
for _ , nng in pairs ( new_node_groups ) do
local g_name , g_val = unpack ( nng : split ( " " , true ) )
new_node_def.groups [ g_name ] = tonumber ( g_val )
end
end
if new_node_type == 2 then
new_node_def.soil = {
base = node_name ,
dry = " lib_materials: " .. node_name .. " _with_soil " ,
wet = " lib_materials: " .. node_name .. " _with_soil_wet "
}
minetest.register_node ( " lib_materials: " .. node_name .. " " , new_node_def )
2019-10-13 08:53:09 +02:00
minetest.register_alias ( node_name , " lib_materials: " .. node_name .. " " )
2019-08-30 23:05:56 +02:00
for _ , sl in pairs ( soils ) do
local id = string.lower ( sl [ 1 ] )
local full = node_name .. " _with_ " .. id
local new_cloned_node = table.copy ( minetest.registered_nodes [ " lib_materials: " .. node_name .. " " ] )
2019-09-07 00:27:34 +02:00
new_cloned_node.description = descript .. " with " .. sl [ 2 ]
2019-08-30 23:05:56 +02:00
if sl [ 4 ] then
new_cloned_node.tiles = {
new_tile1 .. " ^ " .. sl [ 3 ] ,
2019-09-07 00:27:34 +02:00
new_tile1 .. " ^ " .. sl [ 4 ] ,
2019-08-30 23:05:56 +02:00
}
else
new_cloned_node.tiles = {
new_tile1 .. " ^ " .. sl [ 3 ] ,
new_tile1 ,
}
end
new_cloned_node.soil = {
base = full ,
dry = " lib_materials: " .. node_name .. " _with_soil " ,
wet = " lib_materials: " .. node_name .. " _with_soil_wet "
}
2019-10-13 08:53:09 +02:00
new_cloned_node.groups [ " not_in_creative_inventory " ] = 1
2019-08-30 23:05:56 +02:00
minetest.register_node ( " lib_materials: " .. full .. " " , new_cloned_node )
2019-10-13 08:53:09 +02:00
minetest.register_alias ( full , " lib_materials: " .. full .. " " )
2019-08-30 23:05:56 +02:00
end
for _ , cv in pairs ( covers ) do
local id = string.lower ( cv [ 1 ] )
local full = node_name .. " _with_ " .. id
local new_cloned_node = table.copy ( minetest.registered_nodes [ " lib_materials: " .. node_name .. " " ] )
new_cloned_node.description = descript .. " with " .. cv [ 2 ]
if cv [ 4 ] then
new_cloned_node.tiles = {
cv [ 3 ] ,
new_tile1 ,
new_tile1 .. " ^ " .. cv [ 4 ]
}
else
new_cloned_node.tiles = {
cv [ 3 ] ,
new_tile1 ,
}
end
new_cloned_node.soil = {
base = full ,
dry = " lib_materials: " .. node_name .. " _with_soil " ,
wet = " lib_materials: " .. node_name .. " _with_soil_wet "
}
2019-10-13 08:53:09 +02:00
new_cloned_node.groups [ " not_in_creative_inventory " ] = 1
2019-08-30 23:05:56 +02:00
minetest.register_node ( " lib_materials: " .. full .. " " , new_cloned_node )
2019-10-13 08:53:09 +02:00
minetest.register_alias ( full , " lib_materials: " .. full .. " " )
2019-08-30 23:05:56 +02:00
end
for _ , sd in pairs ( stone_dirts ) do
local id = string.lower ( sd [ 1 ] )
local full = node_name .. " _with_ " .. id
local new_cloned_node = table.copy ( minetest.registered_nodes [ " lib_materials: " .. node_name .. " " ] )
new_cloned_node.description = descript .. " with " .. sd [ 1 ]
new_cloned_node.tiles = { sd [ 3 ] .. new_tile1 .. sd [ 4 ] }
new_cloned_node.soil = {
base = full ,
dry = " lib_materials: " .. node_name .. " _with_soil " ,
wet = " lib_materials: " .. node_name .. " _with_soil_wet "
}
2019-10-13 08:53:09 +02:00
new_cloned_node.groups [ " not_in_creative_inventory " ] = 1
2019-08-30 23:05:56 +02:00
minetest.register_node ( " lib_materials: " .. full .. " " , new_cloned_node )
2019-10-13 08:53:09 +02:00
minetest.register_alias ( full , " lib_materials: " .. full .. " " )
2019-08-30 23:05:56 +02:00
end
for _ , alph in pairs ( alpha_litter_dirts ) do
local id = string.lower ( alph [ 1 ] )
local full = node_name .. " _with_ " .. id
local new_cloned_node = table.copy ( minetest.registered_nodes [ " lib_materials: " .. node_name .. " " ] )
new_cloned_node.description = descript .. " with " .. alph [ 1 ]
new_cloned_node.tiles = {
new_tile1 .. " ^ " .. alph [ 3 ] ,
new_tile1 ,
new_tile1 .. " ^ " .. alph [ 4 ]
}
new_cloned_node.soil = {
base = full ,
dry = " lib_materials: " .. node_name .. " _with_soil " ,
wet = " lib_materials: " .. node_name .. " _with_soil_wet "
}
2019-10-13 08:53:09 +02:00
new_cloned_node.groups [ " not_in_creative_inventory " ] = 1
2019-08-30 23:05:56 +02:00
minetest.register_node ( " lib_materials: " .. full .. " " , new_cloned_node )
2019-10-13 08:53:09 +02:00
minetest.register_alias ( full , " lib_materials: " .. full .. " " )
2019-08-30 23:05:56 +02:00
end
for _ , t in pairs ( temperatures ) do
for _ , h in pairs ( humidities ) do
for _ , e in pairs ( elevations ) do
local id = node_name .. " _with_grass_ " .. t .. " _ " .. h .. " _ " .. e
local new_cloned_node = table.copy ( minetest.registered_nodes [ " lib_materials: " .. node_name .. " " ] )
new_cloned_node.description = descript .. " with Grass ( " .. t .. " _ " .. h .. " _ " .. e .. " ) "
new_cloned_node.tiles = {
textures [ e ] [ 1 ] .. " ^[colorize: " .. palettes1 [ t .. " _ " .. h ] ,
new_tile1 ,
new_tile1 .. " ^( " .. textures [ e ] [ 2 ] .. " ^[colorize: " .. palettes1 [ t .. " _ " .. h ] .. " ) "
}
new_cloned_node.soil = {
base = id ,
dry = " lib_materials: " .. node_name .. " _with_soil " ,
wet = " lib_materials: " .. node_name .. " _with_soil_wet "
}
2019-10-13 08:53:09 +02:00
new_cloned_node.groups [ " not_in_creative_inventory " ] = 1
2019-08-30 23:05:56 +02:00
minetest.register_node ( " lib_materials: " .. id .. " " , new_cloned_node )
2019-10-13 08:53:09 +02:00
minetest.register_alias ( id , " lib_materials: " .. id .. " " )
2019-08-30 23:05:56 +02:00
end
end
end
if lib_materials.color_grass_reg then
for _ , g in pairs ( grasses ) do
local count = 1
for _ , ps in pairs ( palettes2 ) do
local id = string.lower ( g [ 1 ] )
for _ , p in pairs ( ps ) do
local num = string.format ( " %02d " , count )
local full = node_name .. " _with_grass_ " .. id .. " _ " .. num
local new_cloned_node = table.copy ( minetest.registered_nodes [ " lib_materials: " .. node_name .. " " ] )
new_cloned_node.description = descript .. " with Grass " .. g [ 1 ] .. " ( " .. num .. " ) "
new_cloned_node.tiles = {
g [ 2 ] .. " ^[colorize: " .. p ,
new_tile1 ,
new_tile1 .. " ^( " .. g [ 3 ] .. " ^[colorize: " .. p
.. " ) "
}
new_cloned_node.soil = {
base = full ,
dry = " lib_materials: " .. node_name .. " _with_soil " ,
wet = " lib_materials: " .. node_name .. " _with_soil_wet "
}
2019-10-13 08:53:09 +02:00
new_cloned_node.groups [ " not_in_creative_inventory " ] = 1
2019-08-30 23:05:56 +02:00
minetest.register_node ( " lib_materials: " .. full .. " " , new_cloned_node )
2019-10-13 08:53:09 +02:00
minetest.register_alias ( full , " lib_materials: " .. full .. " " )
2019-08-30 23:05:56 +02:00
count = count + 1
end
end
end
end
else
minetest.register_node ( " lib_materials: " .. node_name .. " " , new_node_def )
minetest.register_alias ( " " .. node_name .. " " , " lib_materials: " .. node_name .. " " )
end
2019-10-13 08:53:09 +02:00
if lib_materials.enable_lib_shapes == true then
if minetest.global_exists ( " lib_shapes " ) then
if string.find ( node_name , " stone " ) then
if ( string.find ( node_name , " block " ) or string.find ( node_name , " brick " ) or string.find ( node_name , " cobble " ) ) then
--lib_shapes.register_node("lib_materials:"..node_name.."", "stairs")
--lib_shapes.register_node("lib_materials:"..node_name.."", "slab")
--lib_shapes.register_node("lib_materials:"..node_name.."", "pillar_with_wall")
--lib_shapes.register_node("lib_materials:"..node_name.."", "pillar_with_wall_thick")
--lib_shapes.register_node("lib_materials:"..node_name.."", "wall")
--lib_shapes.register_node("lib_materials:"..node_name.."", "wall_thick")
lib_shapes.register_basic_set ( " lib_materials: " .. node_name .. " " )
--lib_shapes.register_fancy_set("lib_materials:"..node_name.."")
--lib_shapes.register_doors_set("lib_materials:"..node_name.."")
--lib_shapes.register_furniture_set("lib_materials:"..node_name.."")
end
end
if node_name == " lib_materials:stone " or node_name == " lib_materials:stone_desert " or node_name == " lib_materials:stone_sandstone "
or node_name == " lib_materials:stone_sandstone_desert " or node_name == " lib_materials:stone_sandstone_silver " or node_name == " lib_materials:stone_obsidian " then
lib_shapes.register_node ( " lib_materials: " .. node_name .. " " , " stairs " )
lib_shapes.register_node ( " lib_materials: " .. node_name .. " " , " stairs_inner " )
lib_shapes.register_node ( " lib_materials: " .. node_name .. " " , " stairs_outer " )
lib_shapes.register_node ( " lib_materials: " .. node_name .. " " , " slab " )
end
if string.find ( node_name , " roof " ) then
lib_shapes.register_node ( " lib_materials: " .. node_name .. " " , " stairs " )
lib_shapes.register_node ( " lib_materials: " .. node_name .. " " , " stairs_inner " )
lib_shapes.register_node ( " lib_materials: " .. node_name .. " " , " stairs_outer " )
lib_shapes.register_node ( " lib_materials: " .. node_name .. " " , " slab " )
end
if string.find ( node_name , " glass " ) then
lib_shapes.register_node ( " lib_materials: " .. node_name .. " " , " pane " )
lib_shapes.register_node ( " lib_materials: " .. node_name .. " " , " pane_centered " )
lib_shapes.register_door_node ( " lib_materials: " .. node_name .. " " , " door_centered " )
lib_shapes.register_door_node ( " lib_materials: " .. node_name .. " " , " door_centered_right " )
lib_shapes.register_door_node ( " lib_materials: " .. node_name .. " " , " door_centered_with_window " )
lib_shapes.register_door_node ( " lib_materials: " .. node_name .. " " , " door_centered_with_window_right " )
lib_shapes.register_door_node ( " lib_materials: " .. node_name .. " " , " door_centered_sliding " )
lib_shapes.register_door_node ( " lib_materials: " .. node_name .. " " , " door_centered_sliding_right " )
lib_shapes.register_door_node ( " lib_materials: " .. node_name .. " " , " trapdoor_solid " )
2019-09-24 00:31:31 +02:00
end
2019-09-04 18:59:44 +02:00
end
end
2019-08-30 23:05:56 +02:00
if alias_mod and alias_node then
minetest.register_alias ( " " .. alias_mod .. " : " .. alias_node .. " " , " lib_materials: " .. node_name .. " " )
end
end
2019-10-13 08:53:09 +02:00
--minetest.register_alias(""..node_name.."", "lib_materials:"..node_name.."")
--minetest.register_alias(""..node_name.."", "lib_materials:"..node_name.."")
minetest.register_alias ( " default:dirt_with_grass " , " lib_materials:dirt_with_grass " )
minetest.register_alias ( " default:dirt_with_dry_grass " , " lib_materials:dirt_with_grass_dry " )
if lib_materials.enable_lib_shapes == true then
if minetest.global_exists ( " lib_shapes " ) then
minetest.register_alias ( " stairs:stair_stone " , " lib_materials:stone_stairs " )
minetest.register_alias ( " stairs:stair_inner_stone " , " lib_materials:stone_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_stone " , " lib_materials:stone_stairs_outer " )
minetest.register_alias ( " stairs:slab_stone " , " lib_materials:stone_slab " )
minetest.register_alias ( " stairs:stair_stone_block " , " lib_materials:stone_block_stairs " )
minetest.register_alias ( " stairs:stair_inner_stone_block " , " lib_materials:stone_block_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_stone_block " , " lib_materials:stone_block_stairs_outer " )
minetest.register_alias ( " stairs:slab_stone_block " , " lib_materials:stone_block_slab " )
minetest.register_alias ( " stairs:stair_stonebrick " , " lib_materials:stone_brick_stairs " )
minetest.register_alias ( " stairs:stair_inner_stonebrick " , " lib_materials:stone_brick_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_stonebrick " , " lib_materials:stone_brick_stairs_outer " )
minetest.register_alias ( " stairs:slab_stonebrick " , " lib_materials:stone_brick_slab " )
minetest.register_alias ( " stairs:stair_cobble " , " lib_materials:stone_cobble_stairs " )
minetest.register_alias ( " stairs:stair_inner_cobble " , " lib_materials:stone_cobble_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_cobble " , " lib_materials:stone_cobble_stairs_outer " )
minetest.register_alias ( " stairs:slab_cobble " , " lib_materials:stone_cobble_slab " )
minetest.register_alias ( " stairs:stair_mossycobble " , " lib_materials:stone_cobble_mossy_stairs " )
minetest.register_alias ( " stairs:stair_inner_mossycobble " , " lib_materials:stone_cobble_mossy_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_mossycobble " , " lib_materials:stone_cobble_mossy_stairs_outer " )
minetest.register_alias ( " stairs:slab_mossycobble " , " lib_materials:stone_cobble_mossy_slab " )
minetest.register_alias ( " stairs:stair_desert_stone " , " lib_materials:stone_desert_stairs " )
minetest.register_alias ( " stairs:stair_inner_desert_stone " , " lib_materials:stone_desert_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_desert_stone " , " lib_materials:stone_desert_stairs_outer " )
minetest.register_alias ( " stairs:slab_desert_stone " , " lib_materials:stone_desert_slab " )
minetest.register_alias ( " stairs:stair_desert_stone_block " , " lib_materials:stone_desert_block_stairs " )
minetest.register_alias ( " stairs:stair_inner_desert_stone_block " , " lib_materials:stone_desert_block_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_desert_stone_block " , " lib_materials:stone_desert_block_stairs_outer " )
minetest.register_alias ( " stairs:slab_desert_stone_block " , " lib_materials:stone_desert_block_slab " )
minetest.register_alias ( " stairs:stair_desert_stonebrick " , " lib_materials:stone_desert_brick_stairs " )
minetest.register_alias ( " stairs:stair_inner_desert_stonebrick " , " lib_materials:stone_desert_brick_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_desert_stonebrick " , " lib_materials:stone_desert_brick_stairs_outer " )
minetest.register_alias ( " stairs:slab_desert_stonebrick " , " lib_materials:stone_desert_brick_slab " )
minetest.register_alias ( " stairs:stair_desert_cobble " , " lib_materials:stone_desert_cobble_stairs " )
minetest.register_alias ( " stairs:stair_inner_desert_cobble " , " lib_materials:stone_desert_cobble_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_desert_cobble " , " lib_materials:stone_desert_cobble_stairs_outer " )
minetest.register_alias ( " stairs:slab_desert_cobble " , " lib_materials:stone_desert_cobble_slab " )
minetest.register_alias ( " stairs:stair_sandstone " , " lib_materials:stone_sandstone_stairs " )
minetest.register_alias ( " stairs:stair_inner_sandstone " , " lib_materials:stone_sandstone_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_sandstone " , " lib_materials:stone_sandstone_stairs_outer " )
minetest.register_alias ( " stairs:slab_sandstone " , " lib_materials:stone_sandstone_slab " )
minetest.register_alias ( " stairs:stair_sandstone_block " , " lib_materials:stone_sandstone_block_stairs " )
minetest.register_alias ( " stairs:stair_inner_sandstone_block " , " lib_materials:stone_sandstone_block_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_sandstone_block " , " lib_materials:stone_sandstone_block_stairs_outer " )
minetest.register_alias ( " stairs:slab_sandstone_block " , " lib_materials:stone_sandstone_block_slab " )
minetest.register_alias ( " stairs:stair_sandstonebrick " , " lib_materials:stone_sandstone_brick_stairs " )
minetest.register_alias ( " stairs:stair_inner_sandstonebrick " , " lib_materials:stone_sandstone_brick_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_sandstonebrick " , " lib_materials:stone_sandstone_brick_stairs_outer " )
minetest.register_alias ( " stairs:slab_sandstonebrick " , " lib_materials:stone_sandstone_brick_slab " )
minetest.register_alias ( " stairs:stair_desert_sandstone " , " lib_materials:stone_sandstone_desert_stairs " )
minetest.register_alias ( " stairs:stair_inner_desert_sandstone " , " lib_materials:stone_sandstone_desert_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_desert_sandstone " , " lib_materials:stone_sandstone_desert_stairs_outer " )
minetest.register_alias ( " stairs:slab_desert_sandstone " , " lib_materials:stone_sandstone_desert_slab " )
minetest.register_alias ( " stairs:stair_desert_sandstone_block " , " lib_materials:stone_sandstone_desert_block_stairs " )
minetest.register_alias ( " stairs:stair_inner_desert_sandstone_block " , " lib_materials:stone_sandstone_desert_block_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_desert_sandstone_block " , " lib_materials:stone_sandstone_desert_block_stairs_outer " )
minetest.register_alias ( " stairs:slab_desert_sandstone_block " , " lib_materials:stone_sandstone_desert_block_slab " )
minetest.register_alias ( " stairs:stair_desert_sandstone_brick " , " lib_materials:stone_sandstone_desert_brick_stairs " )
minetest.register_alias ( " stairs:stair_inner_desert_sandstone_brick " , " lib_materials:stone_sandstone_desert_brick_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_desert_sandstone_brick " , " lib_materials:stone_sandstone_desert_brick_stairs_outer " )
minetest.register_alias ( " stairs:slab_desert_sandstone_brick " , " lib_materials:stone_sandstone_desert_brick_slab " )
minetest.register_alias ( " stairs:stair_silver_sandstone " , " lib_materials:stone_sandstone_silver_stairs " )
minetest.register_alias ( " stairs:stair_inner_silver_sandstone " , " lib_materials:stone_sandstone_silver_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_silver_sandstone " , " lib_materials:stone_sandstone_silver_stairs_outer " )
minetest.register_alias ( " stairs:slab_silver_sandstone " , " lib_materials:stone_sandstone_silver_slab " )
minetest.register_alias ( " stairs:stair_silver_sandstone_block " , " lib_materials:stone_sandstone_silver_block_stairs " )
minetest.register_alias ( " stairs:stair_inner_silver_sandstone_block " , " lib_materials:stone_sandstone_silver_block_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_silver_sandstone_block " , " lib_materials:stone_sandstone_silver_block_stairs_outer " )
minetest.register_alias ( " stairs:slab_silver_sandstone_block " , " lib_materials:stone_sandstone_silver_block_slab " )
minetest.register_alias ( " stairs:stair_silver_sandstone_brick " , " lib_materials:stone_sandstone_silver_brick_stairs " )
minetest.register_alias ( " stairs:stair_inner_silver_sandstone_brick " , " lib_materials:stone_sandstone_silver_brick_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_silver_sandstone_brick " , " lib_materials:stone_sandstone_silver_brick_stairs_outer " )
minetest.register_alias ( " stairs:slab_silver_sandstone_brick " , " lib_materials:stone_sandstone_silver_brick_slab " )
minetest.register_alias ( " stairs:stair_obsidian " , " lib_materials:stone_obsidian_stairs " )
minetest.register_alias ( " stairs:stair_inner_obsidian " , " lib_materials:stone_obsidian_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_obsidian " , " lib_materials:stone_obsidian_stairs_outer " )
minetest.register_alias ( " stairs:slab_obsidian " , " lib_materials:stone_obsidian_slab " )
minetest.register_alias ( " stairs:stair_obsidian_block " , " lib_materials:stone_obsidian_block_stairs " )
minetest.register_alias ( " stairs:stair_inner_obsidian_block " , " lib_materials:stone_obsidian_block_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_obsidian_block " , " lib_materials:stone_obsidian_block_stairs_outer " )
minetest.register_alias ( " stairs:slab_obsidian_block " , " lib_materials:stone_obsidian_block_slab " )
minetest.register_alias ( " stairs:stair_obsidianbrick " , " lib_materials:stone_obsidian_brick_stairs " )
minetest.register_alias ( " stairs:stair_inner_obsidianbrick " , " lib_materials:stone_obsidian_brick_stairs_inner " )
minetest.register_alias ( " stairs:stair_outer_obsidianbrick " , " lib_materials:stone_obsidian_brick_stairs_outer " )
minetest.register_alias ( " stairs:slab_obsidianbrick " , " lib_materials:stone_obsidian_brick_slab " )
end
end
2019-08-30 23:05:56 +02:00