ActiveEntityEffect class
Пакет: com.hypixel.hytale.server.core.entity.effect
Файл: com/hypixel/hytale/server/core/entity/effect/ActiveEntityEffect.java
implements: Damage.Source
Поля (18)
| Модификаторы | Тип | Имя |
|---|---|---|
|
DamageCalculatorSystems.DamageSequence |
var14 |
|
int |
var3 |
|
|
var3 |
|
|
var3 |
|
float |
var4 |
|
Message |
var4 |
|
Int2FloatMap |
var5 |
|
DamageCalculator |
var5 |
|
EntityEffect |
var5 |
|
int |
var6 |
|
DamageEffects |
var6 |
|
Object2FloatMap |
var6 |
|
String |
var6 |
|
World |
var7 |
|
String |
var7 |
|
DamageEffects |
var8 |
|
String |
var8 |
|
Damage[] |
var9 |
Методы (22)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
private |
int |
calculateCyclesToRunint calculateCyclesToRun(@Nonnull EntityEffect var1, float var2) |
|
|
for for(Damage var13 : var9) |
public |
int |
getEntityEffectIndexint getEntityEffectIndex() |
public |
float |
getInitialDurationfloat getInitialDuration() |
public |
float |
getRemainingDurationfloat getRemainingDuration() |
|
|
if if(!this.infinite) |
|
|
if if(var4 > 0.0F) |
|
|
if if(var5 != null) |
|
|
if if(var4 > 0) |
|
|
if if(var6 != null) |
|
|
if if(var5 != null) |
|
|
if if(var4 > 0) |
|
|
if if(var8 != null) |
|
|
if if(var5 == null) |
|
|
if if(var6 != null) |
public |
boolean |
isDebuffboolean isDebuff() |
public |
boolean |
isInfiniteboolean isInfinite() |
public |
boolean |
isInvulnerableboolean isInvulnerable() |
public |
void |
tickvoid tick(@Nonnull CommandBuffer<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull EntityEffect var3, @Nonnull EntityStatMap var4, float var5) |
private |
void |
tickDamagevoid tickDamage(@Nonnull CommandBuffer<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull EntityEffect var3, int var4) |
static |
void |
tickStatChangesvoid tickStatChanges(@Nonnull CommandBuffer<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull EntityEffect var2, @Nonnull EntityStatMap var3, int var4) |
abstract |
|
tickStatChanges tickStatChanges(var1, var2, var3, var4, var6) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.entity.effect;
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.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.protocol.ChangeStatBehaviour;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.type.entityeffect.config.EntityEffect;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.Damage;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DamageCalculatorSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DamageCause;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.server.combat.DamageCalculator;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.server.combat.DamageEffects;
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 it.unimi.dsi.fastutil.ints.Int2FloatMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2FloatMap;
class="kw">import java.util.Locale;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class ActiveEntityEffect class="kw">implements Damage.Source {
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<ActiveEntityEffect> CODEC = BuilderCodec.builder(ActiveEntityEffect.class, ActiveEntityEffect::new)
.append(new KeyedCodec<>("EntityEffectId", Codec.STRING), (var0, var1) -> var0.entityEffectId = var1, var0 -> var0.entityEffectId)
.add()
.append(new KeyedCodec<>("InitialDuration", Codec.FLOAT), (var0, var1) -> var0.initialDuration = var1, var0 -> var0.initialDuration)
.add()
.append(new KeyedCodec<>("RemainingDuration", Codec.FLOAT), (var0, var1) -> var0.remainingDuration = var1, var0 -> var0.remainingDuration)
.add()
.append(new KeyedCodec<>("SinceLastDamage", Codec.FLOAT), (var0, var1) -> var0.sinceLastDamage = var1, var0 -> var0.sinceLastDamage)
.add()
.append(new KeyedCodec<>("HasBeenDamaged", Codec.BOOLEAN), (var0, var1) -> var0.hasBeenDamaged = var1, var0 -> var0.hasBeenDamaged)
.add()
.append(
new KeyedCodec<>("SequentialHits", DamageCalculatorSystems.Sequence.CODEC), (var0, var1) -> var0.sequentialHits = var1, var0 -> var0.sequentialHits
)
.add()
.append(new KeyedCodec<>("Infinite", Codec.BOOLEAN), (var0, var1) -> var0.infinite = var1, var0 -> var0.infinite)
.add()
.append(new KeyedCodec<>("Debuff", Codec.BOOLEAN), (var0, var1) -> var0.debuff = var1, var0 -> var0.debuff)
.add()
.append(new KeyedCodec<>("StatusEffectIcon", Codec.STRING), (var0, var1) -> var0.statusEffectIcon = var1, var0 -> var0.statusEffectIcon)
.add()
.append(new KeyedCodec<>("Invulnerable", Codec.BOOLEAN), (var0, var1) -> var0.invulnerable = var1, var0 -> var0.invulnerable)
.add()
.build();
class="kw">private class="kw">static class="kw">final float DEFAULT_DURATION = 1.0F;
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_GENERAL_DAMAGE_CAUSES_UNKNOWN = Message.translation("server.general.damageCauses.unknown");
class="kw">protected String entityEffectId;
class="kw">protected int entityEffectIndex;
class="kw">protected float initialDuration;
class="kw">protected float remainingDuration;
class="kw">protected boolean infinite;
class="kw">protected boolean debuff;
@Nullable
class="kw">protected String statusEffectIcon;
class="kw">private float sinceLastDamage;
class="kw">private boolean hasBeenDamaged;
class="kw">protected boolean invulnerable;
class="kw">private DamageCalculatorSystems.Sequence sequentialHits;
class="kw">public ActiveEntityEffect() {
}
class="kw">public ActiveEntityEffect(
@Nonnull String var1,
int var2,
float var3,
float var4,
boolean var5,
boolean var6,
@Nullable String var7,
float var8,
boolean var9,
@Nonnull DamageCalculatorSystems.Sequence var10,
boolean var11
) {
this.entityEffectId = var1;
this.entityEffectIndex = var2;
this.initialDuration = var3;
this.remainingDuration = var4;
this.infinite = var5;
this.debuff = var6;
this.statusEffectIcon = var7;
this.sinceLastDamage = var8;
this.hasBeenDamaged = var9;
this.sequentialHits = var10;
this.invulnerable = var11;
}
class="kw">public ActiveEntityEffect(@Nonnull String var1, int var2, float var3, boolean var4, @Nullable String var5, boolean var6) {
this(var1, var2, var3, var3, false, var4, var5, 0.0F, false, new DamageCalculatorSystems.Sequence(), var6);
}
class="kw">public ActiveEntityEffect(@Nonnull String var1, int var2, boolean var3, boolean var4) {
this(var1, var2, 1.0F, 1.0F, var3, false, "", 0.0F, false, new DamageCalculatorSystems.Sequence(), var4);
}
class="kw">public void tick(
@Nonnull CommandBuffer<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull EntityEffect var3, @Nonnull EntityStatMap var4, float var5
) {
int var6 = this.calculateCyclesToRun(var3, var5);
this.tickDamage(var1, var2, var3, var6);
tickStatChanges(var1, var2, var3, var4, var6);
if (!this.infinite) {
this.remainingDuration -= var5;
}
}
class="kw">private int calculateCyclesToRun(@Nonnull EntityEffect var1, float var2) {
int var3 = 0;
float var4 = var1.getDamageCalculatorCooldown();
if (var4 > 0.0F) {
this.sinceLastDamage += var2;
var3 = MathUtil.fastFloor(this.sinceLastDamage / var4);
this.sinceLastDamage %= var4;
} else if (!this.hasBeenDamaged) {
var3 = 1;
this.hasBeenDamaged = true;
}
class="kw">return var3;
}
class="kw">private class="kw">static void tickStatChanges(
@Nonnull CommandBuffer<EntityStore> var0, @Nonnull Ref<EntityStore> var1, @Nonnull EntityEffect var2, @Nonnull EntityStatMap var3, int var4
) {
Int2FloatMap var5 = var2.getEntityStats();
if (var5 != null) {
if (var4 > 0) {
DamageEffects var6 = var2.getStatModifierEffects();
if (var6 != null) {
var6.spawnAtEntity(var0, var1);
}
var3.processStatChanges(EntityStatMap.Predictable.ALL, var5, var2.getValueType(), ChangeStatBehaviour.Add);
}
}
}
class="kw">private void tickDamage(@Nonnull CommandBuffer<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull EntityEffect var3, int var4) {
DamageCalculator var5 = var3.getDamageCalculator();
if (var5 != null) {
if (var4 > 0) {
Object2FloatMap var6 = var5.calculateDamage(this.initialDuration);
if (var6 != null && !var6.isEmpty()) {
World var7 = var1.getExternalData().getWorld();
DamageEffects var8 = var3.getDamageEffects();
Damage[] var9 = DamageCalculatorSystems.queueDamageCalculator(var7, var6, var2, var1, this, null);
for (Damage var13 : var9) {
DamageCalculatorSystems.DamageSequence var14 = new DamageCalculatorSystems.DamageSequence(this.sequentialHits, var5);
var13.putMetaObject(DamageCalculatorSystems.DAMAGE_SEQUENCE, var14);
if (var8 != null) {
var8.addToDamage(var13);
}
var1.invoke(var2, var13);
}
}
}
}
}
class="kw">public int getEntityEffectIndex() {
class="kw">return this.entityEffectIndex;
}
class="kw">public float getInitialDuration() {
class="kw">return this.initialDuration;
}
class="kw">public float getRemainingDuration() {
class="kw">return this.remainingDuration;
}
class="kw">public boolean isInfinite() {
class="kw">return this.infinite;
}
class="kw">public boolean isDebuff() {
class="kw">return this.debuff;
}
class="kw">public boolean isInvulnerable() {
class="kw">return this.invulnerable;
}
@Nonnull
@Override
class="kw">public Message getDeathMessage(@Nonnull Damage var1, @Nonnull Ref<EntityStore> var2, @Nonnull ComponentAccessor<EntityStore> var3) {
EntityEffect var5 = EntityEffect.getAssetMap().getAsset(this.entityEffectIndex);
if (var5 == null) {
class="kw">return Message.translation("server.general.killedBy").param("damageSource", MESSAGE_GENERAL_DAMAGE_CAUSES_UNKNOWN);
}
String var6 = var5.getDeathMessageKey();
if (var6 != null) {
class="kw">return Message.translation(var6);
}
String var7 = var5.getLocale();
String var8 = var7 != null ? var7 : var5.getId().toLowerCase(Locale.ROOT);
Message var4 = Message.translation("server.general.damageCauses." + var8);
class="kw">return Message.translation("server.general.killedBy").param("damageSource", var4);
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "ActiveEntityEffect{entityEffectIndex="
+ this.entityEffectIndex
+ ", initialDuration="
+ this.initialDuration
+ ", remainingDuration="
+ this.remainingDuration
+ ", sinceLastDamage="
+ this.sinceLastDamage
+ ", hasBeenDamaged="
+ this.hasBeenDamaged
+ ", sequentialHits="
+ this.sequentialHits
+ ", infinite="
+ this.infinite
+ ", debuff="
+ this.debuff
+ ", statusEffectIcon="
+ this.statusEffectIcon
+ "}";
}
}