aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0890-Fix-spigot-s-Forced-Stats.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0890-Fix-spigot-s-Forced-Stats.patch')
-rw-r--r--patches/server/0890-Fix-spigot-s-Forced-Stats.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/patches/server/0890-Fix-spigot-s-Forced-Stats.patch b/patches/server/0890-Fix-spigot-s-Forced-Stats.patch
new file mode 100644
index 0000000000..554f1f8844
--- /dev/null
+++ b/patches/server/0890-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);
+ }