NetworkCommand class

Пакет: com.hypixel.hytale.server.core.command.commands.utility.net

Файл: com/hypixel/hytale/server/core/command/commands/utility/net/NetworkCommand.java

extends: AbstractCommandCollection

Поля (17)

МодификаторыТипИмя
private static final Message MESSAGE_COMMANDS_LATENCY_SIMULATION_RESET_SUCCESS
private static final Map<String, Map<NetworkChannel, QuicStreamPriority>> PRESETS
private final RequiredArg<NetworkChannel> channelArg
private final RequiredArg<Integer> delayArg
private final RequiredArg<String> presetArg
private final RequiredArg<Integer> priorityArg
StringBuilder var1
PacketHandler var2
ChannelConnection var5
QuicStreamPriority var6
QuicStreamPriority var6
int var7
String var7
NetworkChannel var7
Map var8
int var8
ChannelConnection var9

Методы (33)

МодификаторыВозвратСигнатура
DebugKnockbackCommand DebugKnockbackCommand()
public LatencySimulationCommandpublic LatencySimulationCommand()
Preset Preset()
Reset Reset()
Reset Reset()
ServerKnockbackCommand ServerKnockbackCommand()
Set Set()
Set Set()
public StreamPriorityCommandpublic StreamPriorityCommand()
private static void applyPrioritiesprivate static void applyPriorities(@Nonnull PlayerRef var0, @Nonnull Map<NetworkChannel, QuicStreamPriority> var1)
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)
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)
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)
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)
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)
protected void executeSyncprotected void executeSync(@Nonnull CommandContext var1)
protected void executeSyncprotected void executeSync(@Nonnull CommandContext var1)
for for(NetworkChannel var5 : NetworkChannel.VALUES)
private static String formatPrioritiesprivate static String formatPriorities(@Nonnull Map<NetworkChannel, QuicStreamPriority> var0)
if if(var6 != null)
if if(var8 == null)
if if(var8 >= 0 && var8 <= 127)
private static Map<NetworkChannel, QuicStreamPriority> priorityprivate static Map<NetworkChannel, QuicStreamPriority> priority(int var0, int var1, int var2)
abstract super super("network", "server.commands.network.desc")
abstract super super("debugknockback", "server.commands.network.debugknockback.desc")
abstract super super("latencysimulation", "server.commands.latencySimulation.desc")
abstract super super("reset", "server.commands.latencySimulation.reset.desc")
abstract super super("set", "server.commands.latencySimulation.set.desc")
abstract super super("serverknockback", "server.commands.network.serverknockback.desc")
abstract super super("streampriority", "server.commands.network.streamPriority.desc")
abstract super super("preset", "server.commands.network.streamPriority.preset.desc")
abstract super super("reset", "server.commands.network.streamPriority.reset.desc")
abstract super super("set", "server.commands.network.streamPriority.set.desc")

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.command.commands.utility.net;

class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.protocol.NetworkChannel;
class="kw">import com.hypixel.hytale.protocol.io.ChannelConnection;
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.RequiredArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractTargetPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.CommandBase;
class="kw">import com.hypixel.hytale.server.core.entity.knockback.KnockbackSystems;
class="kw">import com.hypixel.hytale.server.core.io.PacketHandler;
class="kw">import com.hypixel.hytale.server.core.io.netty.LatencySimulationHandler;
class="kw">import com.hypixel.hytale.server.core.io.netty.NettyUtil;
class="kw">import com.hypixel.hytale.server.core.modules.entity.player.KnockbackPredictionSystems;
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 io.netty.channel.Channel;
class="kw">import io.netty.handler.codec.quic.QuicStreamPriority;
class="kw">import java.util.Locale;
class="kw">import java.util.Map;
class="kw">import java.util.Map.Entry;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class NetworkCommand class="kw">extends AbstractCommandCollection {
   class="kw">public NetworkCommand() {
      super("network", "server.commands.network.desc");
      this.addAliases("net");
      this.addSubCommand(new NetworkCommand.LatencySimulationCommand());
      this.addSubCommand(new NetworkCommand.StreamPriorityCommand());
      this.addSubCommand(new NetworkCommand.ServerKnockbackCommand());
      this.addSubCommand(new NetworkCommand.DebugKnockbackCommand());
   }

   class="kw">static class DebugKnockbackCommand class="kw">extends CommandBase {
      DebugKnockbackCommand() {
         super("debugknockback", "server.commands.network.debugknockback.desc");
      }

      @Override
      class="kw">protected void executeSync(@Nonnull CommandContext var1) {
         KnockbackPredictionSystems.DEBUG_KNOCKBACK_POSITION = !KnockbackPredictionSystems.DEBUG_KNOCKBACK_POSITION;
         var1.sendMessage(
            Message.translation("server.commands.network.knockbackDebugEnabled").param("enabled", KnockbackPredictionSystems.DEBUG_KNOCKBACK_POSITION)
         );
      }
   }

   class="kw">public class="kw">static class LatencySimulationCommand class="kw">extends AbstractCommandCollection {
      class="kw">public LatencySimulationCommand() {
         super("latencysimulation", "server.commands.latencySimulation.desc");
         this.addAliases("latsim");
         this.addSubCommand(new NetworkCommand.LatencySimulationCommand.Set());
         this.addSubCommand(new NetworkCommand.LatencySimulationCommand.Reset());
      }

      class="kw">static class Reset class="kw">extends AbstractTargetPlayerCommand {
         @Nonnull
         class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_LATENCY_SIMULATION_RESET_SUCCESS = Message.translation("server.commands.latencySimulation.reset.success");

         Reset() {
            super("reset", "server.commands.latencySimulation.reset.desc");
            this.addAliases("clear");
         }

         @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 (var4.getPacketHandler().getChannel() class="kw">instanceof NettyUtil.NettyChannelConnection(Channel var8)) {
               LatencySimulationHandler.setLatency(var8, 0L, TimeUnit.MILLISECONDS);
               var1.sendMessage(MESSAGE_COMMANDS_LATENCY_SIMULATION_RESET_SUCCESS);
            } else {
               var1.sendMessage(Message.translation("server.commands.latencySimulation.unsupported"));
            }
         }
      }

      class="kw">static class Set class="kw">extends AbstractTargetPlayerCommand {
         @Nonnull
         class="kw">private class="kw">final RequiredArg<Integer> delayArg = this.withRequiredArg("delay", "server.commands.latencySimulation.set.delay.desc", ArgTypes.INTEGER);

         Set() {
            super("set", "server.commands.latencySimulation.set.desc");
         }

         @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.delayArg.get(var1);
            if (var4.getPacketHandler().getChannel() class="kw">instanceof NettyUtil.NettyChannelConnection(Channel var9)) {
               LatencySimulationHandler.setLatency(var9, var7, TimeUnit.MILLISECONDS);
               var1.sendMessage(Message.translation("server.commands.latencySimulation.set.success").param("millis", var7));
            } else {
               var1.sendMessage(Message.translation("server.commands.latencySimulation.unsupported"));
            }
         }
      }
   }

   class="kw">static class ServerKnockbackCommand class="kw">extends CommandBase {
      ServerKnockbackCommand() {
         super("serverknockback", "server.commands.network.serverknockback.desc");
      }

      @Override
      class="kw">protected void executeSync(@Nonnull CommandContext var1) {
         KnockbackSystems.ApplyPlayerKnockback.DO_SERVER_PREDICTION = !KnockbackSystems.ApplyPlayerKnockback.DO_SERVER_PREDICTION;
         var1.sendMessage(
            Message.translation("server.commands.network.knockbackServerPredictionEnabled")
               .param("enabled", KnockbackSystems.ApplyPlayerKnockback.DO_SERVER_PREDICTION)
         );
      }
   }

   class="kw">public class="kw">static class StreamPriorityCommand class="kw">extends AbstractCommandCollection {
      class="kw">private class="kw">static class="kw">final Map<String, Map<NetworkChannel, QuicStreamPriority>> PRESETS = Map.of(
         "class="kw">default",
         PacketHandler.DEFAULT_STREAM_PRIORITIES,
         "equal",
         priority(0, 0, 0),
         "tiered",
         priority(0, 1, 2),
         "maplow",
         priority(0, 0, 1),
         "datalow",
         priority(0, 1, 1),
         "chunkshi",
         priority(1, 0, 2),
         "maphi",
         priority(1, 2, 0)
      );

      class="kw">public StreamPriorityCommand() {
         super("streampriority", "server.commands.network.streamPriority.desc");
         this.addAliases("sp");
         this.addSubCommand(new NetworkCommand.StreamPriorityCommand.Set());
         this.addSubCommand(new NetworkCommand.StreamPriorityCommand.Preset());
         this.addSubCommand(new NetworkCommand.StreamPriorityCommand.Reset());
      }

      class="kw">private class="kw">static void applyPriorities(@Nonnull PlayerRef var0, @Nonnull Map<NetworkChannel, QuicStreamPriority> var1) {
         PacketHandler var2 = var0.getPacketHandler();

         for (Entry var4 : var1.entrySet()) {
            ChannelConnection var5 = var2.getChannel(var4.getKey());
            QuicStreamPriority var6 = var4.getValue();
            var5.updateStreamPriority(var6.urgency(), var6.isIncremental());
         }
      }

      class="kw">private class="kw">static String formatPriorities(@Nonnull Map<NetworkChannel, QuicStreamPriority> var0) {
         StringBuilder var1 = new StringBuilder();

         for (NetworkChannel var5 : NetworkChannel.VALUES) {
            QuicStreamPriority var6 = var0.get(var5);
            if (var6 != null) {
               if (!var1.isEmpty()) {
                  var1.append(", ");
               }

               var1.append(var5.name()).append('=').append(var6.urgency());
            }
         }

         class="kw">return var1.toString();
      }

      class="kw">private class="kw">static Map<NetworkChannel, QuicStreamPriority> priority(int var0, int var1, int var2) {
         class="kw">return Map.of(
            NetworkChannel.Default,
            new QuicStreamPriority(var0, true),
            NetworkChannel.Chunks,
            new QuicStreamPriority(var1, true),
            NetworkChannel.WorldMap,
            new QuicStreamPriority(var2, true)
         );
      }

      class="kw">static class Preset class="kw">extends AbstractTargetPlayerCommand {
         @Nonnull
         class="kw">private class="kw">final RequiredArg<String> presetArg = this.withRequiredArg(
            "preset", "server.commands.network.streamPriority.preset.name.desc", ArgTypes.STRING
         );

         Preset() {
            super("preset", "server.commands.network.streamPriority.preset.desc");
         }

         @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
         ) {
            String var7 = this.presetArg.get(var1).toLowerCase(Locale.ROOT);
            Map var8 = NetworkCommand.StreamPriorityCommand.PRESETS.get(var7);
            if (var8 == null) {
               var1.sendMessage(
                  Message.translation("server.commands.network.streamPriority.preset.unknown")
                     .param("name", var7)
                     .param("presets", String.join(", ", NetworkCommand.StreamPriorityCommand.PRESETS.keySet()))
               );
            } else {
               NetworkCommand.StreamPriorityCommand.applyPriorities(var4, var8);
               var1.sendMessage(
                  Message.translation("server.commands.network.streamPriority.preset.success")
                     .param("name", var7)
                     .param("priorities", NetworkCommand.StreamPriorityCommand.formatPriorities(var8))
               );
            }
         }
      }

      class="kw">static class Reset class="kw">extends AbstractTargetPlayerCommand {
         Reset() {
            super("reset", "server.commands.network.streamPriority.reset.desc");
         }

         @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
         ) {
            NetworkCommand.StreamPriorityCommand.applyPriorities(var4, PacketHandler.DEFAULT_STREAM_PRIORITIES);
            var1.sendMessage(
               Message.translation("server.commands.network.streamPriority.reset.success")
                  .param("priorities", NetworkCommand.StreamPriorityCommand.formatPriorities(PacketHandler.DEFAULT_STREAM_PRIORITIES))
            );
         }
      }

      class="kw">static class Set class="kw">extends AbstractTargetPlayerCommand {
         @Nonnull
         class="kw">private class="kw">final RequiredArg<NetworkChannel> channelArg = this.withRequiredArg(
            "channel",
            "server.commands.network.streamPriority.set.channel.desc",
            ArgTypes.forEnum("server.commands.network.streamPriority.channel", NetworkChannel.class)
         );
         @Nonnull
         class="kw">private class="kw">final RequiredArg<Integer> priorityArg = this.withRequiredArg(
            "priority", "server.commands.network.streamPriority.set.priority.desc", ArgTypes.INTEGER
         );

         Set() {
            super("set", "server.commands.network.streamPriority.set.desc");
         }

         @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
         ) {
            NetworkChannel var7 = this.channelArg.get(var1);
            int var8 = this.priorityArg.get(var1);
            if (var8 >= 0 && var8 <= 127) {
               ChannelConnection var9 = var4.getPacketHandler().getChannel(var7);
               var9.updateStreamPriority(var8, true);
               var1.sendMessage(Message.translation("server.commands.network.streamPriority.set.success").param("channel", var7.name()).param("priority", var8));
            } else {
               var1.sendMessage(Message.translation("server.commands.network.streamPriority.set.invalidPriority"));
            }
         }
      }
   }
}