aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0318-Entity-Jump-API.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0318-Entity-Jump-API.patch')
-rw-r--r--patches/server/0318-Entity-Jump-API.patch76
1 files changed, 76 insertions, 0 deletions
diff --git a/patches/server/0318-Entity-Jump-API.patch b/patches/server/0318-Entity-Jump-API.patch
new file mode 100644
index 0000000000..20e546b1d6
--- /dev/null
+++ b/patches/server/0318-Entity-Jump-API.patch
@@ -0,0 +1,76 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: BillyGalbreath <[email protected]>
+Date: Sat, 8 Feb 2020 23:26:11 -0600
+Subject: [PATCH] Entity Jump API
+
+== AT ==
+public net.minecraft.world.entity.LivingEntity jumping
+
+diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
+index f13fb8d408e02e3c561e8f2b9c823c13033b4f94..f4ba1c72ec470cc79e40d7427e08185d5944d373 100644
+--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
++++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
+@@ -3433,8 +3433,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
+ } else if (this.isInLava() && (!this.onGround() || d3 > d4)) {
+ this.jumpInLiquid(FluidTags.LAVA);
+ } else if ((this.onGround() || flag && d3 <= d4) && this.noJumpDelay == 0) {
++ if (new com.destroystokyo.paper.event.entity.EntityJumpEvent(getBukkitLivingEntity()).callEvent()) { // Paper - Entity Jump API
+ this.jumpFromGround();
+ this.noJumpDelay = 10;
++ } else { this.setJumping(false); } // Paper - Entity Jump API; setJumping(false) stops a potential loop
+ }
+ } else {
+ this.noJumpDelay = 0;
+diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java
+index 228cfb77e12ed5979e422dc5dbb5e8dcf363b509..8df42121aa22ec9f95a1b8627b64b0ff71e36314 100644
+--- a/src/main/java/net/minecraft/world/entity/animal/Panda.java
++++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java
+@@ -541,7 +541,9 @@ public class Panda extends Animal {
+ Panda entitypanda = (Panda) iterator.next();
+
+ if (!entitypanda.isBaby() && entitypanda.onGround() && !entitypanda.isInWater() && entitypanda.canPerformAction()) {
++ if (new com.destroystokyo.paper.event.entity.EntityJumpEvent(getBukkitLivingEntity()).callEvent()) { // Paper - Entity Jump API
+ entitypanda.jumpFromGround();
++ } else { this.setJumping(false); } // Paper - Entity Jump API; setJumping(false) stops a potential loop
+ }
+ }
+
+diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
+index 4d91bc4b90a208fec789325dbcec8cc56d1a2a8b..aa4111eef22546f8aa630228c51ef5761c9b373b 100644
+--- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java
++++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
+@@ -160,7 +160,9 @@ public class Ravager extends Raider {
+ }
+
+ if (!flag && this.onGround()) {
++ if (new com.destroystokyo.paper.event.entity.EntityJumpEvent(getBukkitLivingEntity()).callEvent()) { // Paper - Entity Jump API
+ this.jumpFromGround();
++ } else { this.setJumping(false); } // Paper - Entity Jump API; setJumping(false) stops a potential loop
+ }
+ }
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+index 9a159f0c7489d2924dabe3fd250d844899ae5761..94f2b0fa94ebc2572c33623fa5883dd7ed56c55a 100644
+--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+@@ -963,4 +963,20 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
+ return org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(this.getHandle().getUsedItemHand());
+ }
+ // Paper end - active item API
++
++ // Paper start - entity jump API
++ @Override
++ public boolean isJumping() {
++ return getHandle().jumping;
++ }
++
++ @Override
++ public void setJumping(boolean jumping) {
++ getHandle().setJumping(jumping);
++ if (jumping && getHandle() instanceof Mob) {
++ // this is needed to actually make a mob jump
++ ((Mob) getHandle()).getJumpControl().jump();
++ }
++ }
++ // Paper end - entity jump API
+ }