tweak code
This commit is contained in:
parent
c3b95202d0
commit
1835bd0ffe
85
init.lua
85
init.lua
@ -28,6 +28,22 @@ end
|
|||||||
|
|
||||||
local S = minetest.get_translator("itemframes")
|
local S = minetest.get_translator("itemframes")
|
||||||
|
|
||||||
|
-- remove entities
|
||||||
|
|
||||||
|
local function del_ent(pos, self)
|
||||||
|
|
||||||
|
local pos2 = vector.round(pos)
|
||||||
|
local objs = minetest.get_objects_inside_radius(pos2, 0.5)
|
||||||
|
|
||||||
|
for _, obj in pairs(objs) do
|
||||||
|
|
||||||
|
if obj and (self and obj ~= self.object or not self) and obj:get_luaentity()
|
||||||
|
and obj:get_luaentity().name == "itemframes:item" then
|
||||||
|
obj:remove() ; print("--removed", minetest.pos_to_string(pos2))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- item entity
|
-- item entity
|
||||||
|
|
||||||
minetest.register_entity("itemframes:item", {
|
minetest.register_entity("itemframes:item", {
|
||||||
@ -44,19 +60,8 @@ minetest.register_entity("itemframes:item", {
|
|||||||
on_activate = function(self, staticdata)
|
on_activate = function(self, staticdata)
|
||||||
|
|
||||||
local pos = self.object:get_pos() ; if not pos then return end
|
local pos = self.object:get_pos() ; if not pos then return end
|
||||||
local objs = minetest.get_objects_inside_radius(pos, 0.5)
|
|
||||||
|
|
||||||
for _, obj in ipairs(objs) do
|
del_ent(pos, self)
|
||||||
|
|
||||||
if obj ~= self.object then
|
|
||||||
|
|
||||||
local e = obj:get_luaentity()
|
|
||||||
|
|
||||||
if e and e.name == "itemframes:item" then
|
|
||||||
obj:remove()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if tmp.nodename and tmp.texture then
|
if tmp.nodename and tmp.texture then
|
||||||
|
|
||||||
@ -151,29 +156,15 @@ local facedir = {
|
|||||||
[17] = {x = 0, y = 1, z = 0, pitch = -4.7, yaw = 1, roll = 0, nx = 8},
|
[17] = {x = 0, y = 1, z = 0, pitch = -4.7, yaw = 1, roll = 0, nx = 8},
|
||||||
}
|
}
|
||||||
|
|
||||||
-- remove entities
|
-- remove item
|
||||||
|
|
||||||
local function remove_item(pos, ntype)
|
local function remove_item(pos, ntype)
|
||||||
|
|
||||||
local ypos = 0
|
local ypos = 0
|
||||||
|
|
||||||
if ntype == "pedestal" then
|
if ntype == "pedestal" then ypos = 1 end
|
||||||
ypos = 1
|
|
||||||
end
|
|
||||||
|
|
||||||
local objs = minetest.get_objects_inside_radius(
|
del_ent({x = pos.x, y = pos.y + ypos, z = pos.z})
|
||||||
{x = pos.x, y = pos.y + ypos, z = pos.z}, 0.5)
|
|
||||||
|
|
||||||
if objs then
|
|
||||||
|
|
||||||
for _, obj in pairs(objs) do
|
|
||||||
|
|
||||||
if obj and obj:get_luaentity()
|
|
||||||
and obj:get_luaentity().name == "itemframes:item" then
|
|
||||||
obj:remove()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- update entity
|
-- update entity
|
||||||
@ -222,10 +213,7 @@ local function update_item(pos, ntype, node)
|
|||||||
local e = minetest.add_entity(pos, "itemframes:item")
|
local e = minetest.add_entity(pos, "itemframes:item")
|
||||||
|
|
||||||
if not e then
|
if not e then
|
||||||
tmp.nodename = nil
|
tmp.nodename = nil ; tmp.texture = nil ; tmp.glow = nil ; return
|
||||||
tmp.texture = nil
|
|
||||||
tmp.glow = nil
|
|
||||||
return
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if ntype == "frame" then
|
if ntype == "frame" then
|
||||||
@ -349,12 +337,8 @@ end
|
|||||||
minetest.register_node("itemframes:frame",{
|
minetest.register_node("itemframes:frame",{
|
||||||
description = S("Item frame"),
|
description = S("Item frame"),
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
node_box = {
|
node_box = {type = "fixed", fixed = {-7/16, -7/16, 7/16, 7/16, 7/16, 0.5}},
|
||||||
type = "fixed", fixed = {-7/16, -7/16, 7/16, 7/16, 7/16, 0.5}
|
selection_box = {type = "fixed", fixed = {-6/16, -6/16, 7/16, 6/16, 6/16, 0.5}},
|
||||||
},
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed", fixed = {-6/16, -6/16, 7/16, 6/16, 6/16, 0.5}
|
|
||||||
},
|
|
||||||
tiles = {"itemframes_frame.png"},
|
tiles = {"itemframes_frame.png"},
|
||||||
inventory_image = "itemframes_frame_inv.png",
|
inventory_image = "itemframes_frame_inv.png",
|
||||||
wield_image = "itemframes_frame_inv.png",
|
wield_image = "itemframes_frame_inv.png",
|
||||||
@ -463,12 +447,8 @@ minetest.register_craft({
|
|||||||
minetest.register_node("itemframes:frame_invis",{
|
minetest.register_node("itemframes:frame_invis",{
|
||||||
description = S("Invisible Item frame"),
|
description = S("Invisible Item frame"),
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
node_box = {
|
node_box = {type = "fixed", fixed = {-7/16, -7/16, 7/16, 7/16, 7/16, 0.5}},
|
||||||
type = "fixed", fixed = {-7/16, -7/16, 7/16, 7/16, 7/16, 0.5}
|
selection_box = {type = "fixed", fixed = {-6/16, -6/16, 7/16, 6/16, 6/16, 0.5}},
|
||||||
},
|
|
||||||
selection_box = {
|
|
||||||
type = "fixed", fixed = {-6/16, -6/16, 7/16, 6/16, 6/16, 0.5}
|
|
||||||
},
|
|
||||||
tiles = {"itemframes_frame_invis.png"},
|
tiles = {"itemframes_frame_invis.png"},
|
||||||
inventory_image = "itemframes_frame_invis_inv.png",
|
inventory_image = "itemframes_frame_invis_inv.png",
|
||||||
wield_image = "itemframes_frame_invis_inv.png",
|
wield_image = "itemframes_frame_invis_inv.png",
|
||||||
@ -584,9 +564,7 @@ minetest.register_node("itemframes:pedestal",{
|
|||||||
{-7/16, 11/16, -7/16, 7/16, 12/16, 7/16}, -- top plate
|
{-7/16, 11/16, -7/16, 7/16, 12/16, 7/16}, -- top plate
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
selection_box = {
|
selection_box = {type = "fixed", fixed = {-7/16, -0.5, -7/16, 7/16, 12/16, 7/16}},
|
||||||
type = "fixed", fixed = {-7/16, -0.5, -7/16, 7/16, 12/16, 7/16}
|
|
||||||
},
|
|
||||||
tiles = {
|
tiles = {
|
||||||
"itemframes_pedestal_top.png",
|
"itemframes_pedestal_top.png",
|
||||||
"itemframes_pedestal_btm.png",
|
"itemframes_pedestal_btm.png",
|
||||||
@ -692,16 +670,7 @@ minetest.register_lbm({
|
|||||||
|
|
||||||
pos.y = pos.y + ypos
|
pos.y = pos.y + ypos
|
||||||
|
|
||||||
local objs = minetest.get_objects_inside_radius(pos, 0.5)
|
del_ent(pos)
|
||||||
|
|
||||||
for _, obj in ipairs(objs) do
|
|
||||||
|
|
||||||
local e = obj:get_luaentity()
|
|
||||||
|
|
||||||
if e and e.name == "itemframes:item" then
|
|
||||||
obj:remove()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
pos.y = pos.y - ypos
|
pos.y = pos.y - ypos
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user