update for 1.13 stats format

This commit is contained in:
Josh Holtrop 2018-09-05 15:33:22 -04:00
parent 494386fa8c
commit 31343d42d0

View File

@ -61,8 +61,10 @@ class GenStats
"Play Time" => {}, "Play Time" => {},
"Achievements" => {}, "Achievements" => {},
"Unexplored Biomes" => {}, "Unexplored Biomes" => {},
"Mob Kills" => {},
"Deaths" => {}, "Deaths" => {},
"Damage Dealt" => {},
"Damage Taken" => {},
"Mob Kills" => {},
"Killed" => {}, "Killed" => {},
"Killed By" => {}, "Killed By" => {},
"Items Broken" => {}, "Items Broken" => {},
@ -84,12 +86,14 @@ class GenStats
else else
$1 $1
end end
stats = JSON.load(File.read(stats_fname)) stats_file = JSON.load(File.read(stats_fname))
stats = stats_file["stats"] || {}
stats["minecraft:custom"] ||= {}
@all_stats["Play Time"][user_name] = @all_stats["Play Time"][user_name] =
begin begin
# stat is actually in ticks apparently # stat is actually in ticks apparently
minutes = stats["stat.playOneMinute"] / 20 / 60 minutes = (stats["minecraft:custom"]["minecraft:play_one_minute"] || 0) / 20 / 60
hours = (minutes / 60).floor hours = (minutes / 60).floor
minutes -= (hours * 60) minutes -= (hours * 60)
days = (hours / 24).floor days = (hours / 24).floor
@ -97,42 +101,46 @@ class GenStats
"#{days}d #{hours}h #{minutes}m" "#{days}d #{hours}h #{minutes}m"
end end
@all_stats["Achievements"][user_name] = # @all_stats["Achievements"][user_name] =
stats.find_all do |stat_name, stat_value| # stats.find_all do |stat_name, stat_value|
stat_name.start_with?("achievement.") and (stat_value.is_a?(Integer) or (stat_value.is_a?(Hash) and stat_value["value"] and stat_value["value"] > 0)) # stat_name.start_with?("achievement.") and (stat_value.is_a?(Integer) or (stat_value.is_a?(Hash) and stat_value["value"] and stat_value["value"] > 0))
end.size # end.size
@all_stats["Unexplored Biomes"][user_name] = # @all_stats["Unexplored Biomes"][user_name] =
if stats["achievement.exploreAllBiomes"] # if stats["achievement.exploreAllBiomes"]
explored_biomes = stats["achievement.exploreAllBiomes"]["progress"] # explored_biomes = stats["achievement.exploreAllBiomes"]["progress"]
unexplored_biomes = ADVENTURE_BIOMES - explored_biomes # unexplored_biomes = ADVENTURE_BIOMES - explored_biomes
@all_explored_biomes += explored_biomes # @all_explored_biomes += explored_biomes
unexplored_biomes.sort.join(", ") # unexplored_biomes.sort.join(", ")
end # end
@all_stats["Mob Kills"][user_name] = stats["stat.mobKills"] @all_stats["Deaths"][user_name] = stats["minecraft:custom"]["minecraft:deaths"] || 0
@all_stats["Deaths"][user_name] = stats["stat.deaths"] @all_stats["Damage Dealt"][user_name] = stats["minecraft:custom"]["minecraft:damage_dealt"] || 0
@all_stats["Damage Taken"][user_name] = stats["minecraft:custom"]["minecraft:damage_taken"] || 0
@all_stats["Mob Kills"][user_name] = stats["minecraft:custom"]["minecraft:mob_kills"] || 0
@all_stats["Killed"][user_name] = @all_stats["Killed"][user_name] =
stats.reduce({}) do |result, (stat_name, stat_value)| (stats["minecraft:killed"] || {}).reduce({}) do |result, (stat_name, stat_value)|
if stat_name =~ /^stat\.killEntity\.(\w+)$/ if stat_name =~ /^minecraft:(\w+)$/
result[$1] = stat_value result[$1] = stat_value
end end
result result
end end
@all_stats["Killed By"][user_name] = @all_stats["Killed By"][user_name] =
stats.reduce({}) do |result, (stat_name, stat_value)| (stats["minecraft:killed_by"] || {}).reduce({}) do |result, (stat_name, stat_value)|
if stat_name =~ /^stat\.entityKilledBy\.(\w+)$/ if stat_name =~ /^minecraft:(\w+)$/
result[$1] = stat_value result[$1] = stat_value
end end
result result
end end
@all_stats["Items Broken"][user_name] = @all_stats["Items Broken"][user_name] =
stats.reduce({}) do |result, (stat_name, stat_value)| (stats["minecraft:broken"] || {}).reduce({}) do |result, (stat_name, stat_value)|
if stat_name =~ /^stat\.breakItem\.minecraft\.(\w+)$/ if stat_name =~ /^minecraft:(\w+)$/
result[$1] = stat_value result[$1] = stat_value
end end
result result