SpectateFreeCommand class
Пакет: com.hypixel.hytale.server.core.command.commands.player
Файл: com/hypixel/hytale/server/core/command/commands/player/SpectateCommand.java
extends: AbstractPlayerCommand
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
protected void |
executeprotected void execute(@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5) |
abstract |
|
super super("free", "server.commands.spectate.free.desc") |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.command.commands.player;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.asset.type.gamemode.GameModeType;
class="kw">import com.hypixel.hytale.server.core.command.system.CommandContext;
class="kw">import com.hypixel.hytale.server.core.command.system.arguments.system.OptionalArg;
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.command.system.basecommands.CommandBase;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.Spectating;
class="kw">import com.hypixel.hytale.server.core.modules.entity.damage.DeathComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.gamemode.GameModeTypes;
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 com.hypixel.hytale.server.core.util.TargetUtil;
class="kw">import javax.annotation.Nonnull;
class="kw">public class SpectateCommand class="kw">extends AbstractPlayerCommand {
@Nonnull
class="kw">private class="kw">static class="kw">final String DEFAULT_GAME_MODE_TYPE_ID = "Spectator";
class="kw">public SpectateCommand() {
super("spectate", "server.commands.spectate.desc");
this.requirePermission(HytalePermissions.fromCommand("spectate.self"));
this.setPermissionGroups("hytale:Builder");
this.addUsageVariant(new SpectateCommand.SpectateWatchCommand());
this.addSubCommand(new SpectateCommand.SpectateTargetCommand());
this.addSubCommand(new SpectateCommand.SpectateExitCommand());
this.addSubCommand(new SpectateCommand.SpectateFreeCommand());
this.addSubCommand(new SpectateCommand.SpectateSetCommand());
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
if (Spectating.isSpectating(var3, var2)) {
if (GameModeTypes.exit(var3, var2)) {
var1.sendMessage(Message.translation("server.commands.spectate.disabled"));
} else {
var1.sendMessage(Message.translation("server.commands.spectate.cantExit"));
}
} else if (GameModeTypes.enter(var3, var2, "Spectator")) {
var1.sendMessage(Message.translation("server.commands.spectate.enabled"));
} else {
var1.sendMessage(Message.translation("server.commands.spectate.cantEnter"));
}
}
class="kw">private class="kw">static void enterAndWatch(
@Nonnull CommandContext var0,
@Nonnull Store<EntityStore> var1,
@Nonnull Ref<EntityStore> var2,
@Nonnull Ref<EntityStore> var3,
@Nonnull Message var4,
@Nonnull Message var5
) {
if (var1.getArchetype(var3).contains(DeathComponent.getComponentType())) {
var0.sendMessage(var5);
} else {
PlayerRef var6 = var1.getComponent(var2, PlayerRef.getComponentType());
PlayerRef var7 = var1.getComponent(var3, PlayerRef.getComponentType());
if (var6 != null && var7 != null && var6.getHiddenPlayersManager().isPlayerHidden(var7.getUuid())) {
var0.sendMessage(var5);
} else if (!Spectating.isSpectating(var2, var1) && !GameModeTypes.enter(var2, var1, "Spectator")) {
var0.sendMessage(Message.translation("server.commands.spectate.cantEnter"));
} else {
var1.putComponent(var2, Spectating.getComponentType(), new Spectating(var3));
var0.sendMessage(var4);
}
}
}
class="kw">private class="kw">static class SpectateExitCommand class="kw">extends AbstractPlayerCommand {
SpectateExitCommand() {
super("exit", "server.commands.spectate.exit.desc");
this.requirePermission(HytalePermissions.fromCommand("spectate.self"));
this.setPermissionGroups("hytale:Builder");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
if (!Spectating.isSpectating(var3, var2)) {
var1.sendMessage(Message.translation("server.commands.spectate.notSpectating"));
} else {
if (GameModeTypes.exit(var3, var2)) {
var1.sendMessage(Message.translation("server.commands.spectate.disabled"));
} else {
var1.sendMessage(Message.translation("server.commands.spectate.cantExit"));
}
}
}
}
class="kw">private class="kw">static class SpectateFreeCommand class="kw">extends AbstractPlayerCommand {
SpectateFreeCommand() {
super("free", "server.commands.spectate.free.desc");
this.requirePermission(HytalePermissions.fromCommand("spectate.self"));
this.setPermissionGroups("hytale:Builder");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
if (!Spectating.isSpectating(var3, var2)) {
if (GameModeTypes.enter(var3, var2, "Spectator")) {
var1.sendMessage(Message.translation("server.commands.spectate.enabled"));
} else {
var1.sendMessage(Message.translation("server.commands.spectate.cantEnter"));
}
} else {
var2.putComponent(var3, Spectating.getComponentType(), new Spectating());
var1.sendMessage(Message.translation("server.commands.spectate.freed"));
}
}
}
class="kw">private class="kw">static class SpectateSetCommand class="kw">extends CommandBase {
@Nonnull
class="kw">private class="kw">static class="kw">final Message MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD = Message.translation("server.commands.errors.playerNotInWorld");
@Nonnull
class="kw">private class="kw">final RequiredArg<PlayerRef> playerArg = this.withRequiredArg("player", "server.commands.argtype.player.desc", ArgTypes.PLAYER_REF);
@Nonnull
class="kw">private class="kw">final OptionalArg<SpectateCommand.SpectateState> stateArg = this.withOptionalArg(
"state", "server.commands.spectate.set.state.desc", ArgTypes.forEnum("server.commands.parsing.argtype.enum.name", SpectateCommand.SpectateState.class)
);
@Nonnull
class="kw">private class="kw">final OptionalArg<String> typeArg = this.withOptionalArg("type", "server.commands.spectate.set.type.desc", ArgTypes.STRING);
SpectateSetCommand() {
super("set", "server.commands.spectate.set.desc");
this.requirePermission(HytalePermissions.fromCommand("spectate.other"));
this.setPermissionGroups("hytale:WorldEditor");
}
@Override
class="kw">protected void executeSync(@Nonnull CommandContext var1) {
PlayerRef var2 = this.playerArg.get(var1);
Ref var3 = var2.getReference();
if (var3 != null && var3.isValid()) {
Store var4 = var3.getStore();
World var5 = var4.getExternalData().getWorld();
var5.execute(
() -> {
Player var5 = var4.getComponent(var3, Player.getComponentType());
if (var5 == null) {
var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
} else {
boolean var6 = this.stateArg.provided(var1)
? this.stateArg.get(var1) == SpectateCommand.SpectateState.ON
: !Spectating.isSpectating(var3, var4);
if (var6) {
String var7 = this.typeArg.provided(var1) ? this.typeArg.get(var1) : "Spectator";
GameModeType var8 = GameModeType.getAssetMap().getAsset(var7);
if (var8 == null || !var8.isSpectator()) {
var1.sendMessage(Message.translation("server.commands.spectate.set.invalidType").param("type", var7));
class="kw">return;
}
boolean var9 = var4.getArchetype(var3).contains(DeathComponent.getComponentType());
boolean var10 = GameModeTypes.getCurrentTypeId(var3, var4) == null
&& (var9 ? GameModeTypes.enterOnDeath(var3, var4, var7) : GameModeTypes.enter(var3, var4, var7));
if (var10) {
var1.sendMessage(Message.translation("server.commands.spectate.set.on").param("username", var2.getUsername()));
} else {
var1.sendMessage(Message.translation("server.commands.spectate.set.failed").param("username", var2.getUsername()));
}
} else if (Spectating.isSpectating(var3, var4) && GameModeTypes.exit(var3, var4)) {
var1.sendMessage(Message.translation("server.commands.spectate.set.off").param("username", var2.getUsername()));
} else {
var1.sendMessage(Message.translation("server.commands.spectate.set.failed").param("username", var2.getUsername()));
}
}
}
);
} else {
var1.sendMessage(MESSAGE_COMMANDS_ERRORS_PLAYER_NOT_IN_WORLD);
}
}
}
class="kw">private enum SpectateState {
ON,
OFF;
SpectateState() {
}
}
class="kw">private class="kw">static class SpectateTargetCommand class="kw">extends AbstractPlayerCommand {
class="kw">private class="kw">static class="kw">final float TARGET_SEARCH_RADIUS = 32.0F;
SpectateTargetCommand() {
super("target", "server.commands.spectate.target.desc");
this.requirePermission(HytalePermissions.fromCommand("spectate.watch"));
this.setPermissionGroups("hytale:Builder");
}
@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, 32.0F, true, var2);
if (var6 == null) {
var1.sendMessage(Message.translation("server.general.noEntityInView"));
} else if (Spectating.isSpectating(var6, var2)) {
var1.sendMessage(Message.translation("server.commands.spectate.cantWatchSpectator"));
} else {
SpectateCommand.enterAndWatch(
var1,
var2,
var3,
var6,
Message.translation("server.commands.spectate.watchingTarget"),
Message.translation("server.commands.spectate.cantWatchTarget")
);
}
}
}
class="kw">private class="kw">static class SpectateWatchCommand class="kw">extends AbstractPlayerCommand {
@Nonnull
class="kw">private class="kw">final RequiredArg<PlayerRef> playerArg = this.withRequiredArg("player", "server.commands.argtype.player.desc", ArgTypes.PLAYER_REF);
SpectateWatchCommand() {
super("server.commands.spectate.watch.desc");
this.requirePermission(HytalePermissions.fromCommand("spectate.watch"));
this.setPermissionGroups("hytale:Builder");
}
@Override
class="kw">protected void execute(
@Nonnull CommandContext var1, @Nonnull Store<EntityStore> var2, @Nonnull Ref<EntityStore> var3, @Nonnull PlayerRef var4, @Nonnull World var5
) {
PlayerRef var6 = this.playerArg.get(var1);
Ref var7 = var6.getReference();
if (var7 == null || !var7.isValid() || var7.getStore() != var2) {
var1.sendMessage(Message.translation("server.commands.errors.playerNotInWorld"));
} else if (var7.equals(var3)) {
var1.sendMessage(Message.translation("server.commands.spectate.cantWatchSelf"));
} else if (Spectating.isSpectating(var7, var2)) {
var1.sendMessage(Message.translation("server.commands.spectate.cantWatchSpectator"));
} else {
SpectateCommand.enterAndWatch(
var1,
var2,
var3,
var7,
Message.translation("server.commands.spectate.watching").param("username", var6.getUsername()),
Message.translation("server.commands.spectate.cantWatch").param("username", var6.getUsername())
);
}
}
}
}