ServerPlayerListModule class

Пакет: com.hypixel.hytale.server.core.modules.serverplayerlist

Файл: com/hypixel/hytale/server/core/modules/serverplayerlist/ServerPlayerListModule.java

extends: JavaPlugin

Поля (29)

МодификаторыТипИмя
instance
EventRegistry var1
Collection var1
HistoricMetric var1
boolean var1
HytaleServerConfig.Defaults var1
AddToServerPlayerList var11
AddToServerPlayerList var12
PlayerRef var2
PlayerRef var2
HytaleServerConfig.Defaults var2
PlayerRef var2
Object2IntOpenHashMap var2
double var2
PlayerLives var2
UUID var3
UUID var3
UUID var3
PlayerRef var3
UUID var3
int var3
PlayerRef[] var4
RemoveFromServerPlayerList var4
AddToServerPlayerList var4
PlayerRef[] var4
ServerPlayerListPlayer[] var5
ServerPlayerListPlayer[] var5
UpdateServerPlayerListPing var6
AddToServerPlayerList var7

Методы (20)

МодификаторыВозвратСигнатура
public void broadcastListEntryvoid broadcastListEntry(@Nonnull PlayerRef var1)
public void broadcastListEntryvoid broadcastListEntry(@Nonnull PlayerRef var1, boolean var2)
public void broadcastLivesChangevoid broadcastLivesChange(@Nonnull PlayerRef var1)
private void broadcastPingUpdatesvoid broadcastPingUpdates()
abstract return createServerPlayerListPlayerreturn createServerPlayerListPlayer(var0, var1)
for for(int var6 = 0; var6 < var4.length; var6++)
for for(PlayerRef var11 : var4)
for for(int var6 = 0; var6 < var4.length; var6++)
for for(PlayerRef var10 : var4)
for for(PlayerRef var4 : var1)
for for(PlayerRef var5 : var1)
static int getPingValueint getPingValue(@Nonnull PacketHandler var0)
if if(var3 != null)
if if(var2 != null)
private void onPlayerConnectvoid onPlayerConnect(@Nonnull PlayerConnectEvent var1)
private void onPlayerDisconnectvoid onPlayerDisconnect(@Nonnull PlayerDisconnectEvent var1)
public void onPlayerHiddenForViewervoid onPlayerHiddenForViewer(@Nonnull PlayerRef var1, @Nonnull UUID var2)
private void onPlayerReadyvoid onPlayerReady(@Nonnull PlayerReadyEvent var1)
public void onPlayerShownForViewervoid onPlayerShownForViewer(@Nonnull PlayerRef var1, @Nonnull UUID var2)
abstract super super(var1)

Исходный код

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

class="kw">import com.hypixel.hytale.common.plugin.PluginManifest;
class="kw">import com.hypixel.hytale.event.EventRegistry;
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.protocol.packets.interface_.AddToServerPlayerList;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.RemoveFromServerPlayerList;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.ServerPlayerListPlayer;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.UpdateServerPlayerListPing;
class="kw">import com.hypixel.hytale.server.core.HytaleServer;
class="kw">import com.hypixel.hytale.server.core.HytaleServerConfig;
class="kw">import com.hypixel.hytale.server.core.event.events.player.PlayerConnectEvent;
class="kw">import com.hypixel.hytale.server.core.event.events.player.PlayerDisconnectEvent;
class="kw">import com.hypixel.hytale.server.core.event.events.player.PlayerReadyEvent;
class="kw">import com.hypixel.hytale.server.core.io.PacketHandler;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PlayerLives;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.Spectating;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPlugin;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.Universe;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
class="kw">import java.util.Collection;
class="kw">import java.util.UUID;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class ServerPlayerListModule class="kw">extends JavaPlugin {
   @Nonnull
   class="kw">public class="kw">static class="kw">final PluginManifest MANIFEST = PluginManifest.corePlugin(ServerPlayerListModule.class).depends(Universe.class).build();
   class="kw">private class="kw">static class="kw">final int PING_UPDATE_INTERVAL_SECONDS = 10;
   class="kw">private class="kw">static ServerPlayerListModule instance;

   @Nonnull
   class="kw">public class="kw">static ServerPlayerListModule get() {
      class="kw">return instance;
   }

   class="kw">public ServerPlayerListModule(@Nonnull JavaPluginInit var1) {
      super(var1);
      instance = this;
   }

   @Override
   class="kw">protected void setup() {
      EventRegistry var1 = this.getEventRegistry();
      var1.register(PlayerConnectEvent.class, this::onPlayerConnect);
      var1.register(PlayerDisconnectEvent.class, this::onPlayerDisconnect);
      var1.registerGlobal(PlayerReadyEvent.class, this::onPlayerReady);
      HytaleServer.SCHEDULED_EXECUTOR.scheduleWithFixedDelay(this::broadcastPingUpdates, 10L, 10L, TimeUnit.SECONDS);
   }

   class="kw">private void onPlayerConnect(@Nonnull PlayerConnectEvent var1) {
      PlayerRef var2 = var1.getPlayerRef();
      UUID var3 = var2.getUuid();
      PlayerRef[] var4 = Universe.get().getPlayers().toArray(new PlayerRef[0]);
      ServerPlayerListPlayer[] var5 = new ServerPlayerListPlayer[var4.length];

      for (int var6 = 0; var6 < var4.length; var6++) {
         var5[var6] = createServerPlayerListPlayer(var4[var6]);
      }

      AddToServerPlayerList var12 = new AddToServerPlayerList(var5);
      var2.getPacketHandler().write(var12);
      AddToServerPlayerList var7 = new AddToServerPlayerList(new ServerPlayerListPlayer[]{createServerPlayerListPlayer(var2)});

      for (PlayerRef var11 : var4) {
         if (!var11.getUuid().equals(var3) && !var11.getHiddenPlayersManager().isPlayerHidden(var3)) {
            var11.getPacketHandler().write(var7);
         }
      }
   }

   class="kw">private void onPlayerDisconnect(@Nonnull PlayerDisconnectEvent var1) {
      PlayerRef var2 = var1.getPlayerRef();
      UUID var3 = var2.getUuid();
      RemoveFromServerPlayerList var4 = new RemoveFromServerPlayerList(new UUID[]{var3});

      for (PlayerRef var6 : Universe.get().getPlayers()) {
         if (!var6.getUuid().equals(var3)) {
            var6.getPacketHandler().write(var4);
         }
      }
   }

   class="kw">public void broadcastLivesChange(@Nonnull PlayerRef var1) {
      HytaleServerConfig.Defaults var2 = HytaleServer.get().getConfig().getDefaults();
      if (var2.getHardcoreMode().showsPersonalLives(var2.getHardcoreLives())) {
         this.broadcastListEntry(var1);
      }
   }

   class="kw">public void broadcastListEntry(@Nonnull PlayerRef var1) {
      this.broadcastListEntry(var1, var1.getComponentConcurrent(Spectating.getComponentType()) != null);
   }

   class="kw">public void broadcastListEntry(@Nonnull PlayerRef var1, boolean var2) {
      UUID var3 = var1.getUuid();
      AddToServerPlayerList var4 = new AddToServerPlayerList(new ServerPlayerListPlayer[]{createServerPlayerListPlayer(var1, var2)});

      for (PlayerRef var6 : Universe.get().getPlayers()) {
         if (!var6.getHiddenPlayersManager().isPlayerHidden(var3)) {
            var6.getPacketHandler().write(var4);
         }
      }
   }

   class="kw">public void onPlayerHiddenForViewer(@Nonnull PlayerRef var1, @Nonnull UUID var2) {
      var1.getPacketHandler().write(new RemoveFromServerPlayerList(new UUID[]{var2}));
   }

   class="kw">public void onPlayerShownForViewer(@Nonnull PlayerRef var1, @Nonnull UUID var2) {
      PlayerRef var3 = Universe.get().getPlayer(var2);
      if (var3 != null) {
         var1.getPacketHandler().write(new AddToServerPlayerList(new ServerPlayerListPlayer[]{createServerPlayerListPlayer(var3)}));
      }
   }

   class="kw">private void onPlayerReady(@Nonnull PlayerReadyEvent var1) {
      PlayerRef var2 = Universe.get().getPlayer(var1.getPlayer().getUuid());
      if (var2 != null) {
         UUID var3 = var2.getUuid();
         PlayerRef[] var4 = Universe.get().getPlayers().toArray(new PlayerRef[0]);
         ServerPlayerListPlayer[] var5 = new ServerPlayerListPlayer[var4.length];

         for (int var6 = 0; var6 < var4.length; var6++) {
            var5[var6] = createServerPlayerListPlayer(var4[var6]);
         }

         var2.getPacketHandler().write(new AddToServerPlayerList(var5));
         AddToServerPlayerList var11 = new AddToServerPlayerList(new ServerPlayerListPlayer[]{createServerPlayerListPlayer(var2)});

         for (PlayerRef var10 : var4) {
            if (!var10.getUuid().equals(var3) && !var10.getHiddenPlayersManager().isPlayerHidden(var3)) {
               var10.getPacketHandler().write(var11);
            }
         }
      }
   }

   class="kw">private void broadcastPingUpdates() {
      Collection var1 = Universe.get().getPlayers();
      if (!var1.isEmpty()) {
         Object2IntOpenHashMap var2 = new Object2IntOpenHashMap(var1.size());

         for (PlayerRef var4 : var1) {
            var2.put(var4.getUuid(), getPingValue(var4.getPacketHandler()));
         }

         UpdateServerPlayerListPing var6 = new UpdateServerPlayerListPing(var2);

         for (PlayerRef var5 : var1) {
            var5.getPacketHandler().writeNoCache(var6);
         }
      }
   }

   class="kw">private class="kw">static int getPingValue(@Nonnull PacketHandler var0) {
      HistoricMetric var1 = var0.getPingInfo(PongType.Direct).getPingMetricSet();
      double var2 = var1.getAverage(0);
      class="kw">return (int)PacketHandler.PingInfo.TIME_UNIT.toMillis(MathUtil.fastCeil(var2));
   }

   @Nonnull
   class="kw">private class="kw">static ServerPlayerListPlayer createServerPlayerListPlayer(@Nonnull PlayerRef var0) {
      boolean var1 = var0.getComponentConcurrent(Spectating.getComponentType()) != null;
      class="kw">return createServerPlayerListPlayer(var0, var1);
   }

   @Nonnull
   class="kw">private class="kw">static ServerPlayerListPlayer createServerPlayerListPlayer(@Nonnull PlayerRef var0, boolean var1) {
      class="kw">return new ServerPlayerListPlayer(
         var0.getUuid(), var0.getUsername(), var0.getWorldUuid(), getPingValue(var0.getPacketHandler()), var1, livesRemaining(var0)
      );
   }

   @Nullable
   class="kw">private class="kw">static Integer livesRemaining(@Nonnull PlayerRef var0) {
      HytaleServerConfig.Defaults var1 = HytaleServer.get().getConfig().getDefaults();
      if (!var1.getHardcoreMode().showsPersonalLives(var1.getHardcoreLives())) {
         class="kw">return null;
      }

      PlayerLives var2 = var0.getComponentConcurrent(PlayerLives.getComponentType());
      int var3 = var2 != null ? var2.getRemaining() : var1.getHardcoreLives();
      class="kw">return Math.max(var3, 0);
   }
}