public static void setSpawn(PerkWorldSpawn spawn) {

    String query =
        "INSERT INTO `perks_spawn` ("
            + "`world`, `x`, `y`, `z`, `yaw`, `pitch`) VALUES ("
            + "'"
            + spawn.getSpawn().getWorld().getName()
            + "',"
            + "'"
            + spawn.getSpawn().getX()
            + "',"
            + "'"
            + spawn.getSpawn().getY()
            + "',"
            + "'"
            + spawn.getSpawn().getZ()
            + "',"
            + "'"
            + spawn.getSpawn().getYaw()
            + "',"
            + "'"
            + spawn.getSpawn().getPitch()
            + "'"
            + ");";

    for (int i = 0; i < spawns.size(); ++i) {
      if (spawns.get(i).getWorld().getName().equalsIgnoreCase(spawn.getWorld().getName())) {
        query =
            "UPDATE `perks_spawn` SET "
                + "x='"
                + spawn.getSpawn().getX()
                + "', "
                + "y='"
                + spawn.getSpawn().getY()
                + "', "
                + "z='"
                + spawn.getSpawn().getZ()
                + "', "
                + "yaw='"
                + spawn.getSpawn().getYaw()
                + "', "
                + "pitch='"
                + spawn.getSpawn().getPitch()
                + "' "
                + "WHERE world='"
                + spawn.getWorld().getName()
                + "'"
                + ";";
        spawns.remove(i);
        break;
      }
    }

    m_perksDB.query(query, true);
    spawns.add(spawn);
    PerkUtils.DebugConsole("Adding spawn for " + spawn.getWorld().getName());
  }
  public static boolean onCommand(
      PerkPlayer player, Command cmd, String commandLabel, PerkArgSet args) {

    if (cmd.getName().equalsIgnoreCase("tpr")
        || cmd.getName().equalsIgnoreCase("tphr")
        || cmd.getName().equalsIgnoreCase("tpd")
        || cmd.getName().equalsIgnoreCase("tpa")) {
      PerkPlayer toPlayer = null;

      if (args.size() == 1) {
        String playerName = args.getString(0);
        toPlayer = PerkUtils.getPlayer(PerkUtils.server().getPlayer(playerName));

        if (toPlayer == null || toPlayer.isVanished()) {
          PerkUtils.OutputToPlayer(player, playerName + " isn't online.");
          return true;
        }
      }

      if (cmd.getName().equalsIgnoreCase("tpr")) {

        if (args.size() != 1) {
          PerkUtils.OutputToPlayer(player, cmd.getUsage());
          return true;
        }

        if (!player.hasPermission("perks.teleport.tpr", true)) {
          return true;
        }

        toPlayer.sendTpRequest(player);

        return true;
      }

      if (cmd.getName().equalsIgnoreCase("tphr")) {

        if (args.size() != 1) {
          PerkUtils.OutputToPlayer(player, cmd.getUsage());
          return true;
        }

        if (!player.hasPermission("perks.teleport.tphr", true)) {
          return true;
        }

        toPlayer.sendTpHereRequest(player);

        return true;
      }

      // accepting and declining shouldn't have a permission as everyone needs to do it

      if (cmd.getName().equalsIgnoreCase("tpa")) {

        player.acceptTpRequest(toPlayer);

        return true;
      }

      if (cmd.getName().equalsIgnoreCase("tpd")) {

        player.declineTpRequest(toPlayer);

        return true;
      }
    }

    if (cmd.getName().equalsIgnoreCase("tp")) {

      if (!player.hasPermission("perks.teleport.tp", true)) return true;

      if (args.size() != 1) {
        PerkUtils.OutputToPlayer(player, cmd.getUsage());
        return true;
      }

      Location loc = null;

      // Handle coordinates
      if (args.getString(0).matches("^[\\-0-9\\.]+,[\\-0-9\\.]+,[\\-0-9\\.]+(?:.+)?$")) {

        String[] arg = args.getString(0).split(":");
        String[] parts = args.getString(0).split(",");
        double x = 0, y = 0, z = 0;

        try {
          x = Double.parseDouble(parts[0]);
          y = Double.parseDouble(parts[1]);
          z = Double.parseDouble(parts[2]);
        } catch (NumberFormatException e) {
          PerkUtils.OutputToPlayer(player, "");
        }

        if (arg.length > 1) {
          loc = new Location(PerkUtils.server().getWorld(arg[1]), x, y, z);
        } else {
          loc = new Location(player.getPlayer().getWorld(), x, y, z);
        }

        player.teleport(loc);

        PerkUtils.OutputToPlayer(player, "You have been teleported");

        return true;
      }

      PerkPlayer target = PerkUtils.getPlayer(args.getString(0));
      if (target == null) {
        PerkUtils.OutputToPlayer(player, "That player is not online");
        return true;
      }

      loc = target.getPlayer().getLocation();

      player.teleport(loc);

      PerkUtils.OutputToPlayer(player, "You have been teleported");

      return true;
    }

    if (cmd.getName().equalsIgnoreCase("tphere")
        || cmd.getName().equalsIgnoreCase("s")
        || cmd.getName().equalsIgnoreCase("bring")) {

      if (!player.hasPermission("perks.teleport.tphere", true)) return true;

      if (args.size() != 1) {
        PerkUtils.OutputToPlayer(player, cmd.getUsage());
        return true;
      }

      PerkPlayer target = PerkUtils.getPlayer(args.getString(0));

      if (target == null) {
        PerkUtils.OutputToPlayer(player, "That player is not online");
        return true;
      }

      player.teleportHere(target);

      PerkUtils.OutputToPlayer(
          player, target.getPlayer().getName() + " has been teleported to you.");

      return true;
    }

    if (cmd.getName().equalsIgnoreCase("put")) {

      if (!player.hasPermission("perks.teleport.put", true)) return true;

      if (args.size() != 1) {
        PerkUtils.OutputToPlayer(player, cmd.getUsage());
        return true;
      }

      PerkPlayer target = PerkUtils.getPlayer(args.getString(0));

      if (target == null) {
        PerkUtils.OutputToPlayer(player, "That player is not online");
        return true;
      }

      target.getPlayer().teleport(player.getPlayer().getTargetBlock(null, 300).getLocation());
      return true;
    }

    return false;
  }
Beispiel #3
0
  public static boolean onCommand(
      PerkPlayer player, Command cmd, String commandLabel, PerkArgSet args) {

    if (commandLabel.equalsIgnoreCase("slap")) {

      if (!player.hasPermission("perks.fun.slap", true)) return true;

      PerkPlayer target;
      if (args.size() == 0) {
        target = player;
      } else {
        target = PerkUtils.getPlayer(args.getString(0));
        if (target == null) {
          PerkUtils.OutputToPlayer(player, args.getString(0) + " is not online");
          return true;
        }
      }

      boolean silent = false;
      if (args.hasFlag('s')) {
        silent = true;
      }

      double power = 1.0;
      String powerString = "";
      if (args.hasFlag('v')) {
        power = 5.0;
        powerString = " very hard";
      } else if (args.hasFlag('h')) {
        power = 2.5;
        powerString = " hard";
      }

      target
          .getPlayer()
          .setVelocity(
              new Vector(
                  (random.nextDouble() + 0.01) * power - (power * 0.5),
                  (random.nextDouble() + 0.01) * power,
                  (random.nextDouble() + 0.01) * power - (power * 0.5)));

      if (!silent) {
        PerkUtils.OutputToAllExcluding(
            player.getPlayer().getName()
                + " has slapped "
                + target.getPlayer().getName()
                + powerString,
            player.getPlayer());
      }

      if (target != player) {
        PerkUtils.OutputToPlayer(
            target, "You have been slapped" + powerString + " by " + player.getPlayer().getName());
      }

      PerkUtils.OutputToPlayer(
          player,
          "You have slapped "
              + (target != player ? target.getPlayer().getName() : "Yourself")
              + powerString);
      return true;
    }

    if (commandLabel.equalsIgnoreCase("rocket")) {

      if (!player.hasPermission("perks.fun.rocket", true)) return true;

      PerkPlayer target;
      if (args.size() == 0) {
        target = player;
      } else {
        target = PerkUtils.getPlayer(args.getString(0));
        if (target == null) {
          PerkUtils.OutputToPlayer(player, args.getString(0) + " is not online");
          return true;
        }
      }

      boolean silent = false;
      if (args.hasFlag('s')) {
        silent = true;
      }

      double power = 6.0;
      target.getPlayer().setVelocity(new Vector(0, power, 0));

      if (!silent) {
        PerkUtils.OutputToAllExcluding(
            player.getPlayer().getName() + " has rocketed " + target.getPlayer().getName(),
            player.getPlayer());
      }

      if (target != player) {
        PerkUtils.OutputToPlayer(
            target, "You have been rocketed by " + player.getPlayer().getName());
      }

      PerkUtils.OutputToPlayer(
          player,
          "You have rocketed " + (target != player ? target.getPlayer().getName() : "Yourself"));
      return true;
    }

    return false;
  }
  public static void loadDatabases() {

    // create an the database
    m_perksDB =
        bDatabaseManager.createDatabase(
            PerkConfig.DATABASE.name, PerkUtils.plugin, DatabaseType.SQL);

    if (!m_perksDB.login(
        PerkConfig.DATABASE.ip,
        PerkConfig.DATABASE.user,
        PerkConfig.DATABASE.password,
        PerkConfig.DATABASE.port)) return;

    // see if a table called properties exist
    if (!m_perksDB.tableExists("perks_homes")) {

      // the table doesn't exist, so make one.

      PerkUtils.DebugConsole("Could not find perk homes table, now creating one.");
      String query =
          "CREATE TABLE perks_homes ("
              + "player VARCHAR(64),"
              + "world VARCHAR(128),"
              + "x INT,"
              + "y INT,"
              + "z INT,"
              + "yaw INT,"
              + "pitch INT"
              + ");";

      // to create a table we pass an SQL query.
      m_perksDB.query(query, true);
    }

    // load all properties

    // select every property from the table
    String query = "SELECT * FROM perks_homes";
    ResultSet result = m_perksDB.queryResult(query);

    if (result != null) {
      try {
        // while we have another result, read in the data
        while (result.next()) {
          String worldName = result.getString("world");
          String playerName = result.getString("player");

          int x = result.getInt("x");
          int y = result.getInt("y");
          int z = result.getInt("z");
          int pitch = result.getInt("pitch");
          int yaw = result.getInt("yaw");

          World world = PerkUtils.plugin.getServer().getWorld(worldName);
          Location loc = new Location(world, x, y, z, yaw, pitch);

          tpLocation newHome = new tpLocation();
          newHome.playername = playerName;
          newHome.loc = loc;
          homes.add(newHome);
        }
      } catch (SQLException e) {
        e.printStackTrace();
        return;
      }

      m_perksDB.freeResult(result);
    }

    // see if a table called properties exist
    if (!m_perksDB.tableExists("perks_build")) {

      // the table doesn't exist, so make one.

      PerkUtils.DebugConsole("Could not find perk homes builds, now creating one.");
      query =
          "CREATE TABLE perks_build ("
              + "player VARCHAR(64),"
              + "world VARCHAR(128),"
              + "x INT,"
              + "y INT,"
              + "z INT,"
              + "yaw INT,"
              + "pitch INT"
              + ");";

      // to create a table we pass an SQL query.
      m_perksDB.query(query, true);
    }

    // select every property from the table
    query = "SELECT * FROM perks_build";
    result = m_perksDB.queryResult(query);

    if (result != null) {
      try {
        // while we have another result, read in the data
        while (result.next()) {
          String worldName = result.getString("world");
          String playerName = result.getString("player");

          int x = result.getInt("x");
          int y = result.getInt("y");
          int z = result.getInt("z");
          int pitch = result.getInt("pitch");
          int yaw = result.getInt("yaw");

          World world = PerkUtils.plugin.getServer().getWorld(worldName);
          Location loc = new Location(world, x, y, z, yaw, pitch);

          tpLocation newHome = new tpLocation();
          newHome.playername = playerName;
          newHome.loc = loc;
          builds.add(newHome);
        }
      } catch (SQLException e) {
        e.printStackTrace();
        return;
      }

      m_perksDB.freeResult(result);
    }

    // see if a table called properties exist
    if (!m_perksDB.tableExists("perks_vanish")) {

      // the table doesn't exist, so make one.

      PerkUtils.DebugConsole("Could not find perk vanish databse, now creating one.");
      query = "CREATE TABLE perks_vanish (" + "player VARCHAR(64)" + ");";

      // to create a table we pass an SQL query.
      m_perksDB.query(query, true);
    }

    // see if a table called properties exist
    if (!m_perksDB.tableExists("perks_kit")) {

      // the table doesn't exist, so make one.

      PerkUtils.DebugConsole("Could not find perk kit databse, now creating one.");
      query =
          "CREATE TABLE perks_kit ("
              + "player VARCHAR(64),"
              + "kitname VARCHAR(64),"
              + "time LONG"
              + ");";

      // to create a table we pass an SQL query.
      m_perksDB.query(query, true);
    }

    if (!m_perksDB.tableExists("perks_flying")) {

      PerkUtils.DebugConsole("Could not find flying table, creating one now");

      query = "CREATE TABLE perks_flying (name VARCHAR(64));";

      m_perksDB.query(query, true);
    }

    if (!m_perksDB.tableExists("perks_spawn")) {

      PerkUtils.DebugConsole("Could not find spawn table, creating one now");

      query =
          "CREATE TABLE perks_spawn ("
              + "world VARCHAR(64),"
              + "x INT,"
              + "y INT,"
              + "z INT,"
              + "yaw FLOAT,"
              + "pitch FLOAT"
              + ");";
      m_perksDB.query(query, true);
    }

    query = "SELECT * FROM perks_spawn";
    result = m_perksDB.queryResult(query);

    if (result != null) {
      try {
        while (result.next()) {
          World world = PerkUtils.server().getWorld(result.getString("world"));
          Location loc =
              new Location(
                  world,
                  result.getInt("x"),
                  result.getInt("y"),
                  result.getInt("z"),
                  result.getFloat("yaw"),
                  result.getFloat("pitch"));
          PerkWorldSpawn spawn = new PerkWorldSpawn(world, loc);
          spawns.add(spawn);
        }
        PerkUtils.DebugConsole("Loaded " + spawns.size() + " spawns");
      } catch (SQLException e) {
        e.printStackTrace();
      }

      m_perksDB.freeResult(result);
    }

    UpgradeDatabases();
  }