Files
Purpur/patches/api/0012-Block-and-Fluid-Tick-Events.patch
William Blake Galbreath abd93908c7 Updated Upstream (Paper)
Upstream has released updates that appears to apply and compile correctly

Paper Changes:
7e8ae207 Updated Upstream (Bukkit/CraftBukkit/Spigot)
2019-07-11 21:45:34 -05:00

174 lines
5.1 KiB
Diff

From da238cff8dd0f47ebd11b15dbfbd36fbecf25fe4 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Thu, 6 Jun 2019 23:23:45 -0500
Subject: [PATCH] Block and Fluid Tick Events
---
.../purpur/event/block/BlockTickEvent.java | 52 +++++++++++++++++++
.../purpur/event/block/FluidTickEvent.java | 52 +++++++++++++++++++
src/main/java/org/bukkit/World.java | 30 +++++++++++
3 files changed, 134 insertions(+)
create mode 100644 src/main/java/net/pl3x/purpur/event/block/BlockTickEvent.java
create mode 100644 src/main/java/net/pl3x/purpur/event/block/FluidTickEvent.java
diff --git a/src/main/java/net/pl3x/purpur/event/block/BlockTickEvent.java b/src/main/java/net/pl3x/purpur/event/block/BlockTickEvent.java
new file mode 100644
index 000000000..e467052a0
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/event/block/BlockTickEvent.java
@@ -0,0 +1,52 @@
+package net.pl3x.purpur.event.block;
+
+import org.bukkit.World;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.HandlerList;
+import org.bukkit.event.block.BlockEvent;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Called when a block is ticked by the server.
+ */
+public class BlockTickEvent extends BlockEvent implements Cancellable {
+ private static final HandlerList handlers = new HandlerList();
+ private final boolean isRandomTick;
+ private boolean cancelled;
+
+ public BlockTickEvent(@NotNull World world, int x, int y, int z) {
+ this(world, x, y, z, false);
+ }
+
+ public BlockTickEvent(@NotNull World world, int x, int y, int z, boolean isRandomTick) {
+ super(world.getBlockAt(x, y, z));
+ this.isRandomTick = isRandomTick;
+ }
+
+ /**
+ * Check if this is a random tick
+ *
+ * @return True if random
+ */
+ public boolean isRandomTick() {
+ return isRandomTick;
+ }
+
+ public boolean isCancelled() {
+ return cancelled;
+ }
+
+ public void setCancelled(boolean cancel) {
+ cancelled = cancel;
+ }
+
+ @NotNull
+ public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ @NotNull
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+}
diff --git a/src/main/java/net/pl3x/purpur/event/block/FluidTickEvent.java b/src/main/java/net/pl3x/purpur/event/block/FluidTickEvent.java
new file mode 100644
index 000000000..9cd1e3dde
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/event/block/FluidTickEvent.java
@@ -0,0 +1,52 @@
+package net.pl3x.purpur.event.block;
+
+import org.bukkit.World;
+import org.bukkit.event.Cancellable;
+import org.bukkit.event.HandlerList;
+import org.bukkit.event.block.BlockEvent;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Called when a fluid is ticked by the server.
+ */
+public class FluidTickEvent extends BlockEvent implements Cancellable {
+ private static final HandlerList handlers = new HandlerList();
+ private final boolean isRandomTick;
+ private boolean cancelled;
+
+ public FluidTickEvent(@NotNull World world, int x, int y, int z) {
+ this(world, x, y, z, false);
+ }
+
+ public FluidTickEvent(@NotNull World world, int x, int y, int z, boolean isRandomTick) {
+ super(world.getBlockAt(x, y, z));
+ this.isRandomTick = isRandomTick;
+ }
+
+ /**
+ * Check if this is a random tick
+ *
+ * @return True if random
+ */
+ public boolean isRandomTick() {
+ return isRandomTick;
+ }
+
+ public boolean isCancelled() {
+ return cancelled;
+ }
+
+ public void setCancelled(boolean cancel) {
+ cancelled = cancel;
+ }
+
+ @NotNull
+ public HandlerList getHandlers() {
+ return handlers;
+ }
+
+ @NotNull
+ public static HandlerList getHandlerList() {
+ return handlers;
+ }
+}
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
index 1e7b633c1..8794160e6 100644
--- a/src/main/java/org/bukkit/World.java
+++ b/src/main/java/org/bukkit/World.java
@@ -2900,6 +2900,36 @@ public interface World extends PluginMessageRecipient, Metadatable {
@Nullable
public Location locateNearestStructure(@NotNull Location origin, @NotNull StructureType structureType, int radius, boolean findUnexplored);
+ // Purpur start
+ /**
+ * Get if {@link net.pl3x.purpur.event.block.BlockTickEvent} is enabled for this world
+ *
+ * @return True if enabled
+ */
+ boolean isBlockTickEventEnabled();
+
+ /**
+ * Set if {@link net.pl3x.purpur.event.block.BlockTickEvent} is enabled for this world
+ *
+ * @param enabled True to enable
+ */
+ void setBlockTickEventEnabled(boolean enabled);
+
+ /**
+ * Get if {@link net.pl3x.purpur.event.block.FluidTickEvent} is enabled for this world
+ *
+ * @return True if enabled
+ */
+ boolean isFluidTickEventEnabled();
+
+ /**
+ * Set if {@link net.pl3x.purpur.event.block.FluidTickEvent} is enabled for this world
+ *
+ * @param enabled True to enable
+ */
+ void setFluidTickEventEnabled(boolean enabled);
+ // Purpur end
+
// Spigot start
public class Spigot
{
--
2.20.1