diff --git a/mods/itemframes/depends.txt b/mods/homedecor_modpack/itemframes/depends.txt similarity index 100% rename from mods/itemframes/depends.txt rename to mods/homedecor_modpack/itemframes/depends.txt diff --git a/mods/itemframes/init.lua b/mods/homedecor_modpack/itemframes/init.lua similarity index 61% rename from mods/itemframes/init.lua rename to mods/homedecor_modpack/itemframes/init.lua index ef02008..f5c8ce0 100755 --- a/mods/itemframes/init.lua +++ b/mods/homedecor_modpack/itemframes/init.lua @@ -3,10 +3,10 @@ local tmp = {} minetest.register_entity("itemframes:item",{ hp_max = 1, visual="wielditem", - visual_size = {x = 0.3333, y = 0.3333}, + visual_size={x=.33,y=.33}, collisionbox = {0,0,0,0,0,0}, - physical = false, - textures = {"air"}, + physical=false, + textures={"air"}, on_activate = function(self, staticdata) if tmp.nodename ~= nil and tmp.texture ~= nil then self.nodename = tmp.nodename @@ -15,7 +15,7 @@ minetest.register_entity("itemframes:item",{ tmp.texture = nil else if staticdata ~= nil and staticdata ~= "" then - local data = staticdata:split(";") + local data = staticdata:split(';') if data and data[1] and data[2] then self.nodename = data[1] self.texture = data[2] @@ -23,15 +23,15 @@ minetest.register_entity("itemframes:item",{ end end if self.texture ~= nil then - self.object:set_properties({textures = {self.texture}}) + self.object:set_properties({textures={self.texture}}) end if self.nodename == "itemframes:pedestal" then - self.object:set_properties({automatic_rotate = 0.5}) + self.object:set_properties({automatic_rotate=1}) end end, get_staticdata = function(self) if self.nodename ~= nil and self.texture ~= nil then - return self.nodename .. ";" .. self.texture + return self.nodename .. ';' .. self.texture end return "" end, @@ -39,17 +39,17 @@ minetest.register_entity("itemframes:item",{ local facedir = {} -facedir[0] = {x = 0, y = 0, z = 1} -facedir[1] = {x = 1, y = 0, z = 0} -facedir[2] = {x = 0, y = 0, z = -1} -facedir[3] = {x = -1, y = 0, z = 0} +facedir[0] = {x=0,y=0,z=1} +facedir[1] = {x=1,y=0,z=0} +facedir[2] = {x=0,y=0,z=-1} +facedir[3] = {x=-1,y=0,z=0} local remove_item = function(pos, node) local objs = nil if node.name == "itemframes:frame" then - objs = minetest.get_objects_inside_radius(pos, 0.5) + objs = minetest.env:get_objects_inside_radius(pos, .5) elseif node.name == "itemframes:pedestal" then - objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y + 1, z = pos.z}, 0.5) + objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y+1,z=pos.z}, .5) end if objs then for _, obj in ipairs(objs) do @@ -62,19 +62,20 @@ end local update_item = function(pos, node) remove_item(pos, node) - local meta = minetest.get_meta(pos) + local meta = minetest.env:get_meta(pos) if meta:get_string("item") ~= "" then if node.name == "itemframes:frame" then local posad = facedir[node.param2] - pos.x = pos.x + posad.x * 6.5 / 16 - pos.y = pos.y + posad.y * 6.5 / 16 - pos.z = pos.z + posad.z * 6.5 / 16 + if not posad then return end + pos.x = pos.x + posad.x*6.5/16 + pos.y = pos.y + posad.y*6.5/16 + pos.z = pos.z + posad.z*6.5/16 elseif node.name == "itemframes:pedestal" then - pos.y = pos.y + 0.5 + 0.3333 + pos.y = pos.y + 12/16+.33 end tmp.nodename = node.name tmp.texture = ItemStack(meta:get_string("item")):get_name() - local e = minetest.add_entity(pos,"itemframes:item") + local e = minetest.env:add_entity(pos,"itemframes:item") if node.name == "itemframes:frame" then local yaw = math.pi*2 - node.param2 * math.pi/2 e:setyaw(yaw) @@ -83,12 +84,12 @@ local update_item = function(pos, node) end local drop_item = function(pos, node) - local meta = minetest.get_meta(pos) + local meta = minetest.env:get_meta(pos) if meta:get_string("item") ~= "" then if node.name == "itemframes:frame" then - minetest.add_item(pos, meta:get_string("item")) + minetest.env:add_item(pos, meta:get_string("item")) elseif node.name == "itemframes:pedestal" then - minetest.add_item({x=pos.x,y=pos.y+1,z=pos.z}, meta:get_string("item")) + minetest.env:add_item({x=pos.x,y=pos.y+1,z=pos.z}, meta:get_string("item")) end meta:set_string("item","") end @@ -99,23 +100,24 @@ minetest.register_node("itemframes:frame",{ description = "Item frame", drawtype = "nodebox", node_box = { type = "fixed", fixed = {-0.5, -0.5, 7/16, 0.5, 0.5, 0.5} }, + selection_box = { type = "fixed", fixed = {-0.5, -0.5, 7/16, 0.5, 0.5, 0.5} }, tiles = {"itemframes_frame.png"}, inventory_image = "itemframes_frame.png", wield_image = "itemframes_frame.png", paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, - groups = { choppy = 2, dig_immediate = 2}, + groups = { choppy=2,dig_immediate=2 }, legacy_wallmounted = true, sounds = default.node_sound_defaults(), after_place_node = function(pos, placer, itemstack) - local meta = minetest.get_meta(pos) + local meta = minetest.env:get_meta(pos) meta:set_string("owner",placer:get_player_name()) meta:set_string("infotext","Item frame (owned by "..placer:get_player_name()..")") end, on_rightclick = function(pos, node, clicker, itemstack) if not itemstack then return end - local meta = minetest.get_meta(pos) + local meta = minetest.env:get_meta(pos) if clicker:get_player_name() == meta:get_string("owner") then drop_item(pos,node) local s = itemstack:take_item() @@ -125,14 +127,14 @@ minetest.register_node("itemframes:frame",{ return itemstack end, on_punch = function(pos,node,puncher) - local meta = minetest.get_meta(pos) + local meta = minetest.env:get_meta(pos) if puncher:get_player_name() == meta:get_string("owner") then drop_item(pos, node) end end, can_dig = function(pos,player) - local meta = minetest.get_meta(pos) + local meta = minetest.env:get_meta(pos) return player:get_player_name() == meta:get_string("owner") end, }) @@ -142,25 +144,24 @@ minetest.register_node("itemframes:pedestal",{ description = "Pedestal", drawtype = "nodebox", node_box = { type = "fixed", fixed = { - {-7/16, -8/16, -7/16, 7/16, -7/16, 7/16}, -- Bottom plate - {-6/16, -7/16, -6/16, 6/16, -6/16, 6/16}, -- Bottom plate (upper) - {-0.25, -6/16, -0.25, 0.25, 7/16, 0.25}, -- Pillar - {-7/16, 7/16, -7/16, 7/16, 8/16, 7/16}, -- Top plate + {-7/16, -8/16, -7/16, 7/16, -7/16, 7/16}, -- bottom plate + {-6/16, -7/16, -6/16, 6/16, -6/16, 6/16}, -- bottom plate (upper) + {-0.25, -6/16, -0.25, 0.25, 11/16, 0.25}, -- pillar + {-7/16, 11/16, -7/16, 7/16, 12/16, 7/16}, -- top plate } }, + --selection_box = { type = "fixed", fixed = {-7/16, -0.5, -7/16, 7/16, 12/16, 7/16} }, tiles = {"itemframes_pedestal.png"}, paramtype = "light", - groups = {cracky = 2}, + groups = { cracky=3 }, sounds = default.node_sound_defaults(), - after_place_node = function(pos, placer, itemstack) - local meta = minetest.get_meta(pos) + local meta = minetest.env:get_meta(pos) meta:set_string("owner",placer:get_player_name()) meta:set_string("infotext","Pedestal (owned by "..placer:get_player_name()..")") end, - on_rightclick = function(pos, node, clicker, itemstack) if not itemstack then return end - local meta = minetest.get_meta(pos) + local meta = minetest.env:get_meta(pos) if clicker:get_player_name() == meta:get_string("owner") then drop_item(pos,node) local s = itemstack:take_item() @@ -169,38 +170,47 @@ minetest.register_node("itemframes:pedestal",{ end return itemstack end, - on_punch = function(pos,node,puncher) - local meta = minetest.get_meta(pos) + local meta = minetest.env:get_meta(pos) if puncher:get_player_name() == meta:get_string("owner") then drop_item(pos,node) end end, - can_dig = function(pos,player) - local meta = minetest.get_meta(pos) + + local meta = minetest.env:get_meta(pos) return player:get_player_name() == meta:get_string("owner") end, }) -minetest.register_craft({ - output = "itemframes:frame", - recipe = { - {"default:stick", "default:stick", "default:stick"}, - {"default:stick", "default:paper", "default:stick"}, - {"default:stick", "default:stick", "default:stick"}, - } +-- automatically restore entities lost from frames/pedestals +-- due to /clearobjects or similar + +minetest.register_abm({ + nodenames = { "itemframes:frame", "itemframes:pedestal" }, + interval = 15, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + if #minetest.get_objects_inside_radius(pos, 0.5) > 0 then return end + update_item(pos, node) + end }) +-- crafts + minetest.register_craft({ - output = "itemframes:pedestal", + output = 'itemframes:frame', recipe = { - {"default:stone", "default:stone", "default:stone"}, - {" ", "default:stone", " "}, - {"default:stone", "default:stone", "default:stone"}, + {'default:stick', 'default:stick', 'default:stick'}, + {'default:stick', 'default:paper', 'default:stick'}, + {'default:stick', 'default:stick', 'default:stick'}, + } +}) +minetest.register_craft({ + output = 'itemframes:pedestal', + recipe = { + {'default:stone', 'default:stone', 'default:stone'}, + {'', 'default:stone', ''}, + {'default:stone', 'default:stone', 'default:stone'}, } }) - -if minetest.setting_getbool("log_mods") then - minetest.log("action", "Carbone: [itemframes] loaded.") -end diff --git a/mods/homedecor_modpack/itemframes/textures/itemframes_frame.png b/mods/homedecor_modpack/itemframes/textures/itemframes_frame.png new file mode 100755 index 0000000..5373c45 Binary files /dev/null and b/mods/homedecor_modpack/itemframes/textures/itemframes_frame.png differ diff --git a/mods/homedecor_modpack/itemframes/textures/itemframes_pedestal.png b/mods/homedecor_modpack/itemframes/textures/itemframes_pedestal.png new file mode 100755 index 0000000..406d191 Binary files /dev/null and b/mods/homedecor_modpack/itemframes/textures/itemframes_pedestal.png differ diff --git a/mods/itemframes/textures/itemframes_frame.png b/mods/itemframes/textures/itemframes_frame.png deleted file mode 100755 index 884f9a6..0000000 Binary files a/mods/itemframes/textures/itemframes_frame.png and /dev/null differ diff --git a/mods/itemframes/textures/itemframes_pedestal.png b/mods/itemframes/textures/itemframes_pedestal.png deleted file mode 100755 index bc30cf9..0000000 Binary files a/mods/itemframes/textures/itemframes_pedestal.png and /dev/null differ