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