/* * Copyright (C) 2013-2016 Gonçalo Baltazar <me@goncalomb.com> * * This file is part of NBTEditor. * * NBTEditor is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NBTEditor is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NBTEditor. If not, see <http://www.gnu.org/licenses/>. */ package com.goncalomb.bukkit.nbteditor.commands; import java.util.List; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.potion.PotionData; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionType; import com.goncalomb.bukkit.mylib.command.MyCommand; import com.goncalomb.bukkit.mylib.command.MyCommandException; import com.goncalomb.bukkit.mylib.namemaps.PotionEffectsMap; import com.goncalomb.bukkit.mylib.utils.Utils; public class CommandNBTPotion extends MyCommand { public CommandNBTPotion() { super("nbtpotion", "nbtp"); } @Command(args = "", type = CommandType.PLAYER_ONLY, maxargs = 3, usage = "<effect> [level] [duration]") public boolean potionCommand(CommandSender sender, String[] args) throws MyCommandException { if (args.length > 0) { HandItemWrapper.Potion item = new HandItemWrapper.Potion((Player) sender); PotionEffectType effect = PotionEffectsMap.getByName(args[0]); if (effect == null) { sender.sendMessage("§cInvalid potion effect!"); } else { int level = 1; if (args.length >= 2) { level = CommandUtils.parseInt(args[1], Short.MAX_VALUE, 0); } int duration = (effect == PotionEffectType.HARM || effect == PotionEffectType.HEAL ? 0 : 600); if (args.length == 3) { duration = CommandUtils.parseTickDuration(args[2]); } item.meta.setBasePotionData(new PotionData(PotionType.UNCRAFTABLE)); if(level == 0) { item.meta.removeCustomEffect(effect); sender.sendMessage("§aPotion effect removed."); } else { item.meta.addCustomEffect(new PotionEffect(effect, duration, level - 1), true); sender.sendMessage("§aPotion effect added."); } item.save(); return true; } } sender.sendMessage("§7Effects: " + PotionEffectsMap.getNamesAsString()); sender.sendMessage("§eUse level = 0 to remove potion effects."); return false; } @TabComplete(args = "") public List<String> tab(CommandSender sender, String[] args) { return (args.length == 1 ? Utils.getElementsWithPrefix(PotionEffectsMap.getNames(), args[0]) : null); } }