From 6730554c06f053ca3d30973cb2bac86118617ead Mon Sep 17 00:00:00 2001 From: seventeenthShulker Date: Sat, 15 Jun 2024 23:21:55 +0100 Subject: [PATCH] Remove unnecessary raycast from rover (and use the mcl_burning api where we can) --- mods/ENTITIES/mcl_mobs/physics.lua | 4 +-- mods/ENTITIES/mobs_mc/rover.lua | 40 +++++++----------------------- 2 files changed, 11 insertions(+), 33 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/physics.lua b/mods/ENTITIES/mcl_mobs/physics.lua index 0800074e6..a2ebed530 100644 --- a/mods/ENTITIES/mcl_mobs/physics.lua +++ b/mods/ENTITIES/mcl_mobs/physics.lua @@ -653,7 +653,7 @@ function mob_class:do_env_damage() local _, dim = mcl_worlds.y_to_layer(pos.y) if (self.sunlight_damage ~= 0 or self.ignited_by_sunlight) and (sunlight or 0) >= minetest.LIGHT_MAX and dim == "overworld" then if self.armor_list and not self.armor_list.helmet or not self.armor_list or self.armor_list and self.armor_list.helmet and self.armor_list.helmet == "" then - if (self.ignited_by_sunlight and (not mcl_weather.rain.raining or not mcl_weather.has_rain(pos))) then + if self.ignited_by_sunlight and (not mcl_weather.rain.raining or not mcl_weather.has_rain(pos)) then if (#mcl_burning.get_touching_nodes(self.object, "group:puts_out_fire", self) == 0) then mcl_burning.set_on_fire(self.object, 10) end @@ -695,7 +695,7 @@ function mob_class:do_env_damage() -- rain if self.rain_damage > 0 then - if mcl_weather.rain.raining and mcl_weather.is_outdoor(pos) then + if mcl_burning.is_affected_by_rain(self.object) then self.health = self.health - self.rain_damage if self:check_for_death("rain", {type = "environment", diff --git a/mods/ENTITIES/mobs_mc/rover.lua b/mods/ENTITIES/mobs_mc/rover.lua index 57f42559c..16522f277 100644 --- a/mods/ENTITIES/mobs_mc/rover.lua +++ b/mods/ENTITIES/mobs_mc/rover.lua @@ -156,37 +156,15 @@ mcl_mobs.register_mob("mobs_mc:rover", { -- RAIN DAMAGE / EVASIVE WARP BEHAVIOUR HERE. local enderpos = self.object:get_pos() local dim = mcl_worlds.pos_to_dimension(enderpos) - if dim == "overworld" then - if mcl_weather.rain.raining then - local damage = true - local enderpos = self.object:get_pos() - enderpos.y = enderpos.y+2.89 - local height = {x=enderpos.x, y=enderpos.y+512,z=enderpos.z} - local ray = minetest.raycast(enderpos, height, true) - -- Check for blocks above enderman. - for pointed_thing in ray do - if pointed_thing.type == "node" then - local nn = minetest.get_node(minetest.get_pointed_thing_position(pointed_thing)).name - local def = minetest.registered_nodes[nn] - if (not def) or def.walkable then - -- There's a node in the way. Delete arrow without damage - damage = false - break - end - end - end - - if damage == true then - self.state = "" - --rain hurts enderman - self.object:punch(self.object, 1.0, { - full_punch_interval=1.0, - damage_groups={fleshy=self._damage}, - }, nil) - --randomly teleport hopefully under something. - self:teleport(nil) - end - end + if dim == "overworld" and mcl_burning.is_affected_by_rain(self.object) then + self.state = "" + --rain hurts enderman + self.object:punch(self.object, 1.0, { + full_punch_interval=1.0, + damage_groups={fleshy=self._damage}, + }, nil) + --randomly teleport hopefully under something. + self:teleport(nil) end -- AGRESSIVELY WARP/CHASE PLAYER BEHAVIOUR HERE.