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: MineClone2/MineClone2#1648
This commit is contained in:
jordan4ibanez 2021-04-25 05:46:29 +00:00
commit 608958e17a
5 changed files with 43 additions and 5 deletions

View File

@ -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

View File

@ -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,13 +1114,19 @@ mobs.mob_step = function(self, dtime)
mobs.stick_in_cobweb(self) mobs.stick_in_cobweb(self)
self.was_stuck_in_cobweb = true
else else
--do not override other functions
if self.was_stuck_in_cobweb == true then
--return the mob back to normal --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 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)) self.object:set_acceleration(vector_new(0,-self.gravity,0))
end end
end end
end end
end
self.old_velocity = self.object:get_velocity() self.old_velocity = self.object:get_velocity()
self.old_pos = self.object:get_pos() self.old_pos = self.object:get_pos()

View File

@ -0,0 +1,8 @@
mobs.do_head_logic = function(self)
local yaw = self.object:get_yaw()
end

View File

@ -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 = {

View File

@ -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"}},