mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2025-04-23 07:35:16 +02:00
Make compat conversion more reliable, convert facedir to wallmounted p2
This commit is contained in:
parent
877eb6ccd6
commit
9e3a0b8316
2 changed files with 38 additions and 15 deletions
mods/ITEMS/mcl_itemframes
|
@ -1,4 +1,3 @@
|
|||
|
||||
local entity_stub = {
|
||||
on_activate = function(self)
|
||||
local pos = self.object:get_pos()
|
||||
|
@ -7,6 +6,24 @@ local entity_stub = {
|
|||
end
|
||||
}
|
||||
|
||||
minetest.register_entity("mcl_itemframes:map", entity_stub)
|
||||
minetest.register_entity("mcl_itemframes:glow_item", entity_stub)
|
||||
minetest.register_entity("mcl_itemframes:glow_map", entity_stub)
|
||||
minetest.register_entity("mcl_itemframes:item_frame_item", entity_stub)
|
||||
minetest.register_entity("mcl_itemframes:item_frame_map", entity_stub)
|
||||
minetest.register_entity("mcl_itemframes:glow_item_frame_item", entity_stub)
|
||||
minetest.register_entity("mcl_itemframes:glow_item_frame_map", entity_stub)
|
||||
|
||||
minetest.register_alias("mcl_itemframes:item_frame", "mcl_itemframes:frame")
|
||||
minetest.register_alias("mcl_itemframes:glow_item_frame", "mcl_itemframes:glow_frame")
|
||||
|
||||
minetest.register_lbm({
|
||||
label = "Convert old itemframes",
|
||||
name = "mcl_itemframes:convert_old_itemframes",
|
||||
nodenames = { "mcl_itemframes:item_frame", "mcl_itemframes:glow_item_frame" },
|
||||
run_at_every_load = false,
|
||||
action = function(pos, node)
|
||||
node.name = node.name:gsub("item_","")
|
||||
node.param2 = minetest.dir_to_wallmounted(minetest.facedir_to_dir(node.param2))
|
||||
minetest.swap_node(pos, node)
|
||||
mcl_itemframes.remove_entity(pos)
|
||||
mcl_itemframes.update_entity(pos)
|
||||
end
|
||||
})
|
||||
|
|
|
@ -73,6 +73,7 @@ local function remove_entity(pos)
|
|||
l.object:remove()
|
||||
end
|
||||
end
|
||||
mcl_itemframes.remove_entity = remove_entity
|
||||
|
||||
local function drop_item(pos)
|
||||
local inv = minetest.get_meta(pos):get_inventory()
|
||||
|
@ -88,6 +89,7 @@ local function get_map_id(itemstack)
|
|||
end
|
||||
|
||||
local function update_entity(pos)
|
||||
if not pos then return end
|
||||
local inv = minetest.get_meta(pos):get_inventory()
|
||||
local itemstack = inv:get_stack("main", 1)
|
||||
if not itemstack then
|
||||
|
@ -127,6 +129,11 @@ end
|
|||
|
||||
-- Entity functions
|
||||
function mcl_itemframes.tpl_entity:set_item(itemstack, pos)
|
||||
if not itemstack or not itemstack.get_name then
|
||||
self.object:remove()
|
||||
update_entity(pos)
|
||||
return
|
||||
end
|
||||
self._itemframe_pos = pos
|
||||
self._item = itemstack:get_name()
|
||||
self._stack = itemstack
|
||||
|
@ -155,16 +162,15 @@ end
|
|||
|
||||
function mcl_itemframes.tpl_entity:on_activate(staticdata, dtime_s)
|
||||
local s = minetest.deserialize(staticdata)
|
||||
if s then
|
||||
if not s._itemframe_pos or not s._itemstack or not s._item then
|
||||
--try to re-initialize items without proper staticdata
|
||||
local p = minetest.find_node_near(self.object:get_pos(), 1, {"group:itemframe"})
|
||||
self.object:remove()
|
||||
if p then
|
||||
update_entity(p)
|
||||
end
|
||||
return
|
||||
if (type(staticdata) == "string" and dtime_s and dtime_s > 0) then
|
||||
--try to re-initialize items without proper staticdata
|
||||
local p = minetest.find_node_near(self.object:get_pos(), 1, {"group:itemframe"})
|
||||
self.object:remove()
|
||||
if p then
|
||||
update_entity(p)
|
||||
end
|
||||
return
|
||||
elseif s then
|
||||
self._itemframe_pos = s.itemframe_pos
|
||||
self._itemstack = s.itemstack
|
||||
self._item = s.item
|
||||
|
@ -200,7 +206,7 @@ end
|
|||
|
||||
minetest.register_entity("mcl_itemframes:item", mcl_itemframes.tpl_entity)
|
||||
|
||||
mcl_itemframes.register_itemframe("item_frame", {
|
||||
mcl_itemframes.register_itemframe("frame", {
|
||||
node = {
|
||||
description = S("Item Frame"),
|
||||
_tt_help = S("Can hold an item"),
|
||||
|
@ -212,7 +218,7 @@ mcl_itemframes.register_itemframe("item_frame", {
|
|||
},
|
||||
})
|
||||
|
||||
mcl_itemframes.register_itemframe("glow_item_frame", {
|
||||
mcl_itemframes.register_itemframe("glow_frame", {
|
||||
node = {
|
||||
description = S("Glow Item Frame"),
|
||||
_tt_help = S("Can hold an item and glows"),
|
||||
|
|
Loading…
Add table
Reference in a new issue