Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-15 19:10:09 +01:00
17b58d00d8
This was a useless exception wrapper that ends up making stack traces harder to read as well as the JVM cutting off the important parts Nothing catches this exception, so its safe to just get rid of it and let the REAL exception bubble down
212 Zeilen
6.3 KiB
Diff
212 Zeilen
6.3 KiB
Diff
From 7384fc53c3bf6e6025a819fd016e540863824bd5 Mon Sep 17 00:00:00 2001
|
|
From: BillyGalbreath <Blake.Galbreath@GMail.com>
|
|
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 00000000..f5a3ca3b
|
|
--- /dev/null
|
|
+++ b/src/main/java/com/destroystokyo/paper/event/entity/SlimeChangeDirectionEvent.java
|
|
@@ -0,0 +1,37 @@
|
|
+package com.destroystokyo.paper.event.entity;
|
|
+
|
|
+import org.bukkit.entity.Slime;
|
|
+import org.bukkit.event.Cancellable;
|
|
+
|
|
+/**
|
|
+ * Fired when a Slime decides to change it's 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 implements Cancellable {
|
|
+ private float yaw;
|
|
+
|
|
+ public SlimeChangeDirectionEvent(Slime slime, float yaw) {
|
|
+ super(slime);
|
|
+ this.yaw = yaw;
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Get the new chosen yaw
|
|
+ *
|
|
+ * @return Chosen yaw
|
|
+ */
|
|
+ public float getNewYaw() {
|
|
+ return 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 00000000..356bcca8
|
|
--- /dev/null
|
|
+++ b/src/main/java/com/destroystokyo/paper/event/entity/SlimePathfindEvent.java
|
|
@@ -0,0 +1,49 @@
|
|
+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;
|
|
+
|
|
+/**
|
|
+ * 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 {
|
|
+ public SlimePathfindEvent(Slime slime) {
|
|
+ super(slime);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * The Slime that is pathfinding.
|
|
+ *
|
|
+ * @return The Slime that is pathfinding.
|
|
+ */
|
|
+ public Slime getEntity() {
|
|
+ return (Slime) entity;
|
|
+ }
|
|
+
|
|
+ private static final HandlerList handlers = new HandlerList();
|
|
+
|
|
+ public HandlerList getHandlers() {
|
|
+ return handlers;
|
|
+ }
|
|
+
|
|
+ public static HandlerList getHandlerList() {
|
|
+ return handlers;
|
|
+ }
|
|
+
|
|
+ private boolean cancelled = false;
|
|
+
|
|
+ @Override
|
|
+ public boolean isCancelled() {
|
|
+ return cancelled;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void setCancelled(boolean cancel) {
|
|
+ cancelled = cancel;
|
|
+ }
|
|
+}
|
|
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 00000000..7c99fb53
|
|
--- /dev/null
|
|
+++ b/src/main/java/com/destroystokyo/paper/event/entity/SlimeSwimEvent.java
|
|
@@ -0,0 +1,16 @@
|
|
+package com.destroystokyo.paper.event.entity;
|
|
+
|
|
+import org.bukkit.entity.Slime;
|
|
+import org.bukkit.event.Cancellable;
|
|
+
|
|
+/**
|
|
+ * 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 implements Cancellable {
|
|
+ public SlimeSwimEvent(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 00000000..7c96e326
|
|
--- /dev/null
|
|
+++ b/src/main/java/com/destroystokyo/paper/event/entity/SlimeTargetLivingEntityEvent.java
|
|
@@ -0,0 +1,29 @@
|
|
+package com.destroystokyo.paper.event.entity;
|
|
+
|
|
+import org.bukkit.entity.LivingEntity;
|
|
+import org.bukkit.entity.Slime;
|
|
+import org.bukkit.event.Cancellable;
|
|
+
|
|
+/**
|
|
+ * 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 implements Cancellable {
|
|
+ private final LivingEntity target;
|
|
+
|
|
+ public SlimeTargetLivingEntityEvent(Slime slime, LivingEntity target) {
|
|
+ super(slime);
|
|
+ this.target = target;
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * Get the targeted entity
|
|
+ *
|
|
+ * @return Targeted entity
|
|
+ */
|
|
+ public LivingEntity getTarget() {
|
|
+ return 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 00000000..e55d208c
|
|
--- /dev/null
|
|
+++ b/src/main/java/com/destroystokyo/paper/event/entity/SlimeWanderEvent.java
|
|
@@ -0,0 +1,16 @@
|
|
+package com.destroystokyo.paper.event.entity;
|
|
+
|
|
+import org.bukkit.entity.Slime;
|
|
+import org.bukkit.event.Cancellable;
|
|
+
|
|
+/**
|
|
+ * 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 implements Cancellable {
|
|
+ public SlimeWanderEvent(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 1119e26e..c4791f95 100644
|
|
--- a/src/main/java/org/bukkit/entity/Slime.java
|
|
+++ b/src/main/java/org/bukkit/entity/Slime.java
|
|
@@ -14,4 +14,20 @@ public interface Slime extends Mob {
|
|
* @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
|
|
}
|
|
--
|
|
2.20.1
|
|
|