mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Add entity jump API
This commit is contained in:
92
patches/api/0018-Add-entity-jump-API.patch
Normal file
92
patches/api/0018-Add-entity-jump-API.patch
Normal file
@@ -0,0 +1,92 @@
|
||||
From dbcdb8b288e4323f62ce4da37a339a7a3335aed1 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
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
|
||||
+ * <p>
|
||||
+ * Jump state will be true when the entity has been marked to jump
|
||||
+ *
|
||||
+ * @return Jump state
|
||||
+ */
|
||||
+ boolean isJumping();
|
||||
+
|
||||
+ /**
|
||||
+ * Set entity jump state
|
||||
+ * <p>
|
||||
+ * Setting to true will mark the entity to jump
|
||||
+ * <p>
|
||||
+ * 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
|
||||
|
||||
52
patches/server/0070-Add-entity-jump-API.patch
Normal file
52
patches/server/0070-Add-entity-jump-API.patch
Normal file
@@ -0,0 +1,52 @@
|
||||
From c2bc5e0e5e4089540dd5c36751d76054c67afd63 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user