mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 07:20:24 +01:00
Add worldborder events
This commit is contained in:
parent
eb8dcb71a9
commit
de918f498a
4 changed files with 280 additions and 0 deletions
|
@ -0,0 +1,115 @@
|
||||||
|
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.jspecify.annotations.NullMarked;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a world border changes its bounds, either over time, or instantly.
|
||||||
|
*/
|
||||||
|
@NullMarked
|
||||||
|
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(final World world, final WorldBorder worldBorder, final Type type, final double oldSize, final double newSize, final 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
|
||||||
|
*/
|
||||||
|
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(final 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(final 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(final boolean cancel) {
|
||||||
|
this.cancelled = cancel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return HANDLER_LIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return HANDLER_LIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Type {
|
||||||
|
STARTED_MOVE,
|
||||||
|
INSTANT_MOVE
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
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.jspecify.annotations.NullMarked;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a moving world border has finished its move.
|
||||||
|
*/
|
||||||
|
@NullMarked
|
||||||
|
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(final World world, final WorldBorder worldBorder, final double oldSize, final double newSize, final 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return HANDLER_LIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return HANDLER_LIST;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,76 @@
|
||||||
|
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.jspecify.annotations.NullMarked;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a world border's center is changed.
|
||||||
|
*/
|
||||||
|
@NullMarked
|
||||||
|
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(final World world, final WorldBorder worldBorder, final Location oldCenter, final Location newCenter) {
|
||||||
|
super(world, worldBorder);
|
||||||
|
this.oldCenter = oldCenter;
|
||||||
|
this.newCenter = newCenter;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the original center location of the world border.
|
||||||
|
*
|
||||||
|
* @return the old center
|
||||||
|
*/
|
||||||
|
public Location getOldCenter() {
|
||||||
|
return this.oldCenter.clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the new center location for the world border.
|
||||||
|
*
|
||||||
|
* @return the new center
|
||||||
|
*/
|
||||||
|
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(final Location newCenter) {
|
||||||
|
this.newCenter = newCenter;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return this.cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(final boolean cancel) {
|
||||||
|
this.cancelled = cancel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return HANDLER_LIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return HANDLER_LIST;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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.jspecify.annotations.NullMarked;
|
||||||
|
|
||||||
|
@NullMarked
|
||||||
|
public abstract class WorldBorderEvent extends WorldEvent {
|
||||||
|
|
||||||
|
protected final WorldBorder worldBorder;
|
||||||
|
|
||||||
|
@ApiStatus.Internal
|
||||||
|
protected WorldBorderEvent(final World world, final WorldBorder worldBorder) {
|
||||||
|
super(world);
|
||||||
|
this.worldBorder = worldBorder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public WorldBorder getWorldBorder() {
|
||||||
|
return this.worldBorder;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue