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