PlayerSpawnedSystem class

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

Файл: com/hypixel/hytale/server/core/modules/entity/player/PlayerSystems.java

extends: RefSystem<EntityStore>

Поля (20)

МодификаторыТипИмя
EquipmentUpdate updatex
TransformUpdate updatexx
ModelUpdate var10
EntityScaleComponent var11
InventoryComponent.Utility var12
PlayerSkinComponent var14
PlayerSettings var15
TransformComponent var16
InventoryComponent.Armor var17
HeadRotation var18
EntityTrackerSystems.EntityViewer var2
EffectControllerComponent var20
EntityStatMap var21
NetworkId var3
EntityUpdate var4
ObjectArrayList var5
Archetype var6
Nameplate var7
PredictedProjectile var8
ModelComponent var9

Методы (15)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Viewer is missing EntityViewer component")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Viewer is missing NetworkId component")
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
if if(var2 == null)
if if(var3 == null)
if if(var7 != null)
if if(var8 != null)
if if(var11 != null)
if if(var16 != null && var18 != null)
if if(var20 != null)
if if(var21 != null)
public void onEntityAddedpublic void onEntityAdded(@Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onEntityRemovepublic void onEntityRemove(@Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public static void sendPlayerSelfpublic static void sendPlayerSelf(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1)
abstract sendPlayerSelf sendPlayerSelf(var1, var3)

Исходный код

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

class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.Archetype;
class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.RemoveReason;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.dependency.Dependency;
class="kw">import com.hypixel.hytale.component.dependency.Order;
class="kw">import com.hypixel.hytale.component.dependency.SystemDependency;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.spatial.SpatialResource;
class="kw">import com.hypixel.hytale.component.system.EntityEventSystem;
class="kw">import com.hypixel.hytale.component.system.HolderSystem;
class="kw">import com.hypixel.hytale.component.system.QuerySystem;
class="kw">import com.hypixel.hytale.component.system.RefChangeSystem;
class="kw">import com.hypixel.hytale.component.system.RefSystem;
class="kw">import com.hypixel.hytale.component.system.tick.EntityTickingSystem;
class="kw">import com.hypixel.hytale.component.system.tick.RunWhenPausedSystem;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.protocol.ComponentUpdate;
class="kw">import com.hypixel.hytale.protocol.EntityEffectsUpdate;
class="kw">import com.hypixel.hytale.protocol.EntityStatsUpdate;
class="kw">import com.hypixel.hytale.protocol.EntityUpdate;
class="kw">import com.hypixel.hytale.protocol.EquipmentUpdate;
class="kw">import com.hypixel.hytale.protocol.IntangibleUpdate;
class="kw">import com.hypixel.hytale.protocol.InteractableUpdate;
class="kw">import com.hypixel.hytale.protocol.InvulnerableUpdate;
class="kw">import com.hypixel.hytale.protocol.ModelTransform;
class="kw">import com.hypixel.hytale.protocol.ModelUpdate;
class="kw">import com.hypixel.hytale.protocol.NameplateUpdate;
class="kw">import com.hypixel.hytale.protocol.PlayerSkinUpdate;
class="kw">import com.hypixel.hytale.protocol.PredictionUpdate;
class="kw">import com.hypixel.hytale.protocol.PreventEmotesUpdate;
class="kw">import com.hypixel.hytale.protocol.PreventInventoryAccessUpdate;
class="kw">import com.hypixel.hytale.protocol.RespondToHitUpdate;
class="kw">import com.hypixel.hytale.protocol.TransformUpdate;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BuilderToolsSetSoundSet;
class="kw">import com.hypixel.hytale.protocol.packets.entities.EntityUpdates;
class="kw">import com.hypixel.hytale.protocol.packets.inventory.SetActiveSlot;
class="kw">import com.hypixel.hytale.protocol.packets.inventory.UpdatePlayerInventory;
class="kw">import com.hypixel.hytale.protocol.packets.player.SetBlockPlacementOverride;
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.Message;
class="kw">import com.hypixel.hytale.server.core.asset.type.gamemode.GameModeType;
class="kw">import com.hypixel.hytale.server.core.asset.type.gameplay.GameplayConfig;
class="kw">import com.hypixel.hytale.server.core.asset.type.gameplay.SpawnConfig;
class="kw">import com.hypixel.hytale.server.core.asset.type.particle.config.WorldParticle;
class="kw">import com.hypixel.hytale.server.core.entity.Entity;
class="kw">import com.hypixel.hytale.server.core.entity.effect.EffectControllerComponent;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.data.PlayerWorldData;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.data.UniqueItemUsagesComponent;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.movement.MovementManager;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.pages.RespawnPage;
class="kw">import com.hypixel.hytale.server.core.entity.nameplate.Nameplate;
class="kw">import com.hypixel.hytale.server.core.event.events.player.RemovedPlayerFromWorldEvent;
class="kw">import com.hypixel.hytale.server.core.inventory.InventoryComponent;
class="kw">import com.hypixel.hytale.server.core.inventory.InventoryUtils;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.inventory.MaterialQuantity;
class="kw">import com.hypixel.hytale.server.core.inventory.container.CombinedItemContainer;
class="kw">import com.hypixel.hytale.server.core.inventory.container.SimpleItemContainer;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.ItemStackTransaction;
class="kw">import com.hypixel.hytale.server.core.io.PacketHandler;
class="kw">import com.hypixel.hytale.server.core.modules.entity.EntityModule;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.BreathingComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.DisplayNameComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.EntityScaleComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.HeadRotation;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.Intangible;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.Interactable;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.Invulnerable;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PersistentDisplayName;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PersistentGameModeType;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PlayerLives;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PreventEmotes;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PreventInventoryAccess;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.RespondToHit;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DeathComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.event.KillFeedEvent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.gamemode.GameModeTypeState;
class="kw">import com.hypixel.hytale.server.core.modules.entity.item.DropItemsComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
class="kw">import com.hypixel.hytale.server.core.modules.entity.tracker.EntityTrackerSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entity.tracker.NetworkId;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap;
class="kw">import com.hypixel.hytale.server.core.modules.projectile.component.PredictedProjectile;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.Universe;
class="kw">import com.hypixel.hytale.server.core.universe.hardcore.HardcoreMode;
class="kw">import com.hypixel.hytale.server.core.universe.hardcore.HardcoreState;
class="kw">import com.hypixel.hytale.server.core.universe.world.ParticleUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.PlayerUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.WorldConfig;
class="kw">import com.hypixel.hytale.server.core.universe.world.meta.state.BlockMapMarker;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.core.util.PositionUtil;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.List;
class="kw">import java.util.Objects;
class="kw">import java.util.Set;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;

class="kw">public class PlayerSystems {
   @Nonnull
   class="kw">public class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();

   class="kw">public PlayerSystems() {
   }

   class="kw">public class="kw">static class BlockPausedMovementSystem class="kw">implements RunWhenPausedSystem<EntityStore>, QuerySystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(
         Player.getComponentType(), PlayerInput.getComponentType(), TransformComponent.getComponentType(), HeadRotation.getComponentType()
      );

      class="kw">public BlockPausedMovementSystem() {
      }

      @Override
      class="kw">public void tick(float var1, int var2, @Nonnull Store<EntityStore> var3) {
         var3.forEachChunk(var2, PlayerSystems.BlockPausedMovementSystem::onTick);
      }

      class="kw">private class="kw">static void onTick(@Nonnull ArchetypeChunk<EntityStore> var0, @Nonnull CommandBuffer<EntityStore> var1) {
         for (int var2 = 0; var2 < var0.size(); var2++) {
            PlayerInput var3 = var0.getComponent(var2, PlayerInput.getComponentType());
            assert var3 != null;
            boolean var4 = false;
            TransformComponent var5 = var0.getComponent(var2, TransformComponent.getComponentType());
            assert var5 != null;
            HeadRotation var6 = var0.getComponent(var2, HeadRotation.getComponentType());
            assert var6 != null;
            List var7 = var3.getMovementUpdateQueue();

            for (PlayerInput.InputUpdate var9 : var7) {
               class="kw">switch (var9) {
                  case PlayerInput.AbsoluteMovement var12:
                     var4 = var5.getPosition().distanceSquared(var12.getX(), var12.getY(), var12.getZ()) > 0.01F;
                     break;
                  case PlayerInput.RelativeMovement var13:
                     Vector3d var17 = var5.getPosition();
                     var4 = var5.getPosition().distanceSquared(var17.x + var13.getX(), var17.y + var13.getY(), var17.z + var13.getZ()) > 0.01F;
                     break;
                  case PlayerInput.SetHead var14:
                     var4 = var6.getRotation().distanceSquaredTo(var14.direction().pitch, var14.direction().yaw, var14.direction().roll) > 0.01F;
                     break;
                  class="kw">default:
               }
            }

            var7.clear();
            if (var4) {
               Teleport var15 = Teleport.createExact(var5.getPosition(), var5.getRotation(), var6.getRotation()).withoutVelocityReset();
               Ref var16 = var0.getReferenceTo(var2);
               var1.addComponent(var16, Teleport.getComponentType(), var15);
            }
         }
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }
   }

   class="kw">public class="kw">static class KillFeedDecedentEventSystem class="kw">extends EntityEventSystem<EntityStore, KillFeedEvent.DecedentMessage> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, PlayerRef> playerRefComponentType = PlayerRef.getComponentType();

      class="kw">public KillFeedDecedentEventSystem() {
         super(KillFeedEvent.DecedentMessage.class);
      }

      class="kw">public void handle(
         int var1,
         @Nonnull ArchetypeChunk<EntityStore> var2,
         @Nonnull Store<EntityStore> var3,
         @Nonnull CommandBuffer<EntityStore> var4,
         @Nonnull KillFeedEvent.DecedentMessage var5
      ) {
         DisplayNameComponent var7 = var2.getComponent(var1, DisplayNameComponent.getComponentType());
         Message var6;
         if (var7 != null) {
            var6 = var7.getDisplayName();
         } else {
            PlayerRef var8 = var2.getComponent(var1, this.playerRefComponentType);
            assert var8 != null;
            var6 = Message.raw(var8.getUsername());
         }

         var5.setMessage(var6);
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.playerRefComponentType;
      }
   }

   class="kw">public class="kw">static class KillFeedKillerEventSystem class="kw">extends EntityEventSystem<EntityStore, KillFeedEvent.KillerMessage> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, PlayerRef> playerRefComponentType = PlayerRef.getComponentType();

      class="kw">public KillFeedKillerEventSystem() {
         super(KillFeedEvent.KillerMessage.class);
      }

      class="kw">public void handle(
         int var1,
         @Nonnull ArchetypeChunk<EntityStore> var2,
         @Nonnull Store<EntityStore> var3,
         @Nonnull CommandBuffer<EntityStore> var4,
         @Nonnull KillFeedEvent.KillerMessage var5
      ) {
         DisplayNameComponent var7 = var2.getComponent(var1, DisplayNameComponent.getComponentType());
         Message var6;
         if (var7 != null) {
            var6 = var7.getDisplayName();
         } else {
            PlayerRef var8 = var2.getComponent(var1, this.playerRefComponentType);
            assert var8 != null;
            var6 = Message.raw(var8.getUsername());
         }

         var5.setMessage(var6);
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.playerRefComponentType;
      }
   }

   class="kw">public class="kw">static class NameplateRefChangeSystem class="kw">extends RefChangeSystem<EntityStore, DisplayNameComponent> {
      class="kw">public NameplateRefChangeSystem() {
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return Player.getComponentType();
      }

      @Nonnull
      @Override
      class="kw">public ComponentType<EntityStore, DisplayNameComponent> componentType() {
         class="kw">return DisplayNameComponent.getComponentType();
      }

      class="kw">public void onComponentAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull DisplayNameComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         Nameplate var5 = var4.ensureAndGetComponent(var1, Nameplate.getComponentType());
         var5.setText(var2.getDisplayName() != null ? var2.getDisplayName().getAnsiMessage() : "");
      }

      class="kw">public void onComponentSet(
         @Nonnull Ref<EntityStore> var1,
         DisplayNameComponent var2,
         @Nonnull DisplayNameComponent var3,
         @Nonnull Store<EntityStore> var4,
         @Nonnull CommandBuffer<EntityStore> var5
      ) {
         Nameplate var6 = var5.ensureAndGetComponent(var1, Nameplate.getComponentType());
         var6.setText(var3.getDisplayName() != null ? var3.getDisplayName().getAnsiMessage() : "");
      }

      class="kw">public void onComponentRemoved(
         @Nonnull Ref<EntityStore> var1, @Nonnull DisplayNameComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         Nameplate var5 = var4.ensureAndGetComponent(var1, Nameplate.getComponentType());
         var5.setText("");
      }
   }

   class="kw">public class="kw">static class NameplateRefSystem class="kw">extends RefSystem<EntityStore> {
      class="kw">public NameplateRefSystem() {
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return Archetype.of(Player.getComponentType(), DisplayNameComponent.getComponentType());
      }

      @Override
      class="kw">public void onEntityAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         DisplayNameComponent var5 = var4.getComponent(var1, DisplayNameComponent.getComponentType());
         assert var5 != null;
         if (var4.getComponent(var1, Nameplate.getComponentType()) == null) {
            String var6 = var5.getDisplayName() != null ? var5.getDisplayName().getAnsiMessage() : "";
            Nameplate var7 = new Nameplate(var6);
            var4.putComponent(var1, Nameplate.getComponentType(), var7);
         }
      }

      @Override
      class="kw">public void onEntityRemove(
         @Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
      }
   }

   class="kw">public class="kw">static class PlayerAddedSystem class="kw">extends RefSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">static class="kw">final Message MESSAGE_SERVER_GENERAL_KILLED_BY_UNKNOWN = Message.translation("server.general.killedByUnknown");
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies = Set.of(new SystemDependency<>(Order.AFTER, PlayerSystems.PlayerSpawnedSystem.class));
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public PlayerAddedSystem(@Nonnull ComponentType<EntityStore, MovementManager> var1) {
         this.query = Query.and(Player.getComponentType(), PlayerRef.getComponentType(), var1);
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }

      @Nonnull
      @Override
      class="kw">public Set<Dependency<EntityStore>> getDependencies() {
         class="kw">return this.dependencies;
      }

      @Override
      class="kw">public void onEntityAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         World var5 = var4.getExternalData().getWorld();
         Player var6 = var4.getComponent(var1, Player.getComponentType());
         assert var6 != null;
         PlayerRef var7 = var4.getComponent(var1, PlayerRef.getComponentType());
         assert var7 != null;
         MovementManager var8 = var4.getComponent(var1, MovementManager.getComponentType());
         assert var8 != null;
         if (var4.getComponent(var1, PersistentDisplayName.getComponentType()) == null) {
            Message var9 = Message.raw(var7.getUsername());
            var4.putComponent(var1, DisplayNameComponent.getComponentType(), new DisplayNameComponent(var9));
         }

         var6.setLastSpawnTimeNanos(System.nanoTime());
         PacketHandler var27 = var7.getPacketHandler();
         Objects.requireNonNull(var5, "world");
         Objects.requireNonNull(var6.getPlayerConfigData(), "data");
         PlayerWorldData var10 = var6.getPlayerConfigData().getPerWorldData(var5.getName());
         Player.initGameMode(var1, var4);
         GameplayConfig var11 = var5.getGameplayConfig();
         SpawnConfig var12 = var11.getSpawnConfig();
         var27.writeNoCache(new BuilderToolsSetSoundSet(var11.getCreativePlaySoundSetIndex()));
         MaterialQuantity[] var13 = var12.getFirstSpawnItems();
         if (var6.isFirstSpawn() && var13 != null) {
            CombinedItemContainer var14 = InventoryComponent.getCombined(var4, var1, InventoryComponent.HOTBAR_FIRST);
            SimpleItemContainer.addOrDropItemStacks(var4, var1, var14, MaterialQuantity.toItemStacks(var13));
         }

         InventoryComponent.Storage var28 = var4.getComponent(var1, InventoryComponent.Storage.getComponentType());
         InventoryComponent.Armor var15 = var4.getComponent(var1, InventoryComponent.Armor.getComponentType());
         InventoryComponent.Hotbar var16 = var4.getComponent(var1, InventoryComponent.Hotbar.getComponentType());
         InventoryComponent.Utility var17 = var4.getComponent(var1, InventoryComponent.Utility.getComponentType());
         InventoryComponent.Tool var18 = var4.getComponent(var1, InventoryComponent.Tool.getComponentType());
         InventoryComponent.Backpack var19 = var4.getComponent(var1, InventoryComponent.Backpack.getComponentType());
         var27.writeNoCache(
            new UpdatePlayerInventory(
               var28 != null ? var28.getInventory().toPacket() : null,
               var15 != null ? var15.getInventory().toPacket() : null,
               var16 != null ? var16.getInventory().toPacket() : null,
               var17 != null ? var17.getInventory().toPacket() : null,
               var18 != null ? var18.getInventory().toPacket() : null,
               var19 != null ? var19.getInventory().toPacket() : null
            )
         );
         var27.writeNoCache(new SetActiveSlot(-1, var16 != null ? var16.getActiveSlot() : -1));
         var27.writeNoCache(new SetActiveSlot(-5, var17 != null ? var17.getActiveSlot() : -1));
         var27.writeNoCache(new SetActiveSlot(-8, var18 != null ? var18.getActiveSlot() : -1));
         if (InventoryUtils.containsBrokenItem(var1, var4)) {
            var7.sendMessage(Message.translation("server.general.repair.itemBrokenOnRespawn").color("#ff5555"));
         }

         var27.writeNoCache(new SetBlockPlacementOverride(var6.isOverrideBlockPlacementRestrictions()));
         DeathComponent var20 = var4.getComponent(var1, DeathComponent.getComponentType());
         if (var20 != null) {
            Message var21 = var20.getDeathMessage();
            if (var21 == null) {
               ((HytaleLogger.Api)Entity.LOGGER.at(Level.SEVERE).withCause(new Throwable()))
                  .log("Player wasn't alive but didn't have a pending death message?");
               var21 = MESSAGE_SERVER_GENERAL_KILLED_BY_UNKNOWN;
            }

            RespawnPage var22 = RespawnPage.forRespawn(
               var7, var21, var20.displayDataOnDeathScreen(), var20.getDeathItemLoss(), deathScreenLivesRemaining(var1, var4)
            );
            var6.getPageManager().openCustomPage(var1, var3, var22);
         }

         PersistentGameModeType var29 = var4.getComponent(var1, PersistentGameModeType.getComponentType());
         if (var29 != null) {
            GameModeTypeState.apply(var1, GameModeType.getAssetMap().getAsset(var29.getGameModeTypeId()), var4);
         }

         TransformComponent var30 = var4.getComponent(var1, TransformComponent.getComponentType());
         if (var30 != null) {
            Vector3d var23 = var30.getPosition();
            SpatialResource var24 = var4.getResource(EntityModule.get().getPlayerSpatialResourceType());
            List var25 = SpatialResource.getThreadLocalReferenceList();
            var24.getSpatialStructure().collect(var23, 75.0, var25);
            var25.add(var1);
            if (var6.isFirstSpawn()) {
               WorldParticle[] var26 = var12.getFirstSpawnParticles();
               if (var26 == null) {
                  var26 = var12.getSpawnParticles();
               }

               if (var26 != null) {
                  ParticleUtil.spawnParticleEffects(var26, var23, null, var25, var4);
               }
            } else {
               WorldParticle[] var31 = var12.getSpawnParticles();
               if (var31 != null) {
                  ParticleUtil.spawnParticleEffects(var31, var23, null, var25, var4);
               }
            }
         }

         var27.tryFlush();
         BlockMapMarker.retainRevealedMarkers(var5, var10);
         var10.setFirstSpawn(false);
      }

      @Override
      class="kw">public void onEntityRemove(
         @Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         Player var5 = var4.getComponent(var1, Player.getComponentType());
         assert var5 != null;
         var5.getWindowManager().closeAllWindows(var1, var4);
      }

      class="kw">private class="kw">static int deathScreenLivesRemaining(@Nonnull Ref<EntityStore> var0, @Nonnull CommandBuffer<EntityStore> var1) {
         HytaleServerConfig.Defaults var2 = HytaleServer.get().getConfig().getDefaults();
         HardcoreMode var3 = var2.getHardcoreMode();
         if (var3 == HardcoreMode.Global) {
            HardcoreState var4 = Universe.get().getResource(HardcoreState.getResourceType());
            class="kw">return var4.isGameOver() ? 0 : Math.max(var4.getPoolRemaining(var2.getHardcoreLives()), 0);
         } else {
            class="kw">return !var3.showsPersonalLives(var2.getHardcoreLives()) ? 0 : Math.max(PlayerLives.getRemainingOrDefault(var0, var1, var2.getHardcoreLives()), 0);
         }
      }
   }

   class="kw">public class="kw">static class PlayerInitSystem class="kw">extends HolderSystem<EntityStore> {
      class="kw">public PlayerInitSystem() {
      }

      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return PlayerRef.getComponentType();
      }

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         var1.ensureComponent(PlayerInput.getComponentType());
         var1.ensureComponent(EffectControllerComponent.getComponentType());
         var1.ensureComponent(UniqueItemUsagesComponent.getComponentType());
         var1.ensureComponent(BreathingComponent.getComponentType());
         Player var4 = var1.getComponent(Player.getComponentType());
         assert var4 != null;
         var4.getInventory().migrateToComponents(var1);
         List var5 = new ObjectArrayList();
         InventoryComponent.Storage var6 = ensureInventory(var1, InventoryComponent.Storage.getComponentType(), (short)36, var5);
         ensureInventory(var1, InventoryComponent.Armor.getComponentType(), InventoryComponent.DEFAULT_ARMOR_CAPACITY, var5);
         InventoryComponent.Hotbar var7 = ensureInventory(var1, InventoryComponent.Hotbar.getComponentType(), (short)9, var5);
         ensureInventory(var1, InventoryComponent.Utility.getComponentType(), (short)4, var5);
         ensureInventory(var1, InventoryComponent.Tool.getComponentType(), (short)23, var5);
         var1.ensureComponent(InventoryComponent.Backpack.getComponentType());
         if (!var5.isEmpty()) {
            List var8 = addReturningLeftovers(var7, var5);
            if (!var8.isEmpty()) {
               var8 = addReturningLeftovers(var6, var8);
            }

            if (!var8.isEmpty()) {
               DropItemsComponent.queue(var1, var8);
            }
         }

         var4.getInventory().backwardsCompatHook(var1);
      }

      class="kw">private class="kw">static <T class="kw">extends InventoryComponent> T ensureInventory(
         @Nonnull Holder<EntityStore> var0, @Nonnull ComponentType<EntityStore, T> var1, short var2, @Nonnull List<ItemStack> var3
      ) {
         var0.ensureComponent(var1);
         InventoryComponent var4 = (T)var0.getComponent(var1);
         assert var4 != null;
         var4.ensureCapacity(var2, var3);
         class="kw">return var4;
      }

      @Nonnull
      class="kw">private class="kw">static List<ItemStack> addReturningLeftovers(@Nonnull InventoryComponent var0, @Nonnull List<ItemStack> var1) {
         List var2 = new ObjectArrayList();

         for (ItemStackTransaction var4 : var0.getInventory().addItemStacks(var1).getList()) {
            ItemStack var5 = var4.getRemainder();
            if (!ItemStack.isEmpty(var5)) {
               var2.add(var5);
            }
         }

         class="kw">return var2;
      }

      @Override
      class="kw">public void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3) {
         var1.removeComponent(PlayerInput.getComponentType());
      }
   }

   class="kw">public class="kw">static class PlayerRemovedSystem class="kw">extends HolderSystem<EntityStore> {
      class="kw">public PlayerRemovedSystem() {
      }

      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return Query.and(
            PlayerRef.getComponentType(),
            Player.getComponentType(),
            TransformComponent.getComponentType(),
            HeadRotation.getComponentType(),
            DisplayNameComponent.getComponentType()
         );
      }

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
      }

      @Override
      class="kw">public void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3) {
         World var4 = var3.getExternalData().getWorld();
         PlayerRef var5 = var1.getComponent(PlayerRef.getComponentType());
         assert var5 != null;
         Player var6 = var1.getComponent(Player.getComponentType());
         assert var6 != null;
         TransformComponent var7 = var1.getComponent(TransformComponent.getComponentType());
         assert var7 != null;
         HeadRotation var8 = var1.getComponent(HeadRotation.getComponentType());
         assert var8 != null;
         DisplayNameComponent var9 = var1.getComponent(DisplayNameComponent.getComponentType());
         assert var9 != null;
         Message var10 = var9.getDisplayName();
         PlayerSystems.LOGGER
            .at(Level.INFO)
            .log(
               "Removing player '%s%s' from world '%s' (%s)",
               var5.getUsername(),
               var10 != null ? " (" + var10.getAnsiMessage() + ")" : "",
               var4.getName(),
               var5.getUuid()
            );
         var6.getPlayerConfigData()
            .getPerWorldData(var4.getName())
            .setLastPosition(new Transform(new Vector3d(var7.getPosition()), new Rotation3f(var8.getRotation())));
         var5.getPacketHandler().setQueuePackets(false);
         var5.getPacketHandler().tryFlush();
         WorldConfig var11 = var4.getWorldConfig();
         Message var12 = Message.translation("server.general.playerLeftWorld")
            .param("username", var5.getUsername())
            .param("world", var11.getDisplayName() != null ? var11.getDisplayName() : WorldConfig.formatDisplayName(var4.getName()));
         RemovedPlayerFromWorldEvent var13 = HytaleServer.get()
            .getEventBus()
            .dispatchFor(RemovedPlayerFromWorldEvent.class, var4.getName())
            .dispatch(new RemovedPlayerFromWorldEvent(var1, var4, var12));
         if (var13.shouldBroadcastLeaveMessage()) {
            PlayerUtil.broadcastMessageToPlayers(var5.getUuid(), var13.getLeaveMessage(), var3);
         }
      }
   }

   class="kw">public class="kw">static class PlayerSpawnedSystem class="kw">extends RefSystem<EntityStore> {
      class="kw">public PlayerSpawnedSystem() {
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return Player.getComponentType();
      }

      @Override
      class="kw">public void onEntityAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         sendPlayerSelf(var1, var3);
      }

      @Override
      class="kw">public void onEntityRemove(
         @Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
      }

      @Deprecated
      class="kw">public class="kw">static void sendPlayerSelf(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1) {
         EntityTrackerSystems.EntityViewer var2 = var1.getComponent(var0, EntityTrackerSystems.EntityViewer.getComponentType());
         if (var2 == null) {
            throw new IllegalArgumentException("Viewer is missing EntityViewer component");
         }

         NetworkId var3 = var1.getComponent(var0, NetworkId.getComponentType());
         if (var3 == null) {
            throw new IllegalArgumentException("Viewer is missing NetworkId component");
         }

         EntityUpdate var4 = new EntityUpdate();
         var4.networkId = var3.getId();
         ObjectArrayList var5 = new ObjectArrayList();
         Archetype var6 = var1.getArchetype(var0);
         if (var6.contains(Interactable.getComponentType())) {
            var5.add(new InteractableUpdate());
         }

         if (var6.contains(Intangible.getComponentType())) {
            var5.add(new IntangibleUpdate());
         }

         if (var6.contains(Invulnerable.getComponentType())) {
            var5.add(new InvulnerableUpdate());
         }

         if (var6.contains(RespondToHit.getComponentType())) {
            var5.add(new RespondToHitUpdate());
         }

         if (var6.contains(PreventInventoryAccess.getComponentType())) {
            var5.add(new PreventInventoryAccessUpdate());
         }

         if (var6.contains(PreventEmotes.getComponentType())) {
            var5.add(new PreventEmotesUpdate());
         }

         Nameplate var7 = var1.getComponent(var0, Nameplate.getComponentType());
         if (var7 != null) {
            var5.add(new NameplateUpdate(var7.getText()));
         }

         PredictedProjectile var8 = var1.getComponent(var0, PredictedProjectile.getComponentType());
         if (var8 != null) {
            var5.add(new PredictionUpdate(var8.getUuid()));
         }

         ModelComponent var9 = var1.getComponent(var0, ModelComponent.getComponentType());
         ModelUpdate var10 = new ModelUpdate();
         var10.model = var9 != null ? var9.getModel().toPacket() : null;
         EntityScaleComponent var11 = var1.getComponent(var0, EntityScaleComponent.getComponentType());
         if (var11 != null) {
            var10.entityScale = var11.getScale();
         }

         var5.add(var10);
         PlayerSkinComponent var14 = var1.getComponent(var0, PlayerSkinComponent.getComponentType());
         var5.add(new PlayerSkinUpdate(var14 != null ? var14.getPlayerSkin() : null));
         PlayerSettings var15 = var1.getComponent(var0, PlayerSettings.getComponentType());
         InventoryComponent.Armor var17 = var1.getComponent(var0, InventoryComponent.Armor.getComponentType());
         InventoryComponent.Utility var12 = var1.getComponent(var0, InventoryComponent.Utility.getComponentType());
         EquipmentUpdate updatex = InventoryUtils.createEquipmentUpdate(var0, var1, var15, var17, var12);
         var5.add(updatex);
         TransformComponent var16 = var1.getComponent(var0, TransformComponent.getComponentType());
         HeadRotation var18 = var1.getComponent(var0, HeadRotation.getComponentType());
         if (var16 != null && var18 != null) {
            TransformUpdate updatexx = new TransformUpdate();
            updatexx.transform = new ModelTransform();
            updatexx.transform.position = PositionUtil.toPositionPacket(var16.getPosition());
            updatexx.transform.bodyOrientation = PositionUtil.toDirectionPacket(var16.getRotation());
            updatexx.transform.lookOrientation = PositionUtil.toDirectionPacket(var18.getRotation());
            var5.add(updatexx);
         }

         EffectControllerComponent var20 = var1.getComponent(var0, EffectControllerComponent.getComponentType());
         if (var20 != null) {
            var5.add(new EntityEffectsUpdate(var20.createInitUpdates()));
         }

         EntityStatMap var21 = var1.getComponent(var0, EntityStatMap.getComponentType());
         if (var21 != null) {
            var5.add(new EntityStatsUpdate(var21.createInitUpdate(true)));
         }

         var4.updates = (ComponentUpdate[])var5.toArray(ComponentUpdate[]::new);
         var2.packetReceiver.writeNoCache(new EntityUpdates(null, new EntityUpdate[]{var4}));
      }
   }

   class="kw">public class="kw">static class ProcessPlayerInput class="kw">extends EntityTickingSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(Player.getComponentType(), PlayerInput.getComponentType(), TransformComponent.getComponentType());

      class="kw">public ProcessPlayerInput() {
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         PlayerInput var6 = var3.getComponent(var2, PlayerInput.getComponentType());
         assert var6 != null;
         List var7 = var6.getMovementUpdateQueue();

         for (PlayerInput.InputUpdate var9 : var7) {
            var9.apply(var5, var3, var2);
         }

         var7.clear();
      }
   }

   class="kw">public class="kw">static class UpdatePlayerRef class="kw">extends EntityTickingSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(PlayerRef.getComponentType(), TransformComponent.getComponentType(), HeadRotation.getComponentType());

      class="kw">public UpdatePlayerRef() {
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         World var6 = var5.getExternalData().getWorld();
         TransformComponent var7 = var3.getComponent(var2, TransformComponent.getComponentType());
         assert var7 != null;
         Transform var8 = var7.getTransform();
         HeadRotation var9 = var3.getComponent(var2, HeadRotation.getComponentType());
         assert var9 != null;
         Rotation3f var10 = var9.getRotation();
         PlayerRef var11 = var3.getComponent(var2, PlayerRef.getComponentType());
         assert var11 != null;
         var11.updatePosition(var6, var8, var10);
      }
   }
}