AmbientEmitterSystems class

Пакет: com.hypixel.hytale.builtin.ambience.systems

Файл: com/hypixel/hytale/builtin/ambience/systems/AmbientEmitterSystems.java

Поля (28)

МодификаторыТипИмя
private final ComponentType<EntityStore, AmbientEmitterComponent> ambientEmitterComponentType
private final ComponentType<EntityStore, AmbientEmitterComponent> ambientEmitterComponentType
private final ComponentType<EntityStore, AudioComponent> audioComponentType
private final ComponentType<EntityStore, Intangible> intangibleComponentType
private final ComponentType<EntityStore, Intangible> intangibleComponentType
private final ComponentType<EntityStore, NetworkId> networkIdComponentType
private final ComponentType<EntityStore, NetworkId> networkIdComponentType
private final ComponentType<EntityStore, PrefabCopyableComponent> prefabCopyableComponentType
private final Query<EntityStore> query
private final Query<EntityStore> query
private final Query<EntityStore> query
private final ComponentType<EntityStore, TransformComponent> transformComponentType
private final ComponentType<EntityStore, TransformComponent> transformComponentType
Ref var10
TransformComponent var10
Archetype var4
int var5
AmbientEmitterComponent var5
AmbientEmitterComponent var5
TransformComponent var6
Ref var6
AmbientEmitterComponent var6
Holder var7
TransformComponent var7
AudioComponent var8
Ref var8
int var9
Ref var9

Методы (14)

МодификаторыВозвратСигнатура
public EntityAddedpublic EntityAdded(@Nonnull ComponentType<EntityStore, AmbientEmitterComponent> var1, @Nonnull ComponentType<EntityStore, TransformComponent> var2, @Nonnull ComponentType<EntityStore, NetworkId> var3, @Nonnull ComponentType<EntityStore, Intangible> var4, @Nonnull ComponentType<EntityStore, PrefabCopyableComponent> var5)
public EntityRefAddedpublic EntityRefAdded(@Nonnull ComponentType<EntityStore, AmbientEmitterComponent> var1, @Nonnull ComponentType<EntityStore, TransformComponent> var2, @Nonnull ComponentType<EntityStore, AudioComponent> var3, @Nonnull ComponentType<EntityStore, NetworkId> var4, @Nonnull ComponentType<EntityStore, Intangible> var5)
public Tickingpublic Ticking(@Nonnull ComponentType<EntityStore, AmbientEmitterComponent> var1, @Nonnull ComponentType<EntityStore, TransformComponent> var2)
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
if if(var2 == RemoveReason.REMOVE)
if if(var6 != null)
if if(var10 != null)
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 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 tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.ambience.AmbiencePlugin;
class="kw">import com.hypixel.hytale.builtin.ambience.components.AmbientEmitterComponent;
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.NonSerialized;
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.query.Query;
class="kw">import com.hypixel.hytale.component.system.HolderSystem;
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.server.core.asset.type.soundevent.config.SoundEvent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.AudioComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.Intangible;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.tracker.NetworkId;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabCopyableComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;

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

   class="kw">public class="kw">static class EntityAdded class="kw">extends HolderSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NetworkId> networkIdComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, Intangible> intangibleComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, PrefabCopyableComponent> prefabCopyableComponentType;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public EntityAdded(
         @Nonnull ComponentType<EntityStore, AmbientEmitterComponent> var1,
         @Nonnull ComponentType<EntityStore, TransformComponent> var2,
         @Nonnull ComponentType<EntityStore, NetworkId> var3,
         @Nonnull ComponentType<EntityStore, Intangible> var4,
         @Nonnull ComponentType<EntityStore, PrefabCopyableComponent> var5
      ) {
         this.networkIdComponentType = var3;
         this.intangibleComponentType = var4;
         this.prefabCopyableComponentType = var5;
         this.query = Query.and(var1, var2);
      }

      @Override
      class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
         Archetype var4 = var1.getArchetype();
         if (!var4.contains(this.networkIdComponentType)) {
            int var5 = var3.getExternalData().takeNextNetworkId();
            var1.addComponent(this.networkIdComponentType, new NetworkId(var5));
         }

         var1.ensureComponent(this.intangibleComponentType);
         var1.ensureComponent(this.prefabCopyableComponentType);
      }

      @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 EntityRefAdded class="kw">extends RefSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, AmbientEmitterComponent> ambientEmitterComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, TransformComponent> transformComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, AudioComponent> audioComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, NetworkId> networkIdComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, Intangible> intangibleComponentType;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public EntityRefAdded(
         @Nonnull ComponentType<EntityStore, AmbientEmitterComponent> var1,
         @Nonnull ComponentType<EntityStore, TransformComponent> var2,
         @Nonnull ComponentType<EntityStore, AudioComponent> var3,
         @Nonnull ComponentType<EntityStore, NetworkId> var4,
         @Nonnull ComponentType<EntityStore, Intangible> var5
      ) {
         this.ambientEmitterComponentType = var1;
         this.transformComponentType = var2;
         this.audioComponentType = var3;
         this.networkIdComponentType = var4;
         this.intangibleComponentType = var5;
         this.query = Query.and(var1, var2);
      }

      @Override
      class="kw">public void onEntityAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         AmbientEmitterComponent var5 = var3.getComponent(var1, this.ambientEmitterComponentType);
         assert var5 != null;
         TransformComponent var6 = var3.getComponent(var1, this.transformComponentType);
         assert var6 != null;
         Holder var7 = EntityStore.REGISTRY.newHolder();
         var7.addComponent(this.transformComponentType, var6.clone());
         AudioComponent var8 = new AudioComponent();
         var8.addSound(SoundEvent.getAssetMap().getIndex(var5.getSoundEventId()));
         var7.addComponent(this.audioComponentType, var8);
         int var9 = var3.getExternalData().takeNextNetworkId();
         var7.addComponent(this.networkIdComponentType, new NetworkId(var9));
         var7.ensureComponent(this.intangibleComponentType);
         var7.addComponent(EntityStore.REGISTRY.getNonSerializedComponentType(), NonSerialized.get());
         Ref var10 = var4.addEntity(var7, AddReason.SPAWN);
         var5.setSpawnedEmitter(var10);
      }

      @Override
      class="kw">public void onEntityRemove(
         @Nonnull Ref<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         if (var2 == RemoveReason.REMOVE) {
            AmbientEmitterComponent var5 = var3.getComponent(var1, this.ambientEmitterComponentType);
            assert var5 != null;
            Ref var6 = var5.getSpawnedEmitter();
            if (var6 != null) {
               var4.removeEntity(var6, RemoveReason.REMOVE);
            }
         }
      }

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

   class="kw">public class="kw">static class Ticking class="kw">extends EntityTickingSystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, AmbientEmitterComponent> ambientEmitterComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, TransformComponent> transformComponentType;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public Ticking(@Nonnull ComponentType<EntityStore, AmbientEmitterComponent> var1, @Nonnull ComponentType<EntityStore, TransformComponent> var2) {
         this.ambientEmitterComponentType = var1;
         this.transformComponentType = var2;
         this.query = Query.and(var1, var2);
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         AmbientEmitterComponent var6 = var3.getComponent(var2, this.ambientEmitterComponentType);
         assert var6 != null;
         TransformComponent var7 = var3.getComponent(var2, this.transformComponentType);
         assert var7 != null;
         Ref var8 = var6.getSpawnedEmitter();
         if (var8 != null && var8.isValid()) {
            TransformComponent var10 = var5.getComponent(var8, this.transformComponentType);
            if (var10 != null) {
               if (var7.getPosition().distanceSquared(var10.getPosition()) > 1.0) {
                  var10.setPosition(var7.getPosition());
               }
            }
         } else {
            Ref var9 = var3.getReferenceTo(var2);
            AmbiencePlugin.get()
               .getLogger()
               .at(Level.WARNING)
               .log("Ambient emitter lost at %s: %d %s", var7.getPosition(), var9.getIndex(), var6.getSoundEventId());
            var5.removeEntity(var9, RemoveReason.REMOVE);
         }
      }

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