• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Random Creeper Spawns

MarkusN99

Redstoneengineer
Registriert
23 Januar 2012
Beiträge
30
Diamanten
0
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?
 

MiCrJonas

Threadripper
Registriert
29 Oktober 2012
Beiträge
1.064
Diamanten
0

MarkusN99

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

In meiner config ist die Liste so aufgebaut:
Code:
      '1':
        world: CreeperEscape
        coords:
          ==: Vector
          x: 0.4563079559836304
          y: 50.0
          z: -18.55660850035573
        yaw: 0.14929199
        pitch: 90.0
      '2':
        world: CreeperEscape
        coords:
          ==: Vector
          x: 0.4563079559836304
          y: 50.0
          z: -18.55660850035573
        yaw: 0.14929199
        pitch: 90.0
.......

Wie bekomme ich die Locations daraus?
 

MarkusN99

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

Ich habe in einem Scheduler folgendes:
Code:
           List<Location> locs = new ArrayList<Location>();
            int count = CreeperEscape.this.cfg.getList("CreeperEscape." + CreeperEscape.this.Mapname + ".MobSpawn").size();
            for(int start = 0; start < count; start++) {
                Location location = CreeperEscape.this.getLocation(CreeperEscape.this.Mapname, start);
                locs.add(location);
            }
           
            Random randomizer = new Random();
            Location locs_new = locs.get(randomizer.nextInt(locs.size()));
           
            Creeper creeper = (Creeper) locs_new.getWorld().spawnEntity(locs_new, EntityType.ZOMBIE);

Die funktionen sind:
Code:
  public void saveLoc(Location loc, String Map, int ID) {
       String location = loc.getWorld().getName() + "," + loc.getX() + "," + loc.getY() + "," + loc.getZ() + "," + loc.getYaw() + "," + loc.getPitch();
       CreeperEscape.this.getConfig().set("CreeperEscape." + Map + ".MobSpawn." + ID + ".location", location);
       CreeperEscape.this.saveConfig();
}
  public Location getLocation(String Map, int ID) {
      String[] loc = CreeperEscape.this.getConfig().getString("CreeperEscape." + Map + ".MobSpawn." + ID + ".location").split("\\,");
      World w = Bukkit.getWorld(loc[0]);
      Double x = Double.parseDouble(loc[1]);
      Double y = Double.parseDouble(loc[2]);
      Double z = Double.parseDouble(loc[3]);
      float yaw = Float.parseFloat(loc[4]);
      float pitch = Float.parseFloat(loc[5]);
      Location location = new Location(w, x, y, z, yaw, pitch);
      return location;
  }

In der Log steht folgender Error:
Code:
[17:29:29] [Server thread/WARN]: [CreeperEscape] Task #6 for CreeperEscape v1.0 generated an exception
java.lang.NullPointerException
    at Main.CreeperEscape$1.run(CreeperEscape.java:182) ~[?:?]
    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]
    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]
    at net.minecraft.server.v1_7_R3.MinecraftServer.v(MinecraftServer.java:600) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:260) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]

Die Zeile 182 beinhaltet folgendes:
Code:
int count = CreeperEscape.this.cfg.getList("CreeperEscape." + CreeperEscape.this.Mapname + ".MobSpawn").size();

Was ist falsch daran :/
 

MiCrJonas

Threadripper
Registriert
29 Oktober 2012
Beiträge
1.064
Diamanten
0
Du fragst nach eine Liste, obwohl es keine ist. Probier mal:
List<Location> locs = new ArrayList<Location>();
Code:
for (String locId : cfg.getConfigurationSection("CreeperEscape." + Map + ".MobSpawn").getKeys(false)) {
    String path = "CreeperEscape." + Map + ".MobSpawn." + locId;
    Location loc = ... // Erstellen der Location für "path";
    locs.add(loc);
}
 
Oben