@Override
    public void execute() throws CommandException {
        if (args.size() <= 0) sendClickCommandUsage();
        
        ClickParam param = null;
        for (ClickParam p : ClickParam.values()){
            if (p.name().equalsIgnoreCase(args.get(0))){
                param = p;
                break;
            }
        }
        
        if (param == null) sendClickCommandUsage();
        
        ItemStack item = player.getItemInHand();
        if (param.isNeedsInHand()){
            if (!Material.FIREWORK.equals(item.getType())){
                throw new CommandException("&c花火を手に持っていません！");
            }
        }
        FireworkMeta meta = (FireworkMeta)item.getItemMeta();
        
        switch (param){
            case SET:
                FireworkMetaContainer.removeSetMap(player);
                FireworkMetaContainer.putSetMap(player, meta);
                Actions.message(sender, "&a手に持っている花火を選択しました！");
                break;
            case ADD:
                FireworkMetaContainer.putSetMap(player, meta);
                Actions.message(sender, "&a手に持っている花火を追加選択しました！");
                break;
            case CLEAR:
                FireworkMetaContainer.removeSetMap(player);
                Actions.message(sender, "&a選択済み花火リストをクリアしました！");
                break;
            default:
                throw new CommandException("&cNot defined "+ param.name() + ", Please contact plugin developer.");
        }
    }