aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0256-Add-worldborder-events.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/api/0256-Add-worldborder-events.patch')
-rw-r--r--patches/api/0256-Add-worldborder-events.patch316
1 files changed, 316 insertions, 0 deletions
diff --git a/patches/api/0256-Add-worldborder-events.patch b/patches/api/0256-Add-worldborder-events.patch
new file mode 100644
index 0000000000..9f3ae70435
--- /dev/null
+++ b/patches/api/0256-Add-worldborder-events.patch
@@ -0,0 +1,316 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Mon, 4 Jan 2021 22:40:26 -0800
+Subject: [PATCH] Add worldborder events
+
+
+diff --git a/src/main/java/io/papermc/paper/event/world/border/WorldBorderBoundsChangeEvent.java b/src/main/java/io/papermc/paper/event/world/border/WorldBorderBoundsChangeEvent.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..02ac479840c137ca5afcec149ef884e5a5d62928
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/event/world/border/WorldBorderBoundsChangeEvent.java
+@@ -0,0 +1,117 @@
++package io.papermc.paper.event.world.border;
++
++import org.bukkit.World;
++import org.bukkit.WorldBorder;
++import org.bukkit.event.Cancellable;
++import org.bukkit.event.HandlerList;
++import org.jetbrains.annotations.ApiStatus;
++import org.jetbrains.annotations.NotNull;
++
++/**
++ * Called when a world border changes its bounds, either over time, or instantly.
++ */
++public class WorldBorderBoundsChangeEvent extends WorldBorderEvent implements Cancellable {
++
++ private static final HandlerList HANDLER_LIST = new HandlerList();
++
++ private Type type;
++ private final double oldSize;
++ private double newSize;
++ private long duration;
++ private boolean cancelled;
++
++ @ApiStatus.Internal
++ public WorldBorderBoundsChangeEvent(@NotNull World world, @NotNull WorldBorder worldBorder, @NotNull Type type, double oldSize, double newSize, long duration) {
++ super(world, worldBorder);
++ this.type = type;
++ this.oldSize = oldSize;
++ this.newSize = newSize;
++ this.duration = duration;
++ }
++
++ /**
++ * Gets if this change is an instant change or over-time change.
++ *
++ * @return the change type
++ */
++ @NotNull
++ public Type getType() {
++ return this.type;
++ }
++
++ /**
++ * Gets the old size or the world border.
++ *
++ * @return the old size
++ */
++ public double getOldSize() {
++ return this.oldSize;
++ }
++
++ /**
++ * Gets the new size of the world border.
++ *
++ * @return the new size
++ */
++ public double getNewSize() {
++ return this.newSize;
++ }
++
++ /**
++ * Sets the new size of the world border.
++ *
++ * @param newSize the new size
++ */
++ public void setNewSize(double newSize) {
++ this.newSize = Math.min(this.worldBorder.getMaxSize(), Math.max(1.0D, newSize));
++ }
++
++ /**
++ * Gets the time in milliseconds for the change. Will be 0 if instant.
++ *
++ * @return the time in milliseconds for the change
++ */
++ public long getDuration() {
++ return this.duration;
++ }
++
++ /**
++ * Sets the time in milliseconds for the change. Will change {@link #getType()} to return
++ * {@link Type#STARTED_MOVE}.
++ *
++ * @param duration the time in milliseconds for the change
++ */
++ public void setDuration(long duration) {
++ // PAIL: TODO: Magic Values
++ this.duration = Math.min(9223372036854775L, Math.max(0L, duration));
++ if (duration >= 0 && this.type == Type.INSTANT_MOVE) {
++ this.type = Type.STARTED_MOVE;
++ }
++ }
++
++ @Override
++ public boolean isCancelled() {
++ return this.cancelled;
++ }
++
++ @Override
++ public void setCancelled(boolean cancel) {
++ this.cancelled = cancel;
++ }
++
++ @NotNull
++ @Override
++ public HandlerList getHandlers() {
++ return HANDLER_LIST;
++ }
++
++ @NotNull
++ public static HandlerList getHandlerList() {
++ return HANDLER_LIST;
++ }
++
++ public enum Type {
++ STARTED_MOVE,
++ INSTANT_MOVE
++ }
++}
+diff --git a/src/main/java/io/papermc/paper/event/world/border/WorldBorderBoundsChangeFinishEvent.java b/src/main/java/io/papermc/paper/event/world/border/WorldBorderBoundsChangeFinishEvent.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..a44964593b7f78c5086dc4928e75ad892e624671
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/event/world/border/WorldBorderBoundsChangeFinishEvent.java
+@@ -0,0 +1,67 @@
++package io.papermc.paper.event.world.border;
++
++import org.bukkit.World;
++import org.bukkit.WorldBorder;
++import org.bukkit.event.HandlerList;
++import org.jetbrains.annotations.ApiStatus;
++import org.jetbrains.annotations.NotNull;
++
++/**
++ * Called when a moving world border has finished its move.
++ */
++public class WorldBorderBoundsChangeFinishEvent extends WorldBorderEvent {
++
++ private static final HandlerList HANDLER_LIST = new HandlerList();
++
++ private final double oldSize;
++ private final double newSize;
++ private final double duration;
++
++ @ApiStatus.Internal
++ public WorldBorderBoundsChangeFinishEvent(@NotNull World world, @NotNull WorldBorder worldBorder, double oldSize, double newSize, double duration) {
++ super(world, worldBorder);
++ this.oldSize = oldSize;
++ this.newSize = newSize;
++ this.duration = duration;
++ }
++
++ /**
++ * Gets the old size of the worldborder.
++ *
++ * @return the old size
++ */
++ public double getOldSize() {
++ return this.oldSize;
++ }
++
++ /**
++ * Gets the new size of the worldborder.
++ *
++ * @return the new size
++ */
++ public double getNewSize() {
++ return this.newSize;
++ }
++
++ /**
++ * Gets the duration this worldborder took to make the change.
++ * <p>
++ * Can be 0 if handlers for {@link WorldBorderCenterChangeEvent} set the duration to 0.
++ *
++ * @return the duration of the transition
++ */
++ public double getDuration() {
++ return this.duration;
++ }
++
++ @NotNull
++ @Override
++ public HandlerList getHandlers() {
++ return HANDLER_LIST;
++ }
++
++ @NotNull
++ public static HandlerList getHandlerList() {
++ return HANDLER_LIST;
++ }
++}
+diff --git a/src/main/java/io/papermc/paper/event/world/border/WorldBorderCenterChangeEvent.java b/src/main/java/io/papermc/paper/event/world/border/WorldBorderCenterChangeEvent.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..dd96dcc0dd68d71bf27c758ed496153d434fb386
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/event/world/border/WorldBorderCenterChangeEvent.java
+@@ -0,0 +1,79 @@
++package io.papermc.paper.event.world.border;
++
++import org.bukkit.Location;
++import org.bukkit.World;
++import org.bukkit.WorldBorder;
++import org.bukkit.event.Cancellable;
++import org.bukkit.event.HandlerList;
++import org.jetbrains.annotations.ApiStatus;
++import org.jetbrains.annotations.NotNull;
++
++/**
++ * Called when a world border's center is changed.
++ */
++public class WorldBorderCenterChangeEvent extends WorldBorderEvent implements Cancellable {
++
++ private static final HandlerList HANDLER_LIST = new HandlerList();
++
++ private final Location oldCenter;
++ private Location newCenter;
++
++ private boolean cancelled;
++
++ @ApiStatus.Internal
++ public WorldBorderCenterChangeEvent(@NotNull World world, @NotNull WorldBorder worldBorder, @NotNull Location oldCenter, @NotNull Location newCenter) {
++ super(world, worldBorder);
++ this.oldCenter = oldCenter;
++ this.newCenter = newCenter;
++ }
++
++ /**
++ * Gets the original center location of the world border.
++ *
++ * @return the old center
++ */
++ @NotNull
++ public Location getOldCenter() {
++ return this.oldCenter.clone();
++ }
++
++ /**
++ * Gets the new center location for the world border.
++ *
++ * @return the new center
++ */
++ @NotNull
++ public Location getNewCenter() {
++ return this.newCenter;
++ }
++
++ /**
++ * Sets the new center location for the world border. Y coordinate is ignored.
++ *
++ * @param newCenter the new center
++ */
++ public void setNewCenter(@NotNull Location newCenter) {
++ this.newCenter = newCenter;
++ }
++
++ @Override
++ public boolean isCancelled() {
++ return this.cancelled;
++ }
++
++ @Override
++ public void setCancelled(boolean cancel) {
++ this.cancelled = cancel;
++ }
++
++ @NotNull
++ @Override
++ public HandlerList getHandlers() {
++ return HANDLER_LIST;
++ }
++
++ @NotNull
++ public static HandlerList getHandlerList() {
++ return HANDLER_LIST;
++ }
++}
+diff --git a/src/main/java/io/papermc/paper/event/world/border/WorldBorderEvent.java b/src/main/java/io/papermc/paper/event/world/border/WorldBorderEvent.java
+new file mode 100644
+index 0000000000000000000000000000000000000000..adb244f9be35c43ff99dbc3a771e1fdfb21da68c
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/event/world/border/WorldBorderEvent.java
+@@ -0,0 +1,23 @@
++package io.papermc.paper.event.world.border;
++
++import org.bukkit.World;
++import org.bukkit.WorldBorder;
++import org.bukkit.event.world.WorldEvent;
++import org.jetbrains.annotations.ApiStatus;
++import org.jetbrains.annotations.NotNull;
++
++public abstract class WorldBorderEvent extends WorldEvent {
++
++ protected final WorldBorder worldBorder;
++
++ @ApiStatus.Internal
++ protected WorldBorderEvent(@NotNull World world, @NotNull WorldBorder worldBorder) {
++ super(world);
++ this.worldBorder = worldBorder;
++ }
++
++ @NotNull
++ public WorldBorder getWorldBorder() {
++ return this.worldBorder;
++ }
++}