diff options
Diffstat (limited to 'patches/api/0136-Slime-Pathfinder-Events.patch')
-rw-r--r-- | patches/api/0136-Slime-Pathfinder-Events.patch | 228 |
1 files changed, 228 insertions, 0 deletions
diff --git a/patches/api/0136-Slime-Pathfinder-Events.patch b/patches/api/0136-Slime-Pathfinder-Events.patch new file mode 100644 index 0000000000..a569c5bdda --- /dev/null +++ b/patches/api/0136-Slime-Pathfinder-Events.patch @@ -0,0 +1,228 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath <[email protected]> +Date: Fri, 24 Aug 2018 08:18:27 -0500 +Subject: [PATCH] Slime Pathfinder Events + + +diff --git a/src/main/java/com/destroystokyo/paper/event/entity/SlimeChangeDirectionEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/SlimeChangeDirectionEvent.java +new file mode 100644 +index 0000000000000000000000000000000000000000..30864539574e23bbe9e4c5dc73ad6614de782ac2 +--- /dev/null ++++ b/src/main/java/com/destroystokyo/paper/event/entity/SlimeChangeDirectionEvent.java +@@ -0,0 +1,40 @@ ++package com.destroystokyo.paper.event.entity; ++ ++import org.bukkit.entity.Slime; ++import org.jetbrains.annotations.ApiStatus; ++import org.jetbrains.annotations.NotNull; ++ ++/** ++ * Fired when a Slime decides to change its facing direction. ++ * <p> ++ * This event does not fire for the entity's actual movement. Only when it ++ * is choosing to change direction. ++ */ ++public class SlimeChangeDirectionEvent extends SlimePathfindEvent { ++ ++ private float yaw; ++ ++ @ApiStatus.Internal ++ public SlimeChangeDirectionEvent(@NotNull Slime slime, float yaw) { ++ super(slime); ++ this.yaw = yaw; ++ } ++ ++ /** ++ * Get the new chosen yaw ++ * ++ * @return Chosen yaw ++ */ ++ public float getNewYaw() { ++ return this.yaw; ++ } ++ ++ /** ++ * Set the new chosen yaw ++ * ++ * @param yaw Chosen yaw ++ */ ++ public void setNewYaw(float yaw) { ++ this.yaw = yaw; ++ } ++} +diff --git a/src/main/java/com/destroystokyo/paper/event/entity/SlimePathfindEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/SlimePathfindEvent.java +new file mode 100644 +index 0000000000000000000000000000000000000000..706ed85a5415d688aaa5f138cbf583b9e2bab27d +--- /dev/null ++++ b/src/main/java/com/destroystokyo/paper/event/entity/SlimePathfindEvent.java +@@ -0,0 +1,56 @@ ++package com.destroystokyo.paper.event.entity; ++ ++import org.bukkit.entity.Slime; ++import org.bukkit.event.Cancellable; ++import org.bukkit.event.HandlerList; ++import org.bukkit.event.entity.EntityEvent; ++import org.jetbrains.annotations.ApiStatus; ++import org.jetbrains.annotations.NotNull; ++ ++/** ++ * Fired when a Slime decides to start pathfinding. ++ * <p> ++ * This event does not fire for the entity's actual movement. Only when it ++ * is choosing to start moving. ++ */ ++public class SlimePathfindEvent extends EntityEvent implements Cancellable { ++ ++ private static final HandlerList HANDLER_LIST = new HandlerList(); ++ ++ private boolean cancelled; ++ ++ @ApiStatus.Internal ++ public SlimePathfindEvent(@NotNull Slime slime) { ++ super(slime); ++ } ++ ++ /** ++ * The Slime that is pathfinding. ++ * ++ * @return The Slime that is pathfinding. ++ */ ++ @NotNull ++ public Slime getEntity() { ++ return (Slime) super.getEntity(); ++ } ++ ++ @Override ++ public boolean isCancelled() { ++ return this.cancelled; ++ } ++ ++ @Override ++ public void setCancelled(boolean cancel) { ++ this.cancelled = cancel; ++ } ++ ++ @NotNull ++ public HandlerList getHandlers() { ++ return HANDLER_LIST; ++ } ++ ++ @NotNull ++ public static HandlerList getHandlerList() { ++ return HANDLER_LIST; ++ } ++} +diff --git a/src/main/java/com/destroystokyo/paper/event/entity/SlimeSwimEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/SlimeSwimEvent.java +new file mode 100644 +index 0000000000000000000000000000000000000000..65e8a29751e338b0f0acda7bef9e014852a73e6e +--- /dev/null ++++ b/src/main/java/com/destroystokyo/paper/event/entity/SlimeSwimEvent.java +@@ -0,0 +1,19 @@ ++package com.destroystokyo.paper.event.entity; ++ ++import org.bukkit.entity.Slime; ++import org.jetbrains.annotations.ApiStatus; ++import org.jetbrains.annotations.NotNull; ++ ++/** ++ * Fired when a Slime decides to start jumping while swimming in water/lava. ++ * <p> ++ * This event does not fire for the entity's actual movement. Only when it ++ * is choosing to start jumping. ++ */ ++public class SlimeSwimEvent extends SlimeWanderEvent { ++ ++ @ApiStatus.Internal ++ public SlimeSwimEvent(@NotNull Slime slime) { ++ super(slime); ++ } ++} +diff --git a/src/main/java/com/destroystokyo/paper/event/entity/SlimeTargetLivingEntityEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/SlimeTargetLivingEntityEvent.java +new file mode 100644 +index 0000000000000000000000000000000000000000..87c64b04dfec232e98361c3ec29da7664498c65b +--- /dev/null ++++ b/src/main/java/com/destroystokyo/paper/event/entity/SlimeTargetLivingEntityEvent.java +@@ -0,0 +1,33 @@ ++package com.destroystokyo.paper.event.entity; ++ ++import org.bukkit.entity.LivingEntity; ++import org.bukkit.entity.Slime; ++import org.jetbrains.annotations.ApiStatus; ++import org.jetbrains.annotations.NotNull; ++ ++/** ++ * Fired when a Slime decides to change direction to target a LivingEntity. ++ * <p> ++ * This event does not fire for the entity's actual movement. Only when it ++ * is choosing to start moving. ++ */ ++public class SlimeTargetLivingEntityEvent extends SlimePathfindEvent { ++ ++ @NotNull private final LivingEntity target; ++ ++ @ApiStatus.Internal ++ public SlimeTargetLivingEntityEvent(@NotNull Slime slime, @NotNull LivingEntity target) { ++ super(slime); ++ this.target = target; ++ } ++ ++ /** ++ * Get the targeted entity ++ * ++ * @return Targeted entity ++ */ ++ @NotNull ++ public LivingEntity getTarget() { ++ return this.target; ++ } ++} +diff --git a/src/main/java/com/destroystokyo/paper/event/entity/SlimeWanderEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/SlimeWanderEvent.java +new file mode 100644 +index 0000000000000000000000000000000000000000..2ad9cc1673ffbb8b48349e461d1154d1d4ec2874 +--- /dev/null ++++ b/src/main/java/com/destroystokyo/paper/event/entity/SlimeWanderEvent.java +@@ -0,0 +1,19 @@ ++package com.destroystokyo.paper.event.entity; ++ ++import org.bukkit.entity.Slime; ++import org.jetbrains.annotations.ApiStatus; ++import org.jetbrains.annotations.NotNull; ++ ++/** ++ * Fired when a Slime decides to start wandering. ++ * <p> ++ * This event does not fire for the entity's actual movement. Only when it ++ * is choosing to start moving. ++ */ ++public class SlimeWanderEvent extends SlimePathfindEvent { ++ ++ @ApiStatus.Internal ++ public SlimeWanderEvent(@NotNull Slime slime) { ++ super(slime); ++ } ++} +diff --git a/src/main/java/org/bukkit/entity/Slime.java b/src/main/java/org/bukkit/entity/Slime.java +index bfac874840cf1f36afba16ae4d176c5821a68cfb..335b92e7be49ae13b2a1140183650642063a4219 100644 +--- a/src/main/java/org/bukkit/entity/Slime.java ++++ b/src/main/java/org/bukkit/entity/Slime.java +@@ -24,4 +24,20 @@ public interface Slime extends Mob, Enemy { + * @param sz The new size of the slime. + */ + public void setSize(int sz); ++ ++ // Paper start ++ /** ++ * Get whether this slime can randomly wander/jump around on its own ++ * ++ * @return true if can wander ++ */ ++ public boolean canWander(); ++ ++ /** ++ * Set whether this slime can randomly wander/jump around on its own ++ * ++ * @param canWander true if can wander ++ */ ++ public void setWander(boolean canWander); ++ // Paper end + } |