1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
-- Entities that test their callbacks
local message = function(msg)
minetest.log("action", msg)
minetest.chat_send_all(msg)
end
local get_object_name = function(obj)
local name = "<nil>"
if obj then
if obj:is_player() then
name = obj:get_player_name()
else
name = "<entity>"
end
end
return name
end
local spos = function(self)
return minetest.pos_to_string(vector.round(self.object:get_pos()))
end
-- Callback test entity (all callbacks except on_step)
minetest.register_entity("testentities:callback", {
initial_properties = {
visual = "upright_sprite",
textures = { "testentities_callback.png" },
},
on_activate = function(self, staticdata, dtime_s)
message("Callback entity: on_activate! pos="..spos(self).."; dtime_s="..dtime_s)
end,
on_deactivate = function(self, removal)
message("Callback entity: on_deactivate! pos="..spos(self) .. "; removal=" .. tostring(removal))
end,
on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir, damage)
local name = get_object_name(puncher)
message(
"Callback entity: on_punch! "..
"pos="..spos(self).."; puncher="..name.."; "..
"time_from_last_punch="..time_from_last_punch.."; "..
"tool_capabilities="..tostring(dump(tool_capabilities)).."; "..
"dir="..tostring(dump(dir)).."; damage="..damage)
end,
on_rightclick = function(self, clicker)
local name = get_object_name(clicker)
message("Callback entity: on_rightclick! pos="..spos(self).."; clicker="..name)
end,
on_death = function(self, killer)
local name = get_object_name(killer)
message("Callback entity: on_death! pos="..spos(self).."; killer="..name)
end,
on_attach_child = function(self, child)
local name = get_object_name(child)
message("Callback entity: on_attach_child! pos="..spos(self).."; child="..name)
end,
on_detach_child = function(self, child)
local name = get_object_name(child)
message("Callback entity: on_detach_child! pos="..spos(self).."; child="..name)
end,
on_detach = function(self, parent)
local name = get_object_name(parent)
message("Callback entity: on_detach! pos="..spos(self).."; parent="..name)
end,
get_staticdata = function(self)
message("Callback entity: get_staticdata! pos="..spos(self))
end,
})
-- Only test on_step callback
minetest.register_entity("testentities:callback_step", {
visual = "upright_sprite",
textures = { "testentities_callback_step.png" },
on_step = function(self, dtime)
message("on_step callback entity: on_step! pos="..spos(self).."; dtime="..dtime)
end,
})
|