3 running - set fov set_fov(fov, is_multiplier) set_breath(value)
4 sneaking --set eye offset
9 minetest.register_on_joinplayer(function(player)
11 player:hud_set_flags({minimap=true})
13 hud_elem_type = "text",
15 text = "Crafter Alpha "..crafter_version,
17 alignment = {x=1,y=1},
21 hud_elem_type = "text",
23 text = "Crafter Alpha "..crafter_version,
25 alignment = {x=1,y=1},
31 minetest.register_on_player_hpchange(function(player, hp_change, reason)
33 minetest.sound_play("hurt", {object=player, gain = 1.0, max_hear_distance = 60,pitch = math.random(80,100)/100})
37 --throw all items on death
38 minetest.register_on_dieplayer(function(player, reason)
39 local pos = player:getpos()
41 local inv = player:get_inventory()
43 for i = 1,inv:get_size("main") do
44 local stack = inv:get_stack("main", i)
45 local name = stack:get_name()
46 local count = stack:get_count()
49 local obj = minetest.add_item(pos, name.." "..count)
50 obj:setvelocity(vector.new(math.random(-3,3),math.random(4,8),math.random(-3,3)))
51 inv:set_stack("main", i, ItemStack(""))
54 for i = 1,inv:get_size("craft") do
61 minetest.register_globalstep(function(dtime)
63 for _,player in ipairs(minetest.get_connected_players()) do
64 local run = player:get_player_control().aux1
65 local walk = player:get_player_control().up
66 local sneak = player:get_player_control().sneak
68 if run and walk and not sneak then
69 --[[ I'll impliment this in later
70 local meta = player:get_meta()
72 local run_time = meta:get_float("running_timer")
78 if run_time >= 0.1 then
80 local breath = player:get_breath()
82 player:set_breath(breath)
87 meta:set_float("running_timer", run_time + dtime)
91 local fov = player:get_fov()
97 player:set_fov(fov + 0.05, true)
100 player:set_physics_override({speed=1.5})
102 local meta = player:get_meta()
103 local fov = player:get_fov()
105 player:set_fov(fov - 0.05, true)
108 player:set_physics_override({speed=1})
109 --meta:set_float("running_timer", 0)
113 player:set_eye_offset({x=0,y=-1,z=0},{x=0,y=-1,z=0})
115 player:set_eye_offset({x=0,y=0,z=0},{x=0,y=0,z=0})
120 minetest.register_globalstep(function(dtime)
122 for _,player in ipairs(minetest.get_connected_players()) do
123 if player:get_player_control().RMB then
124 local health = player:get_wielded_item():get_definition().health
126 local meta = player:get_meta()
127 local eating = meta:get_float("eating")
129 if meta:get_int("eating_ps") == 0 then
130 local ps = minetest.add_particlespawner({
133 minpos = {x=0, y=-1.5, z=0.5},
134 maxpos = {x=0, y=1.7, z=0.5},
135 minvel = vector.new(-0.5,0,-0.5),
136 maxvel = vector.new(0.5,0,0.5),
137 minacc = {x=0, y=-9.81, z=1},
138 maxacc = {x=0, y=-9.81, z=1},
144 collisiondetection = true,
146 texture = "treecapitator.png"
148 meta:set_int("eating_ps", ps)
151 if eating + dtime >= 2 then
152 local stack = player:get_wielded_item()
154 player:set_wielded_item(stack)
155 player:set_hp(player:get_hp() + health)
157 minetest.sound_play("eat", {
159 gain = 1.0, -- default
160 max_hear_distance = 32, -- default, uses an euclidean metric
161 pitch = math.random(70,100)/100,
164 meta:set_float("eating", eating + dtime)
166 local meta = player:get_meta()
167 meta:set_float("eating", 0)
168 minetest.delete_particlespawner(meta:get_int("eating_ps"))
169 meta:set_int("eating_ps", 0)
173 local meta = player:get_meta()
174 meta:set_float("eating", 0)
175 minetest.delete_particlespawner(meta:get_int("eating_ps"))
176 meta:set_int("eating_ps", 0)
183 local inv = "size[9,8.75]"..
184 --"image[1,0.6;1,2;player.png]"..
185 "list[current_player;main;0,4.5;9,1;]".. --hot bar
186 "list[current_player;main;0,6;9,3;9]".. --big part
187 "list[current_player;craft;2.5,1;2,2;]"..
188 "list[current_player;craftpreview;6.1,1.5;1,1;]"..
189 "listring[current_player;main]"..
190 "listring[current_player;craft]"
194 minetest.register_on_joinplayer(function(player)
195 player:set_inventory_formspec(inv)
196 local inv = player:get_inventory()
197 inv:set_width("craft", 2)
198 inv:set_width("main", 9)
199 inv:set_size("main", 9*4)
200 inv:set_size("craft", 4)
201 player:hud_set_hotbar_itemcount(9)
204 --this dumps the players crafting table on closing the inventory
205 local dump_craft = function(player)
206 local inv = player:get_inventory()
207 local pos = player:getpos()
208 pos.y = pos.y + player:get_properties().eye_height
209 for i = 1,inv:get_size("craft") do
210 local item = inv:get_stack("craft", i)
211 local obj = minetest.add_item(pos, item)
213 local x=math.random(-2,2)*math.random()
214 local y=math.random(2,5)
215 local z=math.random(-2,2)*math.random()
216 obj:setvelocity({x=x, y=y, z=z})
218 inv:set_stack("craft", i, nil)
223 minetest.register_on_player_receive_fields(function(player, formname, fields)
224 local inv = player:get_inventory()
226 inv:set_width("craft", 2)
227 inv:set_size("craft", 4)
230 minetest.register_on_player_inventory_action(function(player, action, inventory, inventory_info)