forked from VoxeLibre/VoxeLibre
Changed detection code custom frames.
todo: figure out why the standard item frame is using the wrong item entities. todo: fix screwdriver rotating the item displayed.
This commit is contained in:
parent
6d1b1b3c74
commit
8a21b9e99c
|
@ -15,6 +15,8 @@ local S = minetest.get_translator(minetest.get_current_modname())
|
||||||
local table = table
|
local table = table
|
||||||
local DEBUG = false
|
local DEBUG = false
|
||||||
|
|
||||||
|
local pairs = pairs
|
||||||
|
|
||||||
if 1 == 1 then
|
if 1 == 1 then
|
||||||
minetest.log("action", "[mcl_itemframes] API initialized.")
|
minetest.log("action", "[mcl_itemframes] API initialized.")
|
||||||
end
|
end
|
||||||
|
@ -32,23 +34,43 @@ local frame_item_base = {}
|
||||||
local map_item_base = {}
|
local map_item_base = {}
|
||||||
|
|
||||||
local remove_item_entity = function(pos, node)
|
local remove_item_entity = function(pos, node)
|
||||||
if node.name == "mcl_itemframes:item_frame" or node.name == "mcl_itemframes:glow_item_frame" then
|
|
||||||
|
local name_found = false
|
||||||
|
local found_name_to_use = ""
|
||||||
|
|
||||||
|
for k,v in pairs(mcl_itemframes.frames_registered.glowing) do
|
||||||
|
if node.name == v then
|
||||||
|
name_found = true
|
||||||
|
found_name_to_use = v
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- try to cut down on excess looping, if possible.
|
||||||
|
if name_found == false then
|
||||||
|
for k,v in pairs(mcl_itemframes.frames_registered.standard) do
|
||||||
|
if node.name == v then
|
||||||
|
name_found = true
|
||||||
|
found_name_to_use = v
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if 1==1 then
|
||||||
|
minetest.log("action","mcl_itemframes] remove_item_entity: " .. found_name_to_use .. "'s displayed item." )
|
||||||
|
end
|
||||||
|
|
||||||
|
if node.name == "mcl_itemframes:item_frame" or node.name == "mcl_itemframes:glow_item_frame" or node.name == found_name_to_use then
|
||||||
for _, obj in pairs(minetest.get_objects_inside_radius(pos, 0.5)) do
|
for _, obj in pairs(minetest.get_objects_inside_radius(pos, 0.5)) do
|
||||||
local entity = obj:get_luaentity()
|
local entity = obj:get_luaentity()
|
||||||
|
|
||||||
if 1 == 1 then
|
|
||||||
if entity then
|
|
||||||
minetest.log("action", "[mcl_itemframes] Remove_Entity: Attempting to remove Entity Named: " .. entity.name)
|
|
||||||
else
|
|
||||||
minetest.log("action", "[mcl_itemframes] Remove_Entity: Attempting to remove Entity Named: entity not found.\n can be a false positive.")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if entity then
|
if entity then
|
||||||
if entity.name == "mcl_itemframes:item" or entity.name == "mcl_itemframes:map" or
|
if entity.name == "mcl_itemframes:item" or entity.name == "mcl_itemframes:map" or
|
||||||
entity.name == "mcl_itemframes:glow_item" or entity.name == "mcl_itemframes:glow_map" then
|
entity.name == "mcl_itemframes:glow_item" or entity.name == "mcl_itemframes:glow_map" then
|
||||||
if 1 == 1 then
|
obj:remove()
|
||||||
minetest.log("action", "[mcl_itemframes] Remove_Entity: Removing Entity Named: " .. entity.name)
|
elseif entity.name == found_name_to_use .. "_item" or entity.name == found_name_to_use .. "_map" then
|
||||||
|
if 1==1 then
|
||||||
|
minetest.log("action","mcl_itemframes] remove_item_entity: " .. entity.name .. "-- the item." )
|
||||||
end
|
end
|
||||||
obj:remove()
|
obj:remove()
|
||||||
end
|
end
|
||||||
|
@ -124,42 +146,53 @@ mcl_itemframes.update_generic_item_entity = function(pos, node, param2)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
local item = inv:get_stack("main", 1)
|
local item = inv:get_stack("main", 1)
|
||||||
if not item:is_empty() then
|
|
||||||
-- update existing items placed.
|
|
||||||
if not param2 then
|
|
||||||
param2 = node.param2
|
|
||||||
end
|
|
||||||
|
|
||||||
local name_found = false
|
local name_found = false
|
||||||
local found_name_to_use = ""
|
local found_name_to_use = ""
|
||||||
local has_glow = false
|
local has_glow = false
|
||||||
|
|
||||||
for gl = 1, #mcl_itemframes.frames_registered.glowing do
|
for k,v in pairs(mcl_itemframes.frames_registered.glowing) do
|
||||||
if node.name == mcl_itemframes.frames_registered.glowing[gl] then
|
if node.name == v then
|
||||||
name_found = true
|
name_found = true
|
||||||
has_glow = true
|
has_glow = true
|
||||||
found_name_to_use = mcl_itemframes.frames_registered.glowing[gl]
|
found_name_to_use = v
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- try to cut down on excess looping, if possible.
|
-- try to cut down on excess looping, if possible.
|
||||||
if name_found == false then
|
if name_found == false then
|
||||||
for ngl = 1, #mcl_itemframes.frames_registered.standard do
|
for k,v in pairs(mcl_itemframes.frames_registered.standard) do
|
||||||
if node.name == mcl_itemframes.frames_registered.glowing[ngl] then
|
if node.name == v then
|
||||||
name_found = true
|
name_found = true
|
||||||
has_glow = false
|
has_glow = false
|
||||||
found_name_to_use = mcl_itemframes.frames_registered.glowing[ngl]
|
found_name_to_use = v
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if node.name == found_name_to_use then
|
if name_found == false then
|
||||||
|
minetest.log("error","[mcl_itemframes] Update_Generic_Item:\nFailed to find registered node:\nNode name - " .. node.name)
|
||||||
|
minetest.log("error","[mcl_itemframes] Update_Generic_Item:\nRegistry definition:" .. dump(mcl_itemframes.frames_registered))
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if not item:is_empty() then
|
||||||
|
-- update existing items placed.
|
||||||
|
if not param2 then
|
||||||
|
param2 = node.param2
|
||||||
|
end
|
||||||
local pos_adj = facedir[param2]
|
local pos_adj = facedir[param2]
|
||||||
|
|
||||||
|
if node.name == found_name_to_use then
|
||||||
pos.x = pos.x + pos_adj.x * 6.5 / 16
|
pos.x = pos.x + pos_adj.x * 6.5 / 16
|
||||||
pos.y = pos.y + pos_adj.y * 6.5 / 16
|
pos.y = pos.y + pos_adj.y * 6.5 / 16
|
||||||
pos.z = pos.z + pos_adj.z * 6.5 / 16
|
pos.z = pos.z + pos_adj.z * 6.5 / 16
|
||||||
|
|
||||||
|
if 1 == 1 then
|
||||||
|
minetest.log("[mcl_itemframes] Update_Generic_Item:\nFound Name in Registry: " .. found_name_to_use)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
local yaw = pi * 2 - param2 * pi / 2
|
local yaw = pi * 2 - param2 * pi / 2
|
||||||
local map_id = item:get_meta():get_string("mcl_maps:id")
|
local map_id = item:get_meta():get_string("mcl_maps:id")
|
||||||
|
@ -171,14 +204,18 @@ mcl_itemframes.update_generic_item_entity = function(pos, node, param2)
|
||||||
if 1 == 1 then
|
if 1 == 1 then
|
||||||
minetest.log("action", "[mcl_itemframes] Update_Generic_Item:\nAdding entity: " .. node.name .. "_item")
|
minetest.log("action", "[mcl_itemframes] Update_Generic_Item:\nAdding entity: " .. node.name .. "_item")
|
||||||
end
|
end
|
||||||
|
if node.name == found_name_to_use then
|
||||||
map_id_entity = minetest.add_entity(pos, node.name .. "_item")
|
map_id_entity = minetest.add_entity(pos, node.name .. "_item")
|
||||||
map_id_lua = map_id_entity:get_luaentity()
|
else
|
||||||
|
local debugs_string = "[mcl_itemframes] Update_Generic_Item:\nCouldn't find node name in registry: "
|
||||||
|
minetest.log("error", debugs_string .. found_name_to_use "\nregistry: " .. dump(mcl_itemframes.frames_registered))
|
||||||
|
|
||||||
map_id_lua._nodename = node.name
|
return
|
||||||
if 1 == 1 then
|
|
||||||
minetest.log("action", "[mcl_itemframes] Update_Generic_Item: Adding entity: " .. map_id_lua.name)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
map_id_lua = map_id_entity:get_luaentity()
|
||||||
|
map_id_lua._nodename = node.name
|
||||||
|
|
||||||
local itemname = item:get_name()
|
local itemname = item:get_name()
|
||||||
if itemname == "" or itemname == nil then
|
if itemname == "" or itemname == nil then
|
||||||
map_id_lua._texture = "blank.png"
|
map_id_lua._texture = "blank.png"
|
||||||
|
@ -195,13 +232,22 @@ mcl_itemframes.update_generic_item_entity = function(pos, node, param2)
|
||||||
minetest.log("action", "[mcl_itemframes] Update_Generic_Item: item's name: " .. itemname)
|
minetest.log("action", "[mcl_itemframes] Update_Generic_Item: item's name: " .. itemname)
|
||||||
end
|
end
|
||||||
map_id_lua:_update_texture()
|
map_id_lua:_update_texture()
|
||||||
|
if node.name == found_name_to_use then
|
||||||
map_id_entity:set_yaw(yaw)
|
map_id_entity:set_yaw(yaw)
|
||||||
|
else
|
||||||
|
minetest.log("error", "[mcl_itemframes] Update_Generic_Item: Failed to set Display Item's yaw. " .. node.name)
|
||||||
|
end
|
||||||
else
|
else
|
||||||
-- handle map items placed into custom frame.
|
-- handle map items placed into custom frame.
|
||||||
|
if 1 == 1 then
|
||||||
|
minetest.log("action", "[mcl_itemframes] Update_Generic_Item: Placing map in a " .. found_name_to_use .. " frame.")
|
||||||
|
end
|
||||||
|
|
||||||
|
if node.name == found_name_to_use then
|
||||||
map_id_entity = minetest.add_entity(pos, found_name_to_use .. "_map", map_id)
|
map_id_entity = minetest.add_entity(pos, found_name_to_use .. "_map", map_id)
|
||||||
map_id_entity:set_yaw(yaw)
|
map_id_entity:set_yaw(yaw)
|
||||||
if 1 == 1 then
|
else
|
||||||
minetest.log("action", "[mcl_itemframes] Placing map in a " .. found_name_to_use .. " frame.")
|
minetest.log("error", "[mcl_itemframes] Update_Generic_Item: Failed to set Map Item in " .. found_name_to_use .. "'s frame.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -230,20 +276,20 @@ function mcl_itemframes.drop_generic_item(pos, node, meta, clicker)
|
||||||
local name_found = false
|
local name_found = false
|
||||||
local found_name_to_use = ""
|
local found_name_to_use = ""
|
||||||
|
|
||||||
for gl = 1, #mcl_itemframes.frames_registered.glowing do
|
for k,v in pairs(mcl_itemframes.frames_registered.glowing) do
|
||||||
if node.name == mcl_itemframes.frames_registered.glowing[gl] then
|
if node.name == v then
|
||||||
name_found = true
|
name_found = true
|
||||||
found_name_to_use = mcl_itemframes.frames_registered.glowing[gl]
|
found_name_to_use = v
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- try to cut down on excess looping, if possible.
|
-- try to cut down on excess looping, if possible.
|
||||||
if name_found == false then
|
if name_found == false then
|
||||||
for ngl = 1, #mcl_itemframes.frames_registered.standard do
|
for k,v in pairs(mcl_itemframes.frames_registered.standard) do
|
||||||
if node.name == mcl_itemframes.frames_registered.glowing[ngl] then
|
if node.name == v then
|
||||||
name_found = true
|
name_found = true
|
||||||
found_name_to_use = mcl_itemframes.frames_registered.glowing[ngl]
|
found_name_to_use = v
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -438,24 +484,25 @@ mcl_itemframes.item_frame_base = {
|
||||||
local name_found = false
|
local name_found = false
|
||||||
local found_name_to_use = ""
|
local found_name_to_use = ""
|
||||||
|
|
||||||
for gl = 1, #mcl_itemframes.frames_registered.glowing do
|
for k,v in pairs(mcl_itemframes.frames_registered.glowing) do
|
||||||
if node.name == mcl_itemframes.frames_registered.glowing[gl] then
|
if node.name == v then
|
||||||
name_found = true
|
name_found = true
|
||||||
found_name_to_use = mcl_itemframes.frames_registered.glowing[gl]
|
found_name_to_use = v
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- try to cut down on excess looping, if possible.
|
-- try to cut down on excess looping, if possible.
|
||||||
if name_found == false then
|
if name_found == false then
|
||||||
for ngl = 1, #mcl_itemframes.frames_registered.standard do
|
for k,v in pairs(mcl_itemframes.frames_registered.standard) do
|
||||||
if node.name == mcl_itemframes.frames_registered.glowing[ngl] then
|
if node.name == v then
|
||||||
name_found = true
|
name_found = true
|
||||||
found_name_to_use = mcl_itemframes.frames_registered.glowing[ngl]
|
found_name_to_use = v
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if node.name == found_name_to_use then
|
if node.name == found_name_to_use then
|
||||||
objs = minetest.get_objects_inside_radius(pos, 0.5)
|
objs = minetest.get_objects_inside_radius(pos, 0.5)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue