CombatSupport class
Пакет: com.hypixel.hytale.server.npc.role.support
Файл: com/hypixel/hytale/server/npc/role/support/CombatSupport.java
implements: Component<EntityStore>
Поля (8)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
String |
ATTACK_TAG |
|
int |
var1 |
|
CombatSupport |
var2 |
|
Ref |
var4 |
|
EntityGroup |
var5 |
|
boolean |
var6 |
|
|
var6 |
|
NPCEntity |
var7 |
Методы (14)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
void |
addAttackOverridevoid addAttackOverride(String var1) |
public |
void |
clearAttackOverridesvoid clearAttackOverrides() |
public |
boolean |
getCanCauseDamageboolean getCanCauseDamage(@Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull ComponentAccessor<EntityStore> var3) |
public |
int[] |
getDisableDamageGroupsint[] getDisableDamageGroups() |
|
|
if if(this.attackPause > 0.0) |
|
|
if if(this.disableDamageFlock) |
|
|
if if(var4 != null) |
|
|
if if(var7 != null) |
|
|
if if(this.attackOverrideIndex == -1) |
public |
boolean |
isDealingFriendlyDamageboolean isDealingFriendlyDamage() |
public |
boolean |
isExecutingAttackboolean isExecutingAttack() |
public |
void |
setExecutingAttackvoid setExecutingAttack(InteractionChain var1, boolean var2, double var3) |
public |
void |
setRoleIndexvoid setRoleIndex(int var1) |
public |
void |
tickvoid tick(double var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.role.support;
class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
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.Ref;
class="kw">import com.hypixel.hytale.protocol.InteractionState;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionChain;
class="kw">import com.hypixel.hytale.server.core.entity.group.EntityGroup;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.flock.FlockPlugin;
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.asset.builder.SupportConfigBuilder;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class CombatSupport class="kw">implements Component<EntityStore> {
class="kw">public class="kw">static class="kw">final String ATTACK_TAG = "Attack";
class="kw">public class="kw">static class="kw">final int ATTACK_TAG_INDEX = AssetRegistry.getOrCreateTagIndex("Attack");
class="kw">public class="kw">static class="kw">final String AIMING_REFERENCE_TAG = "AimingReference";
class="kw">public class="kw">static class="kw">final int AIMING_REFERENCE_TAG_INDEX = AssetRegistry.getOrCreateTagIndex("AimingReference");
class="kw">public class="kw">static class="kw">final String MELEE_TAG = "Attack=Melee";
class="kw">public class="kw">static class="kw">final int MELEE_TAG_INDEX = AssetRegistry.getOrCreateTagIndex("Attack=Melee");
class="kw">public class="kw">static class="kw">final String RANGED_TAG = "Attack=Ranged";
class="kw">public class="kw">static class="kw">final int RANGED_TAG_INDEX = AssetRegistry.getOrCreateTagIndex("Attack=Ranged");
class="kw">public class="kw">static class="kw">final String BLOCK_TAG = "Attack=Block";
class="kw">public class="kw">static class="kw">final int BLOCK_TAG_INDEX = AssetRegistry.getOrCreateTagIndex("Attack=Block");
class="kw">protected class="kw">final boolean disableDamageFlock;
class="kw">protected class="kw">final int[] disableDamageGroups;
class="kw">private int roleIndex = -1;
@Nullable
class="kw">protected InteractionChain activeAttack;
class="kw">protected boolean dealFriendlyDamage;
class="kw">protected double attackPause;
class="kw">protected class="kw">final List<String> attackOverrides = new ObjectArrayList();
class="kw">protected int attackOverrideIndex = -1;
@Nonnull
class="kw">public class="kw">static ComponentType<EntityStore, CombatSupport> getComponentType() {
class="kw">return NPCPlugin.get().getCombatSupportComponentType();
}
@Nonnull
class="kw">public class="kw">static CombatSupport get(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1) {
CombatSupport var2 = var1.getComponent(var0, getComponentType());
assert var2 != null : "Missing CombatSupport on entity " + var0;
class="kw">return var2;
}
class="kw">public CombatSupport(@Nonnull SupportConfigBuilder<?> var1, @Nonnull BuilderSupport var2) {
this.disableDamageFlock = var1.isDisableDamageFlock();
this.disableDamageGroups = var1.getDisableDamageGroups(var2);
}
class="kw">public void setRoleIndex(int var1) {
this.roleIndex = var1;
}
class="kw">public boolean isDealingFriendlyDamage() {
class="kw">return this.dealFriendlyDamage;
}
class="kw">public int[] getDisableDamageGroups() {
class="kw">return this.disableDamageGroups;
}
class="kw">public boolean isExecutingAttack() {
class="kw">return this.attackPause > 0.0 || this.activeAttack != null;
}
class="kw">public void tick(double var1) {
if (this.attackPause > 0.0) {
this.attackPause -= var1;
}
if (this.activeAttack != null && this.activeAttack.getServerState() != InteractionState.NotFinished) {
this.activeAttack = null;
}
}
class="kw">public boolean getCanCauseDamage(@Nonnull Ref<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull ComponentAccessor<EntityStore> var3) {
if (this.disableDamageFlock) {
Ref var4 = FlockPlugin.getFlockReference(var1, var3.getExternalData().getStore());
if (var4 != null) {
EntityGroup var5 = var3.getComponent(var4, EntityGroup.getComponentType());
if (var5 != null && var5.isMember(var2)) {
class="kw">return false;
}
}
}
boolean var6 = false;
NPCEntity var7 = var3.getComponent(var2, NPCEntity.getComponentType());
if (var7 != null) {
var6 = get(var2, var3).isDealingFriendlyDamage();
}
class="kw">return var6 || !WorldSupport.isGroupMember(this.roleIndex, var2, this.disableDamageGroups, var3);
}
class="kw">public void setExecutingAttack(InteractionChain var1, boolean var2, double var3) {
this.activeAttack = var1;
this.dealFriendlyDamage = var2;
this.attackPause = var3;
}
class="kw">public void addAttackOverride(String var1) {
this.attackOverrides.add(var1);
this.attackOverrideIndex = 0;
}
class="kw">public void clearAttackOverrides() {
this.attackOverrides.clear();
this.attackOverrideIndex = -1;
}
@Nullable
class="kw">public String getNextAttackOverride() {
if (this.attackOverrideIndex == -1) {
class="kw">return null;
}
int var1 = this.attackOverrideIndex;
this.attackOverrideIndex = this.attackOverrideIndex < this.attackOverrides.size() - 1 ? this.attackOverrideIndex + 1 : 0;
class="kw">return this.attackOverrides.get(var1);
}
@Override
class="kw">public Component<EntityStore> clone() {
class="kw">return this;
}
}