• 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!

motD Plugin

fs626

Miner
Registriert
24 Juli 2012
Beiträge
193
Diamanten
0
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)
 
Zuletzt bearbeitet:
G

games6471

Guest
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);
 
Zuletzt bearbeitet von einem Moderator:

fs626

Miner
Registriert
24 Juli 2012
Beiträge
193
Diamanten
0
Wozu den ein EventHandler er brauch keinen (Das benötigt man nur bei Listenern).
Und die Config muss er selber erstellen, weil sein plugin, dies nicht macht.

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.getConfig().set("MotD", motd);

Okay. Aber was soll ich für "xyz" dann einsetzen?
 

Calenria

Braumeister
Registriert
28 Juli 2012
Beiträge
386
Alter
45
Diamanten
300
Minecraft
Calenria
Code:
    private String     motd;


    public void onEnable() {
        if (!new File(this.getDataFolder(), "config.yml").exists()) {
            getConfig().set("MotD", "Meine erste MotD");
            saveConfig();
        }
        System.out.println("test");
    }


    public void onDisable() {
        saveConfig();
        System.out.println("test");
    }


    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
        Player player = (Player) sender;
        if (cmd.getName().equalsIgnoreCase("motd")) {
            if (player.hasPermission("system.motd")) {
                if (args.length == 0) {
                    player.sendMessage("§bDie aktuelle MotD ist §e" + motd + "§b.");
                    return true;
                } else {
                    String newMotd = "";
                    for (int i = 0; i < args.length; i++) {
                        newMotd += args[i] + " ";
                    }
                    motd = newMotd;
                    getConfig().set("MotD", motd);
                    saveConfig();
                    player.sendMessage("§bDie neue MotD ist nun §e" + motd + "§b.");
                    return true;
                }
            } else {
                player.sendMessage("§cKeineRechte");
            }
        }
        return true;
    }
 

fs626

Miner
Registriert
24 Juli 2012
Beiträge
193
Diamanten
0
Dazu musst du auf das ServerListPingEvent lauschen und dem Event deine MotD mitgeben.

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 ^^
 
Oben