Random player selector

Discussion in 'Plugin Development' started by Zombieghost_391, Aug 14, 2014.

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

    Zombieghost_391

    Hey guys I'm trying to select one random gunner and one random murder but I keeps select the same player and the gunner and the murder cant be the sane player so maybe some one can help here is my API I made with the random action in it.
    Code:java
    1. package co.ObliviousGaming.Murder.listeners.spectator;
    2.  
    3. import co.ObliviousGaming.Murder.GameAPI;
    4. import co.ObliviousGaming.Murder.gamestate.GameState;
    5. import co.ObliviousGaming.Murder.handlers.Countdowns;
    6. import co.ObliviousGaming.Murder.handlers.Team;
    7. import co.ObliviousGaming.Murder.handlers.TeamType;
    8. import co.ObliviousGaming.Murder.utils.ChatUtilies;
    9. import co.ObliviousGaming.Murder.utils.HashMaps.Credits;
    10. import co.ObliviousGaming.Murder.utils.HashMaps.Deaths;
    11. import co.ObliviousGaming.Murder.utils.HashMaps.Kills;
    12. import org.bukkit.Bukkit;
    13. import org.bukkit.Effect;
    14. import org.bukkit.GameMode;
    15. import org.bukkit.Material;
    16. import org.bukkit.entity.Player;
    17. import org.bukkit.event.EventHandler;
    18. import org.bukkit.event.Listener;
    19. import org.bukkit.event.entity.PlayerDeathEvent;
    20. import org.kitteh.tag.TagAPI;
    21.  
    22. import java.util.Arrays;
    23.  
    24. import static org.bukkit.ChatColor.*;
    25.  
    26. /**
    27. * Created by Trea on 8/6/2014. This plugins Are Not To Be Copied! Thx~
    28. */
    29. public class DeathEvent implements Listener {
    30. @EventHandler
    31. public void on(PlayerDeathEvent e) {
    32. Player p = e.getEntity();
    33. p.playEffect(p.getLocation(), Effect.SMOKE, 10);
    34. Team.setTeam(p, TeamType.SPECTATOR);
    35. p.setDisplayName(DARK_GRAY + p.getName());
    36. p.setPlayerListName(p.getDisplayName());
    37. TagAPI.refreshPlayer(p);
    38.  
    39. if (!Team.Gunner.contains(p.getName())) {
    40. p.getInventory().clear();
    41. }
    42.  
    43. for (Player pl : Bukkit.getOnlinePlayers()) {
    44. pl.hidePlayer(p);
    45. p.remove();
    46. p.setGameMode(GameMode.CREATIVE);
    47. p.getInventory().addItem(GameAPI.make(Material.DIAMOND_SPADE, 1, 0, "" + GRAY + BOLD + "Player Selector", Arrays.asList("" + GRAY + ITALIC + "Use this to teleport to players", "")));
    48. }
    49.  
    50. if (Team.Gunner.contains(p.getName()) || Team.Iniccent.contains(p.getName())) {
    51. if (Team.Gunner.isEmpty() && Team.Iniccent.isEmpty()) {
    52. Countdowns.stopInGameCountdown();
    53. GameState.setState(GameState.POSTGAME);
    54. Countdowns.PostGameCountdown();
    55. e.setDeathMessage(" ");
    56. Bukkit.broadcastMessage(ChatUtilies.MurderWin());
    57. }
    58. }
    59.  
    60. if (Team.Murder.contains(p.getName())) {
    61. Countdowns.stopInGameCountdown();
    62. GameState.setState(GameState.POSTGAME);
    63. Countdowns.PostGameCountdown();
    64. e.setDeathMessage(" ");
    65. Bukkit.broadcastMessage(ChatUtilies.MurderDeath());
    66. }
    67. if (e.getEntity() instanceof Player) {
    68. Player m = (Player) e.getEntity();
    69. if (m.getKiller() instanceof Player) {
    70. Player k = m.getKiller();
    71. Credits.giveSilver(k, 10);
    72. Credits.takeSilver(m, 4);
    73. Deaths.addDeath(m);
    74. Kills.addKills(p);
    75. }
    76. }
    77. }
    78. }
    79.  


    Help would be nice thanks
     
  2. Offline

    FabeGabeMC

  3. Offline

    zDylann

    I'm really not sure where your random 'action' is in what you have provided. Anyway, if you have a list and you want get a random object from a list:

    Code:java
    1. List<String> people = new ArrayList<String>(); //List of objects
    2. Random random = new Random();
    3. int ran = random.nextInt(people.size()); //Generate random number based on the size of the list.
    4. String person = people.get(ran); //Random person
     
  4. Offline

    Zombieghost_391

    Im sorry here is the real code selected the wrong one '_'
    Code:java
    1. package co.ObliviousGaming.Murder;
    2.  
    3. import co.ObliviousGaming.Murder.gamestate.GameState;
    4. import co.ObliviousGaming.Murder.handlers.Team;
    5. import co.ObliviousGaming.Murder.handlers.TeamType;
    6. import co.ObliviousGaming.Murder.utils.ChatUtilies;
    7. import co.ObliviousGaming.Murder.utils.SettingsManager;
    8. import org.bukkit.*;
    9. import org.bukkit.entity.EntityType;
    10. import org.bukkit.entity.Firework;
    11. import org.bukkit.entity.Player;
    12. import org.bukkit.inventory.ItemStack;
    13. import org.bukkit.inventory.meta.FireworkMeta;
    14. import org.bukkit.inventory.meta.ItemMeta;
    15.  
    16. import java.util.Arrays;
    17. import java.util.List;
    18. import java.util.Random;
    19.  
    20. import static org.bukkit.ChatColor.*;
    21.  
    22. /**
    23. * Created by Trea on 8/4/2014. This plugins Are Not To Be Copied! Thx~
    24. */
    25. public class GameAPI {
    26.  
    27. static SettingsManager settings = SettingsManager.getInstance();
    28. static Random r = new Random();
    29. static int randomPlayerNumber;
    30.  
    31. private static void pickMurder(Player player) {
    32. Team.removeFromTeam(TeamType.INICCENT,player );
    33. Team.setTeam(player, TeamType.MURDER);
    34. player.getInventory().addItem(make(Material.DIAMOND_SWORD, 1, 0, "" + RED + BOLD + "Murder's Knife", Arrays.asList("" + GRAY + ITALIC + "Use this knife to kill people.", "")));
    35. player.sendMessage(ChatUtilies.youAre(player));
    36. }
    37.  
    38. private static void pickGunner(Player player) {
    39. Team.removeFromTeam(TeamType.INICCENT,player );
    40. Team.setTeam(player, TeamType.GUNNER);
    41. player.getInventory().addItem(make(Material.DIAMOND_SPADE, 1, 0, "" + GRAY + BOLD + "Gunner's Gun", Arrays.asList("" + GRAY + ITALIC + "Use this gun to kill thee murder.", "")));
    42. player.sendMessage(ChatUtilies.youAre(player));
    43. }
    44.  
    45. public static void tpMap(Player p, String map) {
    46. World w = Bukkit.getServer().getWorld(settings.getData().getString("map." + map + "world"));
    47. double x = settings.getData().getDouble("map." + map + "x");
    48. double y = settings.getData().getDouble("map." + map + "y");
    49. double z = settings.getData().getDouble("map." + map + "z");
    50. p.teleport(new Location(w, x, y, z).add(0, 1, 0));
    51. }
    52.  
    53. public static void tpAllMap() {
    54. for (Player p : Bukkit.getOnlinePlayers()) {
    55. World w = Bukkit.getServer().getWorld(settings.getData().getString("map." + "world"));
    56. double x = settings.getData().getDouble("map." + "x");
    57. double y = settings.getData().getDouble("map." + "y");
    58. double z = settings.getData().getDouble("map." + "z");
    59. p.teleport(new Location(w, x, y, z).add(0, 1, 0));
    60. Bukkit.getWorld(settings.getData().getString("map.world")).setTime(6000);
    61. }
    62. }
    63.  
    64. public static void selectMurder() {
    65. Random r = new Random();
    66. int randomPlayerNumber = r.nextInt(Bukkit.getServer().getOnlinePlayers().length);
    67. Player target = Bukkit.getServer().getOnlinePlayers()[randomPlayerNumber];
    68.  
    69. if(!Team.Gunner.contains(target)) {
    70. pickMurder(target);
    71. }
    72.  
    73. }
    74.  
    75. public static void selectGunner() {
    76. Random r = new Random();
    77. int randomPlayerNumber = r.nextInt(Bukkit.getServer().getOnlinePlayers().length);
    78. Player target = Bukkit.getServer().getOnlinePlayers()[randomPlayerNumber];
    79. if(!Team.Murder.contains(target)) {
    80. pickGunner(target);
    81. }
    82.  
    83. }
    84.  
    85. public static ItemStack make(Material material, int amount,
    86. int shrt, String displayName, List<String> lore) {
    87. ItemStack item = new ItemStack(material, amount, (short) shrt);
    88. ItemMeta meta = item.getItemMeta();
    89. meta.setDisplayName(displayName);
    90. meta.setLore(lore);
    91. item.setItemMeta(meta);
    92. return item;
    93. }
    94.  
    95. static public void onRestart() {
    96. for (Player p : Bukkit.getOnlinePlayers()) {
    97. GameState.setState(GameState.WAITING);
    98. Team.Gunner.clear();
    99. Team.Murder.clear();
    100. Team.Iniccent.clear();
    101. Team.Spectator.clear();
    102. p.kickPlayer("§4§l-= §c§l§nRESTARTING!§r §4§l=-\n" +
    103. "§7§oGame should be up now! Get back in you tester you.");
    104. Bukkit.getWorld("world").setTime(12000);
    105. Bukkit.getWorld("world").getEntities().clear();
    106. }
    107. }
    108.  
    109. static public void firework() {
    110. for (Player player : Bukkit.getOnlinePlayers()) {
    111. Firework fw = (Firework) player.getWorld().spawnEntity(player.getLocation(), EntityType.FIREWORK);
    112. FireworkMeta fwmeta = fw.getFireworkMeta();
    113. FireworkEffect.Builder builder = FireworkEffect.builder();
    114. builder.withTrail().withFlicker().withFade(Color.GREEN).withColor(Color.WHITE).withColor(Color.YELLOW)
    115. .withColor(Color.BLUE).withColor(Color.FUCHSIA).withColor(Color.PURPLE).withColor(Color.MAROON).withColor(Color.LIME)
    116. .withColor(Color.ORANGE).with(FireworkEffect.Type.BALL_LARGE);
    117. fwmeta.addEffect(builder.build());
    118. fwmeta.setPower(1);
    119. fw.setFireworkMeta(fwmeta);
    120. }
    121. }
    122.  
    123. public static void setList(Player p) {
    124. if (p.getName().equalsIgnoreCase("zombieghost_391")) {
    125. p.setPlayerListName(ChatColor.GREEN + "Zombieghost_39");
    126. }
    127. if (!p.getName().equalsIgnoreCase("zombieghost_391")) {
    128. p.setPlayerListName(ChatColor.GREEN + p.getName());
    129. }
    130. }
    131. }
    132.  
     
  5. Offline

    fireblast709

    FabeGabeMC you do know that in 1.7.10 getOnlinePlayers() returns a Collection<? extends Player>
     
  6. Offline

    Zombieghost_391

    I have been using it to go through the online players and select a random one for what ever class to give them
     
  7. Offline

    FabeGabeMC

Thread Status:
Not open for further replies.

Share This Page