From 69c83e2768c89ce7106a9e7f57c3bf363e737310 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 19 Oct 2019 01:44:16 -0500 Subject: [PATCH] Fix PaperMC/Paper#1913 --- ...geEvent-not-firing-for-all-use-cases.patch | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 patches/server/0075-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch diff --git a/patches/server/0075-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch b/patches/server/0075-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch new file mode 100644 index 000000000..d6c348bcc --- /dev/null +++ b/patches/server/0075-Fix-SpawnChangeEvent-not-firing-for-all-use-cases.patch @@ -0,0 +1,54 @@ +From 53f3da80d0f78b44c813c595464893c59866365b 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 8d3e45dc0c..38bab59e76 100644 +--- a/src/main/java/net/minecraft/server/World.java ++++ b/src/main/java/net/minecraft/server/World.java +@@ -1458,8 +1458,11 @@ public abstract class World implements IIBlockAccess, GeneratorAccess, AutoClose + 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 112ad300d3..b8d45aa3bf 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.23.0.rc1 +