public boolean cast (Sorcerer sorcerer, Trigger trigger, Event event)
      {
        PlayerInteractEvent interactEvent = (PlayerInteractEvent) event;
        interactEvent.setCancelled(true);
        if (trigger.isBlockTriggered())
          {
            Location target =
                interactEvent.getClickedBlock().getLocation().add(0.5, 1, 0.5);
            target.setPitch(sorcerer.getPlayer().getLocation().getPitch());
            target.setYaw(sorcerer.getPlayer().getLocation().getYaw());
            int cost = getCost(sorcerer.getPlayer().getLocation(), target);
            if (cost > sorcerer.getMana())
              {
                sorcerer.getPlayer().sendMessage(
                    ChatColor.RED
                        + "You do not have enough mana to teleport there");
                return false;
              }
            target.getWorld().playEffect(sorcerer.getPlayer().getEyeLocation(),
                Effect.ENDER_SIGNAL, 0);
            if (cost >= 900)
              {
                Merlin.getInstance().shatterGlass(sorcerer, cost);
              }
            sorcerer.getPlayer().teleport(target);
            sorcerer.takeMana(cost);
            addExp(sorcerer, cost / 10);
            sorcerer.getMagicks().addExp(Type.TELEPORTATION, cost / 10);
            target.getWorld().playEffect(sorcerer.getPlayer().getEyeLocation(),
                Effect.ENDER_SIGNAL, 0);
            return true;
          }
        else
          {
            Location target =
                sorcerer.getPlayer().getTargetBlock(transparentBlocks, 150)
                    .getLocation().add(0.5, 1, 0.5);
            target.setPitch(sorcerer.getPlayer().getLocation().getPitch());
            target.setYaw(sorcerer.getPlayer().getLocation().getYaw());
            int cost = getCost(sorcerer.getPlayer().getLocation(), target);
            if (cost > sorcerer.getMana())
              {
                sorcerer.getPlayer().sendMessage(
                    ChatColor.RED
                        + "You do not have enough mana to teleport there");
                return false;
              }
            target.getWorld().playEffect(sorcerer.getPlayer().getEyeLocation(),
                Effect.ENDER_SIGNAL, 0);
            if (cost >= 900)
              {
                Merlin.getInstance().shatterGlass(sorcerer, cost);
              }
            sorcerer.getPlayer().teleport(target);
            sorcerer.takeMana(cost);
            addExp(sorcerer, cost / 10);
            target.getWorld().playEffect(sorcerer.getPlayer().getEyeLocation(),
                Effect.ENDER_SIGNAL, 0);
            return true;
          }
      }