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

Paper Changes:
8ce3dd5f [CI-SKIP] Fix Mojang API Brigadier dep - THIS IS NOT A NEW BUILD
00d760a5 Fix build due to spigot changing the build timestamp process
842e040c Updated Upstream (Bukkit/CraftBukkit/Spigot)
c03260a2 Add getter and setter for villager's numberOfRestocksToday (#3231)
fe366fbe null check tracker for entity metadata update - Fixes #3070
fdf41b74 Implement Brigadier Mojang API
e0ea2e0e Entity Activation Range 2.0! Major improvements to restoring behavior
10396d28 Fix Tracking Range mismatch on Vehicle/Passenger checks
2020-04-28 20:14:57 -05:00

55 lines
2.4 KiB
Diff

From 3d083e02e266b26cc31944bf3df22bc1823e4b8d 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 28c8fd3d4..0c4aae6ce 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -1427,8 +1427,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 83bd0a95d..05d3a0dcc 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -383,12 +383,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