NPCSystems class

Пакет: com.hypixel.hytale.server.npc.systems

Файл: com/hypixel/hytale/server/npc/systems/NPCSystems.java

Поля (73)

МодификаторыТипИмя
break
private final ComponentType<EntityStore, DeferredCorpseRemoval> deferredCorpseRemovalComponentType
private final Set<Dependency<EntityStore>> dependencies
private final Set<Dependency<EntityStore>> dependencies
private final Set<Dependency<EntityStore>> dependencies
private final Set<Dependency<EntityStore>> dependencies
private final ComponentType<EntityStore, FromWorldGen> fromWorldGenComponentType
private final ComponentType<EntityStore, ModelComponent> modelComponentType
private final ComponentType<EntityStore, NPCEntity> npcComponentType
private final ComponentType<EntityStore, NPCEntity> npcComponentType
private final ComponentType<EntityStore, NPCEntity> npcComponentType
private final ComponentType<EntityStore, NPCEntity> npcComponentType
private final ComponentType<EntityStore, NPCEntity> npcComponentType
private final ComponentType<EntityStore, NPCEntity> npcComponentType
private final ComponentType<EntityStore, NPCEntity> npcComponentType
private final ComponentType<EntityStore, NPCEntity> npcComponentType
private final ComponentType<EntityStore, NPCEntity> npcComponentType
private final ComponentType<EntityStore, NPCEntity> npcComponentType
private final ComponentType<EntityStore, NPCEntity> npcComponentType
private final ComponentType<EntityStore, Player> playerComponentType
private final Query<EntityStore> query
private final Query<EntityStore> query
private final Query<EntityStore> query
private final ComponentType<EntityStore, Teleport> teleportComponentType
private final ComponentType<EntityStore, TransformComponent> transformComponentType
String[] var10
Rotation3f var10
NPCEntity var10
EntityEffect var15
FromWorldGen var4
NPCEntity var4
NPCEntity var4
Holder var4
NPCEntity var5
WorldTimeResource var5
NPCEntity var5
NPCEntity var5
int var5
Model var5
NPCEntity var5
NPCEntity var5
NPCEntity var5
FlockMembership var5
EffectControllerComponent var6
NPCEntity var6
Role var6
NPCEntity var6
Ref var6
NPCEntity var6
Model var6
Role var6
World var6
UUID var6
Role var7
Archetype var7
NewSpawnComponent var7
Role var7
Player var7
NPCEntity var7
double var7
World var7
NPCEntity var7
String var8
boolean var8
Message var8
var8
var8
Role var8
BalanceAsset var9
TransformComponent var9
DisplayNameComponent var9
private final ComponentType<EntityStore, WorldGenId> worldGenIdComponentType
private final ComponentType<EntityStore, WorldGenId> worldGenIdComponentType

Методы (76)

МодификаторыВозвратСигнатура
public AddSpawnEntityEffectSystempublic AddSpawnEntityEffectSystem(@Nonnull ComponentType<EntityStore, NPCEntity> var1)
public AddedFromExternalSystempublic AddedFromExternalSystem(@Nonnull ComponentType<EntityStore, NPCEntity> var1)
public AddedFromWorldGenSystempublic AddedFromWorldGenSystem()
public AddedSystempublic AddedSystem(@Nonnull ComponentType<EntityStore, NPCEntity> var1)
public BreathingCheckEventSystempublic BreathingCheckEventSystem()
public KillFeedDecedentEventSystempublic KillFeedDecedentEventSystem()
public KillFeedKillerEventSystempublic KillFeedKillerEventSystem()
public LegacyWorldGenIdpublic LegacyWorldGenId()
public ModelChangeSystempublic ModelChangeSystem()
public OnDeathSystempublic OnDeathSystem()
public OnNPCAddedpublic OnNPCAdded()
public OnTeleportSystempublic OnTeleportSystem()
public PrefabPlaceEntityEventSystempublic PrefabPlaceEntityEventSystem()
public ComponentType<EntityStore, ModelComponent> componentTypepublic ComponentType<EntityStore, ModelComponent> componentType()
public ComponentType<EntityStore, Teleport> componentTypepublic ComponentType<EntityStore, Teleport> componentType()
for for(String var14 : var10)
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull BreathingCheckEvent var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull KillFeedEvent.DecedentMessage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull KillFeedEvent.KillerMessage var5)
public void handlepublic void handle(@Nonnull Store<EntityStore> var1, @Nonnull CommandBuffer<EntityStore> var2, @Nonnull PrefabPlaceEntityEvent var3)
if if(var7 == null)
if if(var8 != null)
if if(var9 != null)
if if(var15 != null)
if if(var8)
if if(var6 == null)
if if(var2 == AddReason.SPAWN)
if if(var7 != null)
if if(var7 == null)
if if(var9 != null)
if if(var5 != 0)
if if(var6 != null)
if if(var7 > 0.0)
if if(var5 != null)
public void onComponentAddedpublic void onComponentAdded(@Nonnull Ref<EntityStore> var1, @Nonnull ModelComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentAddedpublic void onComponentAdded(@Nonnull Ref<EntityStore> var1, @Nonnull DeathComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentAddedpublic void onComponentAdded(@Nonnull Ref<EntityStore> var1, @Nonnull Teleport var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentRemovedpublic void onComponentRemoved(@Nonnull Ref<EntityStore> var1, @Nonnull ModelComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentRemovedpublic void onComponentRemoved(@Nonnull Ref<EntityStore> var1, @Nonnull Teleport var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentSetpublic void onComponentSet(@Nonnull Ref<EntityStore> var1, ModelComponent var2, @Nonnull ModelComponent var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void onComponentSetpublic void onComponentSet(@Nonnull Ref<EntityStore> var1, Teleport var2, @Nonnull Teleport var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityAddedpublic void onEntityAdded(@Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onEntityAddedpublic void onEntityAdded(@Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
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 void onEntityRemovepublic void onEntityRemove(@Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason 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 void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
abstract super super(BreathingCheckEvent.class)
abstract super super(KillFeedEvent.DecedentMessage.class)
abstract super super(KillFeedEvent.KillerMessage.class)
abstract super super(PrefabPlaceEntityEvent.class)
switch switch(var2)

Исходный код

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

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.SystemGroup;
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.system.EntityEventSystem;
class="kw">import com.hypixel.hytale.component.system.HolderSystem;
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.WorldEventSystem;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.type.entityeffect.config.EntityEffect;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.Model;
class="kw">import com.hypixel.hytale.server.core.entity.Frozen;
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.event.events.ecs.BreathingCheckEvent;
class="kw">import com.hypixel.hytale.server.core.inventory.InventoryComponent;
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.FromPrefab;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.FromWorldGen;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.MovementAudioComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.NPCMarkerComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.NewSpawnComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.PositionDataComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.WorldGenId;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DeathComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DeathSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DeferredCorpseRemoval;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.event.KillFeedEvent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.system.ModelSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.TeleportSystems;
class="kw">import com.hypixel.hytale.server.core.modules.time.WorldTimeResource;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabCopyableComponent;
class="kw">import com.hypixel.hytale.server.core.prefab.event.PrefabPlaceEntityEvent;
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 com.hypixel.hytale.server.flock.FlockMembership;
class="kw">import com.hypixel.hytale.server.flock.FlockPlugin;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.config.balancing.BalanceAsset;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.role.Role;
class="kw">import java.util.Set;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

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

   class="kw">public class="kw">static class AddSpawnEntityEffectSystem class="kw">extends RefSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NPCEntity> npcComponentType;

      class="kw">public AddSpawnEntityEffectSystem(@Nonnull ComponentType<EntityStore, NPCEntity> var1) {
         this.npcComponentType = var1;
      }

      @Override
      class="kw">public void onEntityAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         NPCEntity var5 = var3.getComponent(var1, this.npcComponentType);
         assert var5 != null;
         EffectControllerComponent var6 = var3.getComponent(var1, EffectControllerComponent.getComponentType());
         assert var6 != null;
         Role var7 = var5.getRole();
         if (var7 == null) {
            ((HytaleLogger.Api)((HytaleLogger.Api)NPCPlugin.get().getLogger().atSevere())
                  .withCause(new IllegalStateException("NPC has no role or role index in onLoad!")))
               .log();
            var4.removeEntity(var1, RemoveReason.REMOVE);
         } else {
            String var8 = var7.getBalanceAsset();
            if (var8 != null) {
               BalanceAsset var9 = BalanceAsset.getAssetMap().getAsset(var8);
               if (var9 != null) {
                  String[] var10 = var9.getEntityEffects();

                  for (String var14 : var10) {
                     EntityEffect var15 = EntityEffect.getAssetMap().getAsset(var14);
                     if (var15 != null) {
                        var6.addEffect(var1, var15, var4);
                     }
                  }
               }
            }
         }
      }

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

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return Query.and(this.npcComponentType, EffectControllerComponent.getComponentType());
      }
   }

   class="kw">public class="kw">static class AddedFromExternalSystem class="kw">extends RefSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NPCEntity> npcComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, TransformComponent> transformComponentType;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public AddedFromExternalSystem(@Nonnull ComponentType<EntityStore, NPCEntity> var1) {
         this.npcComponentType = var1;
         this.transformComponentType = TransformComponent.getComponentType();
         this.dependencies = Set.of(new SystemDependency<>(Order.AFTER, NPCSystems.AddedSystem.class));
         this.query = Query.and(var1, this.transformComponentType, Query.or(FromWorldGen.getComponentType(), FromPrefab.getComponentType()));
      }

      @Override
      class="kw">public void onEntityAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         WorldTimeResource var5 = var4.getResource(WorldTimeResource.getResourceType());
         NPCEntity var6 = var3.getComponent(var1, this.npcComponentType);
         assert var6 != null;
         Archetype var7 = var3.getArchetype(var1);
         boolean var8 = var7.contains(FromWorldGen.getComponentType());
         TransformComponent var9 = var3.getComponent(var1, this.transformComponentType);
         assert var9 != null;
         var6.getLeashPoint().set(var9.getPosition());
         Rotation3f var10 = var9.getRotation();
         var6.setLeashHeading(var10.yaw());
         var6.setLeashPitch(var10.pitch());
         var6.setSpawnInstant(var5.getGameTime());
         var6.getRole().onLoadFromWorldGenOrPrefab(var1, var6, var4);
         if (var8) {
            var4.tryRemoveComponent(var1, Frozen.getComponentType());
         }
      }

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

      @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;
      }

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return EntityModule.get().getPreClearMarkersGroup();
      }
   }

   class="kw">public class="kw">static class AddedFromWorldGenSystem class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NPCEntity> npcComponentType = NPCEntity.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, WorldGenId> worldGenIdComponentType = WorldGenId.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, FromWorldGen> fromWorldGenComponentType = FromWorldGen.getComponentType();
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(this.npcComponentType, this.fromWorldGenComponentType);

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

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return EntityModule.get().getPreClearMarkersGroup();
      }

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         FromWorldGen var4 = var1.getComponent(this.fromWorldGenComponentType);
         assert var4 != null;
         var1.putComponent(this.worldGenIdComponentType, new WorldGenId(var4.getWorldGenId()));
      }

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

   class="kw">public class="kw">static class AddedSystem class="kw">extends RefSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NPCEntity> npcComponentType;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies;

      class="kw">public AddedSystem(@Nonnull ComponentType<EntityStore, NPCEntity> var1) {
         this.npcComponentType = var1;
         this.dependencies = Set.of(new SystemDependency<>(Order.AFTER, RoleSystems.RoleActivateSystem.class));
      }

      @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
      ) {
         NPCEntity var5 = var3.getComponent(var1, this.npcComponentType);
         assert var5 != null;
         Role var6 = var5.getRole();
         if (var6 == null) {
            ((HytaleLogger.Api)((HytaleLogger.Api)NPCPlugin.get().getLogger().atSevere())
                  .withCause(new IllegalStateException("NPC has no role or role index in onLoad!")))
               .log();
            var4.removeEntity(var1, RemoveReason.REMOVE);
         } else {
            var6.loaded(var1, var4);
            var4.ensureComponent(var1, PrefabCopyableComponent.getComponentType());
            var4.ensureComponent(var1, NPCMarkerComponent.getComponentType());
            var4.ensureComponent(var1, PositionDataComponent.getComponentType());
            var4.ensureComponent(var1, MovementAudioComponent.getComponentType());
            var4.ensureComponent(var1, BreathingComponent.getComponentType());
            if (var2 == AddReason.SPAWN) {
               NewSpawnComponent var7 = new NewSpawnComponent(var6.getSpawnLockTime());
               var4.addComponent(var1, NewSpawnComponent.getComponentType(), var7);
            }
         }
      }

      @Override
      class="kw">public void onEntityRemove(
         @Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         NPCEntity var5 = var3.getComponent(var1, this.npcComponentType);
         assert var5 != null;
         class="kw">switch (var2) {
            case REMOVE:
            case BUILDER_TOOLS_UNDO:
               var5.getRole().removed(var1, var4);
               break;
            case UNLOAD:
               var5.getRole().unloaded(var1, var4);
         }
      }

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

   class="kw">public class="kw">static class BreathingCheckEventSystem class="kw">extends EntityEventSystem<EntityStore, BreathingCheckEvent> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NPCEntity> npcComponentType = NPCEntity.getComponentType();

      class="kw">public BreathingCheckEventSystem() {
         super(BreathingCheckEvent.class);
      }

      class="kw">public void handle(
         int var1,
         @Nonnull ArchetypeChunk<EntityStore> var2,
         @Nonnull Store<EntityStore> var3,
         @Nonnull CommandBuffer<EntityStore> var4,
         @Nonnull BreathingCheckEvent var5
      ) {
         NPCEntity var6 = var2.getComponent(var1, this.npcComponentType);
         assert var6 != null;
         Role var7 = var6.getRole();
         if (var7 != null) {
            var5.setCanBreathe(var7.canBreathe(var5.getBreathingMaterial(), var5.getFluidId()));
         }
      }

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

   class="kw">public class="kw">static class KillFeedDecedentEventSystem class="kw">extends EntityEventSystem<EntityStore, KillFeedEvent.DecedentMessage> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NPCEntity> npcComponentType = NPCEntity.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
      ) {
         var5.setCancelled(true);
      }

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

   class="kw">public class="kw">static class KillFeedKillerEventSystem class="kw">extends EntityEventSystem<EntityStore, KillFeedEvent.KillerMessage> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NPCEntity> npcComponentType = NPCEntity.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, Player> playerComponentType = Player.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
      ) {
         Ref var6 = var5.getTargetRef();
         if (var6.isValid()) {
            Player var7 = var3.getComponent(var6, this.playerComponentType);
            if (var7 == null) {
               var5.setCancelled(true);
            } else {
               DisplayNameComponent var9 = var2.getComponent(var1, DisplayNameComponent.getComponentType());
               Message var8;
               if (var9 != null) {
                  var8 = var9.getDisplayName();
               } else {
                  NPCEntity var10 = var2.getComponent(var1, this.npcComponentType);
                  assert var10 != null;
                  var8 = Message.raw(var10.getRoleName());
               }

               var5.setMessage(var8);
            }
         }
      }

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

   @Deprecated(forRemoval = true)
   class="kw">public class="kw">static class LegacyWorldGenId class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NPCEntity> npcComponentType = NPCEntity.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, WorldGenId> worldGenIdComponentType = WorldGenId.getComponentType();
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(
         this.npcComponentType, Query.not(this.worldGenIdComponentType), Query.not(FromWorldGen.getComponentType())
      );

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

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         NPCEntity var4 = var1.getComponent(this.npcComponentType);
         assert var4 != null;
         int var5 = var4.getLegacyWorldgenId();
         if (var5 != 0) {
            var1.addComponent(this.worldGenIdComponentType, new WorldGenId(var5));
         }
      }

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

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

   class="kw">public class="kw">static class ModelChangeSystem class="kw">extends RefChangeSystem<EntityStore, ModelComponent> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, ModelComponent> modelComponentType = ModelComponent.getComponentType();
      @Nullable
      class="kw">private class="kw">final ComponentType<EntityStore, NPCEntity> npcComponentType = NPCEntity.getComponentType();
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies = Set.of(new SystemDependency<>(Order.AFTER, ModelSystems.UpdateBoundingBox.class));

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

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

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

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

      class="kw">public void onComponentAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull ModelComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         Model var5 = var2.getModel();
         NPCEntity var6 = var3.getComponent(var1, this.npcComponentType);
         assert var6 != null;
         var6.getRole().updateMotionControllers(var1, var5, var5.getBoundingBox(), var4);
      }

      class="kw">public void onComponentSet(
         @Nonnull Ref<EntityStore> var1,
         ModelComponent var2,
         @Nonnull ModelComponent var3,
         @Nonnull Store<EntityStore> var4,
         @Nonnull CommandBuffer<EntityStore> var5
      ) {
         Model var6 = var3.getModel();
         NPCEntity var7 = var4.getComponent(var1, this.npcComponentType);
         assert var7 != null;
         var7.getRole().updateMotionControllers(var1, var6, var6.getBoundingBox(), var5);
      }

      class="kw">public void onComponentRemoved(
         @Nonnull Ref<EntityStore> var1, @Nonnull ModelComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         NPCEntity var5 = var3.getComponent(var1, this.npcComponentType);
         assert var5 != null;
         var5.getRole().updateMotionControllers(var1, null, null, var4);
      }
   }

   class="kw">public class="kw">static class OnDeathSystem class="kw">extends DeathSystems.OnDeathSystem {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NPCEntity> npcComponentType = NPCEntity.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, DeferredCorpseRemoval> deferredCorpseRemovalComponentType = DeferredCorpseRemoval.getComponentType();

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

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

      class="kw">public void onComponentAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull DeathComponent var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         NPCEntity var5 = var4.getComponent(var1, this.npcComponentType);
         assert var5 != null;
         Role var6 = var5.getRole();
         if (var6 != null) {
            double var7 = var6.getDeathAnimationTime();
            if (var7 > 0.0) {
               var4.addComponent(var1, this.deferredCorpseRemovalComponentType, new DeferredCorpseRemoval(var7, var6.getDeathParticles()));
            }
         }
      }
   }

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

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         NPCEntity var4 = var1.getComponent(NPCEntity.getComponentType());
         assert var4 != null;
         var4.getInventory().migrateToComponents(var1);
         if (!var1.getArchetype().contains(InventoryComponent.Storage.getComponentType())) {
            var1.addComponent(InventoryComponent.Storage.getComponentType(), new InventoryComponent.Storage((short)0));
         }

         if (!var1.getArchetype().contains(InventoryComponent.Armor.getComponentType())) {
            var1.addComponent(InventoryComponent.Armor.getComponentType(), new InventoryComponent.Armor(InventoryComponent.DEFAULT_ARMOR_CAPACITY));
         }

         if (!var1.getArchetype().contains(InventoryComponent.Hotbar.getComponentType())) {
            var1.addComponent(InventoryComponent.Hotbar.getComponentType(), new InventoryComponent.Hotbar((short)3));
         }

         if (!var1.getArchetype().contains(InventoryComponent.Utility.getComponentType())) {
            var1.addComponent(InventoryComponent.Utility.getComponentType(), new InventoryComponent.Utility((short)0));
         }

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

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

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

   class="kw">public class="kw">static class OnTeleportSystem class="kw">extends RefChangeSystem<EntityStore, Teleport> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NPCEntity> npcComponentType = NPCEntity.getComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, Teleport> teleportComponentType = Teleport.getComponentType();
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies = Set.of(new SystemDependency<>(Order.AFTER, TeleportSystems.MoveSystem.class));

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

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

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

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

      class="kw">public void onComponentAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull Teleport var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         NPCEntity var5 = var4.getComponent(var1, this.npcComponentType);
         assert var5 != null;
         World var6 = var3.getExternalData().getWorld();
         World var7 = var2.getWorld();
         Role var8 = var5.getRole();
         assert var8 != null;
         var8.teleported(var1, var4, var6, var7 == null ? var6 : var7);
      }

      class="kw">public void onComponentSet(
         @Nonnull Ref<EntityStore> var1, Teleport var2, @Nonnull Teleport var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
      }

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

   class="kw">public class="kw">static class PrefabPlaceEntityEventSystem class="kw">extends WorldEventSystem<EntityStore, PrefabPlaceEntityEvent> {
      class="kw">public PrefabPlaceEntityEventSystem() {
         super(PrefabPlaceEntityEvent.class);
      }

      class="kw">public void handle(@Nonnull Store<EntityStore> var1, @Nonnull CommandBuffer<EntityStore> var2, @Nonnull PrefabPlaceEntityEvent var3) {
         Holder var4 = var3.getHolder();
         FlockMembership var5 = var4.getComponent(FlockMembership.getComponentType());
         if (var5 != null) {
            UUID var6 = FlockPlugin.get().getPrefabRemappedFlockReference(var3.getPrefabId(), var5.getFlockId());
            var5.setFlockId(var6);
            NPCEntity var7 = var4.getComponent(NPCEntity.getComponentType());
            assert var7 != null;
            var7.markNeedsSave();
         }
      }
   }
}