CombatActionEvaluatorSystems class

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

Файл: com/hypixel/hytale/builtin/npccombatactionevaluator/CombatActionEvaluatorSystems.java

Поля (77)

МодификаторыТипИмя
private final ComponentType<EntityStore, CombatActionEvaluatorSystems.CombatConstructionData> combatConstructionDataComponentType
protected String combatState
private final ComponentType<EntityStore, CombatActionEvaluator> componentType
private final ComponentType<EntityStore, DamageMemory> damageMemoryComponentType
private final Set<Dependency<EntityStore>> dependencies
private final Set<Dependency<EntityStore>> dependencies
protected int markedTargetSlot
protected int maxRangeSlot
protected int minRangeSlot
private final ComponentType<EntityStore, NPCEntity> npcComponentType
private final ComponentType<EntityStore, NPCEntity> npcComponentType
private final ComponentType<EntityStore, Player> playerComponentType
protected int positioningAngleSlot
private final Query<EntityStore> query
private final Query<EntityStore> query
return
return
return
private final ComponentType<EntityStore, TargetMemory> targetMemoryComponentType
private final ComponentType<EntityStore, TransformComponent> transformComponentType
private final ComponentType<EntityStore, ValueStore> valueStoreComponentType
CombatActionEvaluatorSystems.CombatConstructionData var1
MarkedEntitySupport var10
StateSupport var10
int var11
CombatActionEvaluator var11
CombatSupport var12
ValueStore var13
double[] var14
int var15
CombatActionEvaluatorConfig.BasicAttacks var16
String var17
HytaleLogger.Api var18
TransformComponent var19
Vector3d var20
Ref var21
var21
var21
CombatActionEvaluator.CombatOptionHolder var22
Ref var23
TransformComponent var24
Vector3d var25
String var26
var26
var26
int var27
var27
HytaleLogger.Api var28
HytaleLogger.Api var31
DamageMemory var32
CombatActionEvaluator.CombatOptionHolder var33
MotionController var34
Ref var35
HytaleLogger.Api var36
EvaluationContext var37
Player var38
double var39
NPCEntity var4
CombatActionEvaluator.RunOption var40
double var41
TargetMemory var42
TransformComponent var43
Vector3d var44
Int2ObjectMap var45
String[] var46
List var47
ExecutionSupport var48
Role var5
HytaleLogger.Api var50
DamageMemory var51
NPCEntity var6
BalanceAsset var6
Role var7
CombatActionEvaluator var8
CombatActionEvaluatorSystems.CombatConstructionData var8
StateSupport var9
PositionCache var9

Методы (34)

МодификаторыВозвратСигнатура
public CombatConstructionDatapublic CombatConstructionData()
public EvaluatorTickpublic EvaluatorTick(ComponentType<EntityStore, CombatActionEvaluator> var1, ComponentType<EntityStore, TargetMemory> var2, ComponentType<EntityStore, DamageMemory> var3)
abstract throw new IllegalStateExceptionthrow new IllegalStateException("Cannot have more than one combat state in an NPC!")
public OnAddedpublic OnAdded(ComponentType<EntityStore, CombatActionEvaluatorSystems.CombatConstructionData> var1)
public Component<EntityStore> clonepublic Component<EntityStore> clone()
public String getCombatStatepublic String getCombatState()
public static ComponentType<EntityStore, CombatActionEvaluatorSystems.CombatConstructionData> getComponentTypepublic static ComponentType<EntityStore, CombatActionEvaluatorSystems.CombatConstructionData> getComponentType()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public int getMarkedTargetSlotpublic int getMarkedTargetSlot()
public int getMaxRangeSlotpublic int getMaxRangeSlot()
public int getMinRangeSlotpublic int getMinRangeSlot()
public int getPositioningAngleSlotpublic int getPositioningAngleSlot()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
if if(var32 != null)
if if(var14 != null)
if if(var16 != null)
if if(var17 != null)
if if(var21 == null)
if if(var21 != null)
if if(++var27 >= var46.length)
if if(var33 != null)
if if(var51 != null)
if if(var6 instanceof CombatBalanceAsset var7)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
public void setCombatStatepublic void setCombatState(String var1)
public void setMarkedTargetSlotpublic void setMarkedTargetSlot(int var1)
public void setMaxRangeSlotpublic void setMaxRangeSlot(int var1)
public void setMinRangeSlotpublic void setMinRangeSlot(int var1)
public void setPositioningAngleSlotpublic void setPositioningAngleSlot(int var1)
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.npccombatactionevaluator;

class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.config.CombatBalanceAsset;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.evaluator.CombatActionEvaluator;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.evaluator.CombatActionEvaluatorConfig;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.evaluator.combatactions.CombatActionOption;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.memory.DamageMemory;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.memory.TargetMemory;
class="kw">import com.hypixel.hytale.builtin.npccombatactionevaluator.memory.TargetMemorySystems;
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.Component;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.RemoveReason;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.dependency.Dependency;
class="kw">import com.hypixel.hytale.component.dependency.Order;
class="kw">import com.hypixel.hytale.component.dependency.SystemDependency;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.system.HolderSystem;
class="kw">import com.hypixel.hytale.component.system.tick.EntityTickingSystem;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.math.random.RandomExtra;
class="kw">import com.hypixel.hytale.protocol.GameMode;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DeathComponent;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.InteractionModule;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.config.balancing.BalanceAsset;
class="kw">import com.hypixel.hytale.server.npc.decisionmaker.core.EvaluationContext;
class="kw">import com.hypixel.hytale.server.npc.decisionmaker.core.Evaluator;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.movement.controllers.MotionController;
class="kw">import com.hypixel.hytale.server.npc.role.Role;
class="kw">import com.hypixel.hytale.server.npc.role.support.CombatSupport;
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.systems.BalancingInitialisationSystem;
class="kw">import com.hypixel.hytale.server.npc.systems.RoleSystems;
class="kw">import com.hypixel.hytale.server.npc.valuestore.ValueStore;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class CombatActionEvaluatorSystems {
   @Nonnull
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();

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

   class="kw">public class="kw">static class CombatConstructionData class="kw">implements Component<EntityStore> {
      class="kw">protected String combatState;
      class="kw">protected int markedTargetSlot;
      class="kw">protected int minRangeSlot;
      class="kw">protected int maxRangeSlot;
      class="kw">protected int positioningAngleSlot;

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

      class="kw">public class="kw">static ComponentType<EntityStore, CombatActionEvaluatorSystems.CombatConstructionData> getComponentType() {
         class="kw">return NPCCombatActionEvaluatorPlugin.get().getCombatConstructionDataComponentType();
      }

      class="kw">public String getCombatState() {
         class="kw">return this.combatState;
      }

      class="kw">public void setCombatState(String var1) {
         if (this.combatState != null && !this.combatState.equals(var1)) {
            throw new IllegalStateException("Cannot have more than one combat state in an NPC!");
         }

         this.combatState = var1;
      }

      class="kw">public int getMarkedTargetSlot() {
         class="kw">return this.markedTargetSlot;
      }

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

      class="kw">public int getMinRangeSlot() {
         class="kw">return this.minRangeSlot;
      }

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

      class="kw">public int getMaxRangeSlot() {
         class="kw">return this.maxRangeSlot;
      }

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

      class="kw">public int getPositioningAngleSlot() {
         class="kw">return this.positioningAngleSlot;
      }

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

      @Nonnull
      @Override
      class="kw">public Component<EntityStore> clone() {
         CombatActionEvaluatorSystems.CombatConstructionData var1 = new CombatActionEvaluatorSystems.CombatConstructionData();
         var1.combatState = this.combatState;
         var1.markedTargetSlot = this.markedTargetSlot;
         var1.minRangeSlot = this.minRangeSlot;
         var1.maxRangeSlot = this.maxRangeSlot;
         var1.positioningAngleSlot = this.positioningAngleSlot;
         class="kw">return var1;
      }
   }

   class="kw">public class="kw">static class EvaluatorTick class="kw">extends EntityTickingSystem<EntityStore> {
      class="kw">private class="kw">final ComponentType<EntityStore, CombatActionEvaluator> componentType;
      class="kw">private class="kw">final ComponentType<EntityStore, TargetMemory> targetMemoryComponentType;
      class="kw">private class="kw">final ComponentType<EntityStore, DamageMemory> damageMemoryComponentType;
      @Nullable
      class="kw">private class="kw">final ComponentType<EntityStore, NPCEntity> npcComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, Player> playerComponentType;
      class="kw">private class="kw">final ComponentType<EntityStore, ValueStore> valueStoreComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, TransformComponent> transformComponentType;
      class="kw">private class="kw">final Query<EntityStore> query;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies;

      class="kw">public EvaluatorTick(
         ComponentType<EntityStore, CombatActionEvaluator> var1, ComponentType<EntityStore, TargetMemory> var2, ComponentType<EntityStore, DamageMemory> var3
      ) {
         this.componentType = var1;
         this.targetMemoryComponentType = var2;
         this.damageMemoryComponentType = var3;
         this.npcComponentType = NPCEntity.getComponentType();
         this.playerComponentType = Player.getComponentType();
         this.valueStoreComponentType = ValueStore.getComponentType();
         this.transformComponentType = TransformComponent.getComponentType();
         this.query = Archetype.of(var1, var2, this.npcComponentType, this.valueStoreComponentType, this.transformComponentType);
         this.dependencies = Set.of(
            new SystemDependency<>(Order.BEFORE, RoleSystems.PreBehaviourSupportTickSystem.class),
            new SystemDependency<>(Order.AFTER, TargetMemorySystems.Ticking.class)
         );
      }

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

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

      @Override
      class="kw">public boolean isParallel(int var1, int var2) {
         class="kw">return false;
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         NPCEntity var6 = var3.getComponent(var2, this.npcComponentType);
         assert var6 != null;
         Role var7 = var6.getRole();
         if (!var3.getArchetype().contains(DeathComponent.getComponentType())) {
            CombatActionEvaluator var8 = var3.getComponent(var2, this.componentType);
            assert var8 != null;
            var8.tickBasicAttackCoolDown(var1);
            StateSupport var9 = var3.getComponent(var2, StateSupport.getComponentType());
            assert var9 != null;
            MarkedEntitySupport var10 = var3.getComponent(var2, MarkedEntitySupport.getComponentType());
            assert var10 != null;
            int var11 = var9.getStateIndex();
            if (var11 != var8.getRunInState()) {
               if (var8.getCurrentAction() != null) {
                  var8.completeCurrentAction(true, true);
                  var8.clearPrimaryTarget();
                  var10.clearMarkedEntity(var8.getMarkedTargetSlot());
                  HytaleLogger.Api var31 = CombatActionEvaluatorSystems.LOGGER.at(Level.FINEST);
                  if (var31.isEnabled()) {
                     var31.log("%s: Leaving combat", var3.getReferenceTo(var2));
                  }
               }

               DamageMemory var32 = var3.getComponent(var2, this.damageMemoryComponentType);
               if (var32 != null) {
                  var32.clearTotalDamage();
               }
            } else {
               CombatSupport var12 = var3.getComponent(var2, CombatSupport.getComponentType());
               assert var12 != null;
               if (!var12.isExecutingAttack()) {
                  ValueStore var13 = var3.getComponent(var2, this.valueStoreComponentType);
                  assert var13 != null;
                  double[] var14 = var8.consumePostExecutionDistanceRange();
                  if (var14 != null) {
                     var13.storeDouble(var8.getMinRangeSlot(), var14[0]);
                     var13.storeDouble(var8.getMaxRangeSlot(), var14[1]);
                  }

                  int var15 = var9.getSubStateIndex();
                  CombatActionEvaluatorConfig.BasicAttacks var16 = var8.getBasicAttacks(var15);
                  if (var16 != null) {
                     var8.setCurrentBasicAttackSet(var15, var16);
                     String var17 = var8.getCurrentBasicAttack();
                     if (var17 != null) {
                        if (!var8.tickBasicAttackTimeout(var1)) {
                           var10.setMarkedEntity(var8.getMarkedTargetSlot(), var8.getBasicAttackTarget());
                           class="kw">return;
                        }

                        var8.clearCurrentBasicAttack();
                        HytaleLogger.Api var18 = CombatActionEvaluatorSystems.LOGGER.at(Level.FINEST);
                        if (var18.isEnabled()) {
                           var18.log("%s: Basic attack timed out", var3.getReferenceTo(var2));
                        }
                     }

                     if (var8.canUseBasicAttack(var2, var3, var5)) {
                        MotionController var34 = var7.getActiveMotionController();
                        TransformComponent var19 = var3.getComponent(var2, this.transformComponentType);
                        assert var19 != null;
                        Vector3d var20 = var19.getPosition();
                        Ref var21 = null;
                        CombatActionEvaluator.CombatOptionHolder var22 = var8.getCurrentAction();
                        if (var22 == null || ((CombatActionOption)var22.getOption()).getActionTarget() != CombatActionOption.Target.Friendly) {
                           Ref var23 = var8.getPrimaryTarget();
                           if (var23 != null && var23.isValid()) {
                              TransformComponent var24 = var5.getComponent(var23, this.transformComponentType);
                              assert var24 != null;
                              Vector3d var25 = var24.getPosition();
                              if (var34.getSquaredDistance(var20, var25, var16.shouldUseProjectedDistance()) < var16.getMaxRangeSquared()) {
                                 var21 = var23;
                              }
                           }
                        }

                        if (var21 == null) {
                           TargetMemory var42 = var3.getComponent(var2, this.targetMemoryComponentType);
                           assert var42 != null;
                           var21 = var42.getClosestHostile();
                        }

                        if (var21 != null) {
                           TransformComponent var43 = var5.getComponent(var21, this.transformComponentType);
                           assert var43 != null;
                           Vector3d var44 = var43.getPosition();
                           if (var34.getSquaredDistance(var20, var44, var16.shouldUseProjectedDistance()) < var16.getMaxRangeSquared()) {
                              var8.setBasicAttackTarget(var21);
                              var10.setMarkedEntity(var8.getMarkedTargetSlot(), var21);
                              String[] var46 = var16.getAttacks();
                              String var26;
                              if (var16.isRandom()) {
                                 var26 = var46[RandomExtra.randomRange(var46.length)];
                              } else {
                                 int var27 = var8.getNextBasicAttackIndex();
                                 var26 = var46[var27];
                                 if (++var27 >= var46.length) {
                                    var27 = 0;
                                 }

                                 var8.setNextBasicAttackIndex(var27);
                              }

                              var8.setCurrentBasicAttack(var26, var16.isDamageFriendlies(), var16::getInteractionVars);
                              var8.setBasicAttackTimeout(var16.getTimeout());
                              HytaleLogger.Api var50 = CombatActionEvaluatorSystems.LOGGER.at(Level.FINEST);
                              if (var50.isEnabled()) {
                                 var50.log("%s: Started basic attack %s", var3.getReferenceTo(var2), var26);
                              }
                           }
                        }
                     }
                  } else {
                     var8.setCurrentBasicAttackSet(var15, null);
                  }

                  CombatActionEvaluator.CombatOptionHolder var33 = var8.getCurrentAction();
                  if (var33 != null) {
                     if (((CombatActionOption)var33.getOption()).getActionTarget() == CombatActionOption.Target.Self) {
                        class="kw">return;
                     }

                     if (!var8.hasTimedOut(var1)) {
                        Ref var35 = var8.getPrimaryTarget();
                        if (var35 != null && var35.isValid() && !var5.getArchetype(var35).contains(DeathComponent.getComponentType())) {
                           Player var38 = var5.getComponent(var35, this.playerComponentType);
                           if (var38 == null || var38.getGameMode() == GameMode.Adventure) {
                              var10.setMarkedEntity(var8.getMarkedTargetSlot(), var35);
                              class="kw">return;
                           }
                        }
                     }

                     var8.terminateCurrentAction();
                     var8.clearPrimaryTarget();
                     var10.clearMarkedEntity(var8.getMarkedTargetSlot());
                     HytaleLogger.Api var36 = CombatActionEvaluatorSystems.LOGGER.at(Level.FINEST);
                     if (var36.isEnabled()) {
                        var36.log("%s: Lost current action target or timed out", var3.getReferenceTo(var2));
                     }
                  }

                  if (var8.getOptionsBySubState().containsKey(var15)) {
                     EvaluationContext var37 = var8.getEvaluationContext();
                     double var39 = var8.getMinRunUtility();
                     var37.setMinimumUtility(var39);
                     var37.setMinimumWeightCoefficient(0.0);
                     var37.setLastUsedNanos(var8.getLastRunNanos());
                     CombatActionEvaluator.RunOption var40 = var8.getRunOption();
                     double var41 = var40.calculateUtility(var2, var3, var8.getPrimaryTarget(), var5, var37);
                     var37.reset();
                     if (!(var41 < var39)) {
                        Int2ObjectMap var45 = var8.getOptionsBySubState();
                        List var47 = (List<Evaluator<CombatActionOption>.OptionHolder>)var45.get(var15);
                        var8.setActiveOptions(var47);
                        ExecutionSupport var48 = var7.acquireExecutionSupport(var3.getReferenceTo(var2), var5);

                        try {
                           var8.selectNextCombatAction(var2, var3, var5, var48, var13);
                        } class="kw">finally {
                           var48.clearForReuse();
                        }

                        var8.setLastRunNanos(System.nanoTime());
                        DamageMemory var51 = var3.getComponent(var2, this.damageMemoryComponentType);
                        if (var51 != null) {
                           var51.clearRecentDamage();
                        }

                        HytaleLogger.Api var28 = CombatActionEvaluatorSystems.LOGGER.at(Level.FINEST);
                        if (var28.isEnabled()) {
                           var28.log("%s: Has run the combat action evaluator", var3.getReferenceTo(var2));
                        }
                     }
                  }
               }
            }
         }
      }
   }

   class="kw">public class="kw">static class OnAdded class="kw">extends HolderSystem<EntityStore> {
      @Nullable
      class="kw">private class="kw">final ComponentType<EntityStore, NPCEntity> npcComponentType = NPCEntity.getComponentType();
      class="kw">private class="kw">final ComponentType<EntityStore, CombatActionEvaluatorSystems.CombatConstructionData> combatConstructionDataComponentType;
      @Nonnull
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies;
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query;

      class="kw">public OnAdded(ComponentType<EntityStore, CombatActionEvaluatorSystems.CombatConstructionData> var1) {
         this.combatConstructionDataComponentType = var1;
         this.dependencies = Set.of(new SystemDependency<>(Order.AFTER, BalancingInitialisationSystem.class));
         this.query = Query.and(var1, this.npcComponentType);
      }

      @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;
         Role var5 = var4.getRole();
         if (var5 != null && var5.getBalanceAsset() != null) {
            BalanceAsset var6 = BalanceAsset.getAssetMap().getAsset(var5.getBalanceAsset());
            if (var6 class="kw">instanceof CombatBalanceAsset var7) {
               CombatActionEvaluatorSystems.CombatConstructionData var8 = var1.getComponent(this.combatConstructionDataComponentType);
               assert var8 != null;
               PositionCache var9 = var1.getComponent(PositionCache.getComponentType());
               assert var9 != null;
               StateSupport var10 = var1.getComponent(StateSupport.getComponentType());
               assert var10 != null;
               CombatActionEvaluator var11 = new CombatActionEvaluator(var10, var7.getEvaluatorConfig(), var8);
               var11.setupNPC(var1);
               var9.addExternalPositionCacheRegistration(var11::setupNPC);
               var1.putComponent(TargetMemory.getComponentType(), new TargetMemory(var7.getTargetMemoryDuration()));
               var1.putComponent(CombatActionEvaluator.getComponentType(), var11);
               var1.ensureComponent(InteractionModule.get().getChainingDataComponent());
               var1.removeComponent(this.combatConstructionDataComponentType);
            }
         }
      }

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

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