/usr/share/games/minetest/mods/moreblocks/stairsplus_convert.lua is in minetest-mod-moreblocks 0~20130827+gitee1b3025cc-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | -- Function to convert all stairs/slabs/etc nodes from
-- inverted, wall, etc to regular + 6d facedir
local dirs1 = { 21, 20, 23, 22, 21 }
local dirs2 = { 15, 8, 17, 6, 15 }
local dirs3 = { 14, 11, 16, 5, 14 }
function register_6dfacedir_conversion(modname, material)
--print("Register stairsplus 6d facedir conversion")
--print('ABM for '..modname..' "'..material..'"')
local objects_list1 = {
modname..":slab_" .. material .. "_inverted",
modname..":slab_" .. material .. "_quarter_inverted",
modname..":slab_" .. material .. "_three_quarter_inverted",
modname..":stair_" .. material .. "_inverted",
modname..":stair_" .. material .. "_wall",
modname..":stair_" .. material .. "_wall_half",
modname..":stair_" .. material .. "_wall_half_inverted",
modname..":stair_" .. material .. "_half_inverted",
modname..":stair_" .. material .. "_right_half_inverted",
modname..":panel_" .. material .. "_vertical",
modname..":panel_" .. material .. "_top",
}
local objects_list2 = {
modname..":slab_" .. material .. "_wall",
modname..":slab_" .. material .. "_quarter_wall",
modname..":slab_" .. material .. "_three_quarter_wall",
modname..":stair_" .. material .. "_inner_inverted",
modname..":stair_" .. material .. "_outer_inverted",
modname..":micro_" .. material .. "_top"
}
for j in ipairs(objects_list1) do
local flip_upside_down = false
local flip_to_wall = false
local object = objects_list1[j]
local dest_object = objects_list1[j]
if string.find(dest_object, "_inverted") then
flip_upside_down = true
dest_object = string.gsub(dest_object, "_inverted", "")
end
if string.find(dest_object, "_top") then
flip_upside_down = true
dest_object = string.gsub(dest_object, "_top", "")
end
if string.find(dest_object, "_wall") then
flip_to_wall = true
dest_object = string.gsub(dest_object, "_wall", "")
end
if string.find(dest_object, "_vertical") then
flip_to_wall = true
dest_object = string.gsub(dest_object, "_vertical", "")
end
if string.find(dest_object, "_half") and not string.find(dest_object, "_right_half") then
dest_object = string.gsub(dest_object, "_half", "_right_half")
elseif string.find(dest_object, "_right_half") then
dest_object = string.gsub(dest_object, "_right_half", "_half")
end
--print(" +---> convert "..object)
--print(" | to "..dest_object)
minetest.register_abm({
nodenames = { object },
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local fdir = node.param2 or 0
if flip_upside_down and not flip_to_wall then
nfdir = dirs1[fdir+2]
elseif flip_to_wall and not flip_upside_down then
nfdir = dirs2[fdir+1]
elseif flip_to_wall and flip_upside_down then
nfdir = dirs3[fdir+2]
end
minetest.env:add_node(pos, {name = dest_object, param2 = nfdir})
end
})
end
for j in ipairs(objects_list2) do
local flip_upside_down = false
local flip_to_wall = false
local object = objects_list2[j]
local dest_object = objects_list2[j]
if string.find(dest_object, "_inverted") then
flip_upside_down = true
dest_object = string.gsub(dest_object, "_inverted", "")
end
if string.find(dest_object, "_top") then
flip_upside_down = true
dest_object = string.gsub(dest_object, "_top", "")
end
if string.find(dest_object, "_wall") then
flip_to_wall = true
dest_object = string.gsub(dest_object, "_wall", "")
end
--print(" +---> convert "..object)
--print(" | to "..dest_object)
minetest.register_abm({
nodenames = { object },
interval = 1,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local fdir = node.param2
local nfdir = 20
if flip_upside_down and not flip_to_wall then
nfdir = dirs1[fdir+1]
elseif flip_to_wall and not flip_upside_down then
nfdir = dirs2[fdir+2]
end
minetest.env:add_node(pos, {name = dest_object, param2 = nfdir})
end
})
end
end
|