EncounterManager class

Пакет: com.hypixel.hytale.builtin.encountermanager

Файл: com/hypixel/hytale/builtin/encountermanager/EncounterManager.java

implements: Component<EntityStore>, IAnnotatedComponent

Поля (36)

МодификаторыТипИмя
EncounterManager var1
EncounterManager var1
EncounterManager var10
var10
ValueStore.Builder var10
Object2IntMap var11
BeaconSupport var12
ExecutionSupport var2
StateSupport var3
List var3
var3
FlagsComponent var3
ExecutionSupport var3
StateTransitionController var3
ExecutionSupport var3
ExecutionSupport var3
WorldSupport var4
Instruction[] var4
StateSupport var4
ExecutionSupport var4
StateTransitionController var4
StateTransitionController var4
EntitySupport var5
WorldSupport var5
DebugSupport var5
ExecutionSupport var5
PositionCache var6
EntitySupport var6
StateSupport var6
StateTransitionController var6
DebugSupport var7
MarkedEntitySupport var7
FlagsComponent var8
PositionCache var8
ComponentType var9
Tickable[] var9

Методы (26)

МодификаторыВозвратСигнатура
private void buildInstructionTreevoid buildInstructionTree(@Nonnull BuilderEncounterManager var1, @Nonnull BuilderSupport var2)
public int getEncounterIndexint getEncounterIndex()
if if(var10 == null)
if if(this.encounterIndex == Integer.MIN_VALUE && this.encounterId != null)
if if(var3 == null)
if if(var9 != null)
if if(var10 != null)
if if(var11 != null)
if if(var3 != null)
if if(this.rootInstruction != null)
if if(var4 != null)
if if(this.rootInstruction != null)
if if(var4 != null)
if if(this.rootInstruction != null)
if if(var6 != null)
public boolean isBuiltboolean isBuilt()
public boolean isCleanupOnRemoveboolean isCleanupOnRemove()
private void postBuiltvoid postBuilt(@Nonnull Holder<EntityStore> var1, @Nonnull BuilderSupport var2)
public void removedvoid removed(@Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2)
public void resetRuntimevoid resetRuntime()
public void setEncounterIdvoid setEncounterId(@Nonnull String var1)
public void setEncounterIndexvoid setEncounterIndex(int var1)
public void spawnedvoid spawned(@Nonnull Holder<EntityStore> var1)
public void teleportedvoid teleported(@Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2, @Nonnull World var3, @Nonnull World var4)
public void tickvoid tick(@Nonnull Ref<EntityStore> var1, float var2, @Nonnull Store<EntityStore> var3)
public void unloadedvoid unloaded(@Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2)

Исходный код

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

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.common.thread.ticking.Tickable;
class="kw">import com.hypixel.hytale.component.Component;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
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.Store;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionManager;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.InteractionModule;
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.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.blackboard.BlackboardSubscription;
class="kw">import com.hypixel.hytale.server.npc.components.Timers;
class="kw">import com.hypixel.hytale.server.npc.components.messaging.BeaconSupport;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.instructions.IndexedInstructions;
class="kw">import com.hypixel.hytale.server.npc.instructions.Instruction;
class="kw">import com.hypixel.hytale.server.npc.interactions.NPCInteractionSimulationHandler;
class="kw">import com.hypixel.hytale.server.npc.role.support.DebugSupport;
class="kw">import com.hypixel.hytale.server.npc.role.support.EntitySupport;
class="kw">import com.hypixel.hytale.server.npc.role.support.FlagsComponent;
class="kw">import com.hypixel.hytale.server.npc.role.support.MarkedEntitySupport;
class="kw">import com.hypixel.hytale.server.npc.role.support.PositionCache;
class="kw">import com.hypixel.hytale.server.npc.role.support.StateSupport;
class="kw">import com.hypixel.hytale.server.npc.role.support.WorldSupport;
class="kw">import com.hypixel.hytale.server.npc.statetransition.StateTransitionController;
class="kw">import com.hypixel.hytale.server.npc.util.ComponentInfo;
class="kw">import com.hypixel.hytale.server.npc.util.IAnnotatedComponent;
class="kw">import com.hypixel.hytale.server.npc.valuestore.ValueStore;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntMap;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class EncounterManager class="kw">implements Component<EntityStore>, IAnnotatedComponent {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<EncounterManager> CODEC = BuilderCodec.builder(EncounterManager.class, EncounterManager::new)
      .append(new KeyedCodec<>("EncounterId", Codec.STRING), (var0, var1) -> {
         var0.encounterId = var1;
         var0.encounterIndex = NPCPlugin.get().getIndex(var1);
      }, var0 -> var0.encounterId)
      .add()
      .build();
   class="kw">private String encounterId;
   class="kw">private int encounterIndex = Integer.MIN_VALUE;
   class="kw">private boolean cleanupOnRemove;
   @Nullable
   class="kw">private Instruction rootInstruction;
   @Nullable
   class="kw">private IndexedInstructions indexedInstructions;

   @Nonnull
   class="kw">public class="kw">static ComponentType<EntityStore, EncounterManager> getComponentType() {
      class="kw">return EncounterManagerPlugin.get().getEncounterComponentType();
   }

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

   class="kw">public EncounterManager(@Nonnull String var1, int var2) {
      this.encounterId = var1;
      this.encounterIndex = var2;
   }

   @Nonnull
   class="kw">public class="kw">static EncounterManager createAndAttach(@Nonnull Holder<EntityStore> var0, @Nonnull BuilderEncounterManager var1, @Nonnull BuilderSupport var2) {
      StateSupport var3 = new StateSupport(var1, var2);
      WorldSupport var4 = new WorldSupport(var1, var2);
      EntitySupport var5 = new EntitySupport();
      PositionCache var6 = new PositionCache(var2.getRoleStats());
      var6.setOpaqueBlockSet(-1);
      DebugSupport var7 = new DebugSupport(var1);
      FlagsComponent var8 = new FlagsComponent();
      var0.putComponent(StateSupport.getComponentType(), var3);
      if (var0.getComponent(MarkedEntitySupport.getComponentType()) == null) {
         var0.putComponent(MarkedEntitySupport.getComponentType(), new MarkedEntitySupport());
      }

      var0.putComponent(WorldSupport.getComponentType(), var4);
      var0.putComponent(EntitySupport.getComponentType(), var5);
      var0.putComponent(PositionCache.getComponentType(), var6);
      var0.putComponent(DebugSupport.getComponentType(), var7);
      var0.putComponent(FlagsComponent.getComponentType(), var8);
      var0.putComponent(EncounterMembers.getComponentType(), new EncounterMembers());
      var0.putComponent(EncounterAudioState.getComponentType(), new EncounterAudioState());
      var0.putComponent(EncounterBossBarState.getComponentType(), new EncounterBossBarState());
      ComponentType var9 = InteractionModule.get().getInteractionManagerComponent();
      if (var0.getComponent(var9) == null) {
         var0.putComponent(var9, new InteractionManager(null, new NPCInteractionSimulationHandler()));
      }

      EncounterManager var10 = var0.getComponent(getComponentType());
      if (var10 == null) {
         var10 = new EncounterManager();
         var0.putComponent(getComponentType(), var10);
      }

      var10.buildInstructionTree(var1, var2);
      var10.postBuilt(var0, var2);
      class="kw">return var10;
   }

   class="kw">private void buildInstructionTree(@Nonnull BuilderEncounterManager var1, @Nonnull BuilderSupport var2) {
      if (this.encounterIndex == Integer.MIN_VALUE && this.encounterId != null) {
         this.encounterIndex = NPCPlugin.get().getIndex(this.encounterId);
      }

      this.cleanupOnRemove = var1.isCleanupOnRemove(var2);
      List var3 = var1.getInstructionList(var2);
      if (var3 == null) {
         var3 = List.of();
      }

      Instruction[] var4 = var3.toArray(Instruction[]::new);
      this.rootInstruction = Instruction.createRootInstruction(var4, var2);
   }

   class="kw">private void postBuilt(@Nonnull Holder<EntityStore> var1, @Nonnull BuilderSupport var2) {
      FlagsComponent var3 = var1.getComponent(FlagsComponent.getComponentType());
      assert var3 != null;
      var3.setFlags(var2.allocateFlags());
      this.indexedInstructions = new IndexedInstructions(var2.getInstructionSlotMappings());
      StateSupport var4 = var1.getComponent(StateSupport.getComponentType());
      assert var4 != null;
      var4.postRoleBuilt(var2);
      WorldSupport var5 = var1.getComponent(WorldSupport.getComponentType());
      assert var5 != null;
      var5.postRoleBuilt(var2);
      EntitySupport var6 = var1.getComponent(EntitySupport.getComponentType());
      assert var6 != null;
      var6.postRoleBuilt(var2);
      MarkedEntitySupport var7 = var1.getComponent(MarkedEntitySupport.getComponentType());
      assert var7 != null;
      var7.postRoleBuilder(var2);
      PositionCache var8 = var1.getComponent(PositionCache.getComponentType());
      assert var8 != null;
      var8.setRoleIndex(this.encounterIndex);
      Tickable[] var9 = var2.allocateTimers();
      if (var9 != null) {
         var1.putComponent(Timers.getComponentType(), new Timers(var9));
      }

      ValueStore.Builder var10 = var2.getValueStoreBuilder();
      if (var10 != null) {
         var1.putComponent(ValueStore.getComponentType(), var10.build());
      }

      Object2IntMap var11 = var2.getBeaconSlotMappings();
      if (var11 != null) {
         BeaconSupport var12 = new BeaconSupport();
         var12.initialise(var11);
         var1.putComponent(BeaconSupport.getComponentType(), var12);
      }

      BlackboardSubscription.buildAndAttach(var1, var2);
      assert this.rootInstruction != null;
      this.rootInstruction.setContext(this, 0);
   }

   @Nonnull
   class="kw">public ExecutionSupport acquireExecutionSupport(@Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2) {
      ExecutionSupport var3 = ExecutionSupport.acquire();
      var3.populateFromEntity(var1, var2);
      var3.setRoleIndex(this.encounterIndex);
      var3.setName(this.encounterId);
      var3.setIndexedInstructions(this.indexedInstructions);
      class="kw">return var3;
   }

   class="kw">public void tick(@Nonnull Ref<EntityStore> var1, float var2, @Nonnull Store<EntityStore> var3) {
      ExecutionSupport var4 = this.acquireExecutionSupport(var1, var3);

      try {
         var4.getEntitySupport().tickDeferredActions(var1, var4, var2, var3);
         DebugSupport var5 = var4.getDebugSupport();
         if (var5.isVisSensorRanges()) {
            var5.beginSensorVisualization();
         }

         StateSupport var6 = var4.getStateSupport();
         assert this.rootInstruction != null;
         if (var6.pollNeedClearOnce()) {
            this.rootInstruction.clearOnce();
            var6.resetLocalStateMachines();
         }

         if (!var6.runTransitionActions(var1, var4, var2, var3)) {
            this.rootInstruction.execute(var1, var4, var2, var3);
         }
      } class="kw">finally {
         var4.clearForReuse();
      }
   }

   class="kw">public void spawned(@Nonnull Holder<EntityStore> var1) {
      ExecutionSupport var2 = ExecutionSupport.acquire();
      var2.populateFromHolder(var1);
      var2.setRoleIndex(this.encounterIndex);
      var2.setName(this.encounterId);
      var2.setIndexedInstructions(this.indexedInstructions);

      try {
         assert this.rootInstruction != null;
         this.rootInstruction.spawned(var2);
         StateTransitionController var3 = var2.getStateSupport().getStateTransitionController();
         if (var3 != null) {
            var3.spawned(var2);
         }
      } class="kw">finally {
         var2.clearForReuse();
      }
   }

   class="kw">public void unloaded(@Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2) {
      EncounterMemberSystems.revertAndClearMembers(var2, var1);
      if (this.rootInstruction != null) {
         ExecutionSupport var3 = this.acquireExecutionSupport(var1, var2);

         try {
            var3.getEntitySupport().unloaded();
            var3.getWorldSupport().unloaded(var1);
            var3.getMarkedEntitySupport().unloaded();
            this.rootInstruction.unloaded(var3);
            StateTransitionController var4 = var3.getStateSupport().getStateTransitionController();
            if (var4 != null) {
               var4.unloaded(var3);
            }
         } class="kw">finally {
            var3.clearForReuse();
         }
      }
   }

   class="kw">public void removed(@Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2) {
      EncounterMemberSystems.revertAndClearMembers(var2, var1);
      if (this.rootInstruction != null) {
         ExecutionSupport var3 = this.acquireExecutionSupport(var1, var2);

         try {
            var3.getWorldSupport().resetAllBlockSensors(var1);
            this.rootInstruction.removed(var3);
            StateTransitionController var4 = var3.getStateSupport().getStateTransitionController();
            if (var4 != null) {
               var4.removed(var3);
            }
         } class="kw">finally {
            var3.clearForReuse();
         }
      }
   }

   class="kw">public void teleported(@Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2, @Nonnull World var3, @Nonnull World var4) {
      if (this.rootInstruction != null) {
         ExecutionSupport var5 = this.acquireExecutionSupport(var1, var2);

         try {
            this.rootInstruction.teleported(var5, var3, var4);
            StateTransitionController var6 = var5.getStateSupport().getStateTransitionController();
            if (var6 != null) {
               var6.teleported(var5, var3, var4);
            }
         } class="kw">finally {
            var5.clearForReuse();
         }
      }
   }

   @Nullable
   class="kw">public Instruction getRootInstruction() {
      class="kw">return this.rootInstruction;
   }

   @Nullable
   class="kw">public String getEncounterId() {
      class="kw">return this.encounterId;
   }

   class="kw">public void setEncounterId(@Nonnull String var1) {
      this.encounterId = var1;
   }

   class="kw">public int getEncounterIndex() {
      class="kw">return this.encounterIndex;
   }

   class="kw">public void setEncounterIndex(int var1) {
      this.encounterIndex = var1;
   }

   class="kw">public boolean isCleanupOnRemove() {
      class="kw">return this.cleanupOnRemove;
   }

   class="kw">public boolean isBuilt() {
      class="kw">return this.rootInstruction != null;
   }

   class="kw">public void resetRuntime() {
      this.rootInstruction = null;
      this.indexedInstructions = null;
   }

   @Nonnull
   @Override
   class="kw">public Component<EntityStore> clone() {
      EncounterManager var1 = new EncounterManager();
      var1.encounterId = this.encounterId;
      var1.encounterIndex = this.encounterIndex;
      class="kw">return var1;
   }

   @Nullable
   @Override
   class="kw">public Component<EntityStore> cloneSerializable() {
      EncounterManager var1 = new EncounterManager();
      var1.encounterId = this.encounterId;
      class="kw">return var1;
   }

   @Override
   class="kw">public void getInfo(ExecutionSupport var1, ComponentInfo var2) {
   }

   @Override
   class="kw">public void setContext(IAnnotatedComponent var1, int var2) {
   }

   @Nullable
   @Override
   class="kw">public IAnnotatedComponent getParent() {
      class="kw">return null;
   }

   @Override
   class="kw">public int getIndex() {
      class="kw">return -1;
   }
}