SensorDamage class

Пакет: com.hypixel.hytale.server.npc.corecomponents.combat

Файл: com/hypixel/hytale/server/npc/corecomponents/combat/SensorDamage.java

extends: SensorBase

Поля (8)

МодификаторыТипИмя
final boolean combatDamage
int[] var10
NPCEntity var6
CombatSupport var7
DamageData var8
Ref var9
var9
var9

Методы (6)

МодификаторыВозвратСигнатура
if if(this.combatDamage)
if if(var9 == null)
if if(var9 != null)
if if(this.friendlyDamage)
if if(this.targetSlot >= 0)
abstract super super(var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.combat;

class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
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 com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.SensorBase;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.combat.builders.BuilderSensorDamage;
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.role.support.CombatSupport;
class="kw">import com.hypixel.hytale.server.npc.role.support.WorldSupport;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.EntityPositionProvider;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.InfoProvider;
class="kw">import com.hypixel.hytale.server.npc.util.DamageData;
class="kw">import javax.annotation.Nonnull;

class="kw">public class SensorDamage class="kw">extends SensorBase {
   class="kw">protected class="kw">final boolean combatDamage;
   class="kw">protected class="kw">final boolean friendlyDamage;
   class="kw">protected class="kw">final boolean drowningDamage;
   class="kw">protected class="kw">final boolean environmentDamage;
   class="kw">protected class="kw">final boolean otherDamage;
   class="kw">protected class="kw">final int targetSlot;
   class="kw">protected class="kw">final EntityPositionProvider positionProvider = new EntityPositionProvider();

   class="kw">public SensorDamage(@Nonnull BuilderSensorDamage var1, @Nonnull BuilderSupport var2) {
      super(var1);
      this.combatDamage = var1.isCombatDamage();
      this.friendlyDamage = var1.isFriendlyDamage();
      this.drowningDamage = var1.isDrowningDamage();
      this.environmentDamage = var1.isEnvironmentDamage();
      this.otherDamage = var1.isOtherDamage();
      this.targetSlot = var1.getTargetSlot(var2);
   }

   @Override
   class="kw">public boolean matches(@Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, double var3, @Nonnull Store<EntityStore> var5) {
      if (!super.matches(var1, var2, var3, var5)) {
         this.positionProvider.clear();
         class="kw">return false;
      }

      NPCEntity var6 = var5.getComponent(var1, NPCEntity.getComponentType());
      assert var6 != null;
      CombatSupport var7 = var2.getCombatSupport();
      DamageData var8 = var6.getDamageData();
      if (this.combatDamage) {
         Ref var9 = var8.getMostDamagingAttacker();
         if (var9 == null) {
            var9 = var8.getAnyAttacker();
         }

         var9 = this.positionProvider.setTarget(var9, var5);
         if (var9 != null) {
            if (this.friendlyDamage) {
               int[] var10 = var7.getDisableDamageGroups();
               if (!WorldSupport.isGroupMember(var6.getRoleIndex(), var9, var10, var5)) {
                  class="kw">return false;
               }
            }

            if (this.targetSlot >= 0) {
               var2.getMarkedEntitySupport().setMarkedEntity(this.targetSlot, var9);
            }

            class="kw">return true;
         }

         if (var8.hasSufferedDamage(DamageCause.PHYSICAL) || var8.hasSufferedDamage(DamageCause.PROJECTILE)) {
            this.positionProvider.clear();
            class="kw">return true;
         }
      }

      this.positionProvider.clear();
      class="kw">return this.drowningDamage && var8.hasSufferedDamage(DamageCause.DROWNING)
         || this.environmentDamage && var8.hasSufferedDamage(DamageCause.ENVIRONMENT)
         || this.otherDamage
            && (
               var8.hasSufferedDamage(DamageCause.FALL)
                  || var8.hasSufferedDamage(DamageCause.OUT_OF_WORLD)
                  || var8.hasSufferedDamage(DamageCause.SUFFOCATION)
                  || var8.hasSufferedDamage(DamageCause.COMMAND)
            );
   }

   @Override
   class="kw">public InfoProvider getSensorInfo() {
      class="kw">return this.positionProvider;
   }
}