Search in sources :

Example 16 with Command

use of org.terasology.engine.logic.console.commandSystem.annotations.Command in project Terasology by MovingBlocks.

the class CoreCommands method ping.

/**
 * Your ping to the server
 *
 * @param sender Sender of command
 * @return String containing ping or error message
 */
@Command(shortDescription = "Your ping to the server", helpText = "The time it takes the packet " + "to reach the server and back", requiredPermission = PermissionManager.NO_PERMISSION)
public String ping(@Sender EntityRef sender) {
    Server server = networkSystem.getServer();
    if (server == null) {
        // TODO: i18n
        if (networkSystem.getMode().isServer()) {
            return "Your player is running on the server";
        } else {
            return "Please make sure you are connected to an online server (singleplayer doesn't count)";
        }
    }
    String[] remoteAddress = server.getRemoteAddress().split("-");
    String address = remoteAddress[1];
    int port = Integer.parseInt(remoteAddress[2]);
    try {
        PingService pingService = new PingService(address, port);
        long delay = pingService.call();
        return String.format("%d ms", delay);
    } catch (UnknownHostException e) {
        return String.format("Error: Unknown host \"%s\" at %s:%s -- %s", remoteAddress[0], remoteAddress[1], remoteAddress[2], e);
    } catch (IOException e) {
        return String.format("Error: Failed to ping server \"%s\" at %s:%s -- %s", remoteAddress[0], remoteAddress[1], remoteAddress[2], e);
    }
}
Also used : Server(org.terasology.engine.network.Server) UnknownHostException(java.net.UnknownHostException) PingService(org.terasology.engine.network.PingService) IOException(java.io.IOException) Command(org.terasology.engine.logic.console.commandSystem.annotations.Command) ConsoleCommand(org.terasology.engine.logic.console.commandSystem.ConsoleCommand)

Example 17 with Command

use of org.terasology.engine.logic.console.commandSystem.annotations.Command in project Terasology by MovingBlocks.

the class ClientCommands method setSpawnLocation.

/**
 * Sets the spawn location for the client to the current location
 * @return String containing debug information on the entity
 */
@Command(shortDescription = "Sets the spawn location for the client to the current location", runOnServer = true, requiredPermission = PermissionManager.CHEAT_PERMISSION)
public String setSpawnLocation(@Sender EntityRef sender) {
    EntityRef clientInfo = sender.getComponent(ClientComponent.class).clientInfo;
    StaticSpawnLocationComponent staticSpawnLocationComponent = new StaticSpawnLocationComponent();
    if (clientInfo.hasComponent(StaticSpawnLocationComponent.class)) {
        staticSpawnLocationComponent = clientInfo.getComponent(StaticSpawnLocationComponent.class);
    }
    staticSpawnLocationComponent.position = sender.getComponent(ClientComponent.class).character.getComponent(LocationComponent.class).getWorldPosition(new Vector3f());
    clientInfo.addOrSaveComponent(staticSpawnLocationComponent);
    return "Set spawn location to- " + staticSpawnLocationComponent.position;
}
Also used : StaticSpawnLocationComponent(org.terasology.engine.logic.players.StaticSpawnLocationComponent) Vector3f(org.joml.Vector3f) EntityRef(org.terasology.engine.entitySystem.entity.EntityRef) ClientComponent(org.terasology.engine.network.ClientComponent) Command(org.terasology.engine.logic.console.commandSystem.annotations.Command)

Example 18 with Command

use of org.terasology.engine.logic.console.commandSystem.annotations.Command in project Terasology by MovingBlocks.

the class ServerCommands method shutdownServer.

@Command(shortDescription = "Shutdown the server", runOnServer = true, requiredPermission = PermissionManager.SERVER_MANAGEMENT_PERMISSION)
public String shutdownServer(@Sender EntityRef sender) {
    // TODO: verify permissions of sender
    EntityRef clientInfo = sender.getComponent(ClientComponent.class).clientInfo;
    DisplayNameComponent name = clientInfo.getComponent(DisplayNameComponent.class);
    logger.info("Shutdown triggered by {}", name.name);
    gameEngine.shutdown();
    return "Server shutdown triggered";
}
Also used : DisplayNameComponent(org.terasology.engine.logic.common.DisplayNameComponent) EntityRef(org.terasology.engine.entitySystem.entity.EntityRef) ClientComponent(org.terasology.engine.network.ClientComponent) Command(org.terasology.engine.logic.console.commandSystem.annotations.Command)

Example 19 with Command

use of org.terasology.engine.logic.console.commandSystem.annotations.Command in project Terasology by MovingBlocks.

the class ServerCommands method reloadChunk.

@Command(shortDescription = "Invalidates the specified chunk and recreates it (requires storage manager disabled)", runOnServer = true)
public String reloadChunk(@CommandParam("x") int x, @CommandParam("y") int y, @CommandParam("z") int z) {
    Vector3i pos = new Vector3i(x, y, z);
    if (systemConfig.writeSaveGamesEnabled.get()) {
        return "Writing save games is enabled! Invalidating chunk has no effect";
    }
    boolean success = chunkProvider.reloadChunk(pos);
    return success ? "Cleared chunk " + pos + " from cache and triggered reload" : "Chunk " + pos + " did not exist in the cache";
}
Also used : Vector3i(org.joml.Vector3i) Command(org.terasology.engine.logic.console.commandSystem.annotations.Command)

Example 20 with Command

use of org.terasology.engine.logic.console.commandSystem.annotations.Command in project Terasology by MovingBlocks.

the class ServerCommands method renameUser.

@Command(shortDescription = "Rename a user", runOnServer = true, requiredPermission = PermissionManager.USER_MANAGEMENT_PERMISSION)
public String renameUser(@CommandParam(value = "userName", suggester = UsernameSuggester.class) String userName, @CommandParam(value = "newUserName") String newUserName) {
    Iterable<EntityRef> clientInfoEntities = entityManager.getEntitiesWith(ClientInfoComponent.class);
    for (EntityRef clientInfo : clientInfoEntities) {
        DisplayNameComponent nameComp = clientInfo.getComponent(DisplayNameComponent.class);
        if (newUserName.equalsIgnoreCase(nameComp.name)) {
            throw new IllegalArgumentException("New user name is already in use");
        }
    }
    for (EntityRef clientInfo : clientInfoEntities) {
        DisplayNameComponent nameComp = clientInfo.getComponent(DisplayNameComponent.class);
        if (userName.equalsIgnoreCase(nameComp.name)) {
            nameComp.name = newUserName;
            clientInfo.saveComponent(nameComp);
            return "User " + userName + " has been renamed to " + newUserName;
        }
    }
    throw new IllegalArgumentException("No such user '" + userName + "'");
}
Also used : DisplayNameComponent(org.terasology.engine.logic.common.DisplayNameComponent) EntityRef(org.terasology.engine.entitySystem.entity.EntityRef) Command(org.terasology.engine.logic.console.commandSystem.annotations.Command)

Aggregations

Command (org.terasology.engine.logic.console.commandSystem.annotations.Command)67 ClientComponent (org.terasology.engine.network.ClientComponent)42 EntityRef (org.terasology.engine.entitySystem.entity.EntityRef)35 Vector3f (org.joml.Vector3f)16 ConsoleCommand (org.terasology.engine.logic.console.commandSystem.ConsoleCommand)16 CharacterMovementComponent (org.terasology.engine.logic.characters.CharacterMovementComponent)11 DisplayNameComponent (org.terasology.engine.logic.common.DisplayNameComponent)10 LocationComponent (org.terasology.engine.logic.location.LocationComponent)10 ResourceUrn (org.terasology.gestalt.assets.ResourceUrn)9 BlockFamily (org.terasology.engine.world.block.family.BlockFamily)6 Map (java.util.Map)5 CharacterTeleportEvent (org.terasology.engine.logic.characters.CharacterTeleportEvent)5 DropItemEvent (org.terasology.engine.logic.inventory.events.DropItemEvent)5 BlockItemFactory (org.terasology.engine.world.block.items.BlockItemFactory)5 ArrayList (java.util.ArrayList)4 HashMap (java.util.HashMap)4 IOException (java.io.IOException)3 UnknownHostException (java.net.UnknownHostException)3 List (java.util.List)3 Locale (java.util.Locale)3