From e551815a914ba37fcc2f574f3972912e1eb7d9e6 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 7451b7fc4b..c1d23dc324 100644 --- a/src/main/java/net/minecraft/server/World.java +++ b/src/main/java/net/minecraft/server/World.java @@ -1391,8 +1391,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 0cd9c98eb8..05f0025bb9 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -379,12 +379,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