BreathingCheckEventSystem class

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

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

extends: EntityEventSystem<EntityStore, BreathingCheckEvent>

Поля (3)

МодификаторыТипИмя
private final ComponentType<EntityStore, NPCEntity> npcComponentType
NPCEntity var6
Role var7

Методы (4)

МодификаторыВозвратСигнатура
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)
if if(var7 != null)
abstract super super(BreathingCheckEvent.class)

Исходный код

Показать/скрыть
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();
         }
      }
   }
}