From a24a58dfaba6882afd62ff0aff5e7fa1f38f163a Mon Sep 17 00:00:00 2001 From: The456gamer 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 --- .../stats/ServerStatsCounter.java.patch | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/paper-server/patches/sources/net/minecraft/stats/ServerStatsCounter.java.patch b/paper-server/patches/sources/net/minecraft/stats/ServerStatsCounter.java.patch index 88534eabcc..f82072300e 100644 --- a/paper-server/patches/sources/net/minecraft/stats/ServerStatsCounter.java.patch +++ b/paper-server/patches/sources/net/minecraft/stats/ServerStatsCounter.java.patch @@ -5,21 +5,22 @@ package net.minecraft.stats; import com.google.common.collect.Maps; -@@ -47,6 +48,13 @@ - public ServerStatsCounter(MinecraftServer server, File file) { - this.server = server; - this.file = file; +@@ -57,9 +58,22 @@ + } + } + ++ // 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 entry : org.spigotmc.SpigotConfig.forcedStats.entrySet() ) + { -+ Stat wrapper = Stats.CUSTOM.get( entry.getKey() ); ++ Stat wrapper = Stats.CUSTOM.get(java.util.Objects.requireNonNull(BuiltInRegistries.CUSTOM_STAT.getValue(entry.getKey()))); // Paper - ensured by SpigotConfig#stats + this.stats.put( wrapper, entry.getValue().intValue() ); + } + // Spigot end - if (file.isFile()) { - try { - this.parseLocal(server.getFixerUpper(), FileUtils.readFileToString(file)); -@@ -60,6 +68,7 @@ ++ // Paper end - Moved after stat fetching for player state file } public void save() { @@ -27,15 +28,16 @@ try { FileUtils.writeStringToFile(this.file, this.toJson()); } catch (IOException ioexception) { -@@ -70,6 +79,7 @@ +@@ -70,6 +84,8 @@ @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); } -@@ -158,13 +168,12 @@ +@@ -158,13 +174,12 @@ } private Optional> getStat(StatType type, String id) {