RealBadAngel
2013-04-04 0ca19dacb03a0d33de34a2dabf921ba7c9cb5b25
Update 0.4.6-0
1 files deleted
4 files added
1 files copied
5 files modified
2 files renamed
801 ■■■■ changed files
concrete/init.lua 508 ●●●●● patch | view | raw | blame | history
concrete/textures/technic_concrete_block.png patch | view | raw | blame | history
concrete/textures/technic_rebar.png patch | view | raw | blame | history
concrete/textures/x32/technic_concrete_block.png patch | view | raw | blame | history
concrete/textures/x32/technic_rebar.png patch | view | raw | blame | history
extranodes/depends.txt 4 ●●●● patch | view | raw | blame | history
extranodes/init.lua 42 ●●●●● patch | view | raw | blame | history
technic/concrete.lua 94 ●●●●● patch | view | raw | blame | history
technic/depends.txt 3 ●●●● patch | view | raw | blame | history
technic/init.lua 6 ●●●● patch | view | raw | blame | history
technic_worldgen/init.lua 1 ●●●● patch | view | raw | blame | history
technic_worldgen/oregen.lua 21 ●●●● patch | view | raw | blame | history
technic_worldgen/stairslike.lua 122 ●●●●● patch | view | raw | blame | history
concrete/init.lua
New file
@@ -0,0 +1,508 @@
--Minetest 0.4.6 mod: concrete
--(c) 2013 by RealBadAngel <mk@realbadangel.pl>
minetest.register_craft({
    output = ':technic:rebar 6',
    recipe = {
        {'','', 'default:steel_ingot'},
        {'','default:steel_ingot',''},
        {'default:steel_ingot', '', ''},
    }
})
minetest.register_craft({
    output = ':technic:concrete 5',
    recipe = {
        {'default:stone','technic:rebar','default:stone'},
        {'technic:rebar','default:stone','technic:rebar'},
        {'default:stone','technic:rebar','default:stone'},
    }
})
minetest.register_craft({
    output = ':technic:concrete_post_platform 6',
    recipe = {
        {'technic:concrete','technic:concrete_post','technic:concrete'},
    }
})
minetest.register_craft({
    output = ':technic:concrete_post 12',
    recipe = {
        {'default:stone','technic:rebar','default:stone'},
        {'default:stone','technic:rebar','default:stone'},
        {'default:stone','technic:rebar','default:stone'},
}
})
platform_box = {-0.5 , 0.3 , -0.5 , 0.5 ,  0.5 , 0.5  }
post_str_y={ -0.15 , -0.5 , -0.15 , 0.15 ,  0.5 , 0.15  }
post_str_x1={ 0 , -0.3 , -0.1, 0.5 ,  0.3 , 0.1 }  -- x+
post_str_z1={ -0.1 , -0.3 , 0, 0.1 ,  0.3 , 0.5 } -- z+
post_str_x2={ 0 , -0.3 , -0.1, -0.5 ,  0.3 , 0.1 } -- x-
post_str_z2={ -0.1 , -0.3 , 0, 0.1 ,  0.3 , -0.5 } -- z-
minetest.register_craftitem(":technic:rebar", {
    description = "Rebar",
    inventory_image = "technic_rebar.png",
    stack_max = 99,
})
minetest.register_craftitem(":technic:concrete", {
    description = "Concrete Block",
    inventory_image = "technic_concrete_block.png",
    stack_max = 99,
})
minetest.register_craftitem(":technic:concrete_post", {
    description = "Concrete Post",
    stack_max = 99,
})
minetest.register_craftitem(":technic:concrete_post_platform", {
    description = "Concrete Post Platform",
    stack_max = 99,
})
minetest.register_node(":technic:concrete", {
    description = "Concrete Block",
    tile_images = {"technic_concrete_block.png",},
    is_ground_content = true,
    groups={cracky=1,level=2},
    sounds = default.node_sound_stone_defaults(),
    paramtype = "light",
    light_source = 0,
    sunlight_propagates = true,
    on_construct = function(pos)
        meta=minetest.env:get_meta(pos)
        meta:set_float("postlike",1)
        check_post_connections (pos,1)
    end,
    after_dig_node = function (pos, oldnode, oldmetadata, digger)
        check_post_connections  (pos,0)
    end,
})
minetest.register_node(":technic:concrete_post_platform", {
    description = "Concrete Post Platform",
    tile_images = {"technic_concrete_block.png",},
    is_ground_content = true,
    groups={cracky=1,level=2},
    sounds = default.node_sound_stone_defaults(),
    paramtype = "light",
    light_source = 0,
    sunlight_propagates = true,
    drawtype = "nodebox",
    selection_box = {
        type = "fixed",
        fixed = {platform_box}
        },
    node_box = {
        type = "fixed",
        fixed = {platform_box}
        },
    on_place=function (itemstack, placer, pointed_thing)
    local node=minetest.env:get_node(pointed_thing.under)
    if minetest.get_item_group(node.name, "concrete_post")==0 then
        return minetest.item_place_node(itemstack, placer, pointed_thing)
    end
    local meta=minetest.env:get_meta(pointed_thing.under)
    y1=meta:get_float("y1")
    platform=meta:get_float("platform")
    if y1==1 or platform==1 then
        return minetest.item_place_node(itemstack, placer, pointed_thing)
    end
    y2=meta:get_float("y2")
    x1=meta:get_float("x1")
    x2=meta:get_float("x2")
    z1=meta:get_float("z1")
    z2=meta:get_float("z2")
    rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,1)
    meta:set_float("platform",1)
    hacky_swap_posts(pointed_thing.under,"technic:concrete_post"..rule)
    itemstack:take_item()
    placer:set_wielded_item(itemstack)
    return itemstack
    end,
})
minetest.register_node(":technic:concrete_post", {
    description = "Concrete Post",
    tiles = {"technic_concrete_block.png"},
    groups={cracky=1,level=2,concrete_post=1},
    sounds = default.node_sound_stone_defaults(),
    paramtype = "light",
    light_source = 0,
    sunlight_propagates = true,
    drawtype = "nodebox",
    selection_box = {
        type = "fixed",
        fixed = { -0.15 , -0.5 , -0.15 , 0.15 ,  0.5 , 0.15 }},
    node_box = {
        type = "fixed",
        fixed = {-0.15 , -0.5 , -0.15 , 0.15 ,  0.5 , 0.15  }},
    on_construct = function(pos)
    meta=minetest.env:get_meta(pos)
    meta:set_int("postlike",1)
    meta:set_int("platform",0)
    meta:set_int("x1",0)
    meta:set_int("x2",0)
    meta:set_int("y1",0)
    meta:set_int("y2",0)
    meta:set_int("z1",0)
    meta:set_int("z2",0)
    check_post_connections (pos,1)
    end,
    after_dig_node = function (pos, oldnode, oldmetadata, digger)
    check_post_connections  (pos,0)
    end,
})
local x1,x2,y1,z1,z2
local count=0
for x1 = 0, 1, 1 do    --x-
for x2 = 0, 1, 1 do    --x+
for z1 = 0, 1, 1 do    --z-
for z2 = 0, 1, 1 do    --z+
temp_x1={} temp_x2={} temp_z1={} temp_z2={}
if x1==1 then     temp_x1=post_str_x1  end
if x2==1 then     temp_x2=post_str_x2  end
if z1==1 then     temp_z1=post_str_z1  end
if z2==1 then     temp_z2=post_str_z2  end
minetest.register_node(":technic:concrete_post"..count, {
    description = "Concrete Post",
    tiles = {"technic_concrete_block.png"},
    groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1},
    sounds = default.node_sound_stone_defaults(),
    drop = "technic:concrete_post",
    paramtype = "light",
    light_source = 0,
    sunlight_propagates = true,
    drawtype = "nodebox",
    selection_box = {
        type = "fixed",
        fixed = {
        temp_x1,temp_x2,post_str_y,temp_z1,temp_z2,
        }},
    node_box = {
        type = "fixed",
        fixed = {
        temp_x1,temp_x2,post_str_y,temp_z1,temp_z2,
        }},
    after_dig_node = function (pos, oldnode, oldmetadata, digger)
    check_post_connections  (pos,0)
    end,
})
minetest.register_node(":technic:concrete_post"..count+16, {
    description = "Concrete Post",
    tiles = {"technic_concrete_block.png"},
    groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1},
    sounds = default.node_sound_stone_defaults(),
    drop = "technic:concrete_post_platform",
    paramtype = "light",
    light_source = 0,
    sunlight_propagates = true,
    drawtype = "nodebox",
    selection_box = {
        type = "fixed",
        fixed = {
        platform_box,temp_x1,temp_x2,post_str_y,temp_z1,temp_z2,
        }},
    node_box = {
        type = "fixed",
        fixed = {
        platform_box,temp_x1,temp_x2,post_str_y,temp_z1,temp_z2,
        }},
    after_dig_node = function (pos, oldnode, oldmetadata, digger)
        dig_post_with_platform (pos,oldnode,oldmetadata)
    end,
})
count=count+1 end end end end
minetest.register_node(":technic:concrete_post32", {
    description = "Concrete Post",
    tiles = {"technic_concrete_block.png"},
    groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1},
    sounds = default.node_sound_stone_defaults(),
    drop = "technic:concrete_post",
    paramtype = "light",
    light_source = 0,
    sunlight_propagates = true,
    drawtype = "nodebox",
    selection_box = {
        type = "fixed",
        fixed = {-0.5,-0.3,-0.1,0.5,0.3,0.1},
        },
    node_box = {
        type = "fixed",
        fixed = {
        post_str_x1,post_str_x2,
        }},
    after_dig_node = function (pos, oldnode, oldmetadata, digger)
        check_post_connections  (pos,0)
    end,
})
minetest.register_node(":technic:concrete_post33", {
    description = "Concrete Post",
    tiles = {"technic_concrete_block.png"},
    groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1},
    sounds = default.node_sound_stone_defaults(),
    drop = "technic:concrete_post",
    paramtype = "light",
    light_source = 0,
    sunlight_propagates = true,
    drawtype = "nodebox",
    selection_box = {
        type = "fixed",
        fixed = {
        post_str_z1,post_str_z2,
        }},
    node_box = {
        type = "fixed",
        fixed = {
        post_str_z1,post_str_z2,
        }},
    after_dig_node = function (pos, oldnode, oldmetadata, digger)
    check_post_connections  (pos,0)
    end,
})
minetest.register_node(":technic:concrete_post34", {
    description = "Concrete Post",
    tiles = {"technic_concrete_block.png"},
    groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1},
    sounds = default.node_sound_stone_defaults(),
    drop = "technic:concrete_post_platform",
    paramtype = "light",
    light_source = 0,
    sunlight_propagates = true,
    drawtype = "nodebox",
    selection_box = {
        type = "fixed",
        fixed = {
        platform_box,post_str_x1,post_str_x2,
        }},
    node_box = {
        type = "fixed",
        fixed = {
        platform_box,post_str_x1,post_str_x2,
        }},
    after_dig_node = function (pos, oldnode, oldmetadata, digger)
        dig_post_with_platform (pos,oldnode,oldmetadata)
    end,
})
minetest.register_node(":technic:concrete_post35", {
    description = "Concrete Post",
    tiles = {"technic_concrete_block.png"},
    groups={cracky=1,level=2,not_in_creative_inventory=1,concrete_post=1},
    sounds = default.node_sound_stone_defaults(),
    drop = "technic:concrete_post_platform",
    paramtype = "light",
    light_source = 0,
    sunlight_propagates = true,
    drawtype = "nodebox",
    selection_box = {
        type = "fixed",
        fixed = {
        platform_box,post_str_z1,post_str_z2,
        }},
    node_box = {
        type = "fixed",
        fixed = {
        platform_box,post_str_z1,post_str_z2,
        }},
    after_dig_node = function (pos, oldnode, oldmetadata, digger)
        dig_post_with_platform (pos,oldnode,oldmetadata)
    end,
})
dig_post_with_platform = function (pos,oldnode,oldmetadata)
    x1=tonumber(oldmetadata.fields["x1"])
    x2=tonumber(oldmetadata.fields["x2"])
    y1=tonumber(oldmetadata.fields["y1"])
    y2=tonumber(oldmetadata.fields["y2"])
    z1=tonumber(oldmetadata.fields["z1"])
    z2=tonumber(oldmetadata.fields["z2"])
    print(dump(x1))
    oldmetadata.fields["platform"]="0"
    local rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,0)
    print(dump(rule))
    oldnode.name="technic:concrete_post"..rule
    minetest.env:set_node(pos,oldnode)
    meta = minetest.env:get_meta(pos)
    meta:from_table(oldmetadata)
end
check_post_connections = function(pos,mode)
        local pos1={}
        pos1.x=pos.x
        pos1.y=pos.y
        pos1.z=pos.z
        tempx1=0
        tempx2=0
        tempy1=0
        tempy2=0
        tempz1=0
        tempz2=0
        pos1.x=pos1.x+1
        if minetest.env:get_meta(pos1):get_int("postlike")==1 then
        x2=mode
        x1=minetest.env:get_meta(pos1):get_int("x1")
        y1=minetest.env:get_meta(pos1):get_int("y1")
        y2=minetest.env:get_meta(pos1):get_int("y2")
        z1=minetest.env:get_meta(pos1):get_int("z1")
        z2=minetest.env:get_meta(pos1):get_int("z2")
        platform=minetest.env:get_meta(pos1):get_int("platform")
        rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform)
        hacky_swap_posts(pos1,"technic:concrete_post"..rule)
        meta=minetest.env:get_meta(pos1)
        meta:set_int("x2",x2)
        tempx1=mode
        end
        pos1.x=pos1.x-2
        if minetest.env:get_meta(pos1):get_int("postlike")==1 then
        x1=mode
        x2=minetest.env:get_meta(pos1):get_int("x2")
        y1=minetest.env:get_meta(pos1):get_int("y1")
        y2=minetest.env:get_meta(pos1):get_int("y2")
        z1=minetest.env:get_meta(pos1):get_int("z1")
        z2=minetest.env:get_meta(pos1):get_int("z2")
        platform=minetest.env:get_meta(pos1):get_int("platform")
        rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform)
        hacky_swap_posts(pos1,"technic:concrete_post"..rule)
        meta=minetest.env:get_meta(pos1)
        meta:set_int("x1",x1)
        tempx2=mode
        end
        pos1.x=pos1.x+1
        pos1.y=pos1.y+1
        if minetest.env:get_meta(pos1):get_int("postlike")==1 then
        y2=mode
        x1=minetest.env:get_meta(pos1):get_int("x1")
        x2=minetest.env:get_meta(pos1):get_int("x2")
        y1=minetest.env:get_meta(pos1):get_int("y1")
        z1=minetest.env:get_meta(pos1):get_int("z1")
        z2=minetest.env:get_meta(pos1):get_int("z2")
        platform=minetest.env:get_meta(pos1):get_int("platform")
        rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform)
        hacky_swap_posts(pos1,"technic:concrete_post"..rule)
        meta=minetest.env:get_meta(pos1)
        meta:set_int("y2",y2)
        tempy1=mode
        end
        pos1.y=pos1.y-2
        if minetest.env:get_meta(pos1):get_int("postlike")==1 then
        y1=mode
        x1=minetest.env:get_meta(pos1):get_int("x1")
        x2=minetest.env:get_meta(pos1):get_int("x2")
        y2=minetest.env:get_meta(pos1):get_int("y2")
        z1=minetest.env:get_meta(pos1):get_int("z1")
        z2=minetest.env:get_meta(pos1):get_int("z2")
        platform=minetest.env:get_meta(pos1):get_int("platform")
        rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform)
        hacky_swap_posts(pos1,"technic:concrete_post"..rule)
        meta=minetest.env:get_meta(pos1)
        meta:set_int("y1",y1)
        tempy2=mode
        end
        pos1.y=pos1.y+1
        pos1.z=pos1.z+1
        if minetest.env:get_meta(pos1):get_int("postlike")==1 then
        z2=mode
        x1=minetest.env:get_meta(pos1):get_int("x1")
        x2=minetest.env:get_meta(pos1):get_int("x2")
        y1=minetest.env:get_meta(pos1):get_int("y1")
        y2=minetest.env:get_meta(pos1):get_int("y2")
        z1=minetest.env:get_meta(pos1):get_int("z1")
        platform=minetest.env:get_meta(pos1):get_int("platform")
        rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform)
        hacky_swap_posts(pos1,"technic:concrete_post"..rule)
        meta=minetest.env:get_meta(pos1)
        meta:set_int("z2",z2)
        tempz1=mode
        end
        pos1.z=pos1.z-2
        if minetest.env:get_meta(pos1):get_int("postlike")==1 then
        z1=mode
        x1=minetest.env:get_meta(pos1):get_int("x1")
        x2=minetest.env:get_meta(pos1):get_int("x2")
        y1=minetest.env:get_meta(pos1):get_int("y1")
        y2=minetest.env:get_meta(pos1):get_int("y2")
        z2=minetest.env:get_meta(pos1):get_int("z2")
        platform=minetest.env:get_meta(pos1):get_int("platform")
        rule=make_post_rule_number(x1,x2,y1,y2,z1,z2,platform)
        hacky_swap_posts(pos1,"technic:concrete_post"..rule)
        meta=minetest.env:get_meta(pos1)
        meta:set_int("z1",z1)
        tempz2=mode
        end
        pos1.z=pos1.z+1
        if mode==1 then
            meta=minetest.env:get_meta(pos)
            meta:set_int("x1",tempx1)
            meta:set_int("x2",tempx2)
            meta:set_int("y1",tempy1)
            meta:set_int("y2",tempy2)
            meta:set_int("z1",tempz1)
            meta:set_int("z2",tempz2)
            rule=make_post_rule_number(tempx1,tempx2,tempy1,tempy2,tempz1,tempz2,0)
            hacky_swap_posts(pos,"technic:concrete_post"..rule)
        end
end
function make_post_rule_number (x1,x2,y1,y2,z1,z2,platform)
local tempy=y1+y2
local tempx=x1+x2
local tempz=z1+z2
if platform==0 then
    if tempy==0 and tempx==0 and tempz==0 then return 0 end
    if x1==1 and x2==1 and tempz==0 and tempy==0 then return 32 end
    if z1==1 and z2==1 and tempx==0 and tempy==0 then return 33 end
    return z2+z1*2+x2*4+x1*8
else
    if tempy==0 and tempx==0 and tempz==0 then return 16 end
    if x1==1 and x2==1 and tempz==0 and tempy==0 then return 34 end
    if z1==1 and z2==1 and tempx==0 and tempy==0 then return 35 end
    return z2+z1*2+x2*4+x1*8+16
end
end
function hacky_swap_posts(pos,name)
    local node = minetest.env:get_node(pos)
        if node.name == "technic:concrete" then
        return nil
    end
    local meta = minetest.env:get_meta(pos)
    local meta0 = meta:to_table()
    node.name = name
    local meta0 = meta:to_table()
    minetest.env:set_node(pos,node)
    meta = minetest.env:get_meta(pos)
    meta:from_table(meta0)
    return 1
end
concrete/textures/technic_concrete_block.png

concrete/textures/technic_rebar.png

concrete/textures/x32/technic_concrete_block.png
concrete/textures/x32/technic_rebar.png

extranodes/depends.txt
New file
@@ -0,0 +1,4 @@
default
moreblocks
technic_worldgen
concrete
extranodes/init.lua
New file
@@ -0,0 +1,42 @@
-- Minetest 0.4.6 mod: extranodes
-- namespace: technic
--register stairslike nodes
register_stair_slab_panel_micro("technic", "marble", "technic:marble",
    {cracky=2, not_in_creative_inventory=1},
    {"technic_marble.png"},
    "Marble",
    "marble",
    "facedir",
    0)
register_stair_slab_panel_micro("technic", "marble_bricks", "technic:marble_bricks",
    {cracky=2, not_in_creative_inventory=1},
    {"technic_marble_bricks.png"},
    "Marble Bricks",
    "marble_bricks",
    "facedir",
    0)
register_stair_slab_panel_micro("technic", "granite", "technic:granite",
    {cracky=3, not_in_creative_inventory=1},
    {"technic_granite.png"},
    "Granite",
    "granite",
    "facedir",
    0)
register_stair_slab_panel_micro("technic", "concrete", "technic:concrete",
    {cracky=3, not_in_creative_inventory=1},
    {"technic_concrete_block.png"},
    "Concrete",
    "concrete",
    "facedir",
    0)
--register nodes in circular saw if aviable
if circular_saw then
    for i,v in ipairs({"concrete",  "marble",  "marble_bricks",  "granite",  "default:obsidian"}) do
        table.insert(circular_saw.known_stairs, "technic:" ..v);
    end
end
technic/concrete.lua
File was deleted
technic/depends.txt
@@ -1,5 +1,6 @@
default
moreores
pipeworks
mesecons
moreblocks
technic_worldgen
technic/init.lua
@@ -1,4 +1,6 @@
-- Minetest 0.4.6 : technic
-- Minetest 0.4.6 mod: technic
-- namespace: technic
-- (c) 2012-2013 by RealBadAngel <mk@realbadangel.pl>
modpath=minetest.get_modpath("technic")
@@ -16,7 +18,6 @@
dofile(modpath.."/mithril_chest.lua")
--items 
dofile(modpath.."/concrete.lua")
dofile(modpath.."/items.lua")
--LV machines
@@ -56,7 +57,6 @@
dofile(modpath.."/deployer.lua")
dofile(modpath.."/constructor.lua")
dofile(modpath.."/frames.lua")
if enable_item_drop    then dofile(modpath.."/item_drop.lua") end
if enable_item_pickup   then dofile(modpath.."/item_pickup.lua") end
technic_worldgen/init.lua
@@ -4,5 +4,4 @@
dofile(modpath.."/nodes.lua")
dofile(modpath.."/oregen.lua")
--dofile(modpath.."/stairslike.lua")
dofile(modpath.."/crafts.lua")
technic_worldgen/oregen.lua
@@ -1,16 +1,5 @@
minetest.register_ore({
    ore_type       = "scatter",
    ore            = "technic:mineral_diamond",
    wherein        = "default:stone",
    clust_scarcity = 11*11*11,
    clust_num_ores = 4,
    clust_size     = 3,
    height_min     = -31000,
    height_max     = -450,
})
minetest.register_ore({
    ore_type       = "scatter",
    ore            = "technic:mineral_uranium",
    wherein        = "default:stone",
    clust_scarcity = 10*10*10,
@@ -46,9 +35,9 @@
    clust_scarcity = 1,
    clust_num_ores = 1,
    clust_size     = 3,
    height_min     = -150,
    height_min     = -31000,
    height_max     = -50,
    noise_threshhold = 0.5,
    noise_threshhold = 0.4,
    noise_params = {offset=0, scale=15, spread={x=150, y=150, z=150}, seed=23, octaves=3, persist=0.70}
})
minetest.register_ore({
@@ -58,9 +47,9 @@
    clust_scarcity = 1,
    clust_num_ores = 1,
    clust_size     = 4,
    height_min     = -100,
    height_max     = -250,
    noise_threshhold = 0.5,
    height_min     = -31000,
    height_max     = -150,
    noise_threshhold = 0.4,
    noise_params = {offset=0, scale=15, spread={x=130, y=130, z=130}, seed=24, octaves=3, persist=0.70}
})
technic_worldgen/stairslike.lua
@@ -1,123 +1 @@
-- cross-compatibility with default obsidian
function register_technic_stairs_alias(modname, origname, newmod, newname)
    minetest.register_alias(modname .. ":slab_" .. origname, newmod..":slab_" .. newname)
    minetest.register_alias(modname .. ":slab_" .. origname .. "_inverted", newmod..":slab_" .. newname .. "_inverted")
    minetest.register_alias(modname .. ":slab_" .. origname .. "_wall", newmod..":slab_" .. newname .. "_wall")
    minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter", newmod..":slab_" .. newname .. "_quarter")
    minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_inverted", newmod..":slab_" .. newname .. "_quarter_inverted")
    minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_wall", newmod..":slab_" .. newname .. "_quarter_wall")
    minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter", newmod..":slab_" .. newname .. "_three_quarter")
    minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_inverted", newmod..":slab_" .. newname .. "_three_quarter_inverted")
    minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_wall", newmod..":slab_" .. newname .. "_three_quarter_wall")
    minetest.register_alias(modname .. ":stair_" .. origname, newmod..":stair_" .. newname)
    minetest.register_alias(modname .. ":stair_" .. origname .. "_inverted", newmod..":stair_" .. newname .. "_inverted")
    minetest.register_alias(modname .. ":stair_" .. origname .. "_wall", newmod..":stair_" .. newname .. "_wall")
    minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half")
    minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted")
    minetest.register_alias(modname .. ":stair_" .. origname .. "_half", newmod..":stair_" .. newname .. "_half")
    minetest.register_alias(modname .. ":stair_" .. origname .. "_half_inverted", newmod..":stair_" .. newname .. "_half_inverted")
    minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half", newmod..":stair_" .. newname .. "_right_half")
    minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half_inverted", newmod..":stair_" .. newname .. "_right_half_inverted")
    minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half")
    minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted")
    minetest.register_alias(modname .. ":stair_" .. origname .. "_inner", newmod..":stair_" .. newname .. "_inner")
    minetest.register_alias(modname .. ":stair_" .. origname .. "_inner_inverted", newmod..":stair_" .. newname .. "_inner_inverted")
    minetest.register_alias(modname .. ":stair_" .. origname .. "_outer", newmod..":stair_" .. newname .. "_outer")
    minetest.register_alias(modname .. ":stair_" .. origname .. "_outer_inverted", newmod..":stair_" .. newname .. "_outer_inverted")
    minetest.register_alias(modname .. ":panel_" .. origname .. "_bottom", newmod..":panel_" .. newname .. "_bottom")
    minetest.register_alias(modname .. ":panel_" .. origname .. "_top", newmod..":panel_" .. newname .. "_top")
    minetest.register_alias(modname .. ":panel_" .. origname .. "_vertical", newmod..":panel_" .. newname .. "_vertical")
    minetest.register_alias(modname .. ":micro_" .. origname .. "_bottom", newmod..":micro_" .. newname .. "_bottom")
    minetest.register_alias(modname .. ":micro_" .. origname .. "_top", newmod..":micro_" .. newname .. "_top")
end
minetest.register_alias("technic:obsidian", "default:obsidian")
minetest.register_alias("moreblocks:obsidian", "default:obsidian")
register_stair_slab_panel_micro(
    ":default",
    "obsidian",
    "default:obsidian",
    {cracky=3, not_in_creative_inventory=1},
    {"default_obsidian.png"},
    "Obsidian",
    "default:obsidian",
    "none",
    light
)
register_technic_stairs_alias("moreblocks", "obsidian", "default", "obsidian")
table.insert(circular_saw.known_stairs, "default:obsidian")
-- other stairs/slabs
if type(register_stair_and_slab_and_panel_and_micro) == "function" then
register_stair_and_slab_and_panel_and_micro(":stairsplus", "marble", "technic:marble",
        {cracky=3, not_in_creative_inventory=1},
        {"technic_marble.png"},
        "Marble Stairs",
        "Marble Slab",
        "Marble Panel",
        "Marble Microblock",
        "marble")
register_stair_and_slab_and_panel_and_micro(":stairsplus", "marble_bricks", "technic:marble_bricks",
        {cracky=3, not_in_creative_inventory=1},
        {"technic_marble_bricks.png"},
        "Marble Bricks Stairs",
        "Marble Bricks Slab",
        "Marble Bricks Panel",
        "Marble Bricks Microblock",
        "marble_bricks")
register_stair_and_slab_and_panel_and_micro(":stairsplus", "granite", "technic:granite",
        {cracky=3, not_in_creative_inventory=1},
        {"technic_granite.png"},
        "Granite Stairs",
        "Granite Slab",
        "Granite Panel",
        "Granite Microblock",
        "granite")
register_stair_and_slab_and_panel_and_micro(":stairsplus", "obsidian", "default:obsidian",
        {cracky=3, not_in_creative_inventory=1},
        {"default_obsidian.png"},
        "Obsidian Stairs",
        "Obsidian Slab",
        "Obsidian Panel",
        "Obsidian Microblock",
        "obsidian")
end
if type(register_stair_slab_panel_micro) == "function" then
register_stair_slab_panel_micro(":stairsplus", "marble", "technic:marble",
        {cracky=3, not_in_creative_inventory=1},
        {"technic_marble.png"},
        "Marble Stairs",
        "Marble Slab",
        "Marble Panel",
        "Marble Microblock",
        "marble")
register_stair_slab_panel_micro(":stairsplus", "marble_bricks", "technic:marble_bricks",
        {cracky=3, not_in_creative_inventory=1},
        {"technic_marble_bricks.png"},
        "Marble Bricks Stairs",
        "Marble Bricks Slab",
        "Marble Bricks Panel",
        "Marble Bricks Microblock",
        "marble_bricks")
register_stair_slab_panel_micro(":stairsplus", "granite", "technic:granite",
        {cracky=3, not_in_creative_inventory=1},
        {"technic_granite.png"},
        "Granite Stairs",
        "Granite Slab",
        "Granite Panel",
        "Granite Microblock",
        "granite")
register_stair_slab_panel_micro(":stairsplus", "obsidian", "technic:obsidian",
        {cracky=3, not_in_creative_inventory=1},
        {"technic_obsidian.png"},
        "Obsidian Stairs",
        "Obsidian Slab",
        "Obsidian Panel",
        "Obsidian Microblock",
        "obsidian")
end