mirror of
https://git.minetest.land/MineClone2/MineClone2.git
synced 2024-12-26 03:07:32 +01:00
Add proper metatable to mobs
This commit is contained in:
parent
4d5104ff8f
commit
31ef791cfd
@ -26,6 +26,8 @@ local function mcl_log (message)
|
|||||||
mcl_util.mcl_log (message, "[Mobs]", true)
|
mcl_util.mcl_log (message, "[Mobs]", true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
local mob_class = {}
|
||||||
|
local mob_class_meta = {__index = mob_class}
|
||||||
|
|
||||||
local function shortest_term_of_yaw_rotatoin(self, rot_origin, rot_target, nums)
|
local function shortest_term_of_yaw_rotatoin(self, rot_origin, rot_target, nums)
|
||||||
|
|
||||||
@ -190,7 +192,7 @@ minetest.register_on_leaveplayer(function(player)
|
|||||||
active_particlespawners[pn] = nil
|
active_particlespawners[pn] = nil
|
||||||
end)
|
end)
|
||||||
|
|
||||||
----For Water Flowing:
|
-----For Water Flowing:
|
||||||
local enable_physics = function(object, luaentity, ignore_check)
|
local enable_physics = function(object, luaentity, ignore_check)
|
||||||
if luaentity.physical_state == false or ignore_check == true then
|
if luaentity.physical_state == false or ignore_check == true then
|
||||||
luaentity.physical_state = true
|
luaentity.physical_state = true
|
||||||
@ -215,7 +217,7 @@ local disable_physics = function(object, luaentity, ignore_check, reset_movement
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function player_in_active_range(self)
|
function mob_class:player_in_active_range()
|
||||||
for _,p in pairs(minetest.get_connected_players()) do
|
for _,p in pairs(minetest.get_connected_players()) do
|
||||||
if vector.distance(self.object:get_pos(),p:get_pos()) <= mob_active_range then return true end
|
if vector.distance(self.object:get_pos(),p:get_pos()) <= mob_active_range then return true end
|
||||||
-- slightly larger than the mc 32 since mobs spawn on that circle and easily stand still immediately right after spawning.
|
-- slightly larger than the mc 32 since mobs spawn on that circle and easily stand still immediately right after spawning.
|
||||||
@ -4341,7 +4343,7 @@ local mob_step = function(self, dtime)
|
|||||||
self.object:set_rotation(rot)
|
self.object:set_rotation(rot)
|
||||||
end
|
end
|
||||||
|
|
||||||
if not player_in_active_range(self) then
|
if not self:player_in_active_range() then
|
||||||
set_animation(self, "stand", true)
|
set_animation(self, "stand", true)
|
||||||
local node_under = node_ok(vector.offset(pos,0,-1,0)).name
|
local node_under = node_ok(vector.offset(pos,0,-1,0)).name
|
||||||
local acc = self.object:get_acceleration()
|
local acc = self.object:get_acceleration()
|
||||||
@ -4751,7 +4753,7 @@ if collisionbox[5] < 0.79 then
|
|||||||
collisionbox[5] = 0.79
|
collisionbox[5] = 0.79
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_entity(name, {
|
minetest.register_entity(name, setmetatable({
|
||||||
|
|
||||||
use_texture_alpha = def.use_texture_alpha,
|
use_texture_alpha = def.use_texture_alpha,
|
||||||
head_swivel = def.head_swivel or nil, -- bool to activate this function
|
head_swivel = def.head_swivel or nil, -- bool to activate this function
|
||||||
@ -4940,7 +4942,7 @@ minetest.register_entity(name, {
|
|||||||
harmed_by_heal = def.harmed_by_heal,
|
harmed_by_heal = def.harmed_by_heal,
|
||||||
|
|
||||||
on_lightning_strike = def.on_lightning_strike
|
on_lightning_strike = def.on_lightning_strike
|
||||||
})
|
},mob_class_meta))
|
||||||
|
|
||||||
if minetest.get_modpath("doc_identifier") ~= nil then
|
if minetest.get_modpath("doc_identifier") ~= nil then
|
||||||
doc.sub.identifier.register_object(name, "basics", "mobs")
|
doc.sub.identifier.register_object(name, "basics", "mobs")
|
||||||
|
Loading…
Reference in New Issue
Block a user