2 mobs.create_data_handling_functions = function(def,mob_register)
3 mob_register.get_staticdata = function(self)
4 return minetest.serialize({
8 hostile = self.hostile,
9 hostile_timer = self.hostile_timer,
10 death_animation_timer = self.death_animation_timer,
16 mob_register.on_activate = function(self, staticdata, dtime_s)
17 self.object:set_armor_groups({immortal = 1})
18 --self.object:set_velocity({x = math.random(-5,5), y = 5, z = math.random(-5,5)})
19 self.object:set_acceleration(def.gravity)
20 if string.sub(staticdata, 1, string.len("return")) == "return" then
21 local data = minetest.deserialize(staticdata)
22 if data and type(data) == "table" then
23 --self.range = data.range
25 self.hunger = data.hunger
26 self.hostile = data.hostile
27 self.hostile_timer = data.hostile_timer
28 self.death_animation_timer = data.death_animation_timer
34 self.object:set_animation({x=0,y=0}, 1, 0, true)
35 self.object:set_hp(self.hp)
36 self.direction = vector.new(math.random()*math.random(-1,1),0,math.random()*math.random(-1,1))
40 if def.has_head == true then
41 local head = minetest.add_entity(self.object:get_pos(), "mob:head"..def.mobname)
44 self.child:get_luaentity().parent = self.object
45 self.child:set_attach(self.object, "", self.head_mount, vector.new(0,0,0))
46 self.head_rotation = vector.new(0,0,0)
47 self.child:set_animation({x=90,y=90}, 15, 0, true)
51 self.object:set_armor_groups({immortal = 1})
52 --self.object:set_yaw(math.pi*math.random(-1,1)*math.random())
55 --this is the info on the mob
56 mob_register.debug_nametag = function(self,dtime)
57 --we're doing this to the child because the nametage breaks the
58 --animation on the mob's body
60 --we add in items we want to see in this list
61 local debug_items = {"hostile_timer","hostile"}
63 for _,item in pairs(debug_items) do
64 if self[item] ~= nil then
65 text = text..item..": "..tostring(self[item]).."\n"
68 self.child:set_nametag_attributes({