Search in sources :

Example 16 with DisplayNameComponent

use of org.terasology.engine.logic.common.DisplayNameComponent in project Terasology by MovingBlocks.

the class ServerCommands method listUsers.

@Command(shortDescription = "List users", requiredPermission = PermissionManager.USER_MANAGEMENT_PERMISSION)
public String listUsers() {
    StringBuilder stringBuilder = new StringBuilder();
    for (EntityRef clientInfo : entityManager.getEntitiesWith(ClientInfoComponent.class)) {
        DisplayNameComponent dnc = clientInfo.getComponent(DisplayNameComponent.class);
        NetworkComponent nc = clientInfo.getComponent(NetworkComponent.class);
        String playerText = PlayerUtil.getColoredPlayerName(clientInfo);
        String line = String.format("%s - %s (%d)", playerText, dnc.description, nc.getNetworkId());
        stringBuilder.append(line);
        stringBuilder.append(Console.NEW_LINE);
    }
    return stringBuilder.toString();
}
Also used : DisplayNameComponent(org.terasology.engine.logic.common.DisplayNameComponent) NetworkComponent(org.terasology.engine.network.NetworkComponent) EntityRef(org.terasology.engine.entitySystem.entity.EntityRef) Command(org.terasology.engine.logic.console.commandSystem.annotations.Command)

Example 17 with DisplayNameComponent

use of org.terasology.engine.logic.common.DisplayNameComponent in project Terasology by MovingBlocks.

the class ChatSystem method whisper.

@Command(runOnServer = true, requiredPermission = PermissionManager.CHAT_PERMISSION, shortDescription = "Sends a private message to a specified user")
public String whisper(@Sender EntityRef sender, @CommandParam(value = "user", suggester = OnlineUsernameSuggester.class) String username, @CommandParam("message") String[] message) {
    String messageToString = join(message, " ");
    Iterable<EntityRef> clients = entityManager.getEntitiesWith(ClientComponent.class);
    EntityRef targetClient = null;
    boolean unique = true;
    for (EntityRef client : clients) {
        ClientComponent clientComponent = client.getComponent(ClientComponent.class);
        DisplayNameComponent displayNameComponent = clientComponent.clientInfo.getComponent(DisplayNameComponent.class);
        if (displayNameComponent == null) {
            continue;
        }
        if (displayNameComponent.name.equalsIgnoreCase(username)) {
            if (targetClient == null) {
                targetClient = client;
            } else {
                unique = false;
                break;
            }
        }
    }
    if (!unique) {
        targetClient = null;
        for (EntityRef client : clients) {
            ClientComponent clientComponent = client.getComponent(ClientComponent.class);
            DisplayNameComponent displayNameComponent = clientComponent.clientInfo.getComponent(DisplayNameComponent.class);
            if (displayNameComponent == null) {
                continue;
            }
            if (displayNameComponent.name.equals(username)) {
                if (targetClient == null) {
                    targetClient = client;
                } else {
                    return FontColor.getColored("Found more users with name '" + username + "'.", ConsoleColors.ERROR);
                }
            }
        }
    }
    if (targetClient == null) {
        return FontColor.getColored("User with name '" + username + "' not found.", ConsoleColors.ERROR);
    }
    ClientComponent senderClientComponent = sender.getComponent(ClientComponent.class);
    ClientComponent targetClientComponent = targetClient.getComponent(ClientComponent.class);
    DisplayNameComponent targetDisplayNameComponent = targetClientComponent.clientInfo.getComponent(DisplayNameComponent.class);
    String targetMessage = FontColor.getColored("*whispering* ", ConsoleColors.ERROR) + FontColor.getColored(messageToString, ConsoleColors.CHAT);
    String senderMessage = "You -> " + targetDisplayNameComponent.name + ": " + FontColor.getColored(messageToString, ConsoleColors.CHAT);
    targetClient.send(new ChatMessageEvent(targetMessage, senderClientComponent.clientInfo));
    return senderMessage;
}
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 18 with DisplayNameComponent

use of org.terasology.engine.logic.common.DisplayNameComponent in project Terasology by MovingBlocks.

the class WorldCommands method simulate.

@Command(shortDescription = "Random", runOnServer = true)
public String simulate(@Sender EntityRef sender) {
    EntityRef simulatedEntity = entityManager.create("engine:multiWorldSim");
    DisplayNameComponent displayNameComponent = simulatedEntity.getComponent(DisplayNameComponent.class);
    displayNameComponent.name = "I-Travel-Worlds-" + simulatedEntity.getId();
    simulatedEntity.saveComponent(displayNameComponent);
    ColorComponent colorComponent = simulatedEntity.getComponent(ColorComponent.class);
    colorComponent.color = Color.RED;
    simulatedEntity.saveComponent(colorComponent);
    sender.send(new ChatMessageEvent("yay", simulatedEntity));
    return "done";
}
Also used : DisplayNameComponent(org.terasology.engine.logic.common.DisplayNameComponent) ChatMessageEvent(org.terasology.engine.logic.chat.ChatMessageEvent) ColorComponent(org.terasology.engine.network.ColorComponent) EntityRef(org.terasology.engine.entitySystem.entity.EntityRef) Command(org.terasology.engine.logic.console.commandSystem.annotations.Command)

Example 19 with DisplayNameComponent

use of org.terasology.engine.logic.common.DisplayNameComponent in project Terasology by MovingBlocks.

the class PlayerNameTagSystem method onCharacterActivation.

/**
 * Listening for {@link OnPlayerSpawnedEvent} does not work, as it is an
 * authority event that does not get processed at clients. That is why we listen for the activation.
 */
@ReceiveEvent(components = CharacterComponent.class)
public void onCharacterActivation(OnActivatedComponent event, EntityRef characterEntity, CharacterComponent characterComponent) {
    EntityRef ownerEntity = networkSystem.getOwnerEntity(characterEntity);
    if (ownerEntity == null) {
        // NPC
        return;
    }
    ClientComponent clientComponent = ownerEntity.getComponent(ClientComponent.class);
    if (clientComponent == null) {
        // the character is not owned by a client (no other player)
        return;
    }
    if (clientComponent.local) {
        // the character belongs to the local player and does not need a name tag
        return;
    }
    EntityRef clientInfoEntity = clientComponent.clientInfo;
    DisplayNameComponent displayNameComponent = clientInfoEntity.getComponent(DisplayNameComponent.class);
    if (displayNameComponent == null) {
        logger.debug("Cannot create name tag for client without DisplayNameComponent");
        return;
    }
    String name = displayNameComponent.name;
    float yOffset = characterComponent.nameTagOffset;
    ColorComponent colorComponent = clientInfoEntity.getComponent(ColorComponent.class);
    final Color color = colorComponent != null ? colorComponent.color : Color.WHITE;
    characterEntity.upsertComponent(NameTagComponent.class, maybeNameTag -> {
        NameTagComponent nameTagComponent = maybeNameTag.orElse(new NameTagComponent());
        nameTagComponent.text = name;
        nameTagComponent.textColor = color;
        nameTagComponent.yOffset = yOffset;
        return nameTagComponent;
    });
}
Also used : DisplayNameComponent(org.terasology.engine.logic.common.DisplayNameComponent) ColorComponent(org.terasology.engine.network.ColorComponent) Color(org.terasology.nui.Color) EntityRef(org.terasology.engine.entitySystem.entity.EntityRef) ClientComponent(org.terasology.engine.network.ClientComponent) ReceiveEvent(org.terasology.engine.entitySystem.event.ReceiveEvent)

Example 20 with DisplayNameComponent

use of org.terasology.engine.logic.common.DisplayNameComponent in project Terasology by MovingBlocks.

the class MovementDebugCommands method teleportPlayerToMe.

@Command(shortDescription = "Teleport player to you", runOnServer = true, requiredPermission = PermissionManager.USER_MANAGEMENT_PERMISSION)
public String teleportPlayerToMe(@Sender EntityRef sender, @CommandParam("username") String username) {
    for (EntityRef clientEntity : entityManager.getEntitiesWith(ClientComponent.class)) {
        EntityRef clientInfo = clientEntity.getComponent(ClientComponent.class).clientInfo;
        DisplayNameComponent name = clientInfo.getComponent(DisplayNameComponent.class);
        if (username.equalsIgnoreCase(name.name)) {
            LocationComponent locationComponent = sender.getComponent(LocationComponent.class);
            if (locationComponent != null) {
                Vector3f vLocation = locationComponent.getWorldPosition(new Vector3f());
                ClientComponent clientComp = clientEntity.getComponent(ClientComponent.class);
                if (clientComp != null) {
                    clientComp.character.send(new CharacterTeleportEvent(vLocation));
                    return "Teleporting " + username + " to you at " + vLocation.x + " " + vLocation.y + " " + vLocation.z;
                }
            }
        }
    }
    throw new IllegalArgumentException("No such user '" + username + "'");
}
Also used : DisplayNameComponent(org.terasology.engine.logic.common.DisplayNameComponent) CharacterTeleportEvent(org.terasology.engine.logic.characters.CharacterTeleportEvent) Vector3f(org.joml.Vector3f) EntityRef(org.terasology.engine.entitySystem.entity.EntityRef) ClientComponent(org.terasology.engine.network.ClientComponent) LocationComponent(org.terasology.engine.logic.location.LocationComponent) Command(org.terasology.engine.logic.console.commandSystem.annotations.Command)

Aggregations

DisplayNameComponent (org.terasology.engine.logic.common.DisplayNameComponent)21 EntityRef (org.terasology.engine.entitySystem.entity.EntityRef)18 ClientComponent (org.terasology.engine.network.ClientComponent)13 Command (org.terasology.engine.logic.console.commandSystem.annotations.Command)10 Vector3f (org.joml.Vector3f)4 CharacterTeleportEvent (org.terasology.engine.logic.characters.CharacterTeleportEvent)4 LocationComponent (org.terasology.engine.logic.location.LocationComponent)4 ColorComponent (org.terasology.engine.network.ColorComponent)3 PlayerCharacterComponent (org.terasology.engine.logic.players.PlayerCharacterComponent)2 HashSet (java.util.HashSet)1 ReceiveEvent (org.terasology.engine.entitySystem.event.ReceiveEvent)1 Prefab (org.terasology.engine.entitySystem.prefab.Prefab)1 CharacterMovementComponent (org.terasology.engine.logic.characters.CharacterMovementComponent)1 MovementMode (org.terasology.engine.logic.characters.MovementMode)1 SetMovementModeEvent (org.terasology.engine.logic.characters.events.SetMovementModeEvent)1 ChatMessageEvent (org.terasology.engine.logic.chat.ChatMessageEvent)1 Client (org.terasology.engine.network.Client)1 ClientInfoComponent (org.terasology.engine.network.ClientInfoComponent)1 NetworkComponent (org.terasology.engine.network.NetworkComponent)1 Color (org.terasology.nui.Color)1