From aac1e1933677d119b52c25a64b3ee6c77e16e770 Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Thu, 22 Apr 2021 23:18:33 -0400 Subject: [PATCH] Implement rotation locking when standing, fix rotation unlock/lock for fly/swim mobs --- mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua | 15 +++++++++++++++ .../mcl_mobs/api/mob_functions/animation.lua | 14 ++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua index 3a0dda1171..d6d51b8deb 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua @@ -102,6 +102,8 @@ local land_state_execution = function(self,dtime) mobs.reverse_explosion_animation(self,dtime) end + mobs.lock_yaw(self) + elseif self.state == "walk" then self.walk_timer = self.walk_timer - dtime @@ -275,6 +277,8 @@ local swim_state_execution = function(self,dtime) mobs.set_static_pitch(self) end + mobs.lock_yaw(self) + elseif self.state == "swim" then self.walk_timer = self.walk_timer - dtime @@ -307,6 +311,9 @@ local swim_state_execution = function(self,dtime) if self.tilt_swim then mobs.set_dynamic_pitch(self) end + + --enable rotation locking + mobs.movement_rotation_lock(self) end --flop around if not inside swim node else @@ -415,6 +422,8 @@ local fly_state_execution = function(self,dtime) mobs.set_static_pitch(self) end + mobs.lock_yaw(self) + elseif self.state == "fly" then self.walk_timer = self.walk_timer - dtime @@ -446,6 +455,10 @@ local fly_state_execution = function(self,dtime) end mobs.set_fly_velocity(self,self.walk_velocity) + + --enable rotation locking + mobs.movement_rotation_lock(self) + elseif self.state == "attack" then --execute mob attack type @@ -544,6 +557,8 @@ local jump_state_execution = function(self,dtime) --set the velocity of the mob mobs.set_velocity(self,0) + mobs.lock_yaw(self) + elseif self.state == "jump" then self.walk_timer = self.walk_timer - dtime diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/animation.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/animation.lua index 00a33e9573..71008c97c0 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/animation.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/animation.lua @@ -136,6 +136,20 @@ mobs.set_yaw_while_attacking = function(self) self.yaw = new_yaw end +--this is used to unlock a mob's yaw after attacking +mobs.unlock_yaw = function(self) + if self.object:get_properties().automatic_face_movement_dir == false then + self.object:set_properties{automatic_face_movement_dir = self.rotate} + end +end + +--this is used to lock a mob's yaw when they're standing +mobs.lock_yaw = function(self) + if self.object:get_properties().automatic_face_movement_dir then + self.object:set_properties{automatic_face_movement_dir = false} + end +end + local calculate_pitch = function(self) local pos = self.object:get_pos()