mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 07:20:24 +01:00
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
This commit is contained in:
parent
bf607b1e23
commit
a24a58dfab
1 changed files with 13 additions and 11 deletions
|
@ -5,21 +5,22 @@
|
||||||
package net.minecraft.stats;
|
package net.minecraft.stats;
|
||||||
|
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
@@ -47,6 +48,13 @@
|
@@ -57,9 +58,22 @@
|
||||||
public ServerStatsCounter(MinecraftServer server, File file) {
|
}
|
||||||
this.server = server;
|
}
|
||||||
this.file = file;
|
|
||||||
|
+ // 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
|
+ // Spigot start
|
||||||
+ for ( Map.Entry<ResourceLocation, Integer> entry : org.spigotmc.SpigotConfig.forcedStats.entrySet() )
|
+ for ( Map.Entry<ResourceLocation, Integer> entry : org.spigotmc.SpigotConfig.forcedStats.entrySet() )
|
||||||
+ {
|
+ {
|
||||||
+ Stat<ResourceLocation> wrapper = Stats.CUSTOM.get( entry.getKey() );
|
+ Stat<ResourceLocation> 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() );
|
+ this.stats.put( wrapper, entry.getValue().intValue() );
|
||||||
+ }
|
+ }
|
||||||
+ // Spigot end
|
+ // Spigot end
|
||||||
if (file.isFile()) {
|
+ // Paper end - Moved after stat fetching for player state file
|
||||||
try {
|
|
||||||
this.parseLocal(server.getFixerUpper(), FileUtils.readFileToString(file));
|
|
||||||
@@ -60,6 +68,7 @@
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void save() {
|
public void save() {
|
||||||
|
@ -27,15 +28,16 @@
|
||||||
try {
|
try {
|
||||||
FileUtils.writeStringToFile(this.file, this.toJson());
|
FileUtils.writeStringToFile(this.file, this.toJson());
|
||||||
} catch (IOException ioexception) {
|
} catch (IOException ioexception) {
|
||||||
@@ -70,6 +79,7 @@
|
@@ -70,6 +84,8 @@
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setValue(Player player, Stat<?> stat, int value) {
|
public void setValue(Player player, Stat<?> stat, int value) {
|
||||||
+ if ( org.spigotmc.SpigotConfig.disableStatSaving ) return; // Spigot
|
+ 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);
|
super.setValue(player, stat, value);
|
||||||
this.dirty.add(stat);
|
this.dirty.add(stat);
|
||||||
}
|
}
|
||||||
@@ -158,13 +168,12 @@
|
@@ -158,13 +174,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T> Optional<Stat<T>> getStat(StatType<T> type, String id) {
|
private <T> Optional<Stat<T>> getStat(StatType<T> type, String id) {
|
||||||
|
|
Loading…
Reference in a new issue