package net.minecraft.server;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;
import javax.swing.JComponent;
import javax.swing.Timer;
public class GuiStatsComponent extends JComponent {
private static final DecimalFormat a = (DecimalFormat) SystemUtils.a((Object) (new DecimalFormat("########0.000")), (decimalformat) -> {
decimalformat.setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.ROOT));
});
private final int[] b = new int[256];
private int c;
private final String[] d = new String[11];
private final MinecraftServer e;
private final Timer f;
public GuiStatsComponent(MinecraftServer minecraftserver) {
this.e = minecraftserver;
this.setPreferredSize(new Dimension(456, 246));
this.setMinimumSize(new Dimension(456, 246));
this.setMaximumSize(new Dimension(456, 246));
this.f = new Timer(500, (actionevent) -> {
this.b();
});
this.f.start();
this.setBackground(Color.BLACK);
}
private void b() {
long i = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
this.d[0] = "Memory use: " + i / 1024L / 1024L + " mb (" + Runtime.getRuntime().freeMemory() * 100L / Runtime.getRuntime().maxMemory() + "% free)";
this.d[1] = "Avg tick: " + GuiStatsComponent.a.format(this.a(this.e.f) * 1.0E-6D) + " ms";
this.b[this.c++ & 255] = (int) (i * 100L / Runtime.getRuntime().maxMemory());
this.repaint();
}
private double a(long[] along) {
long i = 0L;
long[] along1 = along;
int j = along.length;
for (int k = 0; k < j; ++k) {
long l = along1[k];
i += l;
}
return (double) i / (double) along.length;
}
public void paint(Graphics graphics) {
graphics.setColor(new Color(16777215));
graphics.fillRect(0, 0, 456, 246);
int i;
for (i = 0; i < 256; ++i) {
int j = this.b[i + this.c & 255];
graphics.setColor(new Color(j + 28 << 16));
graphics.fillRect(i, 100 - j, 1, j);
}
graphics.setColor(Color.BLACK);
for (i = 0; i < this.d.length; ++i) {
String s = this.d[i];
if (s != null) {
graphics.drawString(s, 32, 116 + i * 16);
}
}
}
public void a() {
this.f.stop();
}
}