WarpSetCommand class
Пакет: com.hypixel.hytale.builtin.teleport.commands.warp
Файл: com/hypixel/hytale/builtin/teleport/commands/warp/WarpSetCommand.java
extends: AbstractPlayerCommand
Поля (12)
| Модификаторы | Тип | Имя |
|---|---|---|
|
TransformComponent |
var10 |
|
HeadRotation |
var11 |
|
Vector3d |
var12 |
|
Rotation3f |
var13 |
|
Transform |
var14 |
|
Warp |
var15 |
|
IEventDispatcher |
var2 |
|
ReplaceWarpEvent |
var3 |
|
TeleportPlugin |
var6 |
|
String |
var7 |
|
String |
var8 |
|
Warp |
var9 |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
static |
boolean |
cancelboolean cancel(@Nonnull CommandContext var0, @Nonnull Warp var1) |
abstract |
|
super super("set", "server.commands.warp.set.desc") |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.teleport.commands.warp;
class="kw">import com.hypixel.hytale.builtin.teleport.TeleportPlugin;
class="kw">import com.hypixel.hytale.builtin.teleport.Warp;
class="kw">import com.hypixel.hytale.builtin.teleport.commands.event.ReplaceWarpEvent;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.event.IEventDispatcher;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.server.core.HytaleServer;
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.FlagArg;
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.AbstractPlayerCommand;
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.permissions.HytalePermissions;
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 java.time.Instant;
class="kw">import java.util.Locale;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class WarpSetCommand class="kw">extends AbstractPlayerCommand {
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_TELEPORT_WARP_NOT_LOADED = Message.translation("server.commands.teleport.warp.notLoaded");
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_TELEPORT_WARP_RESERVED_KEYWORD = Message.translation("server.commands.teleport.warp.reservedKeyword");
@Nonnull
class="kw">private class="kw">final RequiredArg<String> nameArg = this.withRequiredArg("name", "server.commands.warp.set.name.desc", ArgTypes.STRING);
@Nonnull
class="kw">private class="kw">final FlagArg forceArg = this.withFlagArg("force", "server.commands.warp.set.force.desc");
class="kw">private class="kw">final Set<String> keywords;
class="kw">public WarpSetCommand(@Nonnull Set<String> var1) {
super("set", "server.commands.warp.set.desc");
this.keywords = var1;
this.requirePermission(HytalePermissions.fromCommand("warp.set"));
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
TeleportPlugin var6 = TeleportPlugin.get();
if (!var6.isWarpsLoaded()) {
var1.sendMessage(MESSAGE_COMMANDS_TELEPORT_WARP_NOT_LOADED);
} else {
String var7 = this.nameArg.get(var1);
String var8 = var7.toLowerCase(Locale.ROOT);
Warp var9 = var6.getWarps().get(var8);
if (var1.provided(this.forceArg) || var9 == null || !cancel(var1, var9)) {
if (this.keywords.contains(var8)) {
var1.sendMessage(MESSAGE_COMMANDS_TELEPORT_WARP_RESERVED_KEYWORD);
} else {
TransformComponent var10 = var2.getComponent(var3, TransformComponent.getComponentType());
assert var10 != null;
HeadRotation var11 = var2.getComponent(var3, HeadRotation.getComponentType());
assert var11 != null;
Vector3d var12 = var10.getPosition();
Rotation3f var13 = var11.getRotation();
Transform var14 = new Transform(new Vector3d(var12), new Rotation3f(var13));
Warp var15 = new Warp(var14, var7, var5, var4.getUsername(), Instant.now());
TeleportPlugin.get().addWarp(var15, true);
var1.sendMessage(Message.translation("server.commands.teleport.warp.setWarp").param("name", var15.getId()));
}
}
}
}
class="kw">private class="kw">static boolean cancel(@Nonnull CommandContext var0, @Nonnull Warp var1) {
IEventDispatcher var2 = HytaleServer.get().getEventBus().dispatchFor(ReplaceWarpEvent.class);
if (!var2.hasListener()) {
class="kw">return false;
}
ReplaceWarpEvent var3 = var2.dispatch(new ReplaceWarpEvent(var1));
if (!var3.isCancelled()) {
class="kw">return false;
}
if (var3.getCancelReason() != null) {
var0.sendMessage(var3.getCancelReason());
} else {
var0.sendMessage(WarpCommand.MESSAGE_COMMANDS_MODIFICATION_CANCELLED.param("name", var1.getId()));
}
class="kw">return true;
}
}