@Override
  public boolean chargePlayer(ChargeType type, Player player) {
    if (type.hasNoCostPermission(player)) {
      player.sendMessage(
          DragonTravel.getInstance().getMessagesHandler().getMessage("Messages.Payment.Free"));
      return true;
    }

    int amount;
    switch (type) {
      case TRAVEL_TOSTATION:
        amount =
            DragonTravel.getInstance().getConfig().getInt("Payment.Resources.Prices.toStation");
        break;
      case TRAVEL_TORANDOM:
        amount = DragonTravel.getInstance().getConfig().getInt("Payment.Resources.Prices.toRandom");
        break;
      case TRAVEL_TOPLAYER:
        amount = DragonTravel.getInstance().getConfig().getInt("Payment.Resources.Prices.toPlayer");
        break;
      case TRAVEL_TOCOORDINATES:
        amount =
            DragonTravel.getInstance().getConfig().getInt("Payment.Resources.Prices.toCoordinates");
        break;
      case TRAVEL_TOHOME:
        amount = DragonTravel.getInstance().getConfig().getInt("Payment.Resources.Prices.toHome");
        break;
      case TRAVEL_TOFACTIONHOME:
        amount =
            DragonTravel.getInstance().getConfig().getInt("Payment.Resources.Prices.toFactionhome");
        break;
      case SETHOME:
        amount = DragonTravel.getInstance().getConfig().getInt("Payment.Resources.Prices.setHome");
        break;
      case FLIGHT:
        amount = DragonTravel.getInstance().getConfig().getInt("Payment.Resources.Prices.Flight");
        break;
      default:
        throw new UnsupportedOperationException(
            "ResourcesPaymentHandler doesn't know how to deal with a ChargeType of "
                + type.name()
                + ". Fix immediately!");
    }

    return removeItems(player, amount);
  }
  @Override
  public boolean chargePlayerExact(ChargeType type, Player player, double customCost) {
    if (type.hasNoCostPermission(player)) {
      player.sendMessage(
          DragonTravel.getInstance().getMessagesHandler().getMessage("Messages.Payment.Free"));
      return true;
    }

    return removeItems(player, (int) customCost);
  }