ServerPlugin Random Creeper Spawns

Dieses Thema im Forum "Programmierung" wurde erstellt von MarkusN99, 17. Januar 2015.

  1. MarkusN99
    Offline

    MarkusN99

    Registriert seit:
    23. Januar 2012
    Beiträge:
    30
    Minecraft:
    MarkusN99
    Hallo

    Ich möchte ein Spiel Programmieren wo Creeper an Verschiedene Locations spawnen.
    Ich habe bis jetzt noch keine Lösung gefunden deswegen frage ich euch.

    Ich habe eine Beliebige Anazhl von Spawn-Locations in der config.yml.
    Es sollen immer nur max. 6 Creeper gleichzeitig Spawnen.
    Die Creeper sollen immer auf unterschiedlichen Spawn-Locations spawnen.

    Wie programmiere ich das?
     
    #1
  2. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    #2
  3. MarkusN99
    Offline

    MarkusN99

    Registriert seit:
    23. Januar 2012
    Beiträge:
    30
    Minecraft:
    MarkusN99
    Könntest du mir sagen wie ich die List in eine Array speichere?

    In meiner config ist die Liste so aufgebaut:
    Code (Text):
    1.  
    2.       '1':
    3.         world: CreeperEscape
    4.         coords:
    5.           ==: Vector
    6.           x: 0.4563079559836304
    7.           y: 50.0
    8.           z: -18.55660850035573
    9.         yaw: 0.14929199
    10.         pitch: 90.0
    11.       '2':
    12.         world: CreeperEscape
    13.         coords:
    14.           ==: Vector
    15.           x: 0.4563079559836304
    16.           y: 50.0
    17.           z: -18.55660850035573
    18.         yaw: 0.14929199
    19.         pitch: 90.0
    20. .......
    21.  
    Wie bekomme ich die Locations daraus?
     
    #3
  4. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    #4
  5. MarkusN99
    Offline

    MarkusN99

    Registriert seit:
    23. Januar 2012
    Beiträge:
    30
    Minecraft:
    MarkusN99
    Irgendwie bin ich zu dumm dafür :(

    Ich habe in einem Scheduler folgendes:
    Code (Text):
    1.  
    2.            List<Location> locs = new ArrayList<Location>();
    3.             int count = CreeperEscape.this.cfg.getList("CreeperEscape." + CreeperEscape.this.Mapname + ".MobSpawn").size();
    4.             for(int start = 0; start < count; start++) {
    5.                 Location location = CreeperEscape.this.getLocation(CreeperEscape.this.Mapname, start);
    6.                 locs.add(location);
    7.             }
    8.            
    9.             Random randomizer = new Random();
    10.             Location locs_new = locs.get(randomizer.nextInt(locs.size()));
    11.            
    12.             Creeper creeper = (Creeper) locs_new.getWorld().spawnEntity(locs_new, EntityType.ZOMBIE);
    13.  
    Die funktionen sind:
    Code (Text):
    1.  
    2.   public void saveLoc(Location loc, String Map, int ID) {
    3.        String location = loc.getWorld().getName() + "," + loc.getX() + "," + loc.getY() + "," + loc.getZ() + "," + loc.getYaw() + "," + loc.getPitch();
    4.        CreeperEscape.this.getConfig().set("CreeperEscape." + Map + ".MobSpawn." + ID + ".location", location);
    5.        CreeperEscape.this.saveConfig();
    6. }
    7.   public Location getLocation(String Map, int ID) {
    8.       String[] loc = CreeperEscape.this.getConfig().getString("CreeperEscape." + Map + ".MobSpawn." + ID + ".location").split("\\,");
    9.       World w = Bukkit.getWorld(loc[0]);
    10.       Double x = Double.parseDouble(loc[1]);
    11.       Double y = Double.parseDouble(loc[2]);
    12.       Double z = Double.parseDouble(loc[3]);
    13.       float yaw = Float.parseFloat(loc[4]);
    14.       float pitch = Float.parseFloat(loc[5]);
    15.       Location location = new Location(w, x, y, z, yaw, pitch);
    16.       return location;
    17.   }
    18.  
    In der Log steht folgender Error:
    Code (Text):
    1.  
    2. [17:29:29] [Server thread/WARN]: [CreeperEscape] Task #6 for CreeperEscape v1.0 generated an exception
    3. java.lang.NullPointerException
    4.     at Main.CreeperEscape$1.run(CreeperEscape.java:182) ~[?:?]
    5.     at org.bukkit.craftbukkit.v1_7_R3.scheduler.CraftTask.run(CraftTask.java:53) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    6.     at org.bukkit.craftbukkit.v1_7_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:345) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    7.     at net.minecraft.server.v1_7_R3.MinecraftServer.v(MinecraftServer.java:600) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    8.     at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:260) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    9.     at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    10.     at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    11.     at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    12.  
    Die Zeile 182 beinhaltet folgendes:
    Code (Text):
    1.  
    2. int count = CreeperEscape.this.cfg.getList("CreeperEscape." + CreeperEscape.this.Mapname + ".MobSpawn").size();
    3.  
    Was ist falsch daran :/
     
    #5
  6. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Du fragst nach eine Liste, obwohl es keine ist. Probier mal:
    List<Location> locs = new ArrayList<Location>();
    Code (Text):
    1. for (String locId : cfg.getConfigurationSection("CreeperEscape." + Map + ".MobSpawn").getKeys(false)) {
    2.     String path = "CreeperEscape." + Map + ".MobSpawn." + locId;
    3.     Location loc = ... // Erstellen der Location für "path";
    4.     locs.add(loc);
    5. }
     
    #6
  7. MarkusN99
    Offline

    MarkusN99

    Registriert seit:
    23. Januar 2012
    Beiträge:
    30
    Minecraft:
    MarkusN99
    Danke ich habe es hinbekommen :)

    Viel Dank :D
     
    #7