src/main/java/org/intellimate/izou/sdk/frameworks/music/events/PlayerCommand.java
public static Optional<PlayerCommand> createPlayerCommand(Identification source, Identification target,
                                                              String command, Capabilities capabilities,
                                                              Context context) {
        try {
            Optional<CommandResource> commandResource = CommandResource.createCommandResource(source, command,
                    capabilities, context);
            if (!commandResource.isPresent()) {
                context.getLogger().error("unable to obtain commandResource");
                return Optional.empty();
            }
            PlayerCommand playerCommand = new PlayerCommand(source);
            playerCommand.addResource(new SelectorResource(source, target));
            playerCommand.addResource(commandResource.get());
            return Optional.of(playerCommand);
        } catch (IllegalArgumentException e) {
            return Optional.empty();
        }
    }
public static Optional<PlayerCommand> createPlayerCommand(Identification source, Identification target,
                                                              String command, Capabilities capabilities,
                                                              Context context) {
        try {
            Optional<CommandResource> commandResource = CommandResource.createCommandResource(source, command,
                    capabilities, context);
            if (!commandResource.isPresent()) {
                context.getLogger().error("unable to obtain commandResource");
                return Optional.empty();
            }
            PlayerCommand playerCommand = new PlayerCommand(source);
            playerCommand.addResource(new SelectorResource(source, target));
            playerCommand.addResource(commandResource.get());
            return Optional.of(playerCommand);
        } catch (IllegalArgumentException e) {
            return Optional.empty();
        }
    }
Creates a new Event Object

@param source      the source of the Event, most likely a this reference.
@param target the target who should start playing
@param capabilities the capabilities of the player
@param command the command
@param context the context to use
@return the optional PlayerCommand
@throws IllegalArgumentException if one of the Arguments is null or empty