From df364eed286fced64f3c4bff897fcfe91a9dd540 Mon Sep 17 00:00:00 2001 From: jordan4ibanez Date: Sun, 25 Apr 2021 01:45:35 -0400 Subject: [PATCH] Implement basics of head movement and fix walking mobs flying away after floating --- mods/ENTITIES/mcl_mobs/api/api.lua | 8 +++++- .../mcl_mobs/api/mob_functions/ai.lua | 25 ++++++++++++++++--- .../mcl_mobs/api/mob_functions/head_logic.lua | 8 ++++++ 3 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 mods/ENTITIES/mcl_mobs/api/mob_functions/head_logic.lua diff --git a/mods/ENTITIES/mcl_mobs/api/api.lua b/mods/ENTITIES/mcl_mobs/api/api.lua index ad2b9cb54..3b34ec58c 100644 --- a/mods/ENTITIES/mcl_mobs/api/api.lua +++ b/mods/ENTITIES/mcl_mobs/api/api.lua @@ -165,6 +165,7 @@ dofile(api_path .. "death_logic.lua") dofile(api_path .. "mob_effects.lua") dofile(api_path .. "projectile_handling.lua") dofile(api_path .. "breeding.lua") +dofile(api_path .. "head_logic.lua") mobs.spawning_mobs = {} @@ -362,9 +363,14 @@ function mobs:register_mob(name, def) ignores_cobwebs = def.ignores_cobwebs, breath = def.breath_max or 6, - --random_sound_timer = 0, random_sound_timer_min = 3, random_sound_timer_max = 10, + + + --head code variables + has_head = def.has_head or false, + head_bone = def.head_bone, + --end j4i stuff -- MCL2 extensions diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua index da15e8bb8..a1c5feb03 100644 --- a/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/ai.lua @@ -371,6 +371,8 @@ local land_state_execution = function(self,dtime) if float_now then mobs.float(self) + elseif self.object:get_acceleration().y == 0 then + self.object:set_acceleration(vector_new(0,-self.gravity,0)) end end @@ -817,6 +819,17 @@ mobs.mob_step = function(self, dtime) return false 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 --don't despawned tamed or bred mobs if not self.tamed and not self.bred then @@ -1101,10 +1114,16 @@ mobs.mob_step = function(self, dtime) mobs.stick_in_cobweb(self) + self.was_stuck_in_cobweb = true + else - --return the mob back to normal - 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)) + --do not override other functions + if self.was_stuck_in_cobweb == true then + --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 diff --git a/mods/ENTITIES/mcl_mobs/api/mob_functions/head_logic.lua b/mods/ENTITIES/mcl_mobs/api/mob_functions/head_logic.lua new file mode 100644 index 000000000..fe75a5b19 --- /dev/null +++ b/mods/ENTITIES/mcl_mobs/api/mob_functions/head_logic.lua @@ -0,0 +1,8 @@ +mobs.do_head_logic = function(self) + local yaw = self.object:get_yaw() + + + + + +end \ No newline at end of file