geforkt von Mirrors/Paper
262c08f64f
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 CraftBukkit Changes: 2ed3e3e6e SPIGOT-7210: Fix structures in custom worlds 585ab5ba1 SPIGOT-7207: WorldCreator creates world as super flat even when normal is specified
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 5e1448c900b8569344f5c7d219c0d7ce92ccd5b4..307c451c7fb8e783440f805bf2623ba7fa8c300a 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
|
@@ -533,8 +533,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
|
|
@@ -947,8 +947,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;
|
|
@@ -1014,14 +1014,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 274c8eb1f76fb7cb8a16b438e7e1b14804f3dc51..b6218626bad7f8ddfba91b216ac1e10647f04df5 100644
|
|
--- a/src/main/java/net/minecraft/world/level/storage/PrimaryLevelData.java
|
|
+++ b/src/main/java/net/minecraft/world/level/storage/PrimaryLevelData.java
|
|
@@ -359,6 +359,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;
|
|
@@ -366,7 +371,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;
|
|
@@ -393,6 +398,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;
|
|
@@ -400,7 +411,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 efc2fa39175d6981ebbc5b204baeef4298eb0e5c..88e04599e4f4718f4e7dc8b0e49c52e6714fad1d 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
@@ -1183,7 +1183,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)
|
|
}
|
|
@@ -1205,7 +1205,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)
|
|
}
|