NameplateRefSystem class
Пакет: com.hypixel.hytale.server.core.modules.entity.player
Файл: com/hypixel/hytale/server/core/modules/entity/player/PlayerSystems.java
extends: RefSystem<EntityStore>
Поля (3)
| Модификаторы | Тип | Имя |
|---|---|---|
|
DisplayNameComponent |
var5 |
|
String |
var6 |
|
Nameplate |
var7 |
Методы (3)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public Query<EntityStore> |
getQuerypublic Query<EntityStore> getQuery() |
|
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) |
Исходный код
Показать/скрыть
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);
}
}
}