From 8af48eefe2c003fc8371b84933b0899a30117027 Mon Sep 17 00:00:00 2001 From: Ombridride Date: Sat, 15 Nov 2014 04:06:04 +0100 Subject: [PATCH] Itemframes mod update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MAJ de "itemframe" (Suppression de la version Carbone, ajout de la version de VanessaE provenant de "homedecor_modpack" étant plus à jour et corrigeant entre autre un bugfix qui faisait crasher le serveur, et une auto-regénération des objets framed si un clearobjects est effectué) --- .../itemframes/depends.txt | 0 .../itemframes/init.lua | 120 ++++++++++-------- .../itemframes/textures/itemframes_frame.png | Bin 0 -> 104 bytes .../textures/itemframes_pedestal.png | Bin 0 -> 340 bytes mods/itemframes/textures/itemframes_frame.png | Bin 564 -> 0 bytes .../textures/itemframes_pedestal.png | Bin 286 -> 0 bytes 6 files changed, 65 insertions(+), 55 deletions(-) rename mods/{ => homedecor_modpack}/itemframes/depends.txt (100%) rename mods/{ => homedecor_modpack}/itemframes/init.lua (61%) create mode 100755 mods/homedecor_modpack/itemframes/textures/itemframes_frame.png create mode 100755 mods/homedecor_modpack/itemframes/textures/itemframes_pedestal.png delete mode 100755 mods/itemframes/textures/itemframes_frame.png delete mode 100755 mods/itemframes/textures/itemframes_pedestal.png 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 ef020084..f5c8ce06 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 0000000000000000000000000000000000000000..5373c454d61e8abeecf06a65cba44bbc01416426 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|`kpS1AsXkCJGO=@avCyxoHkdw z!$m_%FW$bNePQ;2^-}B7Lk>^4?of0|LHFat7KYu8e`Q|(j#>xQ%HZkh=d#Wzp$Pyz Cq#!~7 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..406d1915915fae751f535eee8be63b2b4a5e3d08 GIT binary patch literal 340 zcmV-a0jvIrP)Po41_tIyP_5gh`68+?|*{Y2~15{e&sbyz9f@2*{zoDb+28S8L@}W+CA%=GlzZW zzjS_+?%k~{+;+KerL`eGNw*vKeK!(7Pz3O2BocrEF~B3;YhTFIg1rQ+b0507x^rpZC+l)RRl^XhTa0# znP0MSCWvbu0rVCG=mV~~4IK^NNf?2N6cGV3QZE((umoci04nc`0IWa&&Paq7&+7UI z`1?@@tS|&{t$GC50DvQEG3_eoS-BMr_=~725uiIE015O{)JcGd`FRITD5k!Tp0W;< m0RKCi$6c)crM$=Y*MJ|bS_9e?r~2Oj0000 literal 0 HcmV?d00001 diff --git a/mods/itemframes/textures/itemframes_frame.png b/mods/itemframes/textures/itemframes_frame.png deleted file mode 100755 index 884f9a6c68b09990716143e6385141b4307e7fab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmV-40?Yl0P) zO=?_M5C+h%zN-7)?N%%HM3V&L1max;vJ`D2WagD<0p63b!9*BG3dr64-u8y@}PdI{=dIN=}X$<>tG~)8q4YxeQO1LRG!H`vpMk z0U$FYf}Guf#UkR6^6T550c_2gnG`!NlO%K6Z7n|>GSigDh0~+C0KJbH!D?h7A&iJ~ zu#_@hwwI^5E(O538Gs^A5`ah>Gc5tttU?uc&xi<%F|#`s?f}RN^qGu=5L^mXwF^Y# zzn>E$BC27{tiZbDOcth6=M3({w`~K^9VAOBBC<(2r*-lgacK^qm;yN66q-nd0XP(i z2zRF-TRUQo5R!#?v+A`6fXg;`-sVsR;E@2DuKM^YTzc=OLI~#Ezy1Aq zD5FG*tu?x;7Ur!cIZGtTFCRaN6jiZe{Px_o^ViRReN}4jSQfaC^;j~~yKI}EPS*Am zj<&np|Nf4UnGu-?RMShJbyYY5>7GInK^tC+lJYNwpi$dq+pv-V0000&2fkGSyrcH_awlVGODbH^IgssuXuC0G1 z_MA_p*Xo>@%%+w1RV}Yx>U6v5xZ(+C+`lhs%Pqg0*;ROYm3Xw_7tMwJH{Oc4