ServerPlugin Teamverteilung

Dieses Thema im Forum "Programmierung" wurde erstellt von Yellowphoenix18, 22. März 2015.

  1. Yellowphoenix18
    Online

    Yellowphoenix18

    Registriert seit:
    26. März 2013
    Beiträge:
    267
    Ort:
    Niedersachsen
    Minecraft:
    YellowPhoenix18
    Hey,ich habe für ein neues Plugin eine Teamverteilung geschrieben,doch leider erhalte ich eine NullPointerException beim Random, hier der Code:
    Code (Text):
    1.  
    2. package de.mcDungeon.Pirates.Teams;
    3.  
    4. import java.util.ArrayList;
    5. import java.util.List;
    6. import java.util.Random;
    7.  
    8. import org.bukkit.Bukkit;
    9. import org.bukkit.entity.Player;
    10.  
    11. import de.mcDungeon.Pirates.Main;
    12.  
    13. public class TeamClass {
    14.  
    15.    public static List<Player> pirates = new ArrayList<Player>();
    16.    public static List<Player> english = new ArrayList<Player>();
    17.  
    18.    public static void checkTeams() {
    19.    
    20.      for(Player all : Bukkit.getOnlinePlayers()) {
    21.        if(!pirates.contains(all) && !english.contains(all)) {
    22.          if(pirates.size() > english.size()) {
    23.            english.add(all);
    24.          } else if(pirates.size() < english.size()) {
    25.            pirates.add(all);
    26.          } else {
    27.            Random r = new Random();
    28.            int x = r.nextInt(2) + 1;
    29.            if(x == 1) {
    30.              pirates.add(all);
    31.            } else {
    32.              english.add(all);
    33.            }
    34.          }
    35.        }
    36.      }
    37.    
    38.      if(pirates.size() >= english.size() + 1) {
    39.        int x = pirates.size() - english.size();
    40.        while(x >= 0) {
    41.          x --;
    42.          Random r = new Random();
    43.          int z = r.nextInt(pirates.size());
    44.          Player p = pirates.get(z);
    45.          pirates.remove(z);
    46.          english.add(p);
    47.        }
    48.      
    49.      } else if(english.size() >= pirates.size() + 1) {
    50.        int x = english.size() - pirates.size();
    51.        while(x >= 0) {
    52.          x --;
    53.          Random r = new Random();
    54.          int z = r.nextInt(english.size());
    55.          Player p = english.get(z);
    56.          english.remove(z);
    57.          pirates.add(p);
    58.        }    
    59.      }
    60.    
    61.      for(Player all : Bukkit.getOnlinePlayers()) {
    62.        updateTablist(all);
    63.      }
    64.      System.out.println(Main.name + " Die Teams wurden verteilt!");
    65.    }
    66.  
    67.    public static int getLowerTeam() {
    68.      int piratesint = pirates.size();
    69.      int englishint = english.size();
    70.      if (piratesint >= englishint) {
    71.        return 0;
    72.      } else {
    73.        return 1;
    74.      }
    75.  
    76.    }
    77.  
    78.    public static void updateTablist(Player p) {
    79.      for(Player all : Bukkit.getOnlinePlayers()) {
    80.        if(english.contains(all)) {
    81.          p.setPlayerListName("§9" + p.getName());
    82.        } else {
    83.          p.setPlayerListName("§0" + p.getName());
    84.        }
    85.      }
    86.    
    87.    
    88.    
    89.    }
    90. }
    91.  
    92.  
    Fehlermeldung:

    Code (Text):
    1.  
    2. [12:15:28] [Server thread/WARN]: [TheRunners] Task #3 for TheRunners v1.0 generated an exception
    3. java.lang.IllegalArgumentException: n must be positive
    4.    at java.util.Random.nextInt(Random.java:300) ~[?:1.7.0_03]
    5.    at de.mcDungeon.Pirates.Teams.TeamClass.checkTeams(TeamClass.java:42) ~[?:?]
    6.    at de.mcDungeon.Pirates.Tasks$2.run(Tasks.java:142) ~[?:?]
    7.    at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftTask.run(CraftTask.java:71) ~[spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
    8.    at org.bukkit.craftbukkit.v1_7_R4.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
    9.    at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:641) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
    10.    at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
    11.    at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
    12.    at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
    13.    at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [spigot.jar:git-Spigot-1.7.9-R0.2-207-g03373bb]
    14.  
    15.  
     
    #1
  2. [Dev] iTzSasukeHDxLP
    Offline

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
    Hey,
    kannst du das Ganze bitte vernünftig formatiert in Codetags packen und den Fehlermeldung auch ?
     
    #2
  3. Yellowphoenix18
    Online

    Yellowphoenix18

    Registriert seit:
    26. März 2013
    Beiträge:
    267
    Ort:
    Niedersachsen
    Minecraft:
    YellowPhoenix18
    Bitte :D
     
    #3
  4. Wo soll da jetzt die NPE sein? Les dir mal die Dokumentation (oder die Fehlermeldung) von nextInt() durch.
     
    #4