geforkt von Mirrors/Paper
70ce6ce831
This makes it easier for downstream projects (forks) to replace the version fetching system with their own. It is as simple as implementing an interface and overriding the default implementation of org.bukkit.UnsafeValues#getVersionFetcher() It also makes it easier for us to organize things like the version history feature. Lastly I have updated the paper implementation to check against the site API rather than against jenkins.
97 Zeilen
4.3 KiB
Diff
97 Zeilen
4.3 KiB
Diff
From aa0a77d89b5675a2c87c70e049f44ca6ef1c2933 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Mon, 28 Mar 2016 21:22:26 -0400
|
|
Subject: [PATCH] EntityPathfindEvent
|
|
|
|
Fires when an Entity decides to start moving to a location.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/Navigation.java b/src/main/java/net/minecraft/server/Navigation.java
|
|
index aacaecd82..bc30e3f33 100644
|
|
--- a/src/main/java/net/minecraft/server/Navigation.java
|
|
+++ b/src/main/java/net/minecraft/server/Navigation.java
|
|
@@ -60,7 +60,7 @@ public class Navigation extends NavigationAbstract {
|
|
|
|
@Override
|
|
public PathEntity a(Entity entity) {
|
|
- return this.b(new BlockPosition(entity));
|
|
+ return this.b(new BlockPosition(entity), entity); // Paper - Forward target entity
|
|
}
|
|
|
|
private int s() {
|
|
diff --git a/src/main/java/net/minecraft/server/NavigationAbstract.java b/src/main/java/net/minecraft/server/NavigationAbstract.java
|
|
index 75e01c242..d04eb1bbf 100644
|
|
--- a/src/main/java/net/minecraft/server/NavigationAbstract.java
|
|
+++ b/src/main/java/net/minecraft/server/NavigationAbstract.java
|
|
@@ -4,7 +4,7 @@ import javax.annotation.Nullable;
|
|
|
|
public abstract class NavigationAbstract {
|
|
|
|
- protected final EntityInsentient a;
|
|
+ protected final EntityInsentient a; public Entity getEntity() { return a; } // Paper - OBFHELPER
|
|
protected final World b;
|
|
@Nullable
|
|
protected PathEntity c;
|
|
@@ -71,13 +71,15 @@ public abstract class NavigationAbstract {
|
|
return this.b(new BlockPosition(d0, d1, d2));
|
|
}
|
|
|
|
- @Nullable
|
|
- public PathEntity b(BlockPosition blockposition) {
|
|
+ // Paper start - Add target entity parameter for path find event
|
|
+ @Nullable public PathEntity b(BlockPosition blockposition) { return this.b(blockposition, null); }
|
|
+ @Nullable public PathEntity b(BlockPosition blockposition, Entity target) {
|
|
+ // Paper end
|
|
float f = (float) blockposition.getX() + 0.5F;
|
|
float f1 = (float) blockposition.getY() + 0.5F;
|
|
float f2 = (float) blockposition.getZ() + 0.5F;
|
|
|
|
- return this.a(blockposition, (double) f, (double) f1, (double) f2, 8, false);
|
|
+ return this.a(blockposition, target, (double) f, (double) f1, (double) f2, 8, false); // Paper - Path find event
|
|
}
|
|
|
|
@Nullable
|
|
@@ -87,11 +89,12 @@ public abstract class NavigationAbstract {
|
|
double d1 = entity.getBoundingBox().minY;
|
|
double d2 = entity.locZ;
|
|
|
|
- return this.a(blockposition, d0, d1, d2, 16, true);
|
|
+ return this.a(blockposition, entity, d0, d1, d2, 16, true); // Paper - Path find event
|
|
}
|
|
|
|
@Nullable
|
|
- protected PathEntity a(BlockPosition blockposition, double d0, double d1, double d2, int i, boolean flag) {
|
|
+ protected PathEntity a(BlockPosition blockposition, double d0, double d1, double d2, int i, boolean flag) { return this.a(blockposition, null, d0, d1, d2, i, flag); }
|
|
+ @Nullable protected PathEntity a(BlockPosition blockposition, Entity target, double d0, double d1, double d2, int i, boolean flag) {
|
|
if (this.a.locY < 0.0D) {
|
|
return null;
|
|
} else if (!this.a()) {
|
|
@@ -99,6 +102,12 @@ public abstract class NavigationAbstract {
|
|
} else if (this.c != null && !this.c.b() && blockposition.equals(this.q)) {
|
|
return this.c;
|
|
} else {
|
|
+ // Paper start - Pathfind event
|
|
+ if (!new com.destroystokyo.paper.event.entity.EntityPathfindEvent(getEntity().getBukkitEntity(),
|
|
+ MCUtil.toLocation(getEntity().world, blockposition), target == null ? null : target.getBukkitEntity()).callEvent()) {
|
|
+ return null;
|
|
+ }
|
|
+ // Paper end
|
|
this.q = blockposition.immutableCopy();
|
|
float f = this.i();
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/NavigationFlying.java b/src/main/java/net/minecraft/server/NavigationFlying.java
|
|
index 9dfca6067..551ff417b 100644
|
|
--- a/src/main/java/net/minecraft/server/NavigationFlying.java
|
|
+++ b/src/main/java/net/minecraft/server/NavigationFlying.java
|
|
@@ -25,7 +25,7 @@ public class NavigationFlying extends NavigationAbstract {
|
|
|
|
@Override
|
|
public PathEntity a(Entity entity) {
|
|
- return this.b(new BlockPosition(entity));
|
|
+ return this.b(new BlockPosition(entity), entity); // Paper - Pathfind event
|
|
}
|
|
|
|
@Override
|
|
--
|
|
2.21.0
|
|
|