Search in sources :

Example 1 with Sender

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

the class CoreCommands method spawnPrefab.

/**
 * Spawns an instance of a prefab in the world
 *
 * @param sender     Sender of command
 * @param prefabName String containing prefab name
 * @return String containing final message
 */
@Command(shortDescription = "Spawns an instance of a prefab in the world", runOnServer = true, requiredPermission = PermissionManager.CHEAT_PERMISSION)
public String spawnPrefab(@Sender EntityRef sender, @CommandParam("prefabId") String prefabName) {
    ClientComponent clientComponent = sender.getComponent(ClientComponent.class);
    LocationComponent characterLocation = clientComponent.character.getComponent(LocationComponent.class);
    Vector3f spawnPos = characterLocation.getWorldPosition(new Vector3f());
    Vector3f offset = characterLocation.getWorldDirection(new Vector3f());
    offset.mul(2);
    spawnPos.add(offset);
    Vector3f dir = characterLocation.getWorldDirection(new Vector3f());
    dir.y = 0;
    if (dir.lengthSquared() > 0.001f) {
        dir.normalize();
    } else {
        dir.set(Direction.FORWARD.asVector3f());
    }
    return Assets.getPrefab(prefabName).map(prefab -> {
        LocationComponent loc = prefab.getComponent(LocationComponent.class);
        if (loc != null) {
            entityManager.create(prefab, spawnPos);
            return "Done";
        } else {
            return "Prefab cannot be spawned (no location component)";
        }
    }).orElse("Unknown prefab");
}
Also used : DropItemEvent(org.terasology.engine.logic.inventory.events.DropItemEvent) Server(org.terasology.engine.network.Server) Arrays(java.util.Arrays) Component(org.terasology.gestalt.entitysystem.component.Component) In(org.terasology.engine.registry.In) SystemConfig(org.terasology.engine.config.SystemConfig) Sender(org.terasology.engine.logic.console.commandSystem.annotations.Sender) Console(org.terasology.engine.logic.console.Console) SkinSuggester(org.terasology.engine.logic.console.suggesters.SkinSuggester) DisplayDevice(org.terasology.engine.core.subsystem.DisplayDevice) NUIEditorScreen(org.terasology.engine.rendering.nui.editor.layers.NUIEditorScreen) Locale(java.util.Locale) BlockUri(org.terasology.engine.world.block.BlockUri) FontColor(org.terasology.nui.FontColor) Vector3f(org.joml.Vector3f) TranslationProject(org.terasology.engine.i18n.TranslationProject) Path(java.nio.file.Path) StateLoading(org.terasology.engine.core.modes.StateLoading) Command(org.terasology.engine.logic.console.commandSystem.annotations.Command) TranslationSystem(org.terasology.engine.i18n.TranslationSystem) ConsoleCommand(org.terasology.engine.logic.console.commandSystem.ConsoleCommand) CommandParam(org.terasology.engine.logic.console.commandSystem.annotations.CommandParam) ConsoleColors(org.terasology.engine.logic.console.ConsoleColors) GameEngine(org.terasology.engine.core.GameEngine) CommandNameSuggester(org.terasology.engine.logic.console.suggesters.CommandNameSuggester) WaitPopup(org.terasology.engine.rendering.nui.layers.mainMenu.WaitPopup) Set(java.util.Set) StateMainMenu(org.terasology.engine.core.modes.StateMainMenu) NUISkinEditorSystem(org.terasology.engine.rendering.nui.editor.systems.NUISkinEditorSystem) Streams(com.google.common.collect.Streams) BlockFamilyDefinition(org.terasology.engine.world.block.loader.BlockFamilyDefinition) Instant(java.time.Instant) UISkinAsset(org.terasology.nui.skin.UISkinAsset) Collectors(java.util.stream.Collectors) Direction(org.terasology.engine.math.Direction) NUIManager(org.terasology.engine.rendering.nui.NUIManager) List(java.util.List) EntityRef(org.terasology.engine.entitySystem.entity.EntityRef) RegisterSystem(org.terasology.engine.entitySystem.systems.RegisterSystem) NUISkinEditorScreen(org.terasology.engine.rendering.nui.editor.layers.NUISkinEditorScreen) ScreenSuggester(org.terasology.engine.logic.console.suggesters.ScreenSuggester) Optional(java.util.Optional) Name(org.terasology.gestalt.naming.Name) TerasologyConstants(org.terasology.engine.core.TerasologyConstants) UIElement(org.terasology.nui.asset.UIElement) ModuleManager(org.terasology.engine.core.module.ModuleManager) EngineEntityManager(org.terasology.engine.entitySystem.entity.internal.EngineEntityManager) NetworkMode(org.terasology.engine.network.NetworkMode) Callable(java.util.concurrent.Callable) BlockItemFactory(org.terasology.engine.world.block.items.BlockItemFactory) ArrayList(java.util.ArrayList) WorldDumper(org.terasology.engine.persistence.WorldDumper) ResourceUrn(org.terasology.gestalt.assets.ResourceUrn) Time(org.terasology.engine.core.Time) StreamSupport(java.util.stream.StreamSupport) AssetManager(org.terasology.gestalt.assets.management.AssetManager) PingService(org.terasology.engine.network.PingService) MessagePopup(org.terasology.engine.rendering.nui.layers.mainMenu.MessagePopup) Assets(org.terasology.engine.utilities.Assets) BlockFamily(org.terasology.engine.world.block.family.BlockFamily) PermissionManager(org.terasology.engine.logic.permission.PermissionManager) NUIEditorSystem(org.terasology.engine.rendering.nui.editor.systems.NUIEditorSystem) LocationComponent(org.terasology.engine.logic.location.LocationComponent) ClientComponent(org.terasology.engine.network.ClientComponent) EntityManager(org.terasology.engine.entitySystem.entity.EntityManager) PrefabManager(org.terasology.engine.entitySystem.prefab.PrefabManager) IOException(java.io.IOException) Prefab(org.terasology.engine.entitySystem.prefab.Prefab) UnknownHostException(java.net.UnknownHostException) BaseComponentSystem(org.terasology.engine.entitySystem.systems.BaseComponentSystem) Ordering(com.google.common.collect.Ordering) BlockManager(org.terasology.engine.world.block.BlockManager) PrefabSerializer(org.terasology.engine.persistence.serializers.PrefabSerializer) JoinStatus(org.terasology.engine.network.JoinStatus) NetworkSystem(org.terasology.engine.network.NetworkSystem) PathManager(org.terasology.engine.core.PathManager) Vector3f(org.joml.Vector3f) ClientComponent(org.terasology.engine.network.ClientComponent) LocationComponent(org.terasology.engine.logic.location.LocationComponent) Command(org.terasology.engine.logic.console.commandSystem.annotations.Command) ConsoleCommand(org.terasology.engine.logic.console.commandSystem.ConsoleCommand)

Example 2 with Sender

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

the class MethodCommand method hasSenderAnnotation.

private static boolean hasSenderAnnotation(Method method) {
    final Class[] paramTypes = method.getParameterTypes();
    final Annotation[][] paramAnnotations = method.getParameterAnnotations();
    for (int i = 0; i < paramAnnotations.length; i++) {
        if (paramTypes[i].getTypeName().equals(ENTITY_REF_NAME)) {
            if (paramAnnotations[i].length == 0) {
                return false;
            } else {
                for (Annotation annotation : paramAnnotations[i]) {
                    if (annotation instanceof Sender) {
                        return true;
                    }
                }
            }
        }
    }
    return true;
}
Also used : Sender(org.terasology.engine.logic.console.commandSystem.annotations.Sender) Annotation(java.lang.annotation.Annotation)

Example 3 with Sender

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

the class MethodCommand method getParameterTypeFor.

private static Parameter getParameterTypeFor(Class<?> type, Annotation[] annotations, Context context) {
    for (Annotation annotation : annotations) {
        if (annotation instanceof CommandParam) {
            CommandParam parameterAnnotation = (CommandParam) annotation;
            String name = parameterAnnotation.value();
            Class<? extends CommandParameterSuggester> suggesterClass = parameterAnnotation.suggester();
            boolean required = parameterAnnotation.required();
            CommandParameterSuggester suggester = InjectionHelper.createWithConstructorInjection(suggesterClass, context);
            if (type.isArray()) {
                Class<?> childType = type.getComponentType();
                return CommandParameter.array(name, childType, required, suggester, context);
            } else {
                return CommandParameter.single(name, type, required, suggester, context);
            }
        } else if (annotation instanceof Sender) {
            return MarkerParameters.SENDER;
        }
    }
    return MarkerParameters.INVALID;
}
Also used : Sender(org.terasology.engine.logic.console.commandSystem.annotations.Sender) CommandParam(org.terasology.engine.logic.console.commandSystem.annotations.CommandParam) Annotation(java.lang.annotation.Annotation)

Aggregations

Sender (org.terasology.engine.logic.console.commandSystem.annotations.Sender)3 Annotation (java.lang.annotation.Annotation)2 Ordering (com.google.common.collect.Ordering)1 Streams (com.google.common.collect.Streams)1 IOException (java.io.IOException)1 UnknownHostException (java.net.UnknownHostException)1 Path (java.nio.file.Path)1 Instant (java.time.Instant)1 ArrayList (java.util.ArrayList)1 Arrays (java.util.Arrays)1 List (java.util.List)1 Locale (java.util.Locale)1 Optional (java.util.Optional)1 Set (java.util.Set)1 Callable (java.util.concurrent.Callable)1 Collectors (java.util.stream.Collectors)1 StreamSupport (java.util.stream.StreamSupport)1 Vector3f (org.joml.Vector3f)1 SystemConfig (org.terasology.engine.config.SystemConfig)1 GameEngine (org.terasology.engine.core.GameEngine)1