diff --git a/patches/api/0018-Add-entity-jump-API.patch b/patches/api/0018-Add-entity-jump-API.patch new file mode 100644 index 000000000..708d24fbc --- /dev/null +++ b/patches/api/0018-Add-entity-jump-API.patch @@ -0,0 +1,92 @@ +From dbcdb8b288e4323f62ce4da37a339a7a3335aed1 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Fri, 18 Oct 2019 23:34:38 -0500 +Subject: [PATCH] Add entity jump API + +--- + .../purpur/event/entity/EntityJumpEvent.java | 41 +++++++++++++++++++ + .../java/org/bukkit/entity/LivingEntity.java | 21 ++++++++++ + 2 files changed, 62 insertions(+) + create mode 100644 src/main/java/net/pl3x/purpur/event/entity/EntityJumpEvent.java + +diff --git a/src/main/java/net/pl3x/purpur/event/entity/EntityJumpEvent.java b/src/main/java/net/pl3x/purpur/event/entity/EntityJumpEvent.java +new file mode 100644 +index 000000000..3f11fb0ab +--- /dev/null ++++ b/src/main/java/net/pl3x/purpur/event/entity/EntityJumpEvent.java +@@ -0,0 +1,41 @@ ++package net.pl3x.purpur.event.entity; ++ ++import org.bukkit.entity.LivingEntity; ++import org.bukkit.event.Cancellable; ++import org.bukkit.event.HandlerList; ++import org.bukkit.event.entity.EntityEvent; ++import org.jetbrains.annotations.NotNull; ++ ++public class EntityJumpEvent extends EntityEvent implements Cancellable { ++ private static final HandlerList handlers = new HandlerList(); ++ private boolean canceled; ++ ++ public EntityJumpEvent(@NotNull LivingEntity entity) { ++ super(entity); ++ } ++ ++ @Override ++ @NotNull ++ public LivingEntity getEntity() { ++ return (LivingEntity) entity; ++ } ++ ++ public boolean isCancelled() { ++ return canceled; ++ } ++ ++ public void setCancelled(boolean cancel) { ++ canceled = cancel; ++ } ++ ++ @Override ++ @NotNull ++ public HandlerList getHandlers() { ++ return handlers; ++ } ++ ++ @NotNull ++ public static HandlerList getHandlerList() { ++ return handlers; ++ } ++} +diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java +index 3a8961853..7196c1b79 100644 +--- a/src/main/java/org/bukkit/entity/LivingEntity.java ++++ b/src/main/java/org/bukkit/entity/LivingEntity.java +@@ -710,5 +710,26 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource + * @param canBeRiddenInWater Whether or not this entity can be ridden in water + */ + void setCanBeRiddenInWater(boolean canBeRiddenInWater); ++ ++ /** ++ * Get entity jump state ++ *

++ * Jump state will be true when the entity has been marked to jump ++ * ++ * @return Jump state ++ */ ++ boolean isJumping(); ++ ++ /** ++ * Set entity jump state ++ *

++ * Setting to true will mark the entity to jump ++ *

++ * Setting to false will unmark the entity from jumping, but ++ * will not stop a jump that has already started ++ * ++ * @param jumping Jump state ++ */ ++ void setJumping(boolean jumping); + // Purpur end + } +-- +2.23.0.rc1 + diff --git a/patches/server/0070-Add-entity-jump-API.patch b/patches/server/0070-Add-entity-jump-API.patch new file mode 100644 index 000000000..7d5a2191f --- /dev/null +++ b/patches/server/0070-Add-entity-jump-API.patch @@ -0,0 +1,52 @@ +From c2bc5e0e5e4089540dd5c36751d76054c67afd63 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Fri, 18 Oct 2019 23:34:48 -0500 +Subject: [PATCH] Add entity jump API + +--- + .../java/net/minecraft/server/EntityLiving.java | 2 ++ + .../craftbukkit/entity/CraftLivingEntity.java | 14 ++++++++++++++ + 2 files changed, 16 insertions(+) + +diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java +index 2136836748..b59b1ab19c 100644 +--- a/src/main/java/net/minecraft/server/EntityLiving.java ++++ b/src/main/java/net/minecraft/server/EntityLiving.java +@@ -2556,8 +2556,10 @@ public abstract class EntityLiving extends Entity { + } else if (this.aD()) { + this.c(TagsFluid.LAVA); + } else if ((this.onGround || this.Q > 0.0D && this.Q <= 0.4D) && this.jumpTicks == 0) { ++ if (new net.pl3x.purpur.event.entity.EntityJumpEvent(getBukkitLivingEntity()).callEvent()) { // Purpur + this.jump(); + this.jumpTicks = 10; ++ } // Purpur + } + } else { + this.jumpTicks = 0; +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +index ffd1372284..e408c89220 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +@@ -733,5 +733,19 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { + public void setCanBeRiddenInWater(boolean canBeRiddenInWater) { + getHandle().setCanBeRiddenInWater(canBeRiddenInWater); + } ++ ++ @Override ++ public boolean isJumping() { ++ return getHandle().isJumping(); ++ } ++ ++ @Override ++ public void setJumping(boolean jumping) { ++ getHandle().setJumping(jumping); ++ if (jumping && getHandle() instanceof EntityInsentient) { ++ // this is needed to actually make a mob jump ++ ((EntityInsentient) getHandle()).getControllerJump().jump(); ++ } ++ } + // Purpur end + } +-- +2.23.0.rc1 +