ActionSpawnInteraction class
Пакет: com.hypixel.hytale.server.npc.corecomponents.interaction
Файл: com/hypixel/hytale/server/npc/corecomponents/interaction/ActionSpawnInteraction.java
extends: DeferrableAction
Поля (20)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
InteractionType |
INTERACTION_TYPE |
|
|
return |
|
RootInteraction |
var10 |
|
Vector3d |
var11 |
|
|
var11 |
|
|
var11 |
|
TransformComponent |
var12 |
|
Ref |
var13 |
|
InteractionManager |
var14 |
|
InteractionContext |
var15 |
|
InteractionChain |
var16 |
|
InteractionHost |
var17 |
|
Rotation3f |
var18 |
|
TransformComponent |
var2 |
|
Ref |
var5 |
|
Rotation3f |
var6 |
|
IPositionProvider |
var7 |
|
Rotation3f |
var7 |
|
Rotation3f |
var8 |
|
Rotation3f |
var8 |
Методы (14)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
return new |
Rotation3freturn new Rotation3f(this.pitchRad, this.yawRad, this.rollRad) |
|
|
if if(this.interactionId == null) |
|
|
if if(this.positionSource == PositionSource.Sensor) |
|
|
if if(var10 != null) |
|
|
if if(this.positionSource == PositionSource.Sensor) |
|
|
if if(var12 == null) |
|
|
if if(var13 != null) |
|
|
if if(var14 != null) |
|
|
if if(var17 != null) |
|
|
if if(this.orientationSource == OrientationSource.UseSensor) |
|
|
if if(this.orientationSource == OrientationSource.Absolute) |
|
|
if if(this.orientationSource == OrientationSource.UseTarget) |
|
|
if if(var6 != null) |
abstract |
|
super super(var1, var2) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.interaction;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionChain;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionManager;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.InteractionModule;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.host.InteractionHost;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.RootInteraction;
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.DeferrableAction;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.OrientationSource;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.PositionSource;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.interaction.builders.BuilderActionSpawnInteraction;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.interactions.NPCInteractionSimulationHandler;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.IPositionProvider;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.InfoProvider;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class ActionSpawnInteraction class="kw">extends DeferrableAction {
class="kw">private class="kw">static class="kw">final InteractionType INTERACTION_TYPE = InteractionType.Primary;
@Nullable
class="kw">private class="kw">final String interactionId;
@Nonnull
class="kw">private class="kw">final PositionSource positionSource;
@Nonnull
class="kw">private class="kw">final OrientationSource orientationSource;
class="kw">private class="kw">final float yawRad;
class="kw">private class="kw">final float pitchRad;
class="kw">private class="kw">final float rollRad;
class="kw">private class="kw">final float ttlSeconds;
class="kw">private class="kw">final int targetSlot;
class="kw">public ActionSpawnInteraction(@Nonnull BuilderActionSpawnInteraction var1, @Nonnull BuilderSupport var2) {
super(var1, var2);
this.interactionId = var1.getInteraction(var2);
this.positionSource = var1.getPositionSource();
this.orientationSource = var1.getOrientationSource();
this.yawRad = var1.getYaw(var2) * (float) (Math.PI / 180.0);
this.pitchRad = var1.getPitch(var2) * (float) (Math.PI / 180.0);
this.rollRad = var1.getRoll(var2) * (float) (Math.PI / 180.0);
this.ttlSeconds = var1.getTtl(var2);
this.targetSlot = var1.getTargetSlot(var2);
}
@Override
class="kw">public boolean canExecute(
@Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, @Nullable InfoProvider var3, double var4, @Nonnull Store<EntityStore> var6
) {
class="kw">return super.canExecute(var1, var2, var3, var4, var6) && this.interactionId != null;
}
@Override
class="kw">public boolean execute(
@Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, @Nullable InfoProvider var3, double var4, @Nonnull Store<EntityStore> var6
) {
super.execute(var1, var2, var3, var4, var6);
if (this.interactionId == null) {
class="kw">return true;
}
IPositionProvider var7 = var3 != null ? var3.getPositionProvider() : null;
Rotation3f var8 = this.resolveOrientation(var1, var2, var7, var6);
if (this.positionSource == PositionSource.Sensor) {
if (var7 == null || !var7.providePosition(this.scratch)) {
class="kw">return true;
}
this.scheduleOrFire(var2, var1, this.scratch.x, this.scratch.y, this.scratch.z, var8, var6);
} else {
this.scheduleOrFire(var2, var1, 0.0, 0.0, 0.0, var8, var6);
}
class="kw">return true;
}
@Override
class="kw">protected void fire(@Nonnull Ref<EntityStore> var1, double var2, double var4, double var6, @Nullable Rotation3f var8, @Nonnull Store<EntityStore> var9) {
RootInteraction var10 = RootInteraction.getRootInteractionOrUnknown(this.interactionId);
if (var10 != null) {
Vector3d var11;
if (this.positionSource == PositionSource.Sensor) {
var11 = new Vector3d(var2, var4, var6);
} else {
TransformComponent var12 = var9.getComponent(var1, TransformComponent.getComponentType());
if (var12 == null) {
class="kw">return;
}
var11 = new Vector3d(var12.getPosition());
}
Rotation3f var18 = var8 != null ? var8 : new Rotation3f(this.pitchRad, this.yawRad, this.rollRad);
Ref var13 = InteractionHost.spawnHost(var9, var11, var18, this.ttlSeconds, new NPCInteractionSimulationHandler());
if (var13 != null) {
InteractionManager var14 = var9.getComponent(var13, InteractionModule.get().getInteractionManagerComponent());
if (var14 != null) {
InteractionContext var15 = InteractionContext.forProxyEntity(var14, var1, var13, var9);
InteractionChain var16 = var14.initChain(INTERACTION_TYPE, var15, var10, false);
var14.queueExecuteChain(var16);
InteractionHost var17 = var9.getComponent(var13, InteractionHost.getComponentType());
if (var17 != null) {
var17.setChain(var16);
}
}
}
}
}
@Nonnull
class="kw">private Rotation3f resolveOrientation(
@Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, @Nullable IPositionProvider var3, @Nonnull Store<EntityStore> var4
) {
if (this.orientationSource == OrientationSource.UseSensor) {
Rotation3f var8 = new Rotation3f();
class="kw">return var3 != null && var3.provideOrientation(var8) ? var8 : new Rotation3f(this.pitchRad, this.yawRad, this.rollRad);
}
if (this.orientationSource == OrientationSource.Absolute) {
class="kw">return new Rotation3f(this.pitchRad, this.yawRad, this.rollRad);
}
if (this.orientationSource == OrientationSource.UseTarget) {
Ref var5 = var2.getMarkedEntitySupport().getMarkedEntityRef(this.targetSlot);
if (var5 != null && var5.isValid()) {
Rotation3f var6 = readEntityRotation(var5, var4);
if (var6 != null) {
class="kw">return var6;
}
}
}
Rotation3f var7 = readEntityRotation(var1, var4);
class="kw">return var7 != null ? var7 : new Rotation3f(this.pitchRad, this.yawRad, this.rollRad);
}
@Nullable
class="kw">private class="kw">static Rotation3f readEntityRotation(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1) {
TransformComponent var2 = var1.getComponent(var0, TransformComponent.getComponentType());
class="kw">return var2 != null ? new Rotation3f(var2.getRotation()) : null;
}
}