From c25c800a3cd50e92378245e55a5d82e54d099089 Mon Sep 17 00:00:00 2001 From: Aikar <aikar@aikar.co> Date: Mon, 30 Apr 2018 13:30:00 -0400 Subject: [PATCH] Enderman.teleportRandomly() Ability to trigger the vanilla "teleport randomly" mechanic of an enderman. --- .../Enderman.teleportRandomly.patch | 30 +++++++++++++++++ .../Enderman.teleportRandomly.patch | 32 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 Spigot-API-Patches/Enderman.teleportRandomly.patch create mode 100644 Spigot-Server-Patches/Enderman.teleportRandomly.patch diff --git a/Spigot-API-Patches/Enderman.teleportRandomly.patch b/Spigot-API-Patches/Enderman.teleportRandomly.patch new file mode 100644 index 0000000000..c935253606 --- /dev/null +++ b/Spigot-API-Patches/Enderman.teleportRandomly.patch @@ -0,0 +1,30 @@ +From 0000000000000000000000000000000000000000 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 +@@ -0,0 +0,0 @@ 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. + * +-- \ No newline at end of file diff --git a/Spigot-Server-Patches/Enderman.teleportRandomly.patch b/Spigot-Server-Patches/Enderman.teleportRandomly.patch new file mode 100644 index 0000000000..21cf2b9d21 --- /dev/null +++ b/Spigot-Server-Patches/Enderman.teleportRandomly.patch @@ -0,0 +1,32 @@ +From 0000000000000000000000000000000000000000 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 +@@ -0,0 +0,0 @@ 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 +@@ -0,0 +0,0 @@ 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)); +-- \ No newline at end of file