minecraft-src/net/minecraft/stats/StatFormatter.java
2025-07-04 02:00:41 +03:00

45 lines
1.3 KiB
Java

package net.minecraft.stats;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.util.Locale;
import net.minecraft.Util;
/**
* A formatter for a {@linkplain Stat statistic}'s corresponding count.
*/
public interface StatFormatter {
DecimalFormat DECIMAL_FORMAT = Util.make(
new DecimalFormat("########0.00"), decimalFormat -> decimalFormat.setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.ROOT))
);
StatFormatter DEFAULT = NumberFormat.getIntegerInstance(Locale.US)::format;
StatFormatter DIVIDE_BY_TEN = i -> DECIMAL_FORMAT.format(i * 0.1);
StatFormatter DISTANCE = i -> {
double d = i / 100.0;
double e = d / 1000.0;
if (e > 0.5) {
return DECIMAL_FORMAT.format(e) + " km";
} else {
return d > 0.5 ? DECIMAL_FORMAT.format(d) + " m" : i + " cm";
}
};
StatFormatter TIME = i -> {
double d = i / 20.0;
double e = d / 60.0;
double f = e / 60.0;
double g = f / 24.0;
double h = g / 365.0;
if (h > 0.5) {
return DECIMAL_FORMAT.format(h) + " y";
} else if (g > 0.5) {
return DECIMAL_FORMAT.format(g) + " d";
} else if (f > 0.5) {
return DECIMAL_FORMAT.format(f) + " h";
} else {
return e > 0.5 ? DECIMAL_FORMAT.format(e) + " min" : d + " s";
}
};
String format(int i);
}