From 2e2f56122d11d94eb6fc5b67913e0bb58dfbfa52 Mon Sep 17 00:00:00 2001 From: epCode Date: Mon, 29 May 2023 21:59:35 -0700 Subject: [PATCH 01/13] Incorperate sheep eating animation. #3734 --- mods/ENTITIES/mcl_mobs/movement.lua | 3 +++ .../mobs_mc/models/mobs_mc_sheepfur.b3d | Bin 71995 -> 74299 bytes mods/ENTITIES/mobs_mc/sheep.lua | 4 +++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/movement.lua b/mods/ENTITIES/mcl_mobs/movement.lua index 377e25f6e..df86c8161 100644 --- a/mods/ENTITIES/mcl_mobs/movement.lua +++ b/mods/ENTITIES/mcl_mobs/movement.lua @@ -480,6 +480,7 @@ end -- find and replace what mob is looking for (grass, wheat etc.) function mob_class:replace_node(pos) + if not self.replace_rate or not self.replace_what or self.child == true @@ -519,6 +520,8 @@ function mob_class:replace_node(pos) if on_replace_return ~= false then if mobs_griefing then + self.state = "eat" + self:set_animation("eat") minetest.set_node(pos, newnode) end diff --git a/mods/ENTITIES/mobs_mc/models/mobs_mc_sheepfur.b3d b/mods/ENTITIES/mobs_mc/models/mobs_mc_sheepfur.b3d index 7ee15fb553a18a438c50e362d36910af7e77c356..31044fbafe375d57aa6b28a4ed025160742095b9 100644 GIT binary patch delta 10698 zcma)>eRND`9>*_Ky}c)rXZ_n+VAdw%D+ z&&+-9{62I1aOm+rhqg>k)>5>-TUt(U*5^>(sh-V4n^h0&71^)z7)8mOHGO7$PQkpz z3k&jpa}G|e?_MCW#IwM^Y{Fh0ay>pZ!)dO}@V^XeY!3!AxmJ~&zZ@4hEPT)Q5f zY1tI->>qEgD1My+PzXn%9JS!6B}c6|YRyp?M{PK2%TYUy!a4dGN9{R!fujx_b>yfM zM-d!ZIO@z%7mi-!s4GX^IO@((4~}|r)Qh7?j(T&{hoin6MR63(Q9q7iII?mS%Ta%h z25>Zxqd1NRaTL$dOB@a6Nae`Jk;ajoBL_!AIC`0*1dfJsl*rL591Y`WI7d#7bdHiZ zdX=MOjz(~l!ci(mBRP7Fqfs1<=4cE@V>uef(Rhy1IGVuGM2^xqn#55CN0}V`oTJw{ z`UOXmIhw*z7DvD2=nanEb7tNAGd;K1Ulk+Q`ud92Il4iK7yZHgmLvqf(As9Bt)j8%Mw4Xgfz` z9PQw!oTCpp+R4!_j&^fY!O=$?eaz9G02Jk~KGG(nq;~E1lT}eZ3Mt;N6qX%ZJ&tol!>GaT_Pz%l}O6aB$6@|iKGlYA}K?SNXpP6k}{Nt zqzoM*DMN)w%FrN^G8BlU4E-S~Lw!if&>oU9l!v4Y-61JMbx6w49Fj5=holU>At^&` zNXpO}k}{Nrqzs)QDMMvQ%Fq~+G8BfS41FOfLtRM9&=!(1l!c@WT_Gt$RY=Ov6p}I& zg`^BUAt^&mNXpO>fn@{FC6vVM0VizAA3q#6D0AL$MJd$1Uc+~tyKCr0`Fm^bmmiD% zZb_*Xjw1X)rKa>P8D9PAWGAxbwKK-h(+}=D@gTaU->A@1E2KqsuXy|5#178zsn-Is zr@vUPC*&j;ZcFsUn7IC%tb>`QN+a!%JveOdG7 zs;(MY`k@PB`b5v-Hok?>5-Rd+^(q48slJ@B1HWqgjYRE4eu%mE8eyp*FY)2uB z#H@JZ=8nQ1iCMoL?Gf-Dg-`MeyH-uGjJP@LOKnTxBpZa19}8HZ`4Fw$eOasg%S0Ot zlV8@=VVq^eJ2Nh8!!}N|K{5F;Umx~(!#OQY3v=|&zU}0W*-N7B%n&eVzn0qZG_o}%Y$Z{-PdQY$L7y!oqGnu`86G`+U=Qo zo6)!3mrLeqwF7Ud&{9WE-LWThJnd|8V7o7CZtl7}1%^KV-NWwVHy3J$QodCos&@Z) z!Jc%m%DFJ4D4=oPCrkA_c#t5F>*>|cDo#(8nhsDSMC8!PqV`62EN zxhu5jb@x=LtVMerc4bW$=O1cs`JM2+3-!cvh8}6}b7J$o723!S^(y3+o852~>h~XhaQNiIc4c@|!E^?O$Qr&w1#U8kurCW)8Eh8z^4VFV=}>{se0I1g3&9y|7RHli4dK~`1Epah z3n?0G7M4_&ZFv3z48qYpd;Ag)X z_1+OhO?S6_Q}rD{UawcjCC+6KwqxDVN0b9`H4iU^2OL)7Tn2+1dnV;@f^l`7vzzUx zyXk0Ek{SlH#<>hm*Rr^;z3xIM{b;+^0aVF)@&>e z6Oh(o)?Bc$G%Hz;s)+HJ^BOd^7&aT5TN^=H0!Jo~Qpc;);8f^=+--(7#mZfAc6lPLATo50+^2QomR6 ze?Y?7l*6%C*EwS(NBoeS1or|Xak=K0QK#Y`f@yepRL0e``1{i@kFf{$orw8%h1RQe vy^6mK{@d_UYA<;y<>v3L`Nx$NT29?P75^bLz3rZU*|qhX?W#AesoMH~=hgn+ delta 12014 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 I{l3@#52hfD3jhEB diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index c71fa9b54..b4fbda52c 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -101,17 +101,19 @@ mcl_mobs.register_mob("mobs_mc:sheep", { stand_start = 0, stand_end = 0, walk_start = 0, walk_end = 40, walk_speed = 30, run_start = 0, run_end = 40, run_speed = 40, + eat_start = 40, eat_end = 80, }, child_animations = { stand_start = 81, stand_end = 81, walk_start = 81, walk_end = 121, walk_speed = 45, run_start = 81, run_end = 121, run_speed = 60, + eat_start = 121, eat_start = 161, }, follow = { "mcl_farming:wheat_item" }, view_range = 12, -- Eat grass - replace_rate = 20, + replace_rate = 40, replace_what = { { "mcl_core:dirt_with_grass", "mcl_core:dirt", -1 }, { "mcl_flowers:tallgrass", "air", 0 }, From 1f5247df063211d48db704fbd0fa696764c04ce4 Mon Sep 17 00:00:00 2001 From: epCode Date: Tue, 30 May 2023 11:48:32 -0700 Subject: [PATCH 02/13] Make mobs slide less, and fix ageold jump dilema --- mods/ENTITIES/mcl_mobs/movement.lua | 6 ++++-- mods/ENTITIES/mcl_mobs/physics.lua | 10 +++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/movement.lua b/mods/ENTITIES/mcl_mobs/movement.lua index df86c8161..4e8ce3392 100644 --- a/mods/ENTITIES/mcl_mobs/movement.lua +++ b/mods/ENTITIES/mcl_mobs/movement.lua @@ -355,9 +355,11 @@ function mob_class:do_jump() jump_c_multiplier = v2/self.walk_velocity/2 end + local yaw_dir = minetest.yaw_to_dir(self.object:get_yaw()) + -- where is front - local dir_x = -math.sin(yaw) * (self.collisionbox[4] + 0.5)*jump_c_multiplier+0.6 - local dir_z = math.cos(yaw) * (self.collisionbox[4] + 0.5)*jump_c_multiplier+0.6 + local dir_x = -math.sin(yaw) * (self.collisionbox[4] + 0.5)*jump_c_multiplier+yaw_dir.x + local dir_z = math.cos(yaw) * (self.collisionbox[4] + 0.5)*jump_c_multiplier+yaw_dir.z -- what is in front of mob? nod = node_ok({ diff --git a/mods/ENTITIES/mcl_mobs/physics.lua b/mods/ENTITIES/mcl_mobs/physics.lua index 1fbe1e24d..e1b23d78a 100644 --- a/mods/ENTITIES/mcl_mobs/physics.lua +++ b/mods/ENTITIES/mcl_mobs/physics.lua @@ -184,7 +184,7 @@ function mob_class:collision() end function mob_class:check_death_and_slow_mob() - local d = 0.85 + local d = 0.7 local dying = self:check_dying() if dying then d = 0.92 end @@ -217,7 +217,7 @@ function mob_class:set_velocity(v) local vv = self.object:get_velocity() if vv and yaw then - self.acc = vector.new(((math.sin(yaw) * -v) + c_x) * .27, 0, ((math.cos(yaw) * v) + c_y) * .27) + self.acc = vector.new(((math.sin(yaw) * -v) + c_x) * .4, 0, ((math.cos(yaw) * v) + c_y) * .4) end end @@ -327,9 +327,9 @@ function mob_class:set_yaw(yaw, delay, dtime) end if math.deg(yaw) > 360 then - yaw=yaw%360 + yaw=math.rad(math.deg(yaw)%360) elseif math.deg(yaw) < 0 then - yaw=((360*5)-yaw)%360 + yaw=math.rad(((360*5)-math.deg(yaw))%360) end --calculate the shortest way to turn to find our target @@ -353,7 +353,7 @@ function mob_class:set_yaw(yaw, delay, dtime) ddtime = dtime end - if math.abs(target_shortest_path_nums) > 5 then + if math.abs(target_shortest_path_nums) > 10 then self.object:set_yaw(self.object:get_yaw()+(target_shortest_path*(3.6*ddtime))) if self.acc then self.acc=vector.rotate_around_axis(self.acc,vector.new(0,1,0), target_shortest_path*(3.6*ddtime)) From c049113f26f0747c55b0e8526f2970311ae2d204 Mon Sep 17 00:00:00 2001 From: epCode Date: Tue, 30 May 2023 12:03:13 -0700 Subject: [PATCH 03/13] Fix sheep sliding, make eating timed, fix animation repeat --- mods/ENTITIES/mcl_mobs/movement.lua | 13 ++++++++++++- mods/ENTITIES/mobs_mc/sheep.lua | 4 ++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/movement.lua b/mods/ENTITIES/mcl_mobs/movement.lua index 4e8ce3392..5909350ad 100644 --- a/mods/ENTITIES/mcl_mobs/movement.lua +++ b/mods/ENTITIES/mcl_mobs/movement.lua @@ -524,7 +524,18 @@ function mob_class:replace_node(pos) if mobs_griefing then self.state = "eat" self:set_animation("eat") - minetest.set_node(pos, newnode) + self:set_velocity(0) + minetest.after(0.5, function() + if self and self.object and not self.dead then + self.object:set_velocity(vector.new(0,0,0)) + minetest.set_node(pos, newnode) + end + end) + minetest.after(2.5, function() + if self and self.object and self.state == 'eat' and not self.dead then + self.state = "walk" + end + end) end end diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index b4fbda52c..f7d6e87f1 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -101,13 +101,13 @@ mcl_mobs.register_mob("mobs_mc:sheep", { stand_start = 0, stand_end = 0, walk_start = 0, walk_end = 40, walk_speed = 30, run_start = 0, run_end = 40, run_speed = 40, - eat_start = 40, eat_end = 80, + eat_start = 40, eat_end = 80, eat_loop = false, }, child_animations = { stand_start = 81, stand_end = 81, walk_start = 81, walk_end = 121, walk_speed = 45, run_start = 81, run_end = 121, run_speed = 60, - eat_start = 121, eat_start = 161, + eat_start = 121, eat_start = 161, eat_loop = false, }, follow = { "mcl_farming:wheat_item" }, view_range = 12, From 74e55ca3618864ce2710cf01d1ad87bf1831cf2a Mon Sep 17 00:00:00 2001 From: epCode Date: Tue, 30 May 2023 12:40:14 -0700 Subject: [PATCH 04/13] Fix eat replace timer for sheep --- mods/ENTITIES/mcl_mobs/movement.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/movement.lua b/mods/ENTITIES/mcl_mobs/movement.lua index 5909350ad..ebd0c4863 100644 --- a/mods/ENTITIES/mcl_mobs/movement.lua +++ b/mods/ENTITIES/mcl_mobs/movement.lua @@ -525,7 +525,7 @@ function mob_class:replace_node(pos) self.state = "eat" self:set_animation("eat") self:set_velocity(0) - minetest.after(0.5, function() + minetest.after(1.5, function() if self and self.object and not self.dead then self.object:set_velocity(vector.new(0,0,0)) minetest.set_node(pos, newnode) From 91d94800d7f4a7f0f0ce482e12e85a375845607c Mon Sep 17 00:00:00 2001 From: epCode Date: Tue, 30 May 2023 13:05:12 -0700 Subject: [PATCH 05/13] Adjust grass replace timer --- mods/ENTITIES/mcl_mobs/movement.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/movement.lua b/mods/ENTITIES/mcl_mobs/movement.lua index ebd0c4863..99b1fdf89 100644 --- a/mods/ENTITIES/mcl_mobs/movement.lua +++ b/mods/ENTITIES/mcl_mobs/movement.lua @@ -525,7 +525,7 @@ function mob_class:replace_node(pos) self.state = "eat" self:set_animation("eat") self:set_velocity(0) - minetest.after(1.5, function() + minetest.after(1.3, function() if self and self.object and not self.dead then self.object:set_velocity(vector.new(0,0,0)) minetest.set_node(pos, newnode) From 908ba9fba6400e08e61b11e183b3f5c31eaca59f Mon Sep 17 00:00:00 2001 From: epCode Date: Tue, 30 May 2023 19:54:24 -0700 Subject: [PATCH 06/13] Put on_replace call in correct place (wool regrow on grass to dirt) --- mods/ENTITIES/mcl_mobs/movement.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/movement.lua b/mods/ENTITIES/mcl_mobs/movement.lua index 99b1fdf89..c165bdf89 100644 --- a/mods/ENTITIES/mcl_mobs/movement.lua +++ b/mods/ENTITIES/mcl_mobs/movement.lua @@ -513,11 +513,8 @@ function mob_class:replace_node(pos) local oldnode = {name = what, param2 = node.param2} local newnode = {name = with, param2 = node.param2} - local on_replace_return + local on_replace_return = true - if self.on_replace then - on_replace_return = self.on_replace(self, pos, oldnode, newnode) - end if on_replace_return ~= false then @@ -529,6 +526,9 @@ function mob_class:replace_node(pos) if self and self.object and not self.dead then self.object:set_velocity(vector.new(0,0,0)) minetest.set_node(pos, newnode) + if self.on_replace then + on_replace_return = self.on_replace(self, pos, oldnode, newnode) + end end end) minetest.after(2.5, function() From 86cd5711ca462d30306b528cac1c2f4a5448d794 Mon Sep 17 00:00:00 2001 From: epCode Date: Sun, 4 Jun 2023 13:20:29 -0700 Subject: [PATCH 07/13] Rearange on replace code to be more general purpous --- mods/ENTITIES/mcl_mobs/init.lua | 3 +- mods/ENTITIES/mcl_mobs/movement.lua | 21 ++++--------- mods/ENTITIES/mobs_mc/sheep.lua | 48 +++++++++++++++++++---------- 3 files changed, 39 insertions(+), 33 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/init.lua b/mods/ENTITIES/mcl_mobs/init.lua index 6bd39b2cf..62100c627 100644 --- a/mods/ENTITIES/mcl_mobs/init.lua +++ b/mods/ENTITIES/mcl_mobs/init.lua @@ -217,6 +217,7 @@ function mcl_mobs.register_mob(name, def) replace_with = def.replace_with, replace_offset = def.replace_offset or 0, on_replace = def.on_replace, + replace_delay = def.replace_delay or 0, timer = 0, env_damage_timer = 0, tamed = false, @@ -490,7 +491,7 @@ function mcl_mobs.register_egg(mob, desc, background_color, overlay_color, addeg on_place = function(itemstack, placer, pointed_thing) local pos = pointed_thing.above - + -- am I clicking on something with existing on_rightclick function? local under = minetest.get_node(pointed_thing.under) local def = minetest.registered_nodes[under.name] diff --git a/mods/ENTITIES/mcl_mobs/movement.lua b/mods/ENTITIES/mcl_mobs/movement.lua index c165bdf89..7a89e010c 100644 --- a/mods/ENTITIES/mcl_mobs/movement.lua +++ b/mods/ENTITIES/mcl_mobs/movement.lua @@ -513,27 +513,18 @@ function mob_class:replace_node(pos) local oldnode = {name = what, param2 = node.param2} local newnode = {name = with, param2 = node.param2} - local on_replace_return = true + local on_replace_return = false + if self.on_replace then + on_replace_return = self.on_replace(self, pos, oldnode, newnode) + end if on_replace_return ~= false then if mobs_griefing then - self.state = "eat" - self:set_animation("eat") - self:set_velocity(0) - minetest.after(1.3, function() - if self and self.object and not self.dead then - self.object:set_velocity(vector.new(0,0,0)) + minetest.after(self.replace_delay, function() + if self and self.object and self.object:get_velocity() and self.health > 0 then minetest.set_node(pos, newnode) - if self.on_replace then - on_replace_return = self.on_replace(self, pos, oldnode, newnode) - end - end - end) - minetest.after(2.5, function() - if self and self.object and self.state == 'eat' and not self.dead then - self.state = "walk" end end) end diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index f7d6e87f1..fbebb2655 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -113,29 +113,43 @@ mcl_mobs.register_mob("mobs_mc:sheep", { view_range = 12, -- Eat grass - replace_rate = 40, + replace_rate = 1, + replace_delay = 1.3, replace_what = { { "mcl_core:dirt_with_grass", "mcl_core:dirt", -1 }, { "mcl_flowers:tallgrass", "air", 0 }, }, -- Properly regrow wool after eating grass on_replace = function(self, pos, oldnode, newnode) - if not self.color or not colors[self.color] then - self.color = "unicolor_white" - end - self.gotten = false - self.base_texture = sheep_texture(self.color) - self.object:set_properties({ textures = self.base_texture }) - self.drops = { - {name = "mcl_mobitems:mutton", - chance = 1, - min = 1, - max = 2,}, - {name = colors[self.color][1], - chance = 1, - min = 1, - max = 1,}, - } + self.state = "eat" + self:set_animation("eat") + self:set_velocity(0) + minetest.after(self.replace_delay, function() + self.object:set_velocity(vector.zero()) + if self and self.object and not self.object:get_velocity() and self.health > 0 then + if not self.color or not colors[self.color] then + self.color = "unicolor_white" + end + self.gotten = false + self.base_texture = sheep_texture(self.color) + self.object:set_properties({ textures = self.base_texture }) + self.drops = { + {name = "mcl_mobitems:mutton", + chance = 1, + min = 1, + max = 2,}, + {name = colors[self.color][1], + chance = 1, + min = 1, + max = 1,}, + } + end + end) + minetest.after(2.5, function() + if self and self.object and self.state == 'eat' and self.health > 0 and self.object:get_velocity() then + self.state = "walk" + end + end) end, -- Set random color on spawn From 92887f55012670918af4c98c073095fcb032f757 Mon Sep 17 00:00:00 2001 From: epCode Date: Sun, 4 Jun 2023 13:21:12 -0700 Subject: [PATCH 08/13] fix sheep replace rate --- mods/ENTITIES/mobs_mc/sheep.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index fbebb2655..6ea66923e 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -113,7 +113,7 @@ mcl_mobs.register_mob("mobs_mc:sheep", { view_range = 12, -- Eat grass - replace_rate = 1, + replace_rate = 80, replace_delay = 1.3, replace_what = { { "mcl_core:dirt_with_grass", "mcl_core:dirt", -1 }, From e53b6c124c423b1e83d78eef574769ae6d37e4a6 Mon Sep 17 00:00:00 2001 From: epCode Date: Sun, 4 Jun 2023 14:38:29 -0700 Subject: [PATCH 09/13] Make sheep always drop 1 wool (MC continuity) --- mods/ENTITIES/mobs_mc/sheep.lua | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index 6ea66923e..e64bc7c30 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -133,16 +133,6 @@ mcl_mobs.register_mob("mobs_mc:sheep", { self.gotten = false self.base_texture = sheep_texture(self.color) self.object:set_properties({ textures = self.base_texture }) - self.drops = { - {name = "mcl_mobitems:mutton", - chance = 1, - min = 1, - max = 2,}, - {name = colors[self.color][1], - chance = 1, - min = 1, - max = 1,}, - } end end) minetest.after(2.5, function() @@ -242,12 +232,6 @@ mcl_mobs.register_mob("mobs_mc:sheep", { item:add_wear(mobs_mc.shears_wear) clicker:get_inventory():set_stack("main", clicker:get_wield_index(), item) end - self.drops = { - {name = "mcl_mobitems:mutton", - chance = 1, - min = 1, - max = 2,}, - } return end -- Dye sheep From e49eac6d85f017022a770b790dc8ff5f6e8d727c Mon Sep 17 00:00:00 2001 From: epCode Date: Sun, 4 Jun 2023 16:24:37 -0700 Subject: [PATCH 10/13] Fix sheep not regrowing wool after eating --- mods/ENTITIES/mobs_mc/sheep.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index e64bc7c30..bc5026bd2 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -126,7 +126,7 @@ mcl_mobs.register_mob("mobs_mc:sheep", { self:set_velocity(0) minetest.after(self.replace_delay, function() self.object:set_velocity(vector.zero()) - if self and self.object and not self.object:get_velocity() and self.health > 0 then + if self and self.object and self.object:get_velocity() and self.health > 0 then if not self.color or not colors[self.color] then self.color = "unicolor_white" end From 5e4fa30aaea38fd45ade6b5a355f7377f382ba1a Mon Sep 17 00:00:00 2001 From: epCode Date: Sun, 4 Jun 2023 20:19:18 -0700 Subject: [PATCH 11/13] Punch node after change --- mods/ENTITIES/mcl_mobs/movement.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/movement.lua b/mods/ENTITIES/mcl_mobs/movement.lua index 7a89e010c..c5c7a6823 100644 --- a/mods/ENTITIES/mcl_mobs/movement.lua +++ b/mods/ENTITIES/mcl_mobs/movement.lua @@ -525,10 +525,10 @@ function mob_class:replace_node(pos) minetest.after(self.replace_delay, function() if self and self.object and self.object:get_velocity() and self.health > 0 then minetest.set_node(pos, newnode) + minetest.punch_node(pos) end end) end - end end end From df8592df41cc8c902aca128f9932863e0cb61f4b Mon Sep 17 00:00:00 2001 From: epCode Date: Sun, 4 Jun 2023 21:53:39 -0700 Subject: [PATCH 12/13] Revert add punch node --- mods/ENTITIES/mcl_mobs/movement.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/movement.lua b/mods/ENTITIES/mcl_mobs/movement.lua index c5c7a6823..317ac9f28 100644 --- a/mods/ENTITIES/mcl_mobs/movement.lua +++ b/mods/ENTITIES/mcl_mobs/movement.lua @@ -525,7 +525,6 @@ function mob_class:replace_node(pos) minetest.after(self.replace_delay, function() if self and self.object and self.object:get_velocity() and self.health > 0 then minetest.set_node(pos, newnode) - minetest.punch_node(pos) end end) end From cc5a0971ac18f90e01b27d343af0bb727c91cc28 Mon Sep 17 00:00:00 2001 From: ancientmarinerdev Date: Mon, 5 Jun 2023 15:03:45 +0100 Subject: [PATCH 13/13] Object reference check before setting velocity --- mods/ENTITIES/mobs_mc/sheep.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua index bc5026bd2..6c095fc9b 100644 --- a/mods/ENTITIES/mobs_mc/sheep.lua +++ b/mods/ENTITIES/mobs_mc/sheep.lua @@ -125,8 +125,8 @@ mcl_mobs.register_mob("mobs_mc:sheep", { self:set_animation("eat") self:set_velocity(0) minetest.after(self.replace_delay, function() - self.object:set_velocity(vector.zero()) if self and self.object and self.object:get_velocity() and self.health > 0 then + self.object:set_velocity(vector.zero()) if not self.color or not colors[self.color] then self.color = "unicolor_white" end