clearly differentiate nodes vs. items. The doors are working now again
This commit is contained in:
parent
0fd29233d3
commit
de3109a071
@ -22,7 +22,7 @@ local function reset_build(self)
|
||||
self.metadata.building = false
|
||||
end
|
||||
|
||||
local function get_registered_nodename(name)
|
||||
local function get_registered_itemname(name)
|
||||
if string.find(name, "^doors") then
|
||||
name = name:gsub("_[tb]_[12]", "")
|
||||
elseif string.find(name, "^stairs") then
|
||||
@ -33,6 +33,15 @@ local function get_registered_nodename(name)
|
||||
return name
|
||||
end
|
||||
|
||||
local function get_registered_nodename(name)
|
||||
if string.find(name, "^doors.*_[ab]_[12]$") then
|
||||
name = name:gsub("_[12]", "")
|
||||
elseif string.find(name, "^doors.*_t_[12]$") then
|
||||
name = "doors:hidden"
|
||||
end
|
||||
return name
|
||||
end
|
||||
|
||||
local function load_schematic(self, filename)
|
||||
local input = nil
|
||||
if INSTABUILD_PATH then
|
||||
@ -73,17 +82,18 @@ local function load_schematic(self, filename)
|
||||
self.var.nodelist = {}
|
||||
for i,v in ipairs(sorted) do
|
||||
if v.name and v.param1 and v.param2 and v.x and v.y and v.z then
|
||||
local node = {name=v.name, param1=v.param1, param2=v.param2}
|
||||
local item_name = get_registered_itemname(v.name)
|
||||
local node_name = get_registered_nodename(v.name)
|
||||
local node = {name=node_name, param1=v.param1, param2=v.param2}
|
||||
local pos = vector.add(self.metadata.build_pos, {x=v.x, y=v.y, z=v.z})
|
||||
local name = get_registered_nodename(v.name)
|
||||
if minetest.registered_items[name] then
|
||||
self.metadata.inventory[name] = self.metadata.inventory[name] or 0
|
||||
self.var.nodelist[name] = self.var.nodelist[name] or 0
|
||||
self.var.nodelist[name] = self.var.nodelist[name] + 1
|
||||
if minetest.registered_items[item_name] then
|
||||
self.metadata.inventory[item_name] = self.metadata.inventory[item_name] or 0
|
||||
self.var.nodelist[item_name] = self.var.nodelist[item_name] or 0
|
||||
self.var.nodelist[item_name] = self.var.nodelist[item_name] + 1
|
||||
else
|
||||
node = DEFAULT_NODE
|
||||
end
|
||||
self.var.nodedata[i] = {pos=pos, node=node}
|
||||
self.var.nodedata[i] = {pos=pos, node=node, item_name=item_name}
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -218,19 +228,17 @@ npcf:register_npc("npcf_builder:npc" ,{
|
||||
yaw = npcf:get_face_direction(pos, nodedata.pos)
|
||||
local distance = vector.distance(pos, nodedata.pos)
|
||||
if distance < 4 then
|
||||
if minetest.registered_items[nodedata.node.name].sounds then
|
||||
local soundspec = minetest.registered_items[nodedata.node.name].sounds.place
|
||||
if minetest.registered_nodes[nodedata.node.name].sounds then
|
||||
local soundspec = minetest.registered_nodes[nodedata.node.name].sounds.place
|
||||
if soundspec then
|
||||
soundspec.pos = pos
|
||||
minetest.sound_play(soundspec.name, soundspec)
|
||||
end
|
||||
end
|
||||
minetest.add_node(nodedata.pos, nodedata.node)
|
||||
local door_top = string.find(nodedata.node.name, "^doors+_t_[12]$")
|
||||
if BUILDER_REQ_MATERIALS == true and not door_top then
|
||||
local name = get_registered_nodename(nodedata.node.name)
|
||||
if self.metadata.inventory[name] > 0 then
|
||||
self.metadata.inventory[name] = self.metadata.inventory[name] - 1
|
||||
if BUILDER_REQ_MATERIALS == true and nodedata.node.name ~= "doors:hidden" then
|
||||
if self.metadata.inventory[nodedata.item_name] > 0 then
|
||||
self.metadata.inventory[nodedata.item_name] = self.metadata.inventory[nodedata.item_name] - 1
|
||||
self.var.selected = ""
|
||||
else
|
||||
self.metadata.building = false
|
||||
@ -239,7 +247,7 @@ npcf:register_npc("npcf_builder:npc" ,{
|
||||
local i = 0
|
||||
for k,v in pairs(self.var.nodelist) do
|
||||
i = i + 1
|
||||
if k == name then
|
||||
if k == nodedata.item_name then
|
||||
self.var.selected = i
|
||||
break
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user