From 6704cc0493c13354f0705204c67d2ba951253d6b 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 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