From a7d8078de39790a06c8bce73b3da4f87a6bc0768 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath 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 7a7874c0a..726fcc7a1 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -1410,8 +1410,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 02060223f..9a2d0e22b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -380,12 +380,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