tidy code
This commit is contained in:
parent
91917a507e
commit
add0cd4ab2
233
init.lua
233
init.lua
@ -1,5 +1,6 @@
|
||||
|
||||
-- our API object
|
||||
-- global
|
||||
|
||||
doors = {
|
||||
mod = "redo",
|
||||
registered_doors = {},
|
||||
@ -8,6 +9,8 @@ doors = {
|
||||
|
||||
local S = minetest.get_translator("doors") -- translation support
|
||||
|
||||
-- replace old doors_owner with new owner
|
||||
|
||||
local function replace_old_owner_information(pos)
|
||||
|
||||
local meta = minetest.get_meta(pos)
|
||||
@ -19,8 +22,8 @@ local function replace_old_owner_information(pos)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- returns an object to a door object or nil
|
||||
|
||||
function doors.get(pos)
|
||||
|
||||
local node_name = minetest.get_node(pos).name
|
||||
@ -34,18 +37,14 @@ function doors.get(pos)
|
||||
|
||||
open = function(self, player)
|
||||
|
||||
if self:state() then
|
||||
return false
|
||||
end
|
||||
if self:state() then return false end
|
||||
|
||||
return doors.door_toggle(self.pos, nil, player)
|
||||
end,
|
||||
|
||||
close = function(self, player)
|
||||
|
||||
if not self:state() then
|
||||
return false
|
||||
end
|
||||
if not self:state() then return false end
|
||||
|
||||
return doors.door_toggle(self.pos, nil, player)
|
||||
end,
|
||||
@ -71,18 +70,14 @@ function doors.get(pos)
|
||||
|
||||
open = function(self, player)
|
||||
|
||||
if self:state() then
|
||||
return false
|
||||
end
|
||||
if self:state() then return false end
|
||||
|
||||
return doors.trapdoor_toggle(self.pos, nil, player)
|
||||
end,
|
||||
|
||||
close = function(self, player)
|
||||
|
||||
if not self:state() then
|
||||
return false
|
||||
end
|
||||
if not self:state() then return false end
|
||||
|
||||
return doors.trapdoor_toggle(self.pos, nil, player)
|
||||
end,
|
||||
@ -100,6 +95,7 @@ function doors.get(pos)
|
||||
return nil
|
||||
end
|
||||
|
||||
-- node can_dig function
|
||||
|
||||
local can_dig_door = function(pos, digger)
|
||||
|
||||
@ -128,20 +124,17 @@ local can_dig_door = function(pos, digger)
|
||||
return false
|
||||
end
|
||||
|
||||
if not minetest.is_protected(pos, pname) then
|
||||
return true
|
||||
end
|
||||
if not minetest.is_protected(pos, pname) then return true end
|
||||
|
||||
return false
|
||||
end
|
||||
|
||||
-- can we open door helper function
|
||||
|
||||
local can_toggle = function(clicker, pos)
|
||||
|
||||
-- check for fake player
|
||||
if clicker and clicker.is_fake_player then
|
||||
return true
|
||||
end
|
||||
if clicker and clicker.is_fake_player then return true end
|
||||
|
||||
if not clicker then return end
|
||||
|
||||
@ -151,19 +144,13 @@ local can_toggle = function(clicker, pos)
|
||||
local pname = clicker:get_player_name()
|
||||
|
||||
-- is door open for all
|
||||
if owner == "" and prot == "" then
|
||||
return true
|
||||
end
|
||||
if owner == "" and prot == "" then return true end
|
||||
|
||||
-- do we own door
|
||||
if owner == pname then
|
||||
return true
|
||||
end
|
||||
if owner == pname then return true end
|
||||
|
||||
-- check if door protected and we have permission
|
||||
if prot ~= "" and not minetest.is_protected(pos, pname) then
|
||||
return true
|
||||
end
|
||||
if prot ~= "" and not minetest.is_protected(pos, pname) then return true end
|
||||
|
||||
-- get what's in our hand
|
||||
local item = clicker and clicker:get_wielded_item()
|
||||
@ -197,9 +184,9 @@ local can_toggle = function(clicker, pos)
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
-- this hidden node is placed on top of the bottom, and prevents
|
||||
-- nodes from being placed in the top half of the door.
|
||||
|
||||
minetest.register_node("doors:hidden", {
|
||||
description = S("Hidden Door Segment"),
|
||||
-- can't use airlike otherwise falling nodes will turn to entities
|
||||
@ -231,35 +218,28 @@ minetest.register_node("doors:hidden", {
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
-- table used to aid door opening/closing
|
||||
|
||||
local transform = {
|
||||
{
|
||||
{ v = "_a", param2 = 3 },
|
||||
{ v = "_a", param2 = 0 },
|
||||
{ v = "_a", param2 = 1 },
|
||||
{ v = "_a", param2 = 2 }
|
||||
{ v = "_a", param2 = 3 }, { v = "_a", param2 = 0 },
|
||||
{ v = "_a", param2 = 1 }, { v = "_a", param2 = 2 }
|
||||
},
|
||||
{
|
||||
{ v = "_b", param2 = 1 },
|
||||
{ v = "_b", param2 = 2 },
|
||||
{ v = "_b", param2 = 3 },
|
||||
{ v = "_b", param2 = 0 }
|
||||
{ v = "_b", param2 = 1 }, { v = "_b", param2 = 2 },
|
||||
{ v = "_b", param2 = 3 }, { v = "_b", param2 = 0 }
|
||||
},
|
||||
{
|
||||
{ v = "_b", param2 = 1 },
|
||||
{ v = "_b", param2 = 2 },
|
||||
{ v = "_b", param2 = 3 },
|
||||
{ v = "_b", param2 = 0 }
|
||||
{ v = "_b", param2 = 1 }, { v = "_b", param2 = 2 },
|
||||
{ v = "_b", param2 = 3 }, { v = "_b", param2 = 0 }
|
||||
},
|
||||
{
|
||||
{ v = "_a", param2 = 3 },
|
||||
{ v = "_a", param2 = 0 },
|
||||
{ v = "_a", param2 = 1 },
|
||||
{ v = "_a", param2 = 2 }
|
||||
{ v = "_a", param2 = 3 }, { v = "_a", param2 = 0 },
|
||||
{ v = "_a", param2 = 1 }, { v = "_a", param2 = 2 }
|
||||
}
|
||||
}
|
||||
|
||||
-- door node on_rightclick function
|
||||
|
||||
function doors.door_toggle(pos, node, clicker)
|
||||
|
||||
@ -287,9 +267,7 @@ function doors.door_toggle(pos, node, clicker)
|
||||
|
||||
replace_old_owner_information(pos)
|
||||
|
||||
if not can_toggle(clicker, pos) then
|
||||
return false
|
||||
end
|
||||
if not can_toggle(clicker, pos) then return false end
|
||||
|
||||
-- until Lua-5.2 we have no bitwise operators :(
|
||||
if state % 2 == 1 then
|
||||
@ -326,6 +304,7 @@ function doors.door_toggle(pos, node, clicker)
|
||||
return true
|
||||
end
|
||||
|
||||
-- door on_place helper function
|
||||
|
||||
local function on_place_node(place_to, newnode, placer, oldnode, itemstack, pointed_thing)
|
||||
|
||||
@ -350,12 +329,11 @@ local function on_place_node(place_to, newnode, placer, oldnode, itemstack, poin
|
||||
end
|
||||
end
|
||||
|
||||
-- register door function
|
||||
|
||||
function doors.register(name, def)
|
||||
|
||||
if not name:find(":") then
|
||||
name = "doors:" .. name
|
||||
end
|
||||
if not name:find(":") then name = "doors:" .. name end
|
||||
|
||||
-- replace old doors of this type automatically
|
||||
minetest.register_lbm({
|
||||
@ -396,7 +374,7 @@ function doors.register(name, def)
|
||||
|
||||
-- wipe meta on top node as it's unused
|
||||
minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z},
|
||||
{name = "doors:hidden", param2 = p3})
|
||||
{name = "doors:hidden", param2 = p3})
|
||||
end
|
||||
})
|
||||
|
||||
@ -409,16 +387,13 @@ function doors.register(name, def)
|
||||
|
||||
local pos
|
||||
|
||||
if pointed_thing.type ~= "node" then
|
||||
return itemstack
|
||||
end
|
||||
if pointed_thing.type ~= "node" then return itemstack end
|
||||
|
||||
local doorname = itemstack:get_name()
|
||||
local node = minetest.get_node(pointed_thing.under)
|
||||
local pdef = minetest.registered_nodes[node.name]
|
||||
|
||||
if pdef
|
||||
and pdef.on_rightclick
|
||||
if pdef and pdef.on_rightclick
|
||||
and not (placer and placer:is_player()
|
||||
and placer:get_player_control().sneak) then
|
||||
|
||||
@ -433,18 +408,14 @@ function doors.register(name, def)
|
||||
node = minetest.get_node(pos)
|
||||
pdef = minetest.registered_nodes[node.name]
|
||||
|
||||
if not pdef or not pdef.buildable_to then
|
||||
return itemstack
|
||||
end
|
||||
if not pdef or not pdef.buildable_to then return itemstack end
|
||||
end
|
||||
|
||||
local above = {x = pos.x, y = pos.y + 1, z = pos.z}
|
||||
local top_node = minetest.get_node_or_nil(above)
|
||||
local topdef = top_node and minetest.registered_nodes[top_node.name]
|
||||
|
||||
if not topdef or not topdef.buildable_to then
|
||||
return itemstack
|
||||
end
|
||||
if not topdef or not topdef.buildable_to then return itemstack end
|
||||
|
||||
local pn = placer and placer:get_player_name() or ""
|
||||
|
||||
@ -564,9 +535,7 @@ function doors.register(name, def)
|
||||
local prot = meta:get_string("doors_protected")
|
||||
|
||||
-- Door is neither owned not protected
|
||||
if owner == "" and prot == "" then
|
||||
return nil
|
||||
end
|
||||
if owner == "" and prot == "" then return nil end
|
||||
|
||||
-- verify placer is owner of lockable door
|
||||
if owner ~= pname and prot ~= pname then
|
||||
@ -592,9 +561,7 @@ function doors.register(name, def)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local owner = meta:get_string("owner") or ""
|
||||
|
||||
if owner ~= "" or minetest.is_protected(pos, "") then
|
||||
return
|
||||
end
|
||||
if owner ~= "" or minetest.is_protected(pos, "") then return end
|
||||
|
||||
minetest.remove_node(pos)
|
||||
|
||||
@ -646,6 +613,7 @@ function doors.register(name, def)
|
||||
doors.registered_doors[name .. "_b"] = true
|
||||
end
|
||||
|
||||
-- register doors
|
||||
|
||||
doors.register("door_wood", {
|
||||
tiles = {{name = "doors_door_wood.png", backface_culling = true}},
|
||||
@ -661,7 +629,6 @@ doors.register("door_wood", {
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
doors.register("door_steel", {
|
||||
tiles = {{name = "doors_door_steel.png", backface_culling = true}},
|
||||
description = S("Steel Door"),
|
||||
@ -680,7 +647,6 @@ doors.register("door_steel", {
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
doors.register("door_glass", {
|
||||
tiles = { "doors_door_glass.png"},
|
||||
description = S("Glass Door"),
|
||||
@ -698,7 +664,6 @@ doors.register("door_glass", {
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
doors.register("door_obsidian_glass", {
|
||||
tiles = { "doors_door_obsidian_glass.png" },
|
||||
description = S("Obsidian Glass Door"),
|
||||
@ -716,8 +681,8 @@ doors.register("door_obsidian_glass", {
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
-- special doors (CC0 textures by Phiwari123 and IceAgeComing)
|
||||
|
||||
doors.register("door_phiwari", {
|
||||
tiles = {{name = "doors_door_phiwari.png", backface_culling = true}},
|
||||
description = "Phiwari: " .. S("Wooden Door"),
|
||||
@ -732,7 +697,6 @@ doors.register("door_phiwari", {
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
doors.register("door_iceage", {
|
||||
tiles = {{name = "doors_door_iceage.png", backface_culling = true}},
|
||||
description = "IceAge: " .. S("Wooden Door"),
|
||||
@ -747,13 +711,11 @@ doors.register("door_iceage", {
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
-- Capture mods using the old API as best as possible.
|
||||
|
||||
function doors.register_door(name, def)
|
||||
|
||||
if def.only_placer_can_open then
|
||||
def.protected = true
|
||||
end
|
||||
if def.only_placer_can_open then def.protected = true end
|
||||
|
||||
def.only_placer_can_open = nil
|
||||
|
||||
@ -777,7 +739,7 @@ function doors.register_door(name, def)
|
||||
doors.register(name, def)
|
||||
end
|
||||
|
||||
----trapdoor----
|
||||
-- trapdoor node on_rightclick function
|
||||
|
||||
function doors.trapdoor_toggle(pos, node, clicker)
|
||||
|
||||
@ -785,9 +747,7 @@ function doors.trapdoor_toggle(pos, node, clicker)
|
||||
|
||||
node = node or minetest.get_node(pos)
|
||||
|
||||
if not can_toggle(clicker, pos) then
|
||||
return false
|
||||
end
|
||||
if not can_toggle(clicker, pos) then return false end
|
||||
|
||||
local def = minetest.registered_nodes[node.name]
|
||||
|
||||
@ -811,12 +771,11 @@ function doors.trapdoor_toggle(pos, node, clicker)
|
||||
end
|
||||
end
|
||||
|
||||
-- register trapdoor function
|
||||
|
||||
function doors.register_trapdoor(name, def)
|
||||
|
||||
if not name:find(":") then
|
||||
name = "doors:" .. name
|
||||
end
|
||||
if not name:find(":") then name = "doors:" .. name end
|
||||
|
||||
local name_closed = name
|
||||
local name_opened = name.."_open"
|
||||
@ -867,9 +826,7 @@ function doors.register_trapdoor(name, def)
|
||||
local prot = meta:get_string("doors_protected")
|
||||
|
||||
-- Door is neither owned not protected
|
||||
if owner == "" and prot == "" then
|
||||
return nil
|
||||
end
|
||||
if owner == "" and prot == "" then return nil end
|
||||
|
||||
-- verify placer is owner of lockable door
|
||||
if owner ~= pname and prot ~= pname then
|
||||
@ -895,9 +852,7 @@ function doors.register_trapdoor(name, def)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local owner = meta:get_string("owner") or ""
|
||||
|
||||
if owner ~= "" or minetest.is_protected(pos, "") then
|
||||
return
|
||||
end
|
||||
if owner ~= "" or minetest.is_protected(pos, "") then return end
|
||||
|
||||
minetest.remove_node(pos)
|
||||
|
||||
@ -930,14 +885,12 @@ function doors.register_trapdoor(name, def)
|
||||
def_closed.node_box = def.nodebox_closed
|
||||
else
|
||||
def_closed.node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5}
|
||||
type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5}
|
||||
}
|
||||
end
|
||||
|
||||
def_closed.selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5}
|
||||
type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -6/16, 0.5}
|
||||
}
|
||||
|
||||
def_closed.tiles = {
|
||||
@ -953,14 +906,12 @@ function doors.register_trapdoor(name, def)
|
||||
def_opened.node_box = def.nodebox_opened
|
||||
else
|
||||
def_opened.node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5}
|
||||
type = "fixed", fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5}
|
||||
}
|
||||
end
|
||||
|
||||
def_opened.selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5}
|
||||
type = "fixed", fixed = {-0.5, -0.5, 6/16, 0.5, 0.5, 0.5}
|
||||
}
|
||||
|
||||
def_opened.tiles = {
|
||||
@ -982,6 +933,7 @@ function doors.register_trapdoor(name, def)
|
||||
doors.registered_trapdoors[name_closed] = true
|
||||
end
|
||||
|
||||
-- register trapdoors with recipes
|
||||
|
||||
doors.register_trapdoor("doors:trapdoor", {
|
||||
description = S("Wooden Trapdoor"),
|
||||
@ -1026,6 +978,7 @@ minetest.register_craft({
|
||||
})
|
||||
|
||||
-- based on castle_2 texture by sorcerykid's extra_doors mod
|
||||
|
||||
doors.register_trapdoor("doors:trapdoor_oak", {
|
||||
description = S("Oak Trapdoor"),
|
||||
inventory_image = "doors_trapdoor_oak.png",
|
||||
@ -1046,7 +999,7 @@ minetest.register_craft({
|
||||
}
|
||||
})
|
||||
|
||||
-----lock tool-----
|
||||
-- lock tool and recipe (use on doors to set to open, lock or protect)
|
||||
|
||||
minetest.register_tool("doors:lock_tool", {
|
||||
description = S("Lock Tool"),
|
||||
@ -1056,8 +1009,7 @@ minetest.register_tool("doors:lock_tool", {
|
||||
|
||||
local pos = pointed_thing.under
|
||||
|
||||
if pointed_thing.type ~= "node"
|
||||
or not doors.get(pos) then
|
||||
if pointed_thing.type ~= "node" or not doors.get(pos) then
|
||||
return
|
||||
end
|
||||
|
||||
@ -1070,8 +1022,7 @@ minetest.register_tool("doors:lock_tool", {
|
||||
local ok = 0
|
||||
local infotext = ""
|
||||
|
||||
if prot == ""
|
||||
and owner == "" then
|
||||
if prot == "" and owner == "" then
|
||||
|
||||
-- flip normal to owned
|
||||
if minetest.is_protected(pos, player_name) then
|
||||
@ -1084,8 +1035,7 @@ minetest.register_tool("doors:lock_tool", {
|
||||
ok = 1
|
||||
end
|
||||
|
||||
elseif prot == ""
|
||||
and owner ~= "" then
|
||||
elseif prot == "" and owner ~= "" then
|
||||
|
||||
-- flip owned to protected
|
||||
if player_name == owner then
|
||||
@ -1096,8 +1046,7 @@ minetest.register_tool("doors:lock_tool", {
|
||||
ok = 1
|
||||
end
|
||||
|
||||
elseif prot ~= ""
|
||||
and owner == "" then
|
||||
elseif prot ~= "" and owner == "" then
|
||||
|
||||
-- flip protected to normal
|
||||
if player_name == prot then
|
||||
@ -1137,10 +1086,11 @@ minetest.register_craft({
|
||||
|
||||
minetest.register_alias("doors:key", "doors:lock_tool")
|
||||
|
||||
----fence gate----
|
||||
-- fence gate tall collision box setting
|
||||
|
||||
local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0
|
||||
|
||||
-- fence gate node on_rightclick function
|
||||
|
||||
function doors.fencegate_toggle(pos, node, clicker)
|
||||
|
||||
@ -1152,6 +1102,7 @@ function doors.fencegate_toggle(pos, node, clicker)
|
||||
max_hear_distance = 8}, true)
|
||||
end
|
||||
|
||||
-- register fence gate function
|
||||
|
||||
function doors.register_fencegate(name, def)
|
||||
|
||||
@ -1176,8 +1127,7 @@ function doors.register_fencegate(name, def)
|
||||
end,
|
||||
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4}
|
||||
type = "fixed", fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1243,6 +1193,7 @@ function doors.register_fencegate(name, def)
|
||||
})
|
||||
end
|
||||
|
||||
-- register fence gates
|
||||
|
||||
doors.register_fencegate("doors:gate_wood", {
|
||||
description = S("Apple Wood Fence Gate"),
|
||||
@ -1279,57 +1230,29 @@ doors.register_fencegate("doors:gate_aspen_wood", {
|
||||
groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}
|
||||
})
|
||||
|
||||
----fuels----
|
||||
-- burnable items
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "doors:trapdoor",
|
||||
burntime = 7
|
||||
})
|
||||
minetest.register_craft({type = "fuel", recipe = "doors:trapdoor", burntime = 7})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "doors:trapdoor_oak",
|
||||
burntime = 10
|
||||
})
|
||||
minetest.register_craft({type = "fuel", recipe = "doors:trapdoor_oak", burntime = 10})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "doors:door_wood",
|
||||
burntime = 14
|
||||
})
|
||||
minetest.register_craft({type = "fuel", recipe = "doors:door_wood", burntime = 14})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "doors:gate_wood_closed",
|
||||
burntime = 7
|
||||
})
|
||||
minetest.register_craft({type = "fuel", recipe = "doors:gate_wood_closed", burntime = 7})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "doors:gate_acacia_wood_closed",
|
||||
burntime = 8
|
||||
})
|
||||
minetest.register_craft({type = "fuel", recipe = "doors:gate_acacia_wood_closed",
|
||||
burntime = 8})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "doors:gate_junglewood_closed",
|
||||
burntime = 9
|
||||
})
|
||||
minetest.register_craft({type = "fuel", recipe = "doors:gate_junglewood_closed",
|
||||
burntime = 9})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "doors:gate_pine_wood_closed",
|
||||
burntime = 6
|
||||
})
|
||||
minetest.register_craft({type = "fuel", recipe = "doors:gate_pine_wood_closed",
|
||||
burntime = 6})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "doors:gate_aspen_wood_closed",
|
||||
burntime = 5
|
||||
})
|
||||
minetest.register_craft({type = "fuel", recipe = "doors:gate_aspen_wood_closed",
|
||||
burntime = 5})
|
||||
|
||||
-- old key into iron
|
||||
-- old key into iron recipe
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:iron_lump",
|
||||
|
Loading…
x
Reference in New Issue
Block a user