mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-18 20:53:09 +01:00
da9d110d5b
This patch does not appear to be doing anything useful, and may hide errors. Currently, the save logic does not run through this path either so it did not do anything. Additionally, properly implement support for handling RegionFileSizeException in Moonrise.
72 lines
4.3 KiB
Diff
72 lines
4.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Mon, 4 Jan 2021 22:40:34 -0800
|
|
Subject: [PATCH] Add worldborder events
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/border/WorldBorder.java b/src/main/java/net/minecraft/world/level/border/WorldBorder.java
|
|
index b50090df116697a12f5498d65dd2e5d6d5297fb5..807a097a7b6399f24ede741f94ce98eb67e55add 100644
|
|
--- a/src/main/java/net/minecraft/world/level/border/WorldBorder.java
|
|
+++ b/src/main/java/net/minecraft/world/level/border/WorldBorder.java
|
|
@@ -148,6 +148,14 @@ public class WorldBorder {
|
|
}
|
|
|
|
public void setCenter(double x, double z) {
|
|
+ // Paper start - Add worldborder events
|
|
+ if (this.world != null) {
|
|
+ io.papermc.paper.event.world.border.WorldBorderCenterChangeEvent event = new io.papermc.paper.event.world.border.WorldBorderCenterChangeEvent(world.getWorld(), world.getWorld().getWorldBorder(), new org.bukkit.Location(world.getWorld(), this.getCenterX(), 0, this.getCenterZ()), new org.bukkit.Location(world.getWorld(), x, 0, z));
|
|
+ if (!event.callEvent()) return;
|
|
+ x = event.getNewCenter().getX();
|
|
+ z = event.getNewCenter().getZ();
|
|
+ }
|
|
+ // Paper end - Add worldborder events
|
|
this.centerX = x;
|
|
this.centerZ = z;
|
|
this.extent.onCenterChange();
|
|
@@ -174,6 +182,17 @@ public class WorldBorder {
|
|
}
|
|
|
|
public void setSize(double size) {
|
|
+ // Paper start - Add worldborder events
|
|
+ if (this.world != null) {
|
|
+ io.papermc.paper.event.world.border.WorldBorderBoundsChangeEvent event = new io.papermc.paper.event.world.border.WorldBorderBoundsChangeEvent(world.getWorld(), world.getWorld().getWorldBorder(), io.papermc.paper.event.world.border.WorldBorderBoundsChangeEvent.Type.INSTANT_MOVE, getSize(), size, 0);
|
|
+ if (!event.callEvent()) return;
|
|
+ if (event.getType() == io.papermc.paper.event.world.border.WorldBorderBoundsChangeEvent.Type.STARTED_MOVE && event.getDuration() > 0) { // If changed to a timed transition
|
|
+ lerpSizeBetween(event.getOldSize(), event.getNewSize(), event.getDuration());
|
|
+ return;
|
|
+ }
|
|
+ size = event.getNewSize();
|
|
+ }
|
|
+ // Paper end - Add worldborder events
|
|
this.extent = new WorldBorder.StaticBorderExtent(size);
|
|
Iterator iterator = this.getListeners().iterator();
|
|
|
|
@@ -186,6 +205,20 @@ public class WorldBorder {
|
|
}
|
|
|
|
public void lerpSizeBetween(double fromSize, double toSize, long time) {
|
|
+ // Paper start - Add worldborder events
|
|
+ if (this.world != null) {
|
|
+ io.papermc.paper.event.world.border.WorldBorderBoundsChangeEvent.Type type;
|
|
+ if (fromSize == toSize) { // new size = old size
|
|
+ type = io.papermc.paper.event.world.border.WorldBorderBoundsChangeEvent.Type.INSTANT_MOVE; // Use INSTANT_MOVE because below it creates a Static border if they are equal.
|
|
+ } else {
|
|
+ type = io.papermc.paper.event.world.border.WorldBorderBoundsChangeEvent.Type.STARTED_MOVE;
|
|
+ }
|
|
+ io.papermc.paper.event.world.border.WorldBorderBoundsChangeEvent event = new io.papermc.paper.event.world.border.WorldBorderBoundsChangeEvent(world.getWorld(), world.getWorld().getWorldBorder(), type, fromSize, toSize, time);
|
|
+ if (!event.callEvent()) return;
|
|
+ toSize = event.getNewSize();
|
|
+ time = event.getDuration();
|
|
+ }
|
|
+ // Paper end - Add worldborder events
|
|
this.extent = (WorldBorder.BorderExtent) (fromSize == toSize ? new WorldBorder.StaticBorderExtent(toSize) : new WorldBorder.MovingBorderExtent(fromSize, toSize, time));
|
|
Iterator iterator = this.getListeners().iterator();
|
|
|
|
@@ -497,6 +530,7 @@ public class WorldBorder {
|
|
|
|
@Override
|
|
public WorldBorder.BorderExtent update() {
|
|
+ if (world != null && this.getLerpRemainingTime() <= 0L) new io.papermc.paper.event.world.border.WorldBorderBoundsChangeFinishEvent(world.getWorld(), world.getWorld().getWorldBorder(), this.from, this.to, this.lerpDuration).callEvent(); // Paper - Add worldborder events
|
|
return (WorldBorder.BorderExtent) (this.getLerpRemainingTime() <= 0L ? WorldBorder.this.new StaticBorderExtent(this.to) : this);
|
|
}
|
|
|