diff options
Diffstat (limited to 'patches/server/0888-Fix-spigot-s-Forced-Stats.patch')
-rw-r--r-- | patches/server/0888-Fix-spigot-s-Forced-Stats.patch | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/patches/server/0888-Fix-spigot-s-Forced-Stats.patch b/patches/server/0888-Fix-spigot-s-Forced-Stats.patch new file mode 100644 index 0000000000..554f1f8844 --- /dev/null +++ b/patches/server/0888-Fix-spigot-s-Forced-Stats.patch @@ -0,0 +1,54 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: The456gamer <[email protected]> +Date: Mon, 28 Aug 2023 01:32:39 +0100 +Subject: [PATCH] Fix spigot's Forced-Stats + +moves the loading after vanilla loading, so it overrides the values. +disables saving any forced stats, so it stays at the same value (without enabling disableStatSaving) +fixes stat initialization to not cause a NullPointerException + +diff --git a/src/main/java/net/minecraft/stats/ServerStatsCounter.java b/src/main/java/net/minecraft/stats/ServerStatsCounter.java +index ec437644adff6a6ec1e3fe2dd3a6354edafde1db..fb7342f7a5008a283c3400c6313c637de8210dfa 100644 +--- a/src/main/java/net/minecraft/stats/ServerStatsCounter.java ++++ b/src/main/java/net/minecraft/stats/ServerStatsCounter.java +@@ -48,13 +48,6 @@ public class ServerStatsCounter extends StatsCounter { + public ServerStatsCounter(MinecraftServer server, File file) { + this.server = server; + this.file = file; +- // Spigot start +- for ( Map.Entry<ResourceLocation, Integer> entry : org.spigotmc.SpigotConfig.forcedStats.entrySet() ) +- { +- Stat<ResourceLocation> wrapper = Stats.CUSTOM.get( entry.getKey() ); +- this.stats.put( wrapper, entry.getValue().intValue() ); +- } +- // Spigot end + if (file.isFile()) { + try { + this.parseLocal(server.getFixerUpper(), FileUtils.readFileToString(file)); +@@ -65,6 +58,18 @@ public class ServerStatsCounter extends StatsCounter { + } + } + ++ // Paper start - Moved after stat fetching for player state file ++ // Moves the loading after vanilla loading, so it overrides the values. ++ // Disables saving any forced stats, so it stays at the same value (without enabling disableStatSaving) ++ // Fixes stat initialization to not cause a NullPointerException ++ // Spigot start ++ for ( Map.Entry<ResourceLocation, Integer> entry : org.spigotmc.SpigotConfig.forcedStats.entrySet() ) ++ { ++ Stat<ResourceLocation> wrapper = Stats.CUSTOM.get(java.util.Objects.requireNonNull(BuiltInRegistries.CUSTOM_STAT.get(entry.getKey()))); // Paper - ensured by SpigotConfig#stats ++ this.stats.put( wrapper, entry.getValue().intValue() ); ++ } ++ // Spigot end ++ // Paper end - Moved after stat fetching for player state file + } + + public void save() { +@@ -80,6 +85,7 @@ public class ServerStatsCounter extends StatsCounter { + @Override + public void setValue(Player player, Stat<?> stat, int value) { + if ( org.spigotmc.SpigotConfig.disableStatSaving ) return; // Spigot ++ if (stat.getType() == Stats.CUSTOM && stat.getValue() instanceof final ResourceLocation resourceLocation && org.spigotmc.SpigotConfig.forcedStats.get(resourceLocation) != null) return; // Paper - disable saving forced stats + super.setValue(player, stat, value); + this.dirty.add(stat); + } |