Skip to content

Commit 3a66561

Browse files
committed
Incorrect head height fix.
1 parent b281d3b commit 3a66561

File tree

1 file changed

+33
-30
lines changed

1 file changed

+33
-30
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,49 @@
11
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
22
From: ptbnate <[email protected]>
3-
Date: Tue, 4 Feb 2025 14:24:54 +0500
3+
Date: Tue, 11 Feb 2025 10:41:32 +0500
44
Subject: [PATCH] Fix entities going out of sight
55

66

77
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
8-
index 32752dfad24bc7883b1ab52e29834f1aa6fa60c6..8dc930dc17aa235e0147b2a5a3043b049d3e404b 100644
8+
index 32752dfad24bc7883b1ab52e29834f1aa6fa60c6..38f52e1652d269fb35877f700e7d26422ec69dd0 100644
99
--- a/src/main/java/net/minecraft/server/EntityLiving.java
1010
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
11-
@@ -1798,7 +1798,34 @@ public abstract class EntityLiving extends Entity {
11+
@@ -1798,7 +1798,10 @@ public abstract class EntityLiving extends Entity {
1212
}
1313

1414
public boolean hasLineOfSight(Entity entity) {
1515
- return this.world.rayTrace(new Vec3D(this.locX, this.locY + (double) this.getHeadHeight(), this.locZ), new Vec3D(entity.locX, entity.locY + (double) entity.getHeadHeight(), entity.locZ)) == null;
16-
+ // PandaSpigot start - Fix issue with entities going out of sight
17-
+ Vec3D vec = new Vec3D(this.locX, this.locY + (double) this.getHeadHeight(), this.locZ);
18-
+
19-
+ if (entity instanceof EntityPlayer) {
20-
+ // Head height is 1,5725
21-
+ // Split it into three to get a more accurate line of sight -> 0.52416667
22-
+
23-
+ double parts = entity.getHeadHeight() / 3;
24-
+
25-
+ Vec3D vec3 = new Vec3D(entity.locX, entity.locY, entity.locZ);
26-
+
27-
+ return this.world.rayTrace(
28-
+ vec,
29-
+ vec3.add(0.0D, (parts * 3), 0.0D)
30-
+ ) == null || this.world.rayTrace(
31-
+ vec,
32-
+ vec3.add(0.0D, (parts * 2), 0.0D)
33-
+ ) == null || this.world.rayTrace(
34-
+ vec,
35-
+ vec3.add(0.0D, (parts * 1), 0.0D)
36-
+ ) == null;
37-
+ } else {
38-
+ return this.world.rayTrace(
39-
+ vec,
40-
+ new Vec3D(entity.locX, entity.locY + (double) this.getHeadHeight(), entity.locZ)
41-
+ ) == null;
42-
+ }
16+
+ // PandaSpigot start
17+
+ final Vec3D vec = new Vec3D(this.locX, this.locY + (double) this.getHeadHeight(), this.locZ);
18+
+ return this.world.rayTrace(vec, new Vec3D(entity.locX, entity.locY + (double) this.getHeadHeight(), entity.locZ)) == null;
4319
+ // PandaSpigot end
4420
}
4521

4622
public Vec3D ap() {
23+
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
24+
index b4f301a3eb660b9bf080c4f6b4e3bbaa3678a8d6..bcad57da69089f07e161df85ebe6b590c869a03c 100644
25+
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
26+
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
27+
@@ -296,6 +296,22 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
28+
29+
}
30+
31+
+ // PandaSpigot start - Fix players going out of sight
32+
+ @Override
33+
+ public boolean hasLineOfSight(Entity entity) {
34+
+ final Vec3D vec = new Vec3D(this.locX, this.locY + (double) this.getHeadHeight(), this.locZ);
35+
+ final double entityHeadHeight = entity.getHeadHeight();
36+
+
37+
+ for (int i = 1; i <= 3; i++) {
38+
+ double targetY = entity.locY + (entityHeadHeight / 3) * i;
39+
+ if (this.world.rayTrace(vec, new Vec3D(entity.locX, targetY, entity.locZ)) == null) {
40+
+ return true;
41+
+ }
42+
+ }
43+
+ return false;
44+
+ }
45+
+ // PandaSpigot end
46+
+
47+
public void l() {
48+
try {
49+
super.t_();

0 commit comments

Comments
 (0)