1 -- Hurt players hit by an anvil
3 local falling_node
= minetest
.registered_entities
["__builtin:falling_node"]
4 local on_step_old
= falling_node
.on_step
5 local on_step_add
= function(self
, dtime
)
6 if minetest
.get_item_group(self
.node
.name
, "anvil") == 0 then
10 local pos
= self
.object
:getpos()
11 if not self
._startpos
then
14 local objs
= minetest
.get_objects_inside_radius(pos
, 1)
15 for _
,v
in ipairs(objs
) do
17 if v
:is_player() and hp
~= 0 then
18 if not self
.hit_players
then
21 local name
= v
:get_player_name()
23 for _
,v
in ipairs(self
.hit_players
) do
29 table.insert(self
.hit_players
, name
)
30 local way
= self
._startpos
.y
- pos
.y
31 local damage
= (way
- 1) * 2
32 damage
= math
.min(40, math
.max(0, damage
))
39 mcl_death_messages
.player_damage(v
, string.format("%s was smashed by a falling anvil.", v
:get_player_name()))
40 mcl_hunger
.exhaust(v
:get_player_name(), mcl_hunger
.EXHAUST_DAMAGE
)
51 local pos
= self
.object
:getpos()
52 local pos
= {x
= pos
.x
, y
= pos
.y
+ 0.3, z
= pos
.z
}
53 if minetest
.registered_nodes
[self
.node
.name
] then
54 minetest
.add_node(pos
, self
.node
)
57 core
.check_for_falling(pos
)
60 local on_step_table
= {on_step_old
, on_step_add
}
61 local on_step_new
= table.copy(on_step_table
)
62 falling_node
.on_step
= function(self
, dtime
)
63 for _
,v
in ipairs(on_step_new
) do