Package com.sijobe.spc.command

Source Code of com.sijobe.spc.command.Effect

package com.sijobe.spc.command;

import com.sijobe.spc.util.FontColour;
import com.sijobe.spc.validation.Parameter;
import com.sijobe.spc.validation.ParameterString;
import com.sijobe.spc.validation.Parameters;
import com.sijobe.spc.wrapper.CommandException;
import com.sijobe.spc.wrapper.CommandSender;
import com.sijobe.spc.wrapper.Player;
import com.sijobe.spc.wrapper.Potion;

import java.util.List;
import java.util.Map;

/**
* Adds effects to the player
*
* @author simo_415
* @version 1.0
*/
@Command (
         name = "effect",
         description = "Configures potion effects on the player",
         videoURL = "http://www.youtube.com/watch?v=mstqLPVBlwE",
         version = "1.4.6"
)
public class Effect extends StandardCommand {

   private static final Parameters PARAMETERS = new Parameters (
            new Parameter[] {
                     new ParameterString("[list|remove <all|TYPE>|add <all|TYPE> [DURATION] [STRENGTH]]", false,
                              new String[] {"list", "add", "remove"}),
                              new ParameterString("", true, true)
            }
   );

   @Override
   public void execute(CommandSender sender, List<?> params) throws CommandException {
      // Lists the potion effects
      if (((String)params.get(0)).equalsIgnoreCase("list")) {
         String potions = "";
         Map<String, Integer> pots = Potion.getPotions();
         for (String name : pots.keySet()) {
            potions += name + " (" + FontColour.AQUA + pots.get(name) + FontColour.WHITE + "), ";
         }
         potions = potions.substring(0, potions.length() - 2);
         sender.sendMessageToPlayer("Potion effects [name (" + FontColour.AQUA + "ID" + FontColour.WHITE + ")]: ");
         sender.sendMessageToPlayer(potions);
      }
      if (params.size() < 2) {
         throw new CommandException("Not enough parameters.");
      }
      // Gets the specified potion
      String args[] = ((String)params.get(1)).split(" ");
      Integer id = null;
      try {
         id = Integer.parseInt(args[0]);
      } catch (NumberFormatException e) {
         id = Potion.getPotions().get(args[0].toLowerCase());
      }
      if (id == null && !(args[0].equalsIgnoreCase("all"))) {
         throw new CommandException("Could not find specified effect.");
      }
      if (id != null && id < 1) {
         throw new CommandException("Invalid effect specified.");
      }
      Player player = super.getSenderAsPlayer(sender);
      // Removes the specified effect
      if (((String)params.get(0)).equalsIgnoreCase("remove")) {
         if (id == null) {
            player.removeAllPotionEffects();
         } else {
            player.removePotionEffect(id);
         }
         // Adds the specified effect
      } else if (((String)params.get(0)).equalsIgnoreCase("add")) {
         int duration = 1;
         int strength = 1;
         if (args.length > 1) {
            try {
               duration = Integer.parseInt(args[1]);
            } catch (NumberFormatException e) {
               throw new CommandException("Could not parse duration argument.");
            }
         }
         if (args.length > 2) {
            try {
               strength = Integer.parseInt(args[2]);
            } catch (NumberFormatException e) {
               throw new CommandException("Could not parse strength argument.");
            }
         }
         if (id == null) {
            for (Integer i : Potion.getPotions().values()) {
               player.addPotionEffect(i, duration * 20, strength);
            }
         } else {
            player.addPotionEffect(id, duration * 20, strength);
         }
      } else {
         throw new CommandException("Invalid argument specified.");
      }
   }

   @Override
   public Parameters getParameters() {
      return PARAMETERS;
   }
}
TOP

Related Classes of com.sijobe.spc.command.Effect

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.