SensorEvent class

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

Файл: com/hypixel/hytale/server/npc/corecomponents/world/SensorEvent.java

extends: SensorBase

Поля (7)

МодификаторыТипИмя
final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE
private final String description
Ref var4
Ref var6
var6
Ref var7
var7

Методы (11)

МодификаторыВозвратСигнатура
EventSearchType EventSearchType(String nullxx)
abstract NpcOnly NpcOnly("search only for events triggered by npcs")
public String getpublic String get()
if if(var6 == null)
if if(var7 == null)
if if(var2 == null)
if if(var4 == null)
if if(this.lockOnTargetSlot >= 0)
protected boolean setTargetboolean setTarget(@Nonnull MarkedEntitySupport var1, @Nullable Ref<EntityStore> var2, @Nonnull ComponentAccessor<EntityStore> var3)
abstract super super(var1)
switch switch(this.searchType)

Исходный код

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

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.component.Store;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
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.world.builders.BuilderSensorEvent;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.role.support.MarkedEntitySupport;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.EntityPositionProvider;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.InfoProvider;
class="kw">import java.util.function.Supplier;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class="kw">abstract class SensorEvent class="kw">extends SensorBase {
   class="kw">protected class="kw">static class="kw">final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE = TransformComponent.getComponentType();
   class="kw">protected class="kw">final double range;
   class="kw">protected class="kw">final SensorEvent.EventSearchType searchType;
   class="kw">protected class="kw">final int lockOnTargetSlot;
   class="kw">protected class="kw">final boolean lockRebind;
   class="kw">protected int playerEventMessageSlot;
   class="kw">protected int npcEventMessageSlot;
   class="kw">protected class="kw">final EntityPositionProvider positionProvider = new EntityPositionProvider();

   class="kw">public SensorEvent(@Nonnull BuilderSensorEvent var1, @Nonnull BuilderSupport var2) {
      super(var1);
      this.range = var1.getRange(var2);
      this.searchType = var1.getEventSearchType(var2);
      this.lockOnTargetSlot = var1.getLockOnTargetSlot(var2);
      this.lockRebind = var1.isLockRebind(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;
      }

      class="kw">switch (this.searchType) {
         case PlayerFirst:
            Ref var6 = this.getPlayerTarget(var1, var5);
            if (var6 == null) {
               var6 = this.getNpcTarget(var1, var5);
            }

            class="kw">return this.setTarget(var2.getMarkedEntitySupport(), var6, var5);
         case PlayerOnly:
            class="kw">return this.setTarget(var2.getMarkedEntitySupport(), this.getPlayerTarget(var1, var5), var5);
         case NpcFirst:
            Ref var7 = this.getNpcTarget(var1, var5);
            if (var7 == null) {
               var7 = this.getPlayerTarget(var1, var5);
            }

            class="kw">return this.setTarget(var2.getMarkedEntitySupport(), var7, var5);
         case NpcOnly:
            class="kw">return this.setTarget(var2.getMarkedEntitySupport(), this.getNpcTarget(var1, var5), var5);
         class="kw">default:
            class="kw">return false;
      }
   }

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

   class="kw">protected boolean setTarget(@Nonnull MarkedEntitySupport var1, @Nullable Ref<EntityStore> var2, @Nonnull ComponentAccessor<EntityStore> var3) {
      if (var2 == null) {
         this.positionProvider.clear();
         class="kw">return false;
      }

      Ref var4 = this.positionProvider.setTarget(var2, var3);
      if (var4 == null) {
         class="kw">return false;
      }

      if (this.lockOnTargetSlot >= 0) {
         var1.setMarkedEntity(this.lockOnTargetSlot, var4, this.lockRebind, var3);
      }

      class="kw">return true;
   }

   @Nullable
   class="kw">protected class="kw">abstract Ref<EntityStore> getPlayerTarget(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2);

   @Nullable
   class="kw">protected class="kw">abstract Ref<EntityStore> getNpcTarget(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2);

   class="kw">public enum EventSearchType class="kw">implements Supplier<String> {
      PlayerFirst("search for events triggered by players first"),
      PlayerOnly("search only for events triggered by players"),
      NpcFirst("search for events triggered by npcs first"),
      NpcOnly("search only for events triggered by npcs");

      class="kw">private class="kw">final String description;

      EventSearchType(String nullxx) {
         this.description = nullxx;
      }

      class="kw">public String get() {
         class="kw">return this.description;
      }
   }
}