DamageData class
Пакет: com.hypixel.hytale.server.npc.util
Файл: com/hypixel/hytale/server/npc/util/DamageData.java
Поля (7)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
Map<Ref<EntityStore>, Vector3d> |
kills |
|
ObjectIterator |
var1 |
|
DamageData |
var1 |
|
Ref |
var2 |
|
Ref |
var3 |
|
double |
var4 |
|
double |
var4 |
Методы (13)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
double |
getDamagedouble getDamage(DamageCause var1) |
public |
Vector3d |
getKillPositionVector3d getKillPosition(Ref<EntityStore> var1) |
public |
double |
getMaxDamageInflicteddouble getMaxDamageInflicted() |
public |
double |
getMaxDamageSuffereddouble getMaxDamageSuffered() |
public |
boolean |
hasSufferedDamageboolean hasSufferedDamage(DamageCause var1) |
public |
boolean |
haveKillboolean haveKill() |
public |
boolean |
haveKilledboolean haveKilled(Ref<EntityStore> var1) |
|
|
if if(var4 > this.maxDamageInflicted) |
|
|
if if(var4 > this.maxDamageSuffered) |
public |
void |
onInflictedDamagevoid onInflictedDamage(Ref<EntityStore> var1, double var2) |
public |
void |
onKillvoid onKill(@Nonnull Ref<EntityStore> var1, @Nonnull Vector3d var2) |
public |
void |
onSufferedDamagevoid onSufferedDamage(@Nonnull CommandBuffer<EntityStore> var1, @Nonnull Damage var2) |
public |
void |
resetvoid reset() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.util;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.Damage;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DamageCause;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.objects.Object2DoubleMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2DoubleOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectIterator;
class="kw">import it.unimi.dsi.fastutil.objects.Reference2DoubleMap;
class="kw">import it.unimi.dsi.fastutil.objects.Reference2DoubleOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap;
class="kw">import java.util.Map;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class DamageData {
class="kw">private class="kw">final Map<Ref<EntityStore>, Vector3d> kills = new Reference2ObjectOpenHashMap();
class="kw">private class="kw">final Reference2DoubleMap<Ref<EntityStore>> damageInflicted = new Reference2DoubleOpenHashMap();
class="kw">private class="kw">final Reference2DoubleMap<Ref<EntityStore>> damageSuffered = new Reference2DoubleOpenHashMap();
class="kw">private class="kw">final Object2DoubleMap<DamageCause> damageByCause = new Object2DoubleOpenHashMap();
class="kw">private double maxDamageSuffered;
class="kw">private double maxDamageInflicted;
@Nullable
class="kw">private Ref<EntityStore> mostPersistentAttacker;
@Nullable
class="kw">private Ref<EntityStore> mostDamagedVictim;
class="kw">public DamageData() {
this.reset();
}
class="kw">public void reset() {
this.kills.clear();
this.damageInflicted.clear();
this.damageSuffered.clear();
this.damageByCause.clear();
this.maxDamageInflicted = 0.0;
this.maxDamageSuffered = 0.0;
this.mostPersistentAttacker = null;
this.mostDamagedVictim = null;
}
class="kw">public void onInflictedDamage(Ref<EntityStore> var1, double var2) {
double var4 = this.damageInflicted.mergeDouble(var1, var2, Double::sum);
if (var4 > this.maxDamageInflicted) {
this.maxDamageInflicted = var4;
this.mostDamagedVictim = var1;
}
}
class="kw">public void onSufferedDamage(@Nonnull CommandBuffer<EntityStore> var1, @Nonnull Damage var2) {
this.damageByCause.mergeDouble(var2.getCause(), var2.getAmount(), Double::sum);
if (var2.getSource() class="kw">instanceof Damage.EntitySource) {
Ref var3 = ((Damage.EntitySource)var2.getSource()).getRef();
if (var3.isValid()) {
if (EntityDetectionUtil.isDetectableByNPCs(var3, var1)) {
double var4 = this.damageSuffered.mergeDouble(var3, var2.getAmount(), Double::sum);
if (var4 > this.maxDamageSuffered) {
this.maxDamageSuffered = var4;
this.mostPersistentAttacker = var3;
}
}
}
}
}
class="kw">public void onKill(@Nonnull Ref<EntityStore> var1, @Nonnull Vector3d var2) {
this.kills.put(var1, var2);
}
class="kw">public boolean haveKill() {
class="kw">return !this.kills.isEmpty();
}
class="kw">public boolean haveKilled(Ref<EntityStore> var1) {
class="kw">return this.kills.containsKey(var1);
}
@Nullable
class="kw">public Ref<EntityStore> getAnyKilled() {
if (this.kills.isEmpty()) {
class="kw">return null;
}
for (Ref var2 : this.kills.keySet()) {
if (var2.isValid()) {
class="kw">return var2;
}
}
class="kw">return null;
}
class="kw">public Vector3d getKillPosition(Ref<EntityStore> var1) {
class="kw">return this.kills.get(var1);
}
class="kw">public double getMaxDamageInflicted() {
class="kw">return this.maxDamageInflicted;
}
class="kw">public double getMaxDamageSuffered() {
class="kw">return this.maxDamageSuffered;
}
class="kw">public double getDamage(DamageCause var1) {
class="kw">return this.damageByCause.getDouble(var1);
}
class="kw">public boolean hasSufferedDamage(DamageCause var1) {
class="kw">return this.damageByCause.containsKey(var1);
}
@Nullable
class="kw">public Ref<EntityStore> getMostDamagedVictim() {
class="kw">return this.mostDamagedVictim != null && this.mostDamagedVictim.isValid() ? this.mostDamagedVictim : null;
}
@Nullable
class="kw">public Ref<EntityStore> getMostDamagingAttacker() {
class="kw">return this.mostPersistentAttacker != null && this.mostPersistentAttacker.isValid() ? this.mostPersistentAttacker : null;
}
@Nullable
class="kw">public Ref<EntityStore> getAnyAttacker() {
if (this.damageSuffered.isEmpty()) {
class="kw">return null;
}
ObjectIterator var1 = this.damageSuffered.keySet().iterator();
while (var1.hasNext()) {
Ref var2 = (Ref<EntityStore>)var1.next();
if (var2.isValid()) {
class="kw">return var2;
}
}
class="kw">return null;
}
@Nonnull
class="kw">public DamageData clone() {
DamageData var1 = new DamageData();
var1.kills.putAll(this.kills);
var1.damageInflicted.putAll(this.damageInflicted);
var1.damageSuffered.putAll(this.damageSuffered);
var1.damageByCause.putAll(this.damageByCause);
var1.maxDamageSuffered = this.maxDamageSuffered;
var1.maxDamageInflicted = this.maxDamageInflicted;
var1.mostPersistentAttacker = this.mostPersistentAttacker;
var1.mostDamagedVictim = this.mostDamagedVictim;
class="kw">return var1;
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "DamageData{kills="
+ this.kills
+ ", damageInflicted="
+ this.damageInflicted
+ ", damageSuffered="
+ this.damageSuffered
+ ", damageByCause="
+ this.damageByCause
+ ", maxDamageSuffered="
+ this.maxDamageSuffered
+ ", maxDamageInflicted="
+ this.maxDamageInflicted
+ ", mostPersistentAttacker="
+ this.mostPersistentAttacker
+ ", mostDamagedVictim="
+ this.mostDamagedVictim
+ "}";
}
}