Solved Help with MySQL ranking system

Discussion in 'Plugin Development' started by BaconStripzMan, Feb 6, 2015.

Thread Status:
Not open for further replies.
  1. Offline

    BaconStripzMan

    So I created a MySQL Ranking system for my server and it works fine but I cannot change Offline players ranks. I get no errors but it does not change their rank.
    Code:java
    1.  
    2. package me.PizzaNetwork.Hub;
    3.  
    4. import java.sql.PreparedStatement;
    5. import java.sql.ResultSet;
    6. import java.sql.Statement;
    7.  
    8. import org.bukkit.Bukkit;
    9. import org.bukkit.OfflinePlayer;
    10. import org.bukkit.command.Command;
    11. import org.bukkit.command.CommandExecutor;
    12. import org.bukkit.command.CommandSender;
    13. import org.bukkit.entity.Player;
    14.  
    15. public class RankCommand implements CommandExecutor {
    16.  
    17.  
    18. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    19. if(cmd.getName().equalsIgnoreCase("rank")){
    20. if(args.length == 2){
    21. try {
    22. OfflinePlayer p = Bukkit.getPlayer(args[0]);
    23. String rank = args[1];
    24. if(rank.equalsIgnoreCase("member") || rank.equalsIgnoreCase("iron") || rank.equalsIgnoreCase("gold") || rank.equalsIgnoreCase("diamond") || rank.equalsIgnoreCase("emerald")
    25. || rank.equalsIgnoreCase("mod") || rank.equalsIgnoreCase("srmod") || rank.equalsIgnoreCase("admin") || rank.equalsIgnoreCase("sradmin") || rank.equalsIgnoreCase("owner") || rank.equalsIgnoreCase("vip")){
    26. if(p.hasPlayedBefore()){
    27. ps = Main.c.prepareStatement("SELECT * FROM `players` WHERE uuid='" + p.getUniqueId().toString() + "';");
    28. rs = ps.executeQuery();
    29. st = Main.c.createStatement();
    30. st.executeUpdate("UPDATE `players` SET `rank`='"+ rank + "' WHERE uuid='" + p.getUniqueId().toString() + "';");
    31. if(rank.equalsIgnoreCase("member")){
    32. ((Player) p).setDisplayName("§9" + p.getName());
    33. } else if(rank.equalsIgnoreCase("iron")){
    34. ((Player) p).setDisplayName("§7" + p.getName());
    35. } else if(rank.equalsIgnoreCase("gold")){
    36. ((Player) p).setDisplayName("§6" + p.getName());
    37. } else if(rank.equalsIgnoreCase("diamond")){
    38. ((Player) p).setDisplayName("§b" + p.getName());
    39. } else if(rank.equalsIgnoreCase("emerald")){
    40. ((Player) p).setDisplayName("§a" + p.getName());
    41. } else if(rank.equalsIgnoreCase("mod")){
    42. ((Player) p).setDisplayName("§1" + p.getName());
    43. } else if(rank.equalsIgnoreCase("srmod")){
    44. ((Player) p).setDisplayName("§3" + p.getName());
    45. } else if(rank.equalsIgnoreCase("admin")){
    46. ((Player) p).setDisplayName("§c" + p.getName());
    47. } else if(rank.equalsIgnoreCase("sradmin")){
    48. ((Player) p).setDisplayName("§4" + p.getName());
    49. } else if(rank.equalsIgnoreCase("owner")){
    50. ((Player) p).setDisplayName("§e" + p.getName());
    51. } else if(rank.equalsIgnoreCase("vip")){
    52. ((Player) p).setDisplayName("§5" + p.getName());
    53. }
    54.  
    55. } else {
    56. sender.sendMessage("§cPlayer not found!");
    57. }
    58. }
    59. } catch (Exception e){
    60.  
    61. }
    62. } else {
    63. sender.sendMessage("§cRank does not exist!");
    64. }
    65. }
    66. return false;
    67. }
    68. }


    EDIT: And I tried change ((Player) blah to OfflinePlayer but it says the method setDisplayName is unknown for OfflinePlayer
     
  2. Offline

    Skionz

    @BaconStripzMan Think about it; if the player is offline, how are you supposed to change their display name? They can't chat so even if you could its pointless. You should just set their display name based on what is saved in the database when the player logs in.
     
  3. Offline

    BaconStripzMan

    How couldn't I think of that? Thanks Skionz once again :D
     
    Skionz likes this.
Thread Status:
Not open for further replies.

Share This Page