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