73bd35d076
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: 218294b1 PR-743: Support setting individual Wither head targets CraftBukkit Changes: d48f2d1a PR-1047: Support setting individual Wither head targets 518f1bee SPIGOT-6948: Motion from Explosion after Respawn f3c7a6ac SPIGOT-7019: Add yaw in World#getSpawnLocation
119 Zeilen
6.7 KiB
Diff
119 Zeilen
6.7 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Wed, 2 Dec 2020 18:23:26 -0800
|
|
Subject: [PATCH] Add cause to Weather/ThunderChangeEvents
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
index a1df04f14fb149315e73307a81514b805ef3cb0d..958949d972fd7b8ae61041bfe15c21d4d19d9573 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
@@ -474,8 +474,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
|
this.serverLevelData.setClearWeatherTime(clearDuration);
|
|
this.serverLevelData.setRainTime(rainDuration);
|
|
this.serverLevelData.setThunderTime(rainDuration);
|
|
- this.serverLevelData.setRaining(raining);
|
|
- this.serverLevelData.setThundering(thundering);
|
|
+ this.serverLevelData.setRaining(raining, org.bukkit.event.weather.WeatherChangeEvent.Cause.COMMAND); // Paper
|
|
+ this.serverLevelData.setThundering(thundering, org.bukkit.event.weather.ThunderChangeEvent.Cause.COMMAND); // Paper
|
|
}
|
|
|
|
@Override
|
|
@@ -865,8 +865,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
|
this.serverLevelData.setThunderTime(j);
|
|
this.serverLevelData.setRainTime(k);
|
|
this.serverLevelData.setClearWeatherTime(i);
|
|
- this.serverLevelData.setThundering(flag1);
|
|
- this.serverLevelData.setRaining(flag2);
|
|
+ this.serverLevelData.setThundering(flag1, org.bukkit.event.weather.ThunderChangeEvent.Cause.NATURAL); // Paper
|
|
+ this.serverLevelData.setRaining(flag2, org.bukkit.event.weather.WeatherChangeEvent.Cause.NATURAL); // Paper
|
|
}
|
|
|
|
this.oThunderLevel = this.thunderLevel;
|
|
@@ -932,14 +932,14 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
|
|
|
private void resetWeatherCycle() {
|
|
// CraftBukkit start
|
|
- this.serverLevelData.setRaining(false);
|
|
+ this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - when passing the night
|
|
// If we stop due to everyone sleeping we should reset the weather duration to some other random value.
|
|
// Not that everyone ever manages to get the whole server to sleep at the same time....
|
|
if (!this.serverLevelData.isRaining()) {
|
|
this.serverLevelData.setRainTime(0);
|
|
}
|
|
// CraftBukkit end
|
|
- this.serverLevelData.setThundering(false);
|
|
+ this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - when passing the night
|
|
// CraftBukkit start
|
|
// If we stop due to everyone sleeping we should reset the weather duration to some other random value.
|
|
// Not that everyone ever manages to get the whole server to sleep at the same time....
|
|
diff --git a/src/main/java/net/minecraft/world/level/storage/PrimaryLevelData.java b/src/main/java/net/minecraft/world/level/storage/PrimaryLevelData.java
|
|
index 1bd338c7860adf3b846cd6caa33312b3269ac3ef..95635cc7367b757d149bb2c81326a041f84782f0 100644
|
|
--- a/src/main/java/net/minecraft/world/level/storage/PrimaryLevelData.java
|
|
+++ b/src/main/java/net/minecraft/world/level/storage/PrimaryLevelData.java
|
|
@@ -346,6 +346,11 @@ public class PrimaryLevelData implements ServerLevelData, WorldData {
|
|
|
|
@Override
|
|
public void setThundering(boolean thundering) {
|
|
+ // Paper start
|
|
+ this.setThundering(thundering, org.bukkit.event.weather.ThunderChangeEvent.Cause.UNKNOWN);
|
|
+ }
|
|
+ public void setThundering(boolean thundering, org.bukkit.event.weather.ThunderChangeEvent.Cause cause) {
|
|
+ // Paper end
|
|
// CraftBukkit start
|
|
if (this.thundering == thundering) {
|
|
return;
|
|
@@ -353,7 +358,7 @@ public class PrimaryLevelData implements ServerLevelData, WorldData {
|
|
|
|
org.bukkit.World world = Bukkit.getWorld(this.getLevelName());
|
|
if (world != null) {
|
|
- ThunderChangeEvent thunder = new ThunderChangeEvent(world, thundering);
|
|
+ ThunderChangeEvent thunder = new ThunderChangeEvent(world, thundering, cause); // Paper
|
|
Bukkit.getServer().getPluginManager().callEvent(thunder);
|
|
if (thunder.isCancelled()) {
|
|
return;
|
|
@@ -380,6 +385,12 @@ public class PrimaryLevelData implements ServerLevelData, WorldData {
|
|
|
|
@Override
|
|
public void setRaining(boolean raining) {
|
|
+ // Paper start
|
|
+ this.setRaining(raining, org.bukkit.event.weather.WeatherChangeEvent.Cause.UNKNOWN);
|
|
+ }
|
|
+
|
|
+ public void setRaining(boolean raining, org.bukkit.event.weather.WeatherChangeEvent.Cause cause) {
|
|
+ // Paper end
|
|
// CraftBukkit start
|
|
if (this.raining == raining) {
|
|
return;
|
|
@@ -387,7 +398,7 @@ public class PrimaryLevelData implements ServerLevelData, WorldData {
|
|
|
|
org.bukkit.World world = Bukkit.getWorld(this.getLevelName());
|
|
if (world != null) {
|
|
- WeatherChangeEvent weather = new WeatherChangeEvent(world, raining);
|
|
+ WeatherChangeEvent weather = new WeatherChangeEvent(world, raining, cause); // Paper
|
|
Bukkit.getServer().getPluginManager().callEvent(weather);
|
|
if (weather.isCancelled()) {
|
|
return;
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
index f759c29be097095d757120528edb72f91ed7f054..83e54e62d54e140cef5234396f40796b12ac8355 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
@@ -1189,7 +1189,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
|
|
|
@Override
|
|
public void setStorm(boolean hasStorm) {
|
|
- world.levelData.setRaining(hasStorm);
|
|
+ world.serverLevelData.setRaining(hasStorm, org.bukkit.event.weather.WeatherChangeEvent.Cause.PLUGIN); // Paper
|
|
this.setWeatherDuration(0); // Reset weather duration (legacy behaviour)
|
|
this.setClearWeatherDuration(0); // Reset clear weather duration (reset "/weather clear" commands)
|
|
}
|
|
@@ -1211,7 +1211,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
|
|
|
@Override
|
|
public void setThundering(boolean thundering) {
|
|
- world.serverLevelData.setThundering(thundering);
|
|
+ world.serverLevelData.setThundering(thundering, org.bukkit.event.weather.ThunderChangeEvent.Cause.PLUGIN); // Paper
|
|
this.setThunderDuration(0); // Reset weather duration (legacy behaviour)
|
|
this.setClearWeatherDuration(0); // Reset clear weather duration (reset "/weather clear" commands)
|
|
}
|