Search in sources :

Example 1 with InstantEffect

use of cn.nukkit.potion.InstantEffect in project Nukkit by Nukkit.

the class EffectCommand method execute.

@Override
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
    if (!this.testPermission(sender)) {
        return true;
    }
    if (args.length < 2) {
        sender.sendMessage(new TranslationContainer("commands.generic.usage", this.usageMessage));
        return true;
    }
    Player player = sender.getServer().getPlayer(args[0]);
    if (player == null) {
        sender.sendMessage(new TranslationContainer(TextFormat.RED + "%commands.generic.player.notFound"));
        return true;
    }
    if (args[1].equalsIgnoreCase("clear")) {
        for (Effect effect : player.getEffects().values()) {
            player.removeEffect(effect.getId());
        }
        sender.sendMessage(new TranslationContainer("commands.effect.success.removed.all", player.getDisplayName()));
        return true;
    }
    Effect effect;
    try {
        effect = Effect.getEffect(Integer.parseInt(args[1]));
    } catch (NumberFormatException | ServerException a) {
        try {
            effect = Effect.getEffectByName(args[1]);
        } catch (Exception e) {
            sender.sendMessage(new TranslationContainer("commands.effect.notFound", args[1]));
            return true;
        }
    }
    int duration = 300;
    int amplification = 0;
    if (args.length >= 3) {
        try {
            duration = Integer.valueOf(args[2]);
        } catch (NumberFormatException a) {
            sender.sendMessage(new TranslationContainer("commands.generic.usage", this.usageMessage));
            return true;
        }
        if (!(effect instanceof InstantEffect)) {
            duration *= 20;
        }
    } else if (effect instanceof InstantEffect) {
        duration = 1;
    }
    if (args.length >= 4) {
        try {
            amplification = Integer.valueOf(args[3]);
        } catch (NumberFormatException a) {
            sender.sendMessage(new TranslationContainer("commands.generic.usage", this.usageMessage));
            return true;
        }
    }
    if (args.length >= 5) {
        String v = args[4].toLowerCase();
        if (v.matches("(?i)|on|true|t|1")) {
            effect.setVisible(false);
        }
    }
    if (duration == 0) {
        if (!player.hasEffect(effect.getId())) {
            if (player.getEffects().size() == 0) {
                sender.sendMessage(new TranslationContainer("commands.effect.failure.notActive.all", player.getDisplayName()));
            } else {
                sender.sendMessage(new TranslationContainer("commands.effect.failure.notActive", new String[] { effect.getName(), player.getDisplayName() }));
            }
            return true;
        }
        player.removeEffect(effect.getId());
        sender.sendMessage(new TranslationContainer("commands.effect.success.removed", new String[] { effect.getName(), player.getDisplayName() }));
    } else {
        effect.setDuration(duration).setAmplifier(amplification);
        player.addEffect(effect);
        Command.broadcastCommandMessage(sender, new TranslationContainer("%commands.effect.success", new String[] { effect.getName(), String.valueOf(effect.getId()), String.valueOf(effect.getAmplifier()), player.getDisplayName(), String.valueOf(effect.getDuration() / 20) }));
    }
    return true;
}
Also used : InstantEffect(cn.nukkit.potion.InstantEffect) Player(cn.nukkit.Player) ServerException(cn.nukkit.utils.ServerException) TranslationContainer(cn.nukkit.lang.TranslationContainer) Effect(cn.nukkit.potion.Effect) InstantEffect(cn.nukkit.potion.InstantEffect) ServerException(cn.nukkit.utils.ServerException)

Aggregations

Player (cn.nukkit.Player)1 TranslationContainer (cn.nukkit.lang.TranslationContainer)1 Effect (cn.nukkit.potion.Effect)1 InstantEffect (cn.nukkit.potion.InstantEffect)1 ServerException (cn.nukkit.utils.ServerException)1