forked from VoxeLibre/VoxeLibre
[mobs_mc] Remove `goto` from enderman.lua
This commit is contained in:
parent
38d89edeb6
commit
d710539ff2
|
@ -346,29 +346,28 @@ mobs:register_mob("mobs_mc:enderman", {
|
||||||
--skip player if they have no data - log it
|
--skip player if they have no data - log it
|
||||||
if not player_eye_height then
|
if not player_eye_height then
|
||||||
minetest.log("error", "Enderman at location: ".. dump(enderpos).." has indexed a null player!")
|
minetest.log("error", "Enderman at location: ".. dump(enderpos).." has indexed a null player!")
|
||||||
goto continue
|
else
|
||||||
end
|
|
||||||
|
|
||||||
--calculate very quickly the exact location the player is looking
|
--calculate very quickly the exact location the player is looking
|
||||||
--within the distance between the two "heads" (player and enderman)
|
--within the distance between the two "heads" (player and enderman)
|
||||||
local look_pos = vector.new(player_pos.x, player_pos.y + player_eye_height, player_pos.z)
|
local look_pos = vector.new(player_pos.x, player_pos.y + player_eye_height, player_pos.z)
|
||||||
local look_pos_base = look_pos
|
local look_pos_base = look_pos
|
||||||
local ender_eye_pos = vector.new(enderpos.x, enderpos.y + 2.75, enderpos.z)
|
local ender_eye_pos = vector.new(enderpos.x, enderpos.y + 2.75, enderpos.z)
|
||||||
local eye_distance_from_player = vector.distance(ender_eye_pos, look_pos)
|
local eye_distance_from_player = vector.distance(ender_eye_pos, look_pos)
|
||||||
look_pos = vector.add(look_pos, vector.multiply(look_dir, eye_distance_from_player))
|
look_pos = vector.add(look_pos, vector.multiply(look_dir, eye_distance_from_player))
|
||||||
|
|
||||||
--if looking in general head position, turn hostile
|
--if looking in general head position, turn hostile
|
||||||
if minetest.line_of_sight(ender_eye_pos, look_pos_base) and vector.distance(look_pos, ender_eye_pos) <= 0.4 then
|
if minetest.line_of_sight(ender_eye_pos, look_pos_base) and vector.distance(look_pos, ender_eye_pos) <= 0.4 then
|
||||||
self.provoked = "staring"
|
self.provoked = "staring"
|
||||||
self.attack = minetest.get_player_by_name(obj:get_player_name())
|
self.attack = minetest.get_player_by_name(obj:get_player_name())
|
||||||
break
|
break
|
||||||
else -- I'm not sure what this part does, but I don't want to break anything - jordan4ibanez
|
else -- I'm not sure what this part does, but I don't want to break anything - jordan4ibanez
|
||||||
if self.provoked == "staring" then
|
if self.provoked == "staring" then
|
||||||
self.provoked = "broke_contact"
|
self.provoked = "broke_contact"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
::continue:: -- this is a sweep over statement, this can be used to continue even when errors occurred
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue