aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/api/0261-Add-worldborder-events.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/api/0261-Add-worldborder-events.patch')
-rw-r--r--patches/api/0261-Add-worldborder-events.patch308
1 files changed, 308 insertions, 0 deletions
diff --git a/patches/api/0261-Add-worldborder-events.patch b/patches/api/0261-Add-worldborder-events.patch
new file mode 100644
index 0000000000..2a1d4164b2
--- /dev/null
+++ b/patches/api/0261-Add-worldborder-events.patch
@@ -0,0 +1,308 @@
+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..126fe50b519a8d7cd158f799058cb235f9c4cbdb
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/event/world/border/WorldBorderBoundsChangeEvent.java
+@@ -0,0 +1,114 @@
++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.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;
++
++ 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 type;
++ }
++
++ /**
++ * Gets the old size or the world border.
++ *
++ * @return the old size
++ */
++ public double getOldSize() {
++ return oldSize;
++ }
++
++ /**
++ * Gets the new size of the world border.
++ *
++ * @return the new size
++ */
++ public double getNewSize() {
++ return newSize;
++ }
++
++ /**
++ * Sets the new size of the world border.
++ *
++ * @param newSize the new size
++ */
++ public void setNewSize(double newSize) {
++ // PAIL: TODO: Magic Values
++ this.newSize = Math.min(6.0E7D, 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 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 && type == Type.INSTANT_MOVE) type = Type.STARTED_MOVE;
++ }
++
++ @Override
++ public boolean isCancelled() {
++ return 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..60eabed056ee9b9cdd6f5d13307b9be38705330f
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/event/world/border/WorldBorderBoundsChangeFinishEvent.java
+@@ -0,0 +1,65 @@
++package io.papermc.paper.event.world.border;
++
++import org.bukkit.World;
++import org.bukkit.WorldBorder;
++import org.bukkit.event.HandlerList;
++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;
++
++ 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 oldSize;
++ }
++
++ /**
++ * Gets the new size of the worldborder.
++ *
++ * @return the new size
++ */
++ public double getNewSize() {
++ return newSize;
++ }
++
++ /**
++ * Gets the duration this worldborder took to make the change.
++ * <p>
++ * Can be 0 if handlers for {@link io.papermc.paper.event.world.border.WorldBorderCenterChangeEvent} set the duration to 0.
++ *
++ * @return the duration of the transition
++ */
++ public double getDuration() {
++ return 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..4a10c773a8d05a596066e63306dead74c1363fd7
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/event/world/border/WorldBorderCenterChangeEvent.java
+@@ -0,0 +1,77 @@
++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.bukkit.event.world.WorldEvent;
++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;
++
++ 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 oldCenter;
++ }
++
++ /**
++ * Gets the new center location for the world border.
++ *
++ * @return the new center
++ */
++ @NotNull
++ public Location getNewCenter() {
++ return 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 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..67bd469d3680c9554ce6c1d5493826a252682835
+--- /dev/null
++++ b/src/main/java/io/papermc/paper/event/world/border/WorldBorderEvent.java
+@@ -0,0 +1,22 @@
++package io.papermc.paper.event.world.border;
++
++import org.bukkit.World;
++import org.bukkit.WorldBorder;
++import org.bukkit.event.Cancellable;
++import org.bukkit.event.world.WorldEvent;
++import org.jetbrains.annotations.NotNull;
++
++public abstract class WorldBorderEvent extends WorldEvent {
++
++ private final WorldBorder worldBorder;
++
++ public WorldBorderEvent(@NotNull World world, @NotNull WorldBorder worldBorder) {
++ super(world);
++ this.worldBorder = worldBorder;
++ }
++
++ @NotNull
++ public WorldBorder getWorldBorder() {
++ return worldBorder;
++ }
++}