Files
Purpur/patches/server/0075-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch
William Blake Galbreath 16eea718fa Updated Upstream (Paper)
Upstream has released updates that appears to apply and compile correctly

Paper Changes:
b6cf80ee Preload important classes such as Logger and JLine
ea1a909c Fix netty version to 50 and restore epoll native support
10502558 Workaround for some hacky environments that mess up things
8b2a437b Fix plugins calling getChunkAtAsync asynchronously
c8055836 Update Netty to 4.1.51
64cfcf3e Optimize sending packets to nearby locations (sounds/effects)
2020-05-24 18:26:13 -05:00

55 lines
2.4 KiB
Diff

From 6704cc0493c13354f0705204c67d2ba951253d6b Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Sat, 19 Oct 2019 01:42:50 -0500
Subject: [PATCH] Fix SpawnChangeEvent not firing for all use-cases
---
src/main/java/net/minecraft/server/World.java | 3 +++
src/main/java/org/bukkit/craftbukkit/CraftWorld.java | 12 ++++++++----
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index c3a862fea..ed7b85dc2 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1437,8 +1437,11 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
return blockposition;
}
+ public void setSpawn(BlockPosition blockposition) { v(blockposition); } // Purpur - OBFHELPER
public void a_(BlockPosition blockposition) {
+ BlockPosition prevPos = getSpawn(); // Purpur
this.worldData.setSpawn(blockposition);
+ new org.bukkit.event.world.SpawnChangeEvent(world, MCUtil.toLocation(this, prevPos)).callEvent(); // Purpur
}
public boolean a(EntityHuman entityhuman, BlockPosition blockposition) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 414fc4baf..e54cff571 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -384,12 +384,16 @@ public class CraftWorld implements World {
@Override
public boolean setSpawnLocation(int x, int y, int z) {
try {
- Location previousLocation = getSpawnLocation();
- world.worldData.setSpawn(new BlockPosition(x, y, z));
+ // Purpur start - move to World#setSpawn()
+ //Location previousLocation = getSpawnLocation();
+ //world.worldData.setSpawn(new BlockPosition(x, y, z));
// Notify anyone who's listening.
- SpawnChangeEvent event = new SpawnChangeEvent(this, previousLocation);
- server.getPluginManager().callEvent(event);
+ //SpawnChangeEvent event = new SpawnChangeEvent(this, previousLocation);
+ //server.getPluginManager().callEvent(event);
+
+ world.setSpawn(new BlockPosition(x, y, z));
+ // Purpur end
return true;
} catch (Exception e) {
--
2.24.0