Skip to content

Instantly share code, notes, and snippets.

@celeron55
Created April 17, 2013 12:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save celeron55/5403852 to your computer and use it in GitHub Desktop.
Save celeron55/5403852 to your computer and use it in GitHub Desktop.
From d4225a4e3c01d0ca15359679c77b28008020817d Mon Sep 17 00:00:00 2001
From: "0gb.us" <0gb.us@0gb.us>
Date: Sat, 30 Mar 2013 15:46:54 -0700
Subject: [PATCH] Move bones and give_initial_stuff to common. Now they can be
used by custom games.
---
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
mods/give_initial_stuff/depends.txt | 2 +
mods/give_initial_stuff/init.lua | 12 ++++
10 files changed, 162 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
create mode 100644 mods/give_initial_stuff/depends.txt
create mode 100644 mods/give_initial_stuff/init.lua
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
zcmV-^0fGLBP)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM00001b5ch_0Itp)
z=>Px#32;bRa{vGi!~g&e!~vBn4jTXf00(qQO+^RX1{@X+IpvBGHvj+u5J^NqR4C7l
zQn8VQFbrJiLo*KC0-*xRaOl(pP=pI`N~kgjXoJ8rZsddYX_yc0UjYaqtyU{RL;wIV
zGgTFl=XuP`BdTg<OjA{;Dm|vY4Ig7Yi`U*eqqWwYGXOqgj3Pqd)*5jEtPXG-$9>;1
z#@>63QB}tnAp}(|rFb`p2&+khjOp{&FM12%TWbJ%@3mF{+qRL_925XhN=Yd#q{NKx
z7GpHCNr@_vq0{5gZy5nBd|lV|XNP^?r^gO1xev{tFF{1iY*E$T`+qv*oTt9d)%X9F
z*jX@V@$d6Ize_YFaUHymqsqtpF3oJ^rp#=N!R`3;A%qY@tu>_tAcW9bn<9`s&)C8I
c_}=6F0CUB*)31>O1^@s607*qoM6N<$f_T50EdT%j
literal 0
HcmV?d00001
diff --git a/mods/bones/textures/bones_front.png b/mods/bones/textures/bones_front.png
new file mode 100644
index 0000000000000000000000000000000000000000..60f6dd9242c148ade9c341ad337bba238b32a9b5
GIT binary patch
literal 441
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|*pj^6U4S$Y
z{B+)352QE?JR*x382FBWFymBhK53vJdx@v7EBhTb88HquyBoWKIv6cIT^vI+&bJ0>
zPdaSC6T0cCZR0Vfr>?C`wrz<k`Y$NIVA$8xA1II!A@x9V^MRNJ-1pYaI{D@d*U3ru
zE<c|+V`fLkiYbd$omsPLsYw5WPNPuO(AMXQ7Je)$L92d!t=qpnms`<BuD>+)dF8&i
z^@=UmUmrd5{Bz~)ZKbi!91Q$ta?&iHUyFKQ8#yiN_1m)IUzxLlyeyydJGeZnR9lo9
zDPWtBwbsz>hr03N|2ogttkPU6@%Y7sYqP@NytEZf)>+zf=FR7WdecuIe7W~=p5ZaZ
z=fV@GTx$H`(0FR&cRi&SFQ!zl-ulnOEhTMB`1JbR_2S0Lt+NhRcY0*M{aN$RvVYaK
zYc44cBKbe6&-|@p7jH>=Hktc*ZH(G{-K8y$XWis@=%u+swx|OLW=MWenpFHRr%g%c
fdAHoY4Xf&yZJuq^sO&vC7Zm88u6{1-oD!M<R#LsA
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!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|*pj^6U4S$Y
z{B+)352QE?JR*x382FBWFymBhK53vJdx@v7EBhTb88I%^sn0uVfToywx;TbtoKFqf
zIFZSa=gQ~#!HvgWHFOj(pIX4mwWC339mDnoMjSFilj0sori#Zg*KAnu@iU*vrmb-&
zcZ-FJ3JMmMGpyn|aQAad^dSZghP28fDxDRRRT=J|e_nihThOVmRk7E%ZY{Hr@zU%+
z?i~94_up-~uXjxgs;HdKa@l0-HJ2sd??o{S2&S<;DB78_U0!hIR-sq#wqDcues88s
zzdMu5lkP8D!<3#?KHK(PPEcu+4);Q!88vqQFSchb3F|psE%<Zksx-G>9RZ=oWPX+H
zHng1UC#bl}Dr>(E_tV9FD(8MEc^$biS7$NjoJ#hFtPK;il{BuK_`bVW{rrj3rvLAy
zpP%7-qiMNrRo}#?g3DJKiP=Sb-RpL@yyVo~%-~yZ-le6beYUx*Z@hZzzI$GK-5$@V
cuSsOsZ(Z>6<&K}L?}Gx|)78&qol`;+03Fe|y#N3J
literal 0
HcmV?d00001
diff --git a/mods/bones/textures/bones_side.png b/mods/bones/textures/bones_side.png
new file mode 100644
index 0000000000000000000000000000000000000000..57dd18fb59db55427824c024896e59297dafb4a3
GIT binary patch
literal 412
zcmV;N0b~A&P)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM00001b5ch_0Itp)
z=>Px#32;bRa{vGi!~g&e!~vBn4jTXf00(qQO+^RX1{@X*9&4@lp8x;>E=fc|R4C77
zQX!JVFbv%G-l4HTcwS)8XB39!0Ree}9}sHjhZqKy3V0^0uph{QP1Rgaz+*`(d9^Y`
z1OR|iN{mrNVvMB}kI*G7#)udrZyw@>r<s`<>skD>@B8cZ3L(t%{CqxZt$p8z5FU?*
znE@DvVO`e{0*PGtG=OQEYOMfTYdL2}0~p5<ZX|sk!)Y+(BhfB&mSq8ub7piHhSu7)
zZO5Ph-?`uK-;LRor<oD$EJ`Wx97(%GBEsO8j7RRj_5^t&M_#vWQ&j*5KVTfkS}Xf?
zUB@6>q?B;puDs1f^WB|U{9)|P&WLl(g+5MpyWLc^wWg}%rm8vTuIohPBbmL;*W?WS
zUzSp?DJ7yg-@2|ofU2r$N{M=?>ar}yWd1jOajwDFU;YJjfaa9v#m#8|0000<MNUMn
GLSTZ<N3M|o
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
zcmV;L0cHM)P)<h;3K|Lk000e1NJLTq000mG000mO0ssI2kdbIM00001b5ch_0Itp)
z=>Px#32;bRa{vGi!~g&e!~vBn4jTXf00(qQO+^RX1{@X+GIChRzW@LMEJ;K`R4C7l
zQoE6ZKn#8O3UCD)6p%Y2R6rSoPAP!EB~SpVLxq$;ux)I>3>hH}aKXcx8{f?N6zoSU
zy{CN=L<9f;cQ-Q;F*A1$53dX}Gng4q;Sv!M$vNX?%xCh~aUA=;mu2~QJhp91Dcx?j
zX_^2`({#OF_kG{Ctt?9>Ujm@-`;-!ZWm)*PuB)n=S=V*JR)~nIrj&lx@Y|}YIui&#
zjw7*$VE|Cqbp-K~0J^Sg+qPgyjQHECs&aQw$54rD&N=5yx!z<fxXttYk)dgt^F)S_
z+}+7QXEZ@X+`TZfWm*2iaKGPAeWTWBb}$e=7|g7Q`}6ty*as0o=ny>d2YFe{rMq9)
zDR*DjmEDPoRaI4oVQAYHfU1t;c#6R4ImQ7-__ta92JQ*1=PPv5T>t<807*qoM6N<$
Ef`#3yU;qFB
literal 0
HcmV?d00001
diff --git a/mods/give_initial_stuff/depends.txt b/mods/give_initial_stuff/depends.txt
new file mode 100644
index 0000000..3a7daa1
--- /dev/null
+++ b/mods/give_initial_stuff/depends.txt
@@ -0,0 +1,2 @@
+default
+
diff --git a/mods/give_initial_stuff/init.lua b/mods/give_initial_stuff/init.lua
new file mode 100644
index 0000000..9cf6b51
--- /dev/null
+++ b/mods/give_initial_stuff/init.lua
@@ -0,0 +1,12 @@
+minetest.register_on_newplayer(function(player)
+ print("on_newplayer")
+ if minetest.setting_getbool("give_initial_stuff") then
+ print("giving give_initial_stuff to player")
+ player:get_inventory():add_item('main', 'default:pick_steel')
+ player:get_inventory():add_item('main', 'default:torch 99')
+ player:get_inventory():add_item('main', 'default:axe_steel')
+ player:get_inventory():add_item('main', 'default:shovel_steel')
+ player:get_inventory():add_item('main', 'default:cobble 99')
+ end
+end)
+
--
1.8.1.5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment