Статистика на сервере

Версия Minecraft
1.7.10
API
Forge
929
30
66
Где достать статистку игрока на сервере?
 
Решение
Написал свой способ получения статов, если кому нужно
Java:
@UtilityClass
public class StatManager {

    private NumberFormat numberFormat;
    private DecimalFormat decimalFormat;
    private List<String> timeStats, distanceStats, damageStats;

    public String getStatById(EntityPlayerMP player, int statId){
        StatBase statBase = (StatBase) StatList.generalStats.get(statId);
        if(statBase == null) return null;
        return format(statBase, player.func_147099_x().writeStat(statBase));
    }

    public String format(StatBase stat, int value){
        if(decimalFormat == null)
            decimalFormat = new DecimalFormat("########0.00");
        if(timeStats.contains(stat.statId)){
            double d0 = (double)value /...
929
30
66
Написал свой способ получения статов, если кому нужно
Java:
@UtilityClass
public class StatManager {

    private NumberFormat numberFormat;
    private DecimalFormat decimalFormat;
    private List<String> timeStats, distanceStats, damageStats;

    public String getStatById(EntityPlayerMP player, int statId){
        StatBase statBase = (StatBase) StatList.generalStats.get(statId);
        if(statBase == null) return null;
        return format(statBase, player.func_147099_x().writeStat(statBase));
    }

    public String format(StatBase stat, int value){
        if(decimalFormat == null)
            decimalFormat = new DecimalFormat("########0.00");
        if(timeStats.contains(stat.statId)){
            double d0 = (double)value / 20.0D;
            double d1 = d0 / 60.0D;
            double d2 = d1 / 60.0D;
            double d3 = d2 / 24.0D;
            double d4 = d3 / 365.0D;
            return d4 > 0.5D ? decimalFormat.format(d4) + " y" : (d3 > 0.5D ? decimalFormat.format(d3) + " d" : (d2 > 0.5D ? decimalFormat.format(d2) + " h" : (d1 > 0.5D ? decimalFormat.format(d1) + " m" : d0 + " s")));
        } else if(distanceStats.contains(stat.statId)){
            double d0 = (double)value / 100.0D;
            double d1 = d0 / 1000.0D;
            return d1 > 0.5D ? decimalFormat.format(d1) + " km" : (d0 > 0.5D ? decimalFormat.format(d0) + " m" : value + " cm");
        } else if(damageStats.contains(stat.statId)){
            return decimalFormat.format((double)value * 0.1D);
        } else {
            if(numberFormat == null)
                numberFormat = NumberFormat.getIntegerInstance(Locale.US);
            return numberFormat.format((long)value);
        }
    }

    static {
        timeStats = Lists.newArrayList();
        timeStats.add("stat.playOneMinute");

        distanceStats = Lists.newArrayList();
        distanceStats.add("stat.walkOneCm");
        distanceStats.add("stat.swimOneCm");
        distanceStats.add("stat.fallOneCm");
        distanceStats.add("stat.climbOneCm");
        distanceStats.add("stat.flyOneCm");
        distanceStats.add("stat.diveOneCm");
        distanceStats.add("stat.minecartOneCm");
        distanceStats.add("stat.boatOneCm");
        distanceStats.add("stat.pigOneCm");
        distanceStats.add("stat.horseOneCm");

        damageStats = Lists.newArrayList();
        damageStats.add("stat.damageDealt");
        damageStats.add("stat.damageTaken");
    }
}
 
Последнее редактирование:
Сверху