motD Plugin

Dieses Thema im Forum "Programmierung" wurde erstellt von fs626, 30. Januar 2013.

  1. fs626
    Offline

    fs626

    Registriert seit:
    24. Juli 2012
    Beiträge:
    193
    Ort:
    Deutschland
    Hallo zusammen. Ich habe ein Plugin geschrieben, das es ermöglichen soll, die motD ingame zu ändern. Doch ich erhalte immer diesen Fehler:
    2013-01-30 16:15:33 [INFO] [SkyLineSystem3] Enabling SkyLineSystem3 v1.4 by SLC-Team
    2013-01-30 16:15:33 [SEVERE] Cannot load configuration from stream
    org.bukkit.configuration.InvalidConfigurationException: Top level is not a Map.
    at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:57)
    at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:138)
    at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:202)
    at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:121)
    at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:111)
    at me.SLCTeam.test.test.onEnable(test.java:28)
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
    at org.bukkit.craftbukkit.v1_4_R1.CraftServer.loadPlugin(CraftServer.java:282)
    at org.bukkit.craftbukkit.v1_4_R1.CraftServer.enablePlugins(CraftServer.java:264)
    at net.minecraft.server.v1_4_R1.MinecraftServer.j(MinecraftServer.java:321)
    at net.minecraft.server.v1_4_R1.MinecraftServer.e(MinecraftServer.java:300)
    at net.minecraft.server.v1_4_R1.MinecraftServer.a(MinecraftServer.java:259)
    at net.minecraft.server.v1_4_R1.DedicatedServer.init(DedicatedServer.java:149)
    at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:399)
    at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849)

    Ich kann euch auch den code des Plugins schicken ;)
    Ich hoffe, ihr könnt mir helfen!

    MfG

    ---> Code: http://pastebin.com/wf42WnrX (outdated)
     
    #1
  2. =McAnarchy11.DE=
    Offline

    =McAnarchy11.DE= Gesperrt

    Registriert seit:
    6. Januar 2013
    Beiträge:
    54
    Code bitte, sonst keine hilfe,
     
    #2
  3. fs626
    Offline

    fs626

    Registriert seit:
    24. Juli 2012
    Beiträge:
    193
    Ort:
    Deutschland
    Okay ;) Habe Link oben eingefügt!
     
    #3
  4. Goldencreeper
    Offline

    Goldencreeper

    Registriert seit:
    3. Januar 2012
    Beiträge:
    680
    Ort:
    Niedersachsen
    Minecraft:
    mincraftermanuel
    #4
  5. games6471
    Offline

    games6471

    würde gerne im Code nach den Fehler schauen, aber der Link ist ungültig.
    Könntest du ihn bitte ändern.
     
    #5
  6. fs626
    Offline

    fs626

    Registriert seit:
    24. Juli 2012
    Beiträge:
    193
    Ort:
    Deutschland
    Ich möchte aber das von mir verwenden!
     
    #6
  7. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    Steht doch in der Fehlermeldung, mit deiner config.yml stimmt was nicht. Entweder nicht erstellt oder nicht sauber erstellt.
     
    #7
  8. fs626
    Offline

    fs626

    Registriert seit:
    24. Juli 2012
    Beiträge:
    193
    Ort:
    Deutschland
    Ja eben. Genau das ist ja das Problem, weshalb ich diesen Thread aufgemacht habe, um Hilfe zu bekommen.
     
    #8
  9. games6471
    Offline

    games6471

    Nur ohne Code, wo drin steht wie du es speicherst, ist das schwer.
     
    #9
  10. fs626
    Offline

    fs626

    Registriert seit:
    24. Juli 2012
    Beiträge:
    193
    Ort:
    Deutschland
    http://pastebin.com/wf42WnrX

    In der Config steht motd = text
     
    #10
  11. MrOAriO
    Offline

    MrOAriO

    Registriert seit:
    6. Oktober 2012
    Beiträge:
    135
    Minecraft:
    OAriO
    Lösch mal deine Config und erstell einfach eine Datei die Config.yml heißt , und wo ist dein Event Handler ?
     
    #11
  12. games6471
    Offline

    games6471

    Wozu den ein EventHandler er brauch keinen (Das benötigt man nur bei Listenern).

    So hab deinen Fehler gefunden.

    In der Zeile 42 getConfig();

    Du musst eine Variable davor setzen, den getConfig(); gibt eine Referenz (Speicheradresse) zurück.
    Falls die Methode getConfig() als void deklariert wäre würde es gehen, da sie dann nur etwas macht.
    Ist ein bischen schlecht erklärt aber ich hoffe du verstehst es, wenn nicht einfach nochmal was schreiben
    Also hier mal ein Beispiel:

    private FileConfiguration xyz;

    public void onEnable()
    {
    xyz = getConfig();
    System.out.println("test");
    }

    - - - Aktualisiert - - -

    Den gleichen fehler musst du auch in Zeile 65 korriegieren.

    Somit wird aus

    plugin.getConfig().set("MotD", motd);

    xyz.set("MotD", motd);
     
    #12
  13. fs626
    Offline

    fs626

    Registriert seit:
    24. Juli 2012
    Beiträge:
    193
    Ort:
    Deutschland
    Okay. Aber was soll ich für "xyz" dann einsetzen?
     
    #13
  14. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    in onEnable() einfügen:

    Code (Text):
    1.  
    2.        if (!new File(this.getDataFolder(), "config.yml").exists()) {
    3.             getConfig().set("MotD", "Meine erste MotD");
    4.             saveConfig();
    5.         }
    6.  
    und die alte Config löschen.
     
    #14
  15. games6471
    Offline

    games6471

    Einen beliebigen Namen xyz ist einfach nur eine Variable.

    Am besten nennst du die Config also könnte es so aussehen.

    private FileConfiguration Config;
     
    #15
  16. fs626
    Offline

    fs626

    Registriert seit:
    24. Juli 2012
    Beiträge:
    193
    Ort:
    Deutschland
    Habe alle eure Anweisungen befolgt, es kommt aber jetzt bei der Eingabe von /motd abc immer ein internal Error...
    Könntet ihr mir evtl. mal den ganzen code schicken? Vlt. habe ich beim einfügen o.a einen Fehler gemacht.
     
    #16
  17. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    Code (Text):
    1.  
    2.     private String     motd;
    3.  
    4.  
    5.     public void onEnable() {
    6.         if (!new File(this.getDataFolder(), "config.yml").exists()) {
    7.             getConfig().set("MotD", "Meine erste MotD");
    8.             saveConfig();
    9.         }
    10.         System.out.println("test");
    11.     }
    12.  
    13.  
    14.     public void onDisable() {
    15.         saveConfig();
    16.         System.out.println("test");
    17.     }
    18.  
    19.  
    20.     @Override
    21.     public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    22.         Player player = (Player) sender;
    23.         if (cmd.getName().equalsIgnoreCase("motd")) {
    24.             if (player.hasPermission("system.motd")) {
    25.                 if (args.length == 0) {
    26.                     player.sendMessage("§bDie aktuelle MotD ist §e" + motd + "§b.");
    27.                     return true;
    28.                 } else {
    29.                     String newMotd = "";
    30.                     for (int i = 0; i < args.length; i++) {
    31.                         newMotd += args[i] + " ";
    32.                     }
    33.                     motd = newMotd;
    34.                     getConfig().set("MotD", motd);
    35.                     saveConfig();
    36.                     player.sendMessage("§bDie neue MotD ist nun §e" + motd + "§b.");
    37.                     return true;
    38.                 }
    39.             } else {
    40.                 player.sendMessage("§cKeineRechte");
    41.             }
    42.         }
    43.         return true;
    44.     }
    45.  
     
    #17
  18. fs626
    Offline

    fs626

    Registriert seit:
    24. Juli 2012
    Beiträge:
    193
    Ort:
    Deutschland
    Okay. Jetzt geht es, blos die MotD ändert sich nicht, wenn man den Server in der Liste anzeigen lässt...
     
    #18
  19. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    Dazu musst du auf das ServerListPingEvent lauschen und dem Event deine MotD mitgeben.
     
    #19
  20. fs626
    Offline

    fs626

    Registriert seit:
    24. Juli 2012
    Beiträge:
    193
    Ort:
    Deutschland
    Und wie mache ich das am besten?

    - - - Aktualisiert - - -

    Okay. Ich glaube ich gebe auf und nehm das Plugin ColoredMotd. Denn ich müsste jetzt auch noch dir ganzen Farbcodes integrieren...
    Zu viel Arbeit :p

    Aber Danke für eure Hilfe Leute ^^
     
    #20