Clear class
Пакет: com.hypixel.hytale.server.core.command.commands.debug
Файл: com/hypixel/hytale/server/core/command/commands/debug/PingCommand.java
extends: AbstractTargetPlayerCommand
Поля (1)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private static final Message |
MESSAGE_COMMANDS_PING_HISTORY_CLEARED |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
protected void |
executeprotected void execute(@Nonnull CommandContext var1,
@Nullable Ref<EntityStore> var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull PlayerRef var4,
@Nonnull World var5,
@Nonnull Store<EntityStore> var6) |
abstract |
|
super super("clear", "server.commands.ping.clear.desc") |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.command.commands.debug;
class="kw">import com.hypixel.hytale.common.util.FormatUtil;
class="kw">import com.hypixel.hytale.common.util.StringUtil;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.metrics.metric.HistoricMetric;
class="kw">import com.hypixel.hytale.protocol.packets.connection.PongType;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.DefaultArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.FlagArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.io.PacketHandler;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class PingCommand class="kw">extends AbstractTargetPlayerCommand {
@Nonnull
class="kw">private class="kw">final FlagArg detailFlag = this.withFlagArg("detail", "server.commands.ping.detail.desc");
class="kw">public PingCommand() {
super("ping", "server.commands.ping.desc");
this.setPermissionGroups("hytale:Adventurer");
this.addSubCommand(new PingCommand.Clear());
this.addSubCommand(new PingCommand.Graph());
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1,
@Nullable Ref<EntityStore> var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull PlayerRef var4,
@Nonnull World var5,
@Nonnull Store<EntityStore> var6
) {
if (this.detailFlag.provided(var1)) {
this.sendDetailedMessage(var1, var4);
} else {
this.sendShortMessage(var1, var4);
}
}
class="kw">private void sendDetailedMessage(@Nonnull CommandContext var1, @Nonnull PlayerRef var2) {
Message var3 = Message.join(Message.raw(var2.getUsername()), Message.raw(" ping:"));
for (PongType var7 : PongType.values()) {
PacketHandler.PingInfo var8 = var2.getPacketHandler().getPingInfo(var7);
HistoricMetric var9 = var8.getPingMetricSet();
long[] var10 = var9.getPeriodsNanos();
var3.insert(Message.raw("\n" + var7.name() + ":\n"));
for (int var11 = 0; var11 < var10.length; var11++) {
String var12 = FormatUtil.timeUnitToString(var10[var11], TimeUnit.NANOSECONDS, true);
double var13 = var9.getAverage(var11);
long var15 = var9.calculateMax(var11);
long var17 = var9.calculateMin(var11);
String var19 = FormatUtil.simpleTimeUnitFormat(var17, var13, var15, PacketHandler.PingInfo.TIME_UNIT, TimeUnit.MILLISECONDS, 3);
var3.insert(Message.raw(" (" + var12 + "): " + " ".repeat(Math.max(0, 24 - var19.length())) + var19 + "\n"));
}
var3.insert(Message.raw(" Queue: " + FormatUtil.simpleFormat(var8.getPacketQueueMetric())));
}
var1.sendMessage(var3);
}
class="kw">private void sendShortMessage(@Nonnull CommandContext var1, @Nonnull PlayerRef var2) {
String var3 = FormatUtil.timeUnitToString(1L, TimeUnit.SECONDS, true);
Message var4 = Message.join(Message.raw(var2.getUsername()), Message.raw(" ping (" + var3 + "):"));
for (PongType var8 : PongType.values()) {
HistoricMetric var9 = var2.getPacketHandler().getPingInfo(var8).getPingMetricSet();
double var10 = var9.getAverage(0);
long var12 = var9.calculateMax(0);
long var14 = var9.calculateMin(0);
String var16 = FormatUtil.simpleTimeUnitFormat(var14, var10, var12, PacketHandler.PingInfo.TIME_UNIT, TimeUnit.MILLISECONDS, 3);
var4.insert(Message.raw("\n" + var8.name() + ":" + " ".repeat(Math.max(0, 24 - var16.length())) + var16));
}
var1.sendMessage(var4);
}
class="kw">private class="kw">static class Clear class="kw">extends AbstractTargetPlayerCommand {
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_PING_HISTORY_CLEARED = Message.translation("server.commands.ping.historyCleared");
class="kw">public Clear() {
super("clear", "server.commands.ping.clear.desc");
this.setPermissionGroups("hytale:Adventurer");
this.addAliases("reset");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1,
@Nullable Ref<EntityStore> var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull PlayerRef var4,
@Nonnull World var5,
@Nonnull Store<EntityStore> var6
) {
for (PongType var10 : PongType.values()) {
var4.getPacketHandler().getPingInfo(var10).clear();
}
var1.sendMessage(MESSAGE_COMMANDS_PING_HISTORY_CLEARED);
}
}
class="kw">private class="kw">static class Graph class="kw">extends AbstractTargetPlayerCommand {
@Nonnull
class="kw">private class="kw">final DefaultArg<Integer> widthArg = this.withDefaultArg(
"width", "server.commands.ping.graph.width.desc", ArgTypes.INTEGER, 100, "server.commands.ping.graph.width.class="kw">default"
);
@Nonnull
class="kw">private class="kw">final DefaultArg<Integer> heightArg = this.withDefaultArg(
"height", "server.commands.ping.graph.height.desc", ArgTypes.INTEGER, 10, "server.commands.ping.graph.height.class="kw">default"
);
class="kw">public Graph() {
super("graph", "server.commands.ping.graph.desc");
this.setPermissionGroups("hytale:Adventurer");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1,
@Nullable Ref<EntityStore> var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull PlayerRef var4,
@Nonnull World var5,
@Nonnull Store<EntityStore> var6
) {
int var7 = this.widthArg.get(var1);
int var8 = this.heightArg.get(var1);
long var9 = System.nanoTime();
Message var11 = Message.empty();
for (PongType var15 : PongType.values()) {
var11.insert(var15 + ":\n");
PacketHandler.PingInfo var16 = var4.getPacketHandler().getPingInfo(var15);
HistoricMetric var17 = var16.getPingMetricSet();
long[] var18 = var17.getPeriodsNanos();
for (int var19 = 0; var19 < var18.length; var19++) {
long var20 = var18[var19];
long var22 = var17.calculateMax(var19);
long var24 = var17.calculateMin(var19);
long[] var26 = var17.getTimestamps(var19);
long[] var27 = var17.getValues(var19);
String var28 = FormatUtil.timeUnitToString(var20, TimeUnit.NANOSECONDS, true);
var11.insert(Message.translation("server.commands.ping.graph.period").param("time", var28));
StringBuilder var29 = new StringBuilder();
StringUtil.generateGraph(
var29,
var7,
var8,
var9 - var20,
var9,
var24,
var22,
var0 -> FormatUtil.timeUnitToString(MathUtil.fastCeil(var0), PacketHandler.PingInfo.TIME_UNIT),
var26.length,
var1x -> var26[var1x],
var1x -> var27[var1x]
);
var11.insert(var29.toString());
}
}
var1.sendMessage(var11);
}
}
}