From 4e6febc78313c1e5344d05b05d0931df148f6c4f Mon Sep 17 00:00:00 2001 From: Thinkofdeath Date: Tue, 7 Jan 2014 15:56:26 +0000 Subject: [PATCH] Allow statistics to be disabled/forced diff --git a/src/main/java/net/minecraft/server/ServerStatisticManager.java b/src/main/java/net/minecraft/server/ServerStatisticManager.java index 4561825..ff35b43 100644 --- a/src/main/java/net/minecraft/server/ServerStatisticManager.java +++ b/src/main/java/net/minecraft/server/ServerStatisticManager.java @@ -31,6 +31,14 @@ public class ServerStatisticManager extends StatisticManager { public ServerStatisticManager(MinecraftServer minecraftserver, File file) { this.c = minecraftserver; this.d = file; + // Spigot start + for ( String name : org.spigotmc.SpigotConfig.forcedStats.keySet() ) + { + StatisticWrapper wrapper = new StatisticWrapper(); + wrapper.a( org.spigotmc.SpigotConfig.forcedStats.get( name ) ); + a.put( StatisticList.getStatistic( name ), wrapper ); + } + // Spigot end } public void a() { @@ -48,6 +56,7 @@ public class ServerStatisticManager extends StatisticManager { } public void b() { + if ( org.spigotmc.SpigotConfig.disableStatSaving ) return; // Spigot try { FileUtils.writeStringToFile(this.d, a(this.a)); } catch (IOException ioexception) { @@ -57,6 +66,7 @@ public class ServerStatisticManager extends StatisticManager { } public void setStatistic(EntityHuman entityhuman, Statistic statistic, int i) { + if ( org.spigotmc.SpigotConfig.disableStatSaving ) return; // Spigot int j = statistic.d() ? this.getStatisticValue(statistic) : 0; super.setStatistic(entityhuman, statistic, i); @@ -210,4 +220,4 @@ public class ServerStatisticManager extends StatisticManager { return this.g; } -} +} \ No newline at end of file diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java index f3187f8..9566cfa 100644 --- a/src/main/java/org/spigotmc/SpigotConfig.java +++ b/src/main/java/org/spigotmc/SpigotConfig.java @@ -10,10 +10,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.logging.Level; +import gnu.trove.map.hash.TObjectIntHashMap; import net.minecraft.server.MinecraftServer; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; +import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; @@ -232,4 +234,31 @@ public class SpigotConfig private static void lateBind() { lateBind = getBoolean( "settings.late-bind", false ); } + + public static boolean disableStatSaving; + public static TObjectIntHashMap forcedStats = new TObjectIntHashMap(); + private static void stats() + { + disableStatSaving = getBoolean( "stats.disable-saving", false ); + + if ( !config.contains( "stats.forced-stats" ) ) { + config.createSection( "stats.forced-stats" ); + } + + ConfigurationSection section = config.getConfigurationSection( "stats.forced-stats" ); + for ( String name : section.getKeys( true ) ) + { + if ( section.isInt( name ) ) + { + forcedStats.put( name, section.getInt( name ) ); + } + } + + if ( disableStatSaving && section.getInt( "achievement.openInventory", 0 ) < 1 ) + { + Bukkit.getLogger().warning( "*** WARNING *** stats.disable-saving is true but stats.forced-stats.achievement.openInventory" + + " isn't set to 1. Disabling stat saving without forcing the achievement may cause it to get stuck on the player's " + + "screen." ); + } + } } -- 2.1.0