KnockbackApplyCommand class
Пакет: com.hypixel.hytale.server.core.command.commands.debug.component.knockback
Файл: com/hypixel/hytale/server/core/command/commands/debug/component/knockback/KnockbackApplyCommand.java
extends: AbstractCommandCollection
Поля (20)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Left,
Right,
Forward,
Backward, |
Invalid |
|
Null,
Linear,
Exp,
Def, |
Invalid |
|
private final RequiredArg<String> |
directionArg |
|
private final RequiredArg<String> |
directionArg |
|
private final RequiredArg<Float> |
forceArg |
|
private final RequiredArg<Float> |
forceArg |
|
private final RequiredArg<String> |
presetArg |
|
private final RequiredArg<String> |
presetArg |
|
Vector3d |
var10 |
|
KnockbackComponent |
var11 |
|
HeadRotation |
var5 |
|
float |
var6 |
|
VelocityConfig |
var6 |
|
Ref |
var6 |
|
Vector3d |
var7 |
|
KnockbackApplyCommand.HorizontalDirection |
var8 |
|
Vector3d |
var8 |
|
KnockbackApplyCommand.VelocityConfigPreset |
var9 |
|
private final RequiredArg<Float> |
yArg |
|
private final RequiredArg<Float> |
yArg |
Методы (14)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
HorizontalDirection HorizontalDirection() |
|
public |
KnockbackApplyAimedCommandpublic KnockbackApplyAimedCommand() |
|
public |
KnockbackApplySelfCommandpublic KnockbackApplySelfCommand() |
abstract |
return new |
Vector3dreturn new Vector3d(var8.x, var1, var8.z) |
|
|
VelocityConfigPreset VelocityConfigPreset() |
static |
void |
applyKnockbackvoid applyKnockback(@Nonnull Ref<EntityStore> var0,
@Nonnull CommandContext var1,
@Nonnull Store<EntityStore> var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull String var4,
float var5,
float var6,
@Nonnull String var7) |
|
protected void |
executeprotected void execute(@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5) |
|
protected void |
executeprotected void execute(@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5) |
|
|
if if(var8 == KnockbackApplyCommand.HorizontalDirection.Invalid) |
|
|
if if(var9 == KnockbackApplyCommand.VelocityConfigPreset.Invalid) |
abstract |
|
super super("apply", "server.commands.knockback.apply.desc") |
abstract |
|
super super("aimed", "server.commands.knockback.apply.aimed.desc") |
abstract |
|
super super("self", "server.commands.knockback.apply.self.desc") |
|
return |
switchreturn switch(var0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.command.commands.debug.component.knockback;
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.ChangeVelocityType;
class="kw">import com.hypixel.hytale.protocol.VelocityThresholdStyle;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.RequiredArg;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.types.ArgTypes;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractCommandCollection;
class="kw">import com.hypixel.hytale.server.core.command.system.basecommands.AbstractPlayerCommand;
class="kw">import com.hypixel.hytale.server.core.entity.knockback.KnockbackComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.HeadRotation;
class="kw">import com.hypixel.hytale.server.core.modules.splitvelocity.VelocityConfig;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.core.util.TargetUtil;
class="kw">import java.util.Locale;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class KnockbackApplyCommand class="kw">extends AbstractCommandCollection {
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_KNOCKBACK_APPLY_SUCCESS = Message.translation("server.commands.knockback.apply.success");
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_KNOCKBACK_APPLY_INVALID_DIRECTION = Message.translation("server.commands.knockback.apply.invalidDirection");
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_KNOCKBACK_APPLY_INVALID_PRESET = Message.translation("server.commands.knockback.apply.invalidPreset");
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_GENERAL_NO_ENTITY_IN_VIEW = Message.translation("server.general.noEntityInView");
class="kw">public KnockbackApplyCommand() {
super("apply", "server.commands.knockback.apply.desc");
this.addSubCommand(new KnockbackApplyCommand.KnockbackApplySelfCommand());
this.addSubCommand(new KnockbackApplyCommand.KnockbackApplyAimedCommand());
}
class="kw">private class="kw">static void applyKnockback(
@Nonnull Ref<EntityStore> var0,
@Nonnull CommandContext var1,
@Nonnull Store<EntityStore> var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull String var4,
float var5,
float var6,
@Nonnull String var7
) {
KnockbackApplyCommand.HorizontalDirection var8 = parseDirection(var4);
if (var8 == KnockbackApplyCommand.HorizontalDirection.Invalid) {
var1.sendMessage(MESSAGE_COMMANDS_KNOCKBACK_APPLY_INVALID_DIRECTION.param("direction", var4).param("values", "left|l, right|r, forward|f, backward|b"));
} else {
KnockbackApplyCommand.VelocityConfigPreset var9 = velocityConfigPreset(var7);
if (var9 == KnockbackApplyCommand.VelocityConfigPreset.Invalid) {
var1.sendMessage(MESSAGE_COMMANDS_KNOCKBACK_APPLY_INVALID_PRESET.param("preset", var7).param("values", "null, linear, exp, def"));
} else {
Vector3d var10 = computeVelocity(var8, var5, var6, var3, var2);
KnockbackComponent var11 = var2.ensureAndGetComponent(var0, KnockbackComponent.getComponentType());
var11.setVelocity(var10);
var11.setVelocityType(ChangeVelocityType.Set);
var11.setVelocityConfig(toVelocityConfig(var9));
var11.setDuration(0.0F);
var11.setTimer(0.0F);
var1.sendMessage(
MESSAGE_COMMANDS_KNOCKBACK_APPLY_SUCCESS.param("force", var6)
.param("y", var5)
.param("direction", var8.name().toLowerCase(Locale.ROOT))
.param("preset", var9.name().toLowerCase(Locale.ROOT))
);
}
}
}
@Nonnull
class="kw">private class="kw">static Vector3d computeVelocity(
@Nonnull KnockbackApplyCommand.HorizontalDirection var0, float var1, float var2, @Nonnull Ref<EntityStore> var3, @Nonnull Store<EntityStore> var4
) {
HeadRotation var5 = var4.getComponent(var3, HeadRotation.getComponentType());
float var6 = var5 == null ? Rotation3f.IDENTITY.yaw() : var5.getRotation().yaw();
Vector3d var7 = new Vector3d(0.0, 0.0, -1.0).rotateY(var6);
Vector3d var8 = class="kw">switch (var0) {
case Left -> new Vector3d(var7.z, 0.0, -var7.x);
case Right -> new Vector3d(-var7.z, 0.0, var7.x);
case Forward, Invalid -> var7;
case Backward -> var7.negate();
};
var8.normalize().mul(var2);
class="kw">return new Vector3d(var8.x, var1, var8.z);
}
@Nonnull
class="kw">private class="kw">static KnockbackApplyCommand.HorizontalDirection parseDirection(@Nonnull String var0) {
class="kw">return class="kw">switch (var0.toLowerCase(Locale.ROOT)) {
case "left", "l" -> KnockbackApplyCommand.HorizontalDirection.Left;
case "right", "r" -> KnockbackApplyCommand.HorizontalDirection.Right;
case "forward", "f" -> KnockbackApplyCommand.HorizontalDirection.Forward;
case "backward", "b" -> KnockbackApplyCommand.HorizontalDirection.Backward;
class="kw">default -> KnockbackApplyCommand.HorizontalDirection.Invalid;
};
}
@Nonnull
class="kw">private class="kw">static KnockbackApplyCommand.VelocityConfigPreset velocityConfigPreset(@Nonnull String var0) {
class="kw">return class="kw">switch (var0.toLowerCase(Locale.ROOT)) {
case "null" -> KnockbackApplyCommand.VelocityConfigPreset.Null;
case "linear" -> KnockbackApplyCommand.VelocityConfigPreset.Linear;
case "exp" -> KnockbackApplyCommand.VelocityConfigPreset.Exp;
case "def" -> KnockbackApplyCommand.VelocityConfigPreset.Def;
class="kw">default -> KnockbackApplyCommand.VelocityConfigPreset.Invalid;
};
}
@Nullable
class="kw">private class="kw">static VelocityConfig toVelocityConfig(@Nonnull KnockbackApplyCommand.VelocityConfigPreset var0) {
class="kw">return class="kw">switch (var0) {
case Null -> null;
case Linear -> createVelocityConfig(0.99F, 0.98F, 0.94F, 0.3F, 3.0F, VelocityThresholdStyle.Linear);
case Exp -> createVelocityConfig(0.97F, 0.96F, 0.94F, 0.3F, 3.0F, VelocityThresholdStyle.Exp);
case Def -> createVelocityConfig(0.96F, 0.0F, 0.82F, 0.0F, 1.0F, VelocityThresholdStyle.Linear);
case Invalid -> null;
};
}
@Nonnull
class="kw">private class="kw">static VelocityConfig createVelocityConfig(float var0, float var1, float var2, float var3, float var4, @Nonnull VelocityThresholdStyle var5) {
VelocityConfig var6 = new VelocityConfig();
var6.setAirResistance(var0);
var6.setAirResistanceMax(var1);
var6.setGroundResistance(var2);
var6.setGroundResistanceMax(var3);
var6.setThreshold(var4);
var6.setStyle(var5);
class="kw">return var6;
}
class="kw">private enum HorizontalDirection {
Left,
Right,
Forward,
Backward,
Invalid;
HorizontalDirection() {
}
}
class="kw">public class="kw">static class KnockbackApplyAimedCommand class="kw">extends AbstractPlayerCommand {
@Nonnull
class="kw">private class="kw">final RequiredArg<String> directionArg = this.withRequiredArg("direction", "server.commands.knockback.apply.direction.desc", ArgTypes.STRING);
@Nonnull
class="kw">private class="kw">final RequiredArg<Float> yArg = this.withRequiredArg("y", "server.commands.knockback.apply.y.desc", ArgTypes.FLOAT);
@Nonnull
class="kw">private class="kw">final RequiredArg<Float> forceArg = this.withRequiredArg("force", "server.commands.knockback.apply.force.desc", ArgTypes.FLOAT);
@Nonnull
class="kw">private class="kw">final RequiredArg<String> presetArg = this.withRequiredArg("preset", "server.commands.knockback.apply.preset.desc", ArgTypes.STRING);
class="kw">public KnockbackApplyAimedCommand() {
super("aimed", "server.commands.knockback.apply.aimed.desc");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
Ref var6 = TargetUtil.getTargetEntity(var3, var2);
if (var6 != null && var6.isValid()) {
KnockbackApplyCommand.applyKnockback(
var6, var1, var2, var3, this.directionArg.get(var1), this.yArg.get(var1), this.forceArg.get(var1), this.presetArg.get(var1)
);
} else {
var1.sendMessage(KnockbackApplyCommand.MESSAGE_GENERAL_NO_ENTITY_IN_VIEW);
}
}
}
class="kw">public class="kw">static class KnockbackApplySelfCommand class="kw">extends AbstractPlayerCommand {
@Nonnull
class="kw">private class="kw">final RequiredArg<String> directionArg = this.withRequiredArg("direction", "server.commands.knockback.apply.direction.desc", ArgTypes.STRING);
@Nonnull
class="kw">private class="kw">final RequiredArg<Float> yArg = this.withRequiredArg("y", "server.commands.knockback.apply.y.desc", ArgTypes.FLOAT);
@Nonnull
class="kw">private class="kw">final RequiredArg<Float> forceArg = this.withRequiredArg("force", "server.commands.knockback.apply.force.desc", ArgTypes.FLOAT);
@Nonnull
class="kw">private class="kw">final RequiredArg<String> presetArg = this.withRequiredArg("preset", "server.commands.knockback.apply.preset.desc", ArgTypes.STRING);
class="kw">public KnockbackApplySelfCommand() {
super("self", "server.commands.knockback.apply.self.desc");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
KnockbackApplyCommand.applyKnockback(
var3, var1, var2, var3, this.directionArg.get(var1), this.yArg.get(var1), this.forceArg.get(var1), this.presetArg.get(var1)
);
}
}
class="kw">private enum VelocityConfigPreset {
Null,
Linear,
Exp,
Def,
Invalid;
VelocityConfigPreset() {
}
}
}