Merge pull request 'Fix mob drowning for parrots, fix client side guessing causing mobs to appear to drop when stuck floating under nodes' (#1648) from jordan4ibanez/MineClone2:mineclone5 into mineclone5
Reviewed-on: https://git.minetest.land/MineClone2/MineClone2/pulls/1648mineclone5
commit
608958e17a
|
@ -165,6 +165,7 @@ dofile(api_path .. "death_logic.lua")
|
||||||
dofile(api_path .. "mob_effects.lua")
|
dofile(api_path .. "mob_effects.lua")
|
||||||
dofile(api_path .. "projectile_handling.lua")
|
dofile(api_path .. "projectile_handling.lua")
|
||||||
dofile(api_path .. "breeding.lua")
|
dofile(api_path .. "breeding.lua")
|
||||||
|
dofile(api_path .. "head_logic.lua")
|
||||||
|
|
||||||
|
|
||||||
mobs.spawning_mobs = {}
|
mobs.spawning_mobs = {}
|
||||||
|
@ -362,9 +363,14 @@ function mobs:register_mob(name, def)
|
||||||
ignores_cobwebs = def.ignores_cobwebs,
|
ignores_cobwebs = def.ignores_cobwebs,
|
||||||
breath = def.breath_max or 6,
|
breath = def.breath_max or 6,
|
||||||
|
|
||||||
--random_sound_timer = 0,
|
|
||||||
random_sound_timer_min = 3,
|
random_sound_timer_min = 3,
|
||||||
random_sound_timer_max = 10,
|
random_sound_timer_max = 10,
|
||||||
|
|
||||||
|
|
||||||
|
--head code variables
|
||||||
|
has_head = def.has_head or false,
|
||||||
|
head_bone = def.head_bone,
|
||||||
|
|
||||||
--end j4i stuff
|
--end j4i stuff
|
||||||
|
|
||||||
-- MCL2 extensions
|
-- MCL2 extensions
|
||||||
|
|
|
@ -371,6 +371,8 @@ local land_state_execution = function(self,dtime)
|
||||||
|
|
||||||
if float_now then
|
if float_now then
|
||||||
mobs.float(self)
|
mobs.float(self)
|
||||||
|
elseif self.object:get_acceleration().y == 0 then
|
||||||
|
self.object:set_acceleration(vector_new(0,-self.gravity,0))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -817,6 +819,17 @@ mobs.mob_step = function(self, dtime)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--DEBUG TIME!
|
||||||
|
|
||||||
|
mobs.do_head_logic(self)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--if true then--DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG
|
||||||
|
-- return
|
||||||
|
--end
|
||||||
|
|
||||||
--despawn mechanism
|
--despawn mechanism
|
||||||
--don't despawned tamed or bred mobs
|
--don't despawned tamed or bred mobs
|
||||||
if not self.tamed and not self.bred then
|
if not self.tamed and not self.bred then
|
||||||
|
@ -1101,10 +1114,16 @@ mobs.mob_step = function(self, dtime)
|
||||||
|
|
||||||
mobs.stick_in_cobweb(self)
|
mobs.stick_in_cobweb(self)
|
||||||
|
|
||||||
|
self.was_stuck_in_cobweb = true
|
||||||
|
|
||||||
else
|
else
|
||||||
--return the mob back to normal
|
--do not override other functions
|
||||||
if self.object:get_acceleration().y == 0 and not self.swim and not self.fly then
|
if self.was_stuck_in_cobweb == true then
|
||||||
self.object:set_acceleration(vector_new(0,-self.gravity,0))
|
--return the mob back to normal
|
||||||
|
self.was_stuck_in_cobweb = nil
|
||||||
|
if self.object:get_acceleration().y == 0 and not self.swim and not self.fly then
|
||||||
|
self.object:set_acceleration(vector_new(0,-self.gravity,0))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
mobs.do_head_logic = function(self)
|
||||||
|
local yaw = self.object:get_yaw()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
end
|
|
@ -38,6 +38,10 @@ end
|
||||||
--this is a generic float function
|
--this is a generic float function
|
||||||
mobs.float = function(self)
|
mobs.float = function(self)
|
||||||
|
|
||||||
|
if self.object:get_acceleration().y ~= 0 then
|
||||||
|
self.object:set_acceleration(vector_new(0,0,0))
|
||||||
|
end
|
||||||
|
|
||||||
local current_velocity = self.object:get_velocity()
|
local current_velocity = self.object:get_velocity()
|
||||||
|
|
||||||
local goal_velocity = {
|
local goal_velocity = {
|
||||||
|
|
|
@ -20,7 +20,8 @@ mobs:register_mob("mobs_mc:parrot", {
|
||||||
xp_min = 1,
|
xp_min = 1,
|
||||||
xp_max = 3,
|
xp_max = 3,
|
||||||
tilt_fly = true,
|
tilt_fly = true,
|
||||||
collisionbox = {-0.25, -0.01, -0.25, 0.25, 0.89, 0.25},
|
collisionbox = {-0.25, 0, -0.25, 0.25, 0.9, 0.25},
|
||||||
|
eye_height = 0.45,
|
||||||
visual = "mesh",
|
visual = "mesh",
|
||||||
mesh = "mobs_mc_parrot.b3d",
|
mesh = "mobs_mc_parrot.b3d",
|
||||||
textures = {{"mobs_mc_parrot_blue.png"},{"mobs_mc_parrot_green.png"},{"mobs_mc_parrot_grey.png"},{"mobs_mc_parrot_red_blue.png"},{"mobs_mc_parrot_yellow_blue.png"}},
|
textures = {{"mobs_mc_parrot_blue.png"},{"mobs_mc_parrot_green.png"},{"mobs_mc_parrot_grey.png"},{"mobs_mc_parrot_red_blue.png"},{"mobs_mc_parrot_yellow_blue.png"}},
|
||||||
|
|
Loading…
Reference in New Issue