geforkt von Mirrors/Paper
00be0b7b30
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: d25437bc Update to Minecraft 1.18-pre8 CraftBukkit Changes: 5a39a236 Update to Minecraft 1.18-pre8 Spigot Changes: 7840c2af Update to Minecraft 1.18-pre8
40 Zeilen
2.4 KiB
Diff
40 Zeilen
2.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
|
Date: Sat, 22 Aug 2020 23:36:21 +0200
|
|
Subject: [PATCH] Fix SpawnChangeEvent not firing for all use-cases
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
index cda574e825164587bd126029d5b556c049c18015..01b4bd2176b751f895e39002f105a171a32d65af 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
@@ -1689,6 +1689,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
|
//ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(new BlockPosition(this.worldData.a(), 0, this.worldData.c()));
|
|
|
|
this.levelData.setSpawn(pos, angle);
|
|
+ new org.bukkit.event.world.SpawnChangeEvent(getWorld(), MCUtil.toLocation(this, prevSpawn)).callEvent(); // Paper
|
|
if (this.keepSpawnInMemory) {
|
|
// if this keepSpawnInMemory is false a plugin has already removed our tickets, do not re-add
|
|
this.removeTicketsForSpawn(this.paperConfig.keepLoadedRange, prevSpawn);
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
index 5bf060d5b4a22d0fea0c70513d9b0914614e5bbb..9e155f0a76014e84106d9e322016d36a2254f62a 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
@@ -245,11 +245,13 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
|
public boolean setSpawnLocation(int x, int y, int z, float angle) {
|
|
try {
|
|
Location previousLocation = this.getSpawnLocation();
|
|
- world.levelData.setSpawn(new BlockPos(x, y, z), angle);
|
|
+ world.setDefaultSpawnPos(new BlockPos(x, y, z), angle); // Paper - use WorldServer#setSpawn
|
|
|
|
+ // Paper start - move to nms.World
|
|
// Notify anyone who's listening.
|
|
- SpawnChangeEvent event = new SpawnChangeEvent(this, previousLocation);
|
|
- this.server.getPluginManager().callEvent(event);
|
|
+ // SpawnChangeEvent event = new SpawnChangeEvent(this, previousLocation);
|
|
+ // server.getPluginManager().callEvent(event);
|
|
+ // Paper end
|
|
|
|
return true;
|
|
} catch (Exception e) {
|