Compare commits
5 Commits
57480ea4d2
...
38bbea697a
Author | SHA1 | Date |
---|---|---|
pithydon | 38bbea697a | |
pithydon | 6f67ce8570 | |
pithydon | 8ee3b1c1d0 | |
pithydon | 0820b28ae5 | |
pithydon | e2c53c3231 |
13
README.md
13
README.md
|
@ -1,4 +1,4 @@
|
|||
mcstair v1.1
|
||||
mcstair
|
||||
|
||||
Minecraft like corner stairs.
|
||||
|
||||
|
@ -35,15 +35,14 @@ For these and/or other purposes and motivations, and without any expectation of
|
|||
mod api:
|
||||
|
||||
```lua
|
||||
mcstair.add(name, stairtiles)
|
||||
mcstair.register(subname)
|
||||
```
|
||||
|
||||
"name" is the name of the node to make corner stairs for.
|
||||
"subname" is the name of the node to register corner stair logic for. Eg "wood" for node "stairs:stair_wood".
|
||||
|
||||
"stairtiles" is an optional table of tiles to override textures for inner and outer stairs.
|
||||
|
||||
"stairtiles" format is...
|
||||
"mcstair.add()" is deprecated. When porting to "mcstair.register()" register aliases for preexisting worlds.
|
||||
|
||||
```lua
|
||||
{tiles_def_for_outer_stair, tiles_def_for_inner_stair}
|
||||
minetest.register_alias("stairs:stair_wood_outer", "stairs:stair_outer_wood")
|
||||
minetest.register_alias("stairs:stair_wood_inner", "stairs:stair_inner_wood")
|
||||
```
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
stairs
|
||||
farming
|
|
@ -1 +0,0 @@
|
|||
Minecraft like corner stairs.
|
404
init.lua
404
init.lua
|
@ -2,23 +2,321 @@ mcstair = {}
|
|||
|
||||
local get_stair_param = function(node)
|
||||
local stair = minetest.get_item_group(node.name, "stair")
|
||||
if stair == 1 then
|
||||
return node.param2
|
||||
local param = (node.param2 % 32) % 24
|
||||
if stair == 0 or (param > 3 and param < 20) then
|
||||
return
|
||||
elseif stair == 1 then
|
||||
return param
|
||||
elseif stair == 2 then
|
||||
if node.param2 < 12 then
|
||||
return node.param2 + 4
|
||||
if param < 12 then
|
||||
return param + 4
|
||||
else
|
||||
return node.param2 - 4
|
||||
return param - 4
|
||||
end
|
||||
elseif stair == 3 then
|
||||
if node.param2 < 12 then
|
||||
return node.param2 + 8
|
||||
if param < 12 then
|
||||
return param + 8
|
||||
else
|
||||
return node.param2 - 8
|
||||
return param - 8
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function mcstair.register(subname)
|
||||
local node_def = minetest.registered_nodes["stairs:stair_"..subname]
|
||||
if node_def == nil then
|
||||
minetest.log("error", "mcstair: Can not register \"stairs:stair_"..subname.."\". Node not found in registered nodes.")
|
||||
return
|
||||
end
|
||||
local outer_groups = table.copy(node_def.groups)
|
||||
outer_groups.not_in_creative_inventory = 1
|
||||
local inner_groups = table.copy(outer_groups)
|
||||
outer_groups.stair = 2
|
||||
inner_groups.stair = 3
|
||||
local drop = node_def.drop or "stairs:stair_"..subname
|
||||
minetest.override_item("stairs:stair_"..subname, {
|
||||
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
||||
local node = minetest.get_node(pos)
|
||||
if node.param2 == 0 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z + 1}))
|
||||
if param then
|
||||
if param == 3 or param == 7 or param == 8 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z}))
|
||||
if not param or (param ~= 0 and param ~= 4 and param ~= 9) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_outer_"..subname, param2 = 0})
|
||||
return
|
||||
end
|
||||
elseif param == 1 or param == 6 or param == 9 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z}))
|
||||
if not param or (param ~= 0 and param ~= 5 and param ~= 8) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_outer_"..subname, param2 = 1})
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z - 1}))
|
||||
if param then
|
||||
if param == 1 or param == 5 or param == 10 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z}))
|
||||
if not param or (param ~= 0 and param ~= 4 and param ~= 9) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_inner_"..subname, param2 = 1})
|
||||
return
|
||||
end
|
||||
elseif param == 3 or param == 4 or param == 11 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z}))
|
||||
if not param or (param ~= 0 and param ~= 5 and param ~= 8) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_inner_"..subname, param2 = 0})
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif node.param2 == 1 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z}))
|
||||
if param then
|
||||
if param == 2 or param == 7 or param == 10 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z + 1}))
|
||||
if not param or (param ~= 1 and param ~= 6 and param ~= 9) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_outer_"..subname, param2 = 2})
|
||||
return
|
||||
end
|
||||
elseif param == 0 or param == 4 or param == 9 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z - 1}))
|
||||
if not param or (param ~= 1 and param ~= 5 and param ~= 10) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_outer_"..subname, param2 = 1})
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z}))
|
||||
if param then
|
||||
if param == 0 or param == 5 or param == 8 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z + 1}))
|
||||
if not param or (param ~= 1 and param ~= 6 and param ~= 9) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_inner_"..subname, param2 = 1})
|
||||
return
|
||||
end
|
||||
elseif param == 2 or param == 6 or param == 11 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z - 1}))
|
||||
if not param or (param ~= 1 and param ~= 5 and param ~= 10) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_inner_"..subname, param2 = 2})
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif node.param2 == 2 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z + 1}))
|
||||
if param then
|
||||
if param == 1 or param == 6 or param == 9 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z}))
|
||||
if not param or (param ~= 2 and param ~= 7 and param ~= 10) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_inner_"..subname, param2 = 2})
|
||||
return
|
||||
end
|
||||
elseif param == 3 or param == 7 or param == 8 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z}))
|
||||
if not param or (param ~= 2 and param ~= 6 and param ~= 11) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_inner_"..subname, param2 = 3})
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z - 1}))
|
||||
if param then
|
||||
if param == 3 or param == 4 or param == 11 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z}))
|
||||
if not param or (param ~= 2 and param ~= 7 and param ~= 10) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_outer_"..subname, param2 = 3})
|
||||
return
|
||||
end
|
||||
elseif param == 1 or param == 5 or param == 10 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z}))
|
||||
if not param or (param ~= 2 and param ~= 6 and param ~= 11) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_outer_"..subname, param2 = 2})
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif node.param2 == 3 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z}))
|
||||
if param then
|
||||
if param == 0 or param == 4 or param == 9 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z + 1}))
|
||||
if not param or (param ~= 3 and param ~= 7 and param ~= 8) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_inner_"..subname, param2 = 0})
|
||||
return
|
||||
end
|
||||
elseif param == 2 or param == 7 or param == 10 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z - 1}))
|
||||
if not param or (param ~= 3 and param ~= 4 and param ~= 11) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_inner_"..subname, param2 = 3})
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z}))
|
||||
if param then
|
||||
if param == 2 or param == 6 or param == 11 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z + 1}))
|
||||
if not param or (param ~= 3 and param ~= 7 and param ~= 8) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_outer_"..subname, param2 = 3})
|
||||
return
|
||||
end
|
||||
elseif param == 0 or param == 5 or param == 8 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z - 1}))
|
||||
if not param or (param ~= 3 and param ~= 4 and param ~= 11) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_outer_"..subname, param2 = 0})
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif node.param2 == 20 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z + 1}))
|
||||
if param then
|
||||
if param == 21 or param == 18 or param == 13 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z}))
|
||||
if not param or (param ~= 20 and param ~= 17 and param ~= 12) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_outer_"..subname, param2 = 21})
|
||||
return
|
||||
end
|
||||
elseif param == 23 or param == 19 or param == 12 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z}))
|
||||
if not param or (param ~= 20 and param ~= 16 and param ~= 13) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_outer_"..subname, param2 = 20})
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z - 1}))
|
||||
if param then
|
||||
if param == 23 or param == 16 or param == 15 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z}))
|
||||
if not param or (param ~= 20 and param ~= 17 and param ~= 12) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_inner_"..subname, param2 = 20})
|
||||
return
|
||||
end
|
||||
elseif param == 21 or param == 17 or param == 14 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z}))
|
||||
if not param or (param ~= 20 and param ~= 16 and param ~= 13) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_inner_"..subname, param2 = 21})
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif node.param2 == 21 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z}))
|
||||
if param then
|
||||
if param == 20 or param == 17 or param == 12 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z + 1}))
|
||||
if not param or (param ~= 21 and param ~= 18 and param ~= 13) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_inner_"..subname, param2 = 21})
|
||||
return
|
||||
end
|
||||
elseif param == 22 or param == 18 or param == 15 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z - 1}))
|
||||
if not param or (param ~= 21 and param ~= 17 and param ~= 14) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_inner_"..subname, param2 = 22})
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z}))
|
||||
if param then
|
||||
if param == 22 or param == 19 or param == 14 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z + 1}))
|
||||
if not param or (param ~= 21 and param ~= 18 and param ~= 13) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_outer_"..subname, param2 = 22})
|
||||
return
|
||||
end
|
||||
elseif param == 20 or param == 16 or param == 13 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z - 1}))
|
||||
if not param or (param ~= 21 and param ~= 17 and param ~= 14) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_outer_"..subname, param2 = 21})
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif node.param2 == 22 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z + 1}))
|
||||
if param then
|
||||
if param == 23 or param == 19 or param == 12 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z}))
|
||||
if not param or (param ~= 22 and param ~= 18 and param ~= 15) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_inner_"..subname, param2 = 23})
|
||||
return
|
||||
end
|
||||
elseif param == 21 or param == 18 or param == 13 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z}))
|
||||
if not param or (param ~= 22 and param ~= 19 and param ~= 14) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_inner_"..subname, param2 = 22})
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z - 1}))
|
||||
if param then
|
||||
if param == 21 or param == 17 or param == 14 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z}))
|
||||
if not param or (param ~= 22 and param ~= 18 and param ~= 15) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_outer_"..subname, param2 = 22})
|
||||
return
|
||||
end
|
||||
elseif param == 23 or param == 16 or param == 15 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z}))
|
||||
if not param or (param ~= 22 and param ~= 19 and param ~= 14) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_outer_"..subname, param2 = 23})
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif node.param2 == 23 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z}))
|
||||
if param then
|
||||
if param == 22 or param == 18 or param == 15 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z + 1}))
|
||||
if not param or (param ~= 23 and param ~= 19 and param ~= 12) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_outer_"..subname, param2 = 23})
|
||||
return
|
||||
end
|
||||
elseif param == 20 or param == 17 or param == 12 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z - 1}))
|
||||
if not param or (param ~= 23 and param ~= 16 and param ~= 15) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_outer_"..subname, param2 = 20})
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z}))
|
||||
if param then
|
||||
if param == 20 or param == 16 or param == 13 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z + 1}))
|
||||
if not param or (param ~= 23 and param ~= 19 and param ~= 12) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_inner_"..subname, param2 = 20})
|
||||
return
|
||||
end
|
||||
elseif param == 22 or param == 19 or param == 14 then
|
||||
local param = get_stair_param(minetest.get_node({x = pos.x, y = pos.y, z = pos.z - 1}))
|
||||
if not param or (param ~= 23 and param ~= 16 and param ~= 15) then
|
||||
minetest.swap_node(pos, {name = "stairs:stair_inner_"..subname, param2 = 23})
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
minetest.override_item("stairs:stair_outer_"..subname, {
|
||||
groups = outer_groups,
|
||||
drop = drop
|
||||
})
|
||||
minetest.override_item("stairs:stair_inner_"..subname, {
|
||||
groups = inner_groups,
|
||||
drop = drop
|
||||
})
|
||||
minetest.clear_craft({output = "stairs:stair_outer_"..subname})
|
||||
minetest.clear_craft({output = "stairs:stair_inner_"..subname})
|
||||
end
|
||||
|
||||
---[[ legacy code
|
||||
local get_stair_from_param = function(param, stairs)
|
||||
if param < 12 then
|
||||
if param < 4 then
|
||||
|
@ -640,29 +938,14 @@ function mcstair.add(name, stairtiles)
|
|||
after_dig_node = function(pos, oldnode) after_dig_node(pos, oldnode) end
|
||||
})
|
||||
end
|
||||
--]]
|
||||
|
||||
for _,v in ipairs({
|
||||
"wood",
|
||||
"junglewood",
|
||||
"pine_wood",
|
||||
"acacia_wood",
|
||||
"aspen_wood"
|
||||
}) do
|
||||
mcstair.add("stairs:stair_"..v, {
|
||||
{
|
||||
"default_"..v..".png^(default_"..v..".png^[transformR90^mcstair_turntexture.png^[makealpha:255,0,255)",
|
||||
"default_"..v..".png^(default_"..v..".png^mcstair_turntexture.png^[transformR270^[makealpha:255,0,255)",
|
||||
"default_"..v..".png"
|
||||
},
|
||||
{
|
||||
"default_"..v..".png^(default_"..v..".png^[transformR90^(mcstair_turntexture.png^[transformR180)^[makealpha:255,0,255)",
|
||||
"default_"..v..".png^(default_"..v..".png^[transformR270^(mcstair_turntexture.png^[transformR90)^[makealpha:255,0,255)",
|
||||
"default_"..v..".png"
|
||||
}
|
||||
})
|
||||
end
|
||||
|
||||
for _,v in ipairs({
|
||||
"aspen_wood",
|
||||
"stone",
|
||||
"cobble",
|
||||
"mossycobble",
|
||||
|
@ -685,5 +968,74 @@ for _,v in ipairs({
|
|||
"bronzeblock",
|
||||
"goldblock"
|
||||
}) do
|
||||
mcstair.add("stairs:stair_"..v)
|
||||
mcstair.register(v)
|
||||
minetest.register_alias("stairs:stair_"..v.."_outer", "stairs:stair_outer_"..v)
|
||||
minetest.register_alias("stairs:stair_"..v.."_inner", "stairs:stair_inner_"..v)
|
||||
end
|
||||
|
||||
for _,v in ipairs({
|
||||
"desert_sandstone",
|
||||
"desert_sandstone_brick",
|
||||
"desert_sandstone_block",
|
||||
"silver_sandstone",
|
||||
"silver_sandstone_brick",
|
||||
"silver_sandstone_block",
|
||||
"tinblock",
|
||||
"ice",
|
||||
"snowblock",
|
||||
"glass",
|
||||
"obsidian_glass"
|
||||
}) do
|
||||
mcstair.register(v)
|
||||
end
|
||||
|
||||
if minetest.get_modpath("mtg_plus") then
|
||||
for _,v in ipairs({
|
||||
"sandstone_cobble",
|
||||
"desert_sandstone_cobble",
|
||||
"silver_sandstone_cobble",
|
||||
"jungle_cobble",
|
||||
"snow_brick",
|
||||
"hard_snow_brick",
|
||||
"ice_snow_brick",
|
||||
"ice_brick",
|
||||
"ice_tile4",
|
||||
"goldwood",
|
||||
"goldbrick",
|
||||
"bronzebrick",
|
||||
"tinbrick",
|
||||
"copperbrick",
|
||||
"steelbrick",
|
||||
"harddirtbrick",
|
||||
"gravel_cobble"
|
||||
}) do
|
||||
mcstair.register(v)
|
||||
end
|
||||
end
|
||||
|
||||
if minetest.get_modpath("quartz") then
|
||||
for _,v in ipairs({
|
||||
"quartzblock",
|
||||
"quartzstair"
|
||||
}) do
|
||||
mcstair.register(v)
|
||||
end
|
||||
end
|
||||
|
||||
if minetest.get_modpath("xdecor") then
|
||||
for _,v in ipairs({
|
||||
"barrel",
|
||||
"cactusbrick",
|
||||
"coalstone_tile",
|
||||
"desertstone_tile",
|
||||
"hard_clay",
|
||||
"moonbrick",
|
||||
"stone_tile",
|
||||
"stone_rune",
|
||||
"packed_ice",
|
||||
"wood_tile",
|
||||
"woodframed_glass"
|
||||
}) do
|
||||
mcstair.register(v)
|
||||
end
|
||||
end
|
||||
|
|
3
mod.conf
3
mod.conf
|
@ -1 +1,4 @@
|
|||
name = mcstair
|
||||
description = Minecraft like corner stairs.
|
||||
depends = stairs, farming
|
||||
optional_depends = mtg_plus, quartz, xdecor
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 170 B |
Loading…
Reference in New Issue