Enderman.teleportRandomly()

Ability to trigger the vanilla "teleport randomly" mechanic of an enderman.
This commit is contained in:
Aikar 2018-04-30 13:30:00 -04:00
parent 30bc4df0a9
commit d38e9dcf0e
No known key found for this signature in database
GPG Key ID: 401ADFC9891FAAFE
2 changed files with 66 additions and 0 deletions

View File

@ -0,0 +1,32 @@
From d530ef23afbee7ab48db7b45c2fb1942b7124d9f Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Mon, 30 Apr 2018 13:29:15 -0400
Subject: [PATCH] Enderman.teleportRandomly()
Ability to trigger the vanilla "teleport randomly" mechanic of an enderman.
diff --git a/src/main/java/org/bukkit/entity/Enderman.java b/src/main/java/org/bukkit/entity/Enderman.java
index f537f697..52afa6f9 100644
--- a/src/main/java/org/bukkit/entity/Enderman.java
+++ b/src/main/java/org/bukkit/entity/Enderman.java
@@ -7,6 +7,17 @@ import org.bukkit.material.MaterialData;
*/
public interface Enderman extends Monster {
+ // Paper start
+ /**
+ * Try to teleport the enderman to a random nearby location.
+ *
+ * May conditionally fail if the random location was not valid
+ * @return If the enderman teleported successfully or not
+ */
+
+ public boolean teleportRandomly();
+ // Paper end
+
/**
* Get the id and data of the block that the Enderman is carrying.
*
--
2.17.0

View File

@ -0,0 +1,34 @@
From 54a0c28176774e984ea077500e21a0b8a7c12e54 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Mon, 30 Apr 2018 13:29:44 -0400
Subject: [PATCH] Enderman.teleportRandomly()
Ability to trigger the vanilla "teleport randomly" mechanic of an enderman.
diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java
index 7b1fb6b7b..3038a9e2b 100644
--- a/src/main/java/net/minecraft/server/EntityEnderman.java
+++ b/src/main/java/net/minecraft/server/EntityEnderman.java
@@ -198,6 +198,7 @@ public class EntityEnderman extends EntityMonster {
super.M();
}
+ public boolean teleportRandomly() { return dm(); } // Paper - OBFHELPER
protected boolean dm() {
double d0 = this.locX + (this.random.nextDouble() - 0.5D) * 64.0D;
double d1 = this.locY + (double) (this.random.nextInt(64) - 32);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderman.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderman.java
index f602c2313..7e6af5d02 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderman.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderman.java
@@ -15,6 +15,7 @@ public class CraftEnderman extends CraftMonster implements Enderman {
super(server, entity);
}
+ @Override public boolean teleportRandomly() { return getHandle().teleportRandomly(); } // Paper
public MaterialData getCarriedMaterial() {
IBlockData blockData = getHandle().getCarried();
return (blockData == null) ? Material.AIR.getNewData((byte) 0) : CraftMagicNumbers.getMaterial(blockData.getBlock()).getNewData((byte) blockData.getBlock().toLegacyData(blockData));
--
2.17.0