BasicAttackTargetCombatAction class

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

Файл: com/hypixel/hytale/builtin/npccombatactionevaluator/evaluator/combatactions/BasicAttackTargetCombatAction.java

extends: CombatActionOption

Поля (6)

МодификаторыТипИмя
final double BASIC_ATTACK_DISTANCE_OFFSET
CombatActionEvaluatorConfig.BasicAttacks var10
double var11
NPCEntity var7
HytaleLogger.Api var8
Ref var9

Методы (1)

МодификаторыВозвратСигнатура
if if(var10 != null)

Исходный код

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

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.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.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.decisionmaker.core.Option;
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.util.InventoryHelper;
class="kw">import com.hypixel.hytale.server.npc.valuestore.ValueStore;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;

class="kw">public class BasicAttackTargetCombatAction class="kw">extends CombatActionOption {
   class="kw">private class="kw">static class="kw">final double BASIC_ATTACK_DISTANCE_OFFSET = 0.1;
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<BasicAttackTargetCombatAction> CODEC = BuilderCodec.builder(
         BasicAttackTargetCombatAction.class, BasicAttackTargetCombatAction::new, Option.ABSTRACT_CODEC
      )
      .documentation("A combat action which simply selects a target and sets up distances for use with substates that only contain basic attacks.")
      .<Integer>appendInherited(
         new KeyedCodec<>("WeaponSlot", Codec.INTEGER),
         (var0, var1) -> var0.weaponSlot = var1,
         var0 -> var0.weaponSlot,
         (var0, var1) -> var0.weaponSlot = var1.weaponSlot
      )
      .documentation("The weapon (hotbar) slot to class="kw">switch to for basic attacks.")
      .add()
      .<Integer>appendInherited(
         new KeyedCodec<>("OffhandSlot", Codec.INTEGER),
         (var0, var1) -> var0.offhandSlot = var1,
         var0 -> var0.offhandSlot,
         (var0, var1) -> var0.offhandSlot = var1.offhandSlot
      )
      .documentation("The off-hand slot to class="kw">switch to for basic attacks. -1 set to no off-hand equipped.")
      .add()
      .afterDecode(var0 -> var0.actionTarget = CombatActionOption.Target.Hostile)
      .build();
   class="kw">protected int weaponSlot;
   class="kw">protected int offhandSlot;

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

   @Override
   class="kw">public void execute(
      int var1,
      @Nonnull ArchetypeChunk<EntityStore> var2,
      CommandBuffer<EntityStore> var3,
      ExecutionSupport var4,
      @Nonnull CombatActionEvaluator var5,
      @Nonnull ValueStore var6
   ) {
      NPCEntity var7 = var2.getComponent(var1, NPCEntity.getComponentType());
      assert var7 != null;
      HytaleLogger.Api var8 = CombatActionEvaluator.LOGGER.at(Level.FINEST);
      if (var8.isEnabled()) {
         var8.log("%s: Executing option %s", var2.getReferenceTo(var1), this.getId());
      }

      Ref var9 = var2.getReferenceTo(var1);
      InventoryHelper.setHotbarSlot(var9, (byte)this.weaponSlot, var3);
      InventoryHelper.setOffHandSlot(var9, (byte)this.offhandSlot, var3);
      CombatActionEvaluatorConfig.BasicAttacks var10 = var5.getCurrentBasicAttackSet();
      if (var10 != null) {
         double var11 = var10.getMaxRange() - 0.1;
         var6.storeDouble(var5.getMinRangeSlot(), var11);
         var6.storeDouble(var5.getMaxRangeSlot(), var11);
      }

      var5.completeCurrentAction(true, false);
      var5.clearTimeout();
   }

   @Override
   class="kw">public boolean isBasicAttackAllowed(int var1, ArchetypeChunk<EntityStore> var2, CommandBuffer<EntityStore> var3, CombatActionEvaluator var4) {
      class="kw">return true;
   }

   @Override
   class="kw">public boolean cancelBasicAttackOnSelect() {
      class="kw">return false;
   }
}