ServerPlugin Bots nach Restart trotzdem behalten

Dieses Thema im Forum "Programmierung" wurde erstellt von Creepaz, 1. Juni 2016.

  1. Creepaz
    Offline

    Creepaz

    Registriert seit:
    1. Juni 2016
    Beiträge:
    8
    Hallöchen,

    ich bin dabei einen RPG-Server aufzubauen, und habe mir einen Befehl gemacht um Ingame NPC's zu spawnen. Diese werden mit den Koordinaten in die Config eingetragen, nach einem Serverrestart sind diese allerdings wieder weg, ist auch irgendwo logisch.

    Wie lasse ich die NPC's in der Config nun am besten nach Serverstart spawnen? Kann man das mit einer for-schleife irgendwie bewältigen?

    Hier mal eben der Code um den NPC zu spawnen;

    if(args[0].equalsIgnoreCase("add") && args[1] != "") {
    String botName = args[1];

    double x = p.getLocation().getX();
    double y = p.getLocation().getY();
    double z = p.getLocation().getZ();
    float yaw = p.getLocation().getYaw();
    float pitch = p.getLocation().getPitch();

    plugin.getConfig().set("bots." + botName + ".x", x);
    plugin.getConfig().set("bots." + botName + ".y", y);
    plugin.getConfig().set("bots." + botName + ".z", z);
    plugin.getConfig().set("bots." + botName + ".yaw", yaw);
    plugin.getConfig().set("bots." + botName + ".pitch", pitch);
    plugin.saveConfig();

    NPC npc = new NPC(args[1], p.getLocation());
    npc.spawn();
    npc.rmvFromTablist();

    p.sendMessage("§aDu hast den Bot §6" + botName + " §aerfolgreich erstellt!");
    }

    Wie kann ich nun die Koordinaten am besten auslesen und dann die NPC's wieder spawnen?

    Vielen Dank im vorraus.
     
    #1
  2. GPSforLEGENDS
    Offline

    GPSforLEGENDS

    Registriert seit:
    21. März 2014
    Beiträge:
    295
    Ort:
    Bürostuhl
    Minecraft:
    GPSforLEGENDS
    Code (Text):
    1.  
    2. final ConfigurationSection cs = getConfig().getConfigurationSection("bots");
    3.              
    4.                 for(String str : cs.getKeys(false)){
    5.                     Double[] locs = new Double[3];
    6.                     final float yaw = (float) cs.get(str + ".yaw");
    7.                     final float pitch = (float) cs.get(str + ".pitch");
    8.                     locs[0] = cs.getDouble(str + ".x");
    9.                     locs[1] = cs.getDouble(str + ".y");
    10.                     locs[2] = cs.getDouble(str + ".z");
    11.                  
    12.                     final NPC npc = new NPC("was auch immer", new Location(world, locs[0],locs[1], locs[2], yaw, pitch));
    13.                     npc.spawn();
    14.                 }
    15.  
     
    #2
  3. Creepaz
    Offline

    Creepaz

    Registriert seit:
    1. Juni 2016
    Beiträge:
    8
    Danke schonmal, allerdings wird mir world immer noch rot unterstrichen, da ich das ja nicht in die Config speichern lasse. Wie kann ich das machen, da man ja in der Location keinen String angeben kann, würde es schon funktionieren wenn ich einfach
    World world = Bukkit.getWorld("world2");
    mache?
     
    #3
  4. Creepaz
    Offline

    Creepaz

    Registriert seit:
    1. Juni 2016
    Beiträge:
    8
    Nope, so funktioniert das schonmal nicht. Hast du dafür noch eine Lösung?
     
    #4
  5. GPSforLEGENDS
    Offline

    GPSforLEGENDS

    Registriert seit:
    21. März 2014
    Beiträge:
    295
    Ort:
    Bürostuhl
    Minecraft:
    GPSforLEGENDS
    Java + bukkit lernen
    Der Code funktioniert so wie er ist.... evtl. musst du ihn ein bisschen abändern aber das Grundprinzip ist so richtig.
     
    #5
  6. Creepaz
    Offline

    Creepaz

    Registriert seit:
    1. Juni 2016
    Beiträge:
    8
    In der Konsole ist dieser Fehler:
    Error occurred while enabling Reallife v1.0 (Is it up to date?)
    java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Float
    at me.creepaz.reallife.Main.loadNPCs(Main.java:99) ~[?:?]
    at me.creepaz.reallife.Main.onEnable(Main.java:36) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot-1.8.8.jar:git-Spigot-6c9b0a1-de5c261]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot-1.8.8.jar:git-Spigot-6c9b0a1-de5c261]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot-1.8.8.jar:git-Spigot-6c9b0a1-de5c261]
    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:356) [spigot-1.8.8.jar:git-Spigot-6c9b0a1-de5c261]
    at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:316) [spigot-1.8.8.jar:git-Spigot-6c9b0a1-de5c261]
    at net.minecraft.server.v1_8_R3.MinecraftServer.s(MinecraftServer.java:414) [spigot-1.8.8.jar:git-Spigot-6c9b0a1-de5c261]
    at net.minecraft.server.v1_8_R3.MinecraftServer.k(MinecraftServer.java:378) [spigot-1.8.8.jar:git-Spigot-6c9b0a1-de5c261]
    at net.minecraft.server.v1_8_R3.MinecraftServer.a(MinecraftServer.java:333) [spigot-1.8.8.jar:git-Spigot-6c9b0a1-de5c261]
    at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:263) [spigot-1.8.8.jar:git-Spigot-6c9b0a1-de5c261]
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:524) [spigot-1.8.8.jar:git-Spigot-6c9b0a1-de5c261]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_72]

    mit deinem Code.. Lösung?
     
    #6
  7. Creepaz
    Offline

    Creepaz

    Registriert seit:
    1. Juni 2016
    Beiträge:
    8
    Double kann nicht zu Float gecastet werden, soweit bin ich schon. Aber weshalb dieser Fehler? x,y, sowie z werden ja eben auch als Double in der Config gespeichert.. Die Config sieht so aus:

    bots:
    Waffenmeister:
    name: Waffenmeister
    x: 1026.5257021676944
    y: 120.0
    z: 363.8148701853248
    yaw: 1.1006165
    pitch: 7.3999567
     
    #7
  8. 可愛い
    Offline

    可愛い

    Registriert seit:
    19. Mai 2014
    Beiträge:
    654
    Wie bereits davor angemerkt: Lern Java. Mein Gott, du weißt nicht mal wie du mit den Datentypen umgehst. Wie soll man dir da bitte helfen können?

    http://openbook.rheinwerk-verlag.de/javainsel/

    gut, kostenlos und auf deutsch
     
    #8
  9. Creepaz
    Offline

    Creepaz

    Registriert seit:
    1. Juni 2016
    Beiträge:
    8
    Dafür bin ich hier, ich kaufe mir sicherlich kein Buch, nur um etwas erfolgreicher für Minecraft ein Plugin zu schreiben. Ich lerne es, indem ich es mache. Das hat bis zu diesem Punkt auch recht gut geklappt. Aber hier bekommt man anscheinend keine produktive Hilfe.
     
    #9
  10. Creepaz
    Offline

    Creepaz

    Registriert seit:
    1. Juni 2016
    Beiträge:
    8
    Habs jetzt mittels NumberConversions selber gefixxt.
     
    #10
  11. 可愛い
    Offline

    可愛い

    Registriert seit:
    19. Mai 2014
    Beiträge:
    654
    Na siehste, dann hat das ja etwas gebracht, dass du selbst versuchst hast das Problem zu lösen anstelle es dir von anderen vorkauen zu lassen.
     
    #11
  12. GPSforLEGENDS
    Offline

    GPSforLEGENDS

    Registriert seit:
    21. März 2014
    Beiträge:
    295
    Ort:
    Bürostuhl
    Minecraft:
    GPSforLEGENDS
    Sind dir 0€ wirklich zu viel? ;)
     
    #12
  13. Creepaz
    Offline

    Creepaz

    Registriert seit:
    1. Juni 2016
    Beiträge:
    8
    Sry Leute, das ich hier so genervt bzw. angepisst rüber komme, aber sowas nervt mich eben. Habe an dem Problem jetzt 1,5 Tage dran gesessen, und gehofft, das ihr mir helfen könnt. Das mit kostenlos habe ich überlesen, sry. Jedenfalls hab ich mir das alles mal etwas angeschaut und dadurch die Lösung gefunden. Danke euch!
     
    #13
  14. GPSforLEGENDS
    Offline

    GPSforLEGENDS

    Registriert seit:
    21. März 2014
    Beiträge:
    295
    Ort:
    Bürostuhl
    Minecraft:
    GPSforLEGENDS
    Bitte :) Ich kenne das auch wenn man Stunden vor seinem Code sitzt und nicht weiterkommt und die Aggression steigt ^^ Aber umso besser ist es das du den letzten Schritt alleine geschafft hast.
     
    #14
    Creepaz gefällt das.