From a65f5b1564f8ed363e32393a289bd3a38f3d7dc8 Mon Sep 17 00:00:00 2001 From: PilzAdam Date: Sat, 18 May 2013 16:06:57 +0200 Subject: [PATCH] Add bones mod --- mods/bones/README.txt | 17 ++++ mods/bones/depends.txt | 1 + mods/bones/init.lua | 130 +++++++++++++++++++++++++++ mods/bones/textures/bones_bottom.png | Bin 0 -> 382 bytes mods/bones/textures/bones_front.png | Bin 0 -> 441 bytes mods/bones/textures/bones_rear.png | Bin 0 -> 437 bytes mods/bones/textures/bones_side.png | Bin 0 -> 412 bytes mods/bones/textures/bones_top.png | Bin 0 -> 410 bytes 8 files changed, 148 insertions(+) create mode 100644 mods/bones/README.txt create mode 100644 mods/bones/depends.txt create mode 100644 mods/bones/init.lua create mode 100644 mods/bones/textures/bones_bottom.png create mode 100644 mods/bones/textures/bones_front.png create mode 100644 mods/bones/textures/bones_rear.png create mode 100644 mods/bones/textures/bones_side.png create mode 100644 mods/bones/textures/bones_top.png diff --git a/mods/bones/README.txt b/mods/bones/README.txt new file mode 100644 index 0000000..b0ebed8 --- /dev/null +++ b/mods/bones/README.txt @@ -0,0 +1,17 @@ +Minetest 0.4 mod: bones +======================= + +License of source code: +----------------------- +Copyright (C) 2012 PilzAdam + +WTFPL + +License of media (textures and sounds) +-------------------------------------- +Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) +http://creativecommons.org/licenses/by-sa/3.0/ + +Authors of media files +---------------------- +Bad_Command_ diff --git a/mods/bones/depends.txt b/mods/bones/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/mods/bones/depends.txt @@ -0,0 +1 @@ +default diff --git a/mods/bones/init.lua b/mods/bones/init.lua new file mode 100644 index 0000000..3da5f14 --- /dev/null +++ b/mods/bones/init.lua @@ -0,0 +1,130 @@ +-- Minetest 0.4 mod: bones +-- See README.txt for licensing and other information. + +local function is_owner(pos, name) + local owner = minetest.env:get_meta(pos):get_string("owner") + if owner == "" or owner == name then + return true + end + return false +end + +minetest.register_node("bones:bones", { + description = "Bones", + tiles = { + "bones_top.png", + "bones_bottom.png", + "bones_side.png", + "bones_side.png", + "bones_rear.png", + "bones_front.png" + }, + paramtype2 = "facedir", + groups = {dig_immediate=2}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_gravel_footstep", gain=0.45}, + }), + + can_dig = function(pos, player) + local inv = minetest.env:get_meta(pos):get_inventory() + return is_owner(pos, player:get_player_name()) and inv:is_empty("main") + end, + + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + if is_owner(pos, player:get_player_name()) then + return count + end + return 0 + end, + + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + return 0 + end, + + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + if is_owner(pos, player:get_player_name()) then + return stack:get_count() + end + return 0 + end, + + on_metadata_inventory_take = function(pos, listname, index, stack, player) + local meta = minetest.env:get_meta(pos) + if meta:get_string("owner") ~= "" and meta:get_inventory():is_empty("main") then + meta:set_string("infotext", meta:get_string("owner").."'s old bones") + meta:set_string("formspec", "") + meta:set_string("owner", "") + end + end, + + on_timer = function(pos, elapsed) + local meta = minetest.env:get_meta(pos) + local time = meta:get_int("time")+elapsed + local publish = 1200 + if tonumber(minetest.setting_get("share_bones_time")) then + publish = tonumber(minetest.setting_get("share_bones_time")) + end + if publish == 0 then + return + end + if time >= publish then + meta:set_string("infotext", meta:get_string("owner").."'s old bones") + meta:set_string("owner", "") + else + return true + end + end, +}) + +minetest.register_on_dieplayer(function(player) + if minetest.setting_getbool("creative_mode") then + return + end + + local pos = player:getpos() + pos.x = math.floor(pos.x+0.5) + pos.y = math.floor(pos.y+0.5) + pos.z = math.floor(pos.z+0.5) + local param2 = minetest.dir_to_facedir(player:get_look_dir()) + + local nn = minetest.env:get_node(pos).name + if minetest.registered_nodes[nn].can_dig and + not minetest.registered_nodes[nn].can_dig(pos, player) then + local player_inv = player:get_inventory() + + for i=1,player_inv:get_size("main") do + player_inv:set_stack("main", i, nil) + end + for i=1,player_inv:get_size("craft") do + player_inv:set_stack("craft", i, nil) + end + return + end + + minetest.env:dig_node(pos) + minetest.env:add_node(pos, {name="bones:bones", param2=param2}) + + local meta = minetest.env:get_meta(pos) + local inv = meta:get_inventory() + local player_inv = player:get_inventory() + inv:set_size("main", 8*4) + + local empty_list = inv:get_list("main") + inv:set_list("main", player_inv:get_list("main")) + player_inv:set_list("main", empty_list) + + for i=1,player_inv:get_size("craft") do + inv:add_item("main", player_inv:get_stack("craft", i)) + player_inv:set_stack("craft", i, nil) + end + + meta:set_string("formspec", "size[8,9;]".. + "list[current_name;main;0,0;8,4;]".. + "list[current_player;main;0,5;8,4;]") + meta:set_string("infotext", player:get_player_name().."'s fresh bones") + meta:set_string("owner", player:get_player_name()) + meta:set_int("time", 0) + + local timer = minetest.env:get_node_timer(pos) + timer:start(10) +end) diff --git a/mods/bones/textures/bones_bottom.png b/mods/bones/textures/bones_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..5ed45d6415bb3be2fd2d9646a1ff29fd5f1d43d8 GIT binary patch literal 382 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFL7>k44ofy`glX=O&z`$AH z5n0T@z;^_M8K-LVNi#4ou$OrHy0YJ4lM&;yeA*>w&cMJZ;OXKRqH(@AXye2d1D=={ z&c=Lqm=-dfDtK{)HK2vNz-xsOM@I7j8cJ@3Vm zO*VUWYE4{t`SFE(Nk*NT*y~@@+iUMHKhCGOlmF}jeMgrwIe}O2{jRrqGH3a|b63Cr zpLQeCApPU}&o=wLO;ihI_w+A5b^MRs*_@}#&gAqQeEZ{zVvB&&TGOR03N06+W-Cpw jJ%8iipC9)g|79pXy6y7%iOg&a3=9mOu6{1-oD!Mk44ofy`glX=O&z`&N| z?e4+=20xv5*E29Ma29w(7BevL9RXp+soH$f3=9nHC7!;n?048?#5mOKZtQkpU|_WL zba4#PINutiJ?XFkPw1wnwvES_p1QU&*|sIF=)a)+f?;1%f1p4{gwzAc%?Dx@aNk=u z>*Sj=Tqh^pyZn6SjF}xBE2b=3b!N?~r6T=ciAL_=7|LZ(ovr2QR#N!tiuFVR6^U_u{S!Zd_nKz#g>PPtFB}x~Hq3%Q~loCID7ay`umC literal 0 HcmV?d00001 diff --git a/mods/bones/textures/bones_rear.png b/mods/bones/textures/bones_rear.png new file mode 100644 index 0000000000000000000000000000000000000000..7f270c496174b1da8faa94db0a42b359a44db02b GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFL7>k44ofy`glX=O&z`&N| z?e4+=20xv5*E29Ma29w(7BevL9RXp+soH$f3=9nHC7!;n?048?#JE(aKJTbuU|=-$ zba4#PIG-A{aUzo;&y~;fgBy>%YUn6nKDB_AYe$37I)?2Fj5uV3CdECFOcjq~uGz5Q z<7YmTO1x5BOIM}2 z{ptt^Jtp(3Y`3B1Tt7j@RaRO1b-14{?o&DUL&@vNjk!9DIpk44ofy`glX=O&z`$AH z5n0T@z;^_M8K-LVNi#4ou$OrHy0YJ4lM&;U%U=6^J_7@zo~Mgrh{pNUAjL_C4S4Q+ zySH$oLq%M|g>;d&XN-)MP4WU+FWM#8rg2rMt=S-dqS5zijQ@dTPwmRBMlLK24MAQ# zfi6isOGWxGsOlW+kWkK-d(^so=1j@gk$*P7|NZ(am*Sbve`@Tq*Vf)|7m(|3pUEiE zmKb|ofT=U)r%6NRtgN*RQQ4O1?#vR$1@lyDD!WTBoVH$nyTKb#@J_R%Lm0R;_roN#}UVKl9qcbqBA<|6?s_csAwv(X*Kh P3=9mOu6{1-oD!M<&PT41 literal 0 HcmV?d00001 diff --git a/mods/bones/textures/bones_top.png b/mods/bones/textures/bones_top.png new file mode 100644 index 0000000000000000000000000000000000000000..b8bac57f9908b68d4516d7b85bb0c15f0aa5324f GIT binary patch literal 410 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4kiW$h6xih%orFL7>k44ofy`glX=O&z`$AH z5n0T@z;^_M8K-LVNi#4ou$OrHy0YJ4lM&-HDvCID)TSVMA`t0Uk+3-hzXNXGz~b^Hb!FyY}AYwL&f| z3=HMw#)5{%<^25Xd5n!`Ncuk%5)?dX`8f4V`lsuKGQamtPyJb8vn|(K^KRbu%vlUR zmrM4>eXqU0ZLN;CT0GN&_rIqIHKa!V*tTx)DNx3?vD_WZcLYE@Br!0~|2>~ogSeRkeU(b;kK^PhZb)?c!@0Wd;Iv5@*(Q{Qms&&kc4##}@)NAK5D- z&n(>?e?zl8{`%Cron4`!q3wwox5XM(^*yfWI`GQ!7^B;d?UDc3-f^ydu3d5|mVtqR N!PC{xWt~$(699$Xt6%^C literal 0 HcmV?d00001