SetVelocityEffect class
Пакет: com.hypixel.hytale.builtin.triggervolumes.effect.builtin
Файл: com/hypixel/hytale/builtin/triggervolumes/effect/builtin/SetVelocityEffect.java
extends: TriggerEffect
Поля (14)
| Модификаторы | Тип | Имя |
|---|---|---|
|
ABSOLUTE,
VOLUME_ORIGIN,
HORIZONTAL_FACING, |
FULL_LOOK |
|
Store |
var1 |
|
Ref |
var2 |
|
SetVelocityEffect.RelativeMode |
var2 |
|
Ref |
var2 |
|
SetVelocityEffect |
var3 |
|
Store |
var3 |
|
Rotation3fc |
var3 |
|
HeadRotation |
var3 |
|
Velocity |
var4 |
|
Vector3d |
var4 |
|
TransformComponent |
var4 |
|
Vector3d |
var5 |
|
Vector3d |
var5 |
Методы (10)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
RelativeMode RelativeMode() |
abstract |
return new |
Vector3dreturn new Vector3d(this.velocity) |
|
|
if if(this.velocity != null) |
|
|
if if(var4 != null) |
|
|
if if(var5 != null) |
|
|
if if(this.additive) |
|
|
if if(this.relativeMode == SetVelocityEffect.RelativeMode.ABSOLUTE && this.velocity != null) |
|
|
if if(var2 == SetVelocityEffect.RelativeMode.ABSOLUTE) |
|
|
if if(var3 == null) |
|
|
if if(var3 != null) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.triggervolumes.effect.builtin;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.YawRotation;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerContext;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerEffect;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerEventType;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
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.math.vector.Rotation3fc;
class="kw">import com.hypixel.hytale.math.vector.Vector3dUtil;
class="kw">import com.hypixel.hytale.protocol.ChangeVelocityType;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.HeadRotation;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.physics.component.Velocity;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class SetVelocityEffect class="kw">extends TriggerEffect {
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<SetVelocityEffect> CODEC = BuilderCodec.builder(SetVelocityEffect.class, SetVelocityEffect::new, BASE_CODEC)
.append(new KeyedCodec<>("Velocity", Vector3dUtil.CODEC), (var0, var1) -> var0.velocity = var1, var0 -> var0.velocity)
.add()
.append(new KeyedCodec<>("Additive", Codec.BOOLEAN, false), (var0, var1) -> var0.additive = var1, var0 -> var0.additive)
.add()
.append(
new KeyedCodec<>("RelativeMode", new EnumCodec<>(SetVelocityEffect.RelativeMode.class), false),
(var0, var1) -> var0.relativeMode = var1,
var0 -> var0.relativeMode
)
.add()
.build();
class="kw">private Vector3d velocity = new Vector3d(0.0, 0.0, 0.0);
class="kw">private boolean additive = false;
@Nonnull
class="kw">private SetVelocityEffect.RelativeMode relativeMode = SetVelocityEffect.RelativeMode.ABSOLUTE;
class="kw">public SetVelocityEffect() {
}
@Nonnull
class="kw">public class="kw">static SetVelocityEffect create(@Nonnull TriggerEventType var0, @Nonnull Vector3d var1, boolean var2) {
SetVelocityEffect var3 = new SetVelocityEffect();
var3.setEventType(var0);
var3.velocity = var1;
var3.additive = var2;
class="kw">return var3;
}
@Override
class="kw">public void execute(@Nonnull TriggerContext var1) {
if (this.velocity != null) {
Ref var2 = var1.getEntityRef();
Store var3 = var1.getStore();
Velocity var4 = var3.getComponent(var2, Velocity.getComponentType());
if (var4 != null) {
Vector3d var5 = this.resolveVelocity(var1);
if (var5 != null) {
if (this.additive) {
var4.addInstruction(var5, null, ChangeVelocityType.Add);
} else {
var4.addInstruction(var5, null, ChangeVelocityType.Set);
}
}
}
}
}
@Override
class="kw">public void rotateInPlace(float var1, @Nonnull Vector3d var2) {
if (this.relativeMode == SetVelocityEffect.RelativeMode.ABSOLUTE && this.velocity != null) {
YawRotation.rotate(this.velocity, var1);
}
}
@Nullable
class="kw">private Vector3d resolveVelocity(@Nonnull TriggerContext var1) {
SetVelocityEffect.RelativeMode var2 = this.relativeMode != null ? this.relativeMode : SetVelocityEffect.RelativeMode.ABSOLUTE;
if (var2 == SetVelocityEffect.RelativeMode.ABSOLUTE) {
class="kw">return new Vector3d(this.velocity);
} else if (var2 == SetVelocityEffect.RelativeMode.VOLUME_ORIGIN) {
Vector3d var5 = var1.getActorPosition();
class="kw">return var5 == null ? null : Rotation3f.lookAt(var1.getVolume().getPosition(), var5).transform(new Vector3d(this.velocity));
} else {
Rotation3fc var3 = getLookRotation(var1);
if (var3 == null) {
class="kw">return null;
} else if (var2 == SetVelocityEffect.RelativeMode.HORIZONTAL_FACING) {
Vector3d var4 = new Rotation3f(0.0F, var3.yaw(), 0.0F).transform(new Vector3d(this.velocity.x, 0.0, this.velocity.z));
var4.y = this.velocity.y;
class="kw">return var4;
} else {
class="kw">return var3.transform(new Vector3d(this.velocity));
}
}
}
@Nullable
class="kw">private class="kw">static Rotation3fc getLookRotation(@Nonnull TriggerContext var0) {
Store var1 = var0.getStore();
Ref var2 = var0.getEntityRef();
HeadRotation var3 = var1.getComponent(var2, HeadRotation.getComponentType());
if (var3 != null) {
class="kw">return var3.getRotation();
}
TransformComponent var4 = var1.getComponent(var2, TransformComponent.getComponentType());
class="kw">return var4 != null ? var4.getRotation() : null;
}
class="kw">public enum RelativeMode {
ABSOLUTE,
VOLUME_ORIGIN,
HORIZONTAL_FACING,
FULL_LOOK;
RelativeMode() {
}
}
}