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

Config bearbeiten ?

Payno4

Schafhirte
Registriert
12 Februar 2015
Beiträge
127
Diamanten
300
Hei Community ,

ich versuche schon die ganze Zeit über ein Command , eine Location in die Config einzutragen , damit ich sie später wieder abrufen kann , doch leider gelingt mir das nicht wirklich .

Hoffentlich könnt ihr mir helfen . :)

Code :
Code:
package CommandManager;



import org.bukkit.Location;

import org.bukkit.command.Command;

import org.bukkit.command.CommandExecutor;

import org.bukkit.command.CommandSender;

import org.bukkit.entity.Player;



import JNRmain.main;



publicclasssavePosimplementsCommandExecutor{

  

    privatestaticmain pl;

  

    @Override

    publicbooleanonCommand(CommandSendersender,Commandcmd,Stringlabel,String[]args){

        Player p =(Player)sender;

        Location loc = p.getLocation();



        if(senderinstanceofPlayer){

            if(args.length == 1){

                String arg = args[0];

                if(arg.equalsIgnoreCase("start")){

                    pl.getConfig().addDefault("pos.start.x", loc);

                    p.sendMessage("Start wurde gesetzt");

                    pl.saveConfig();

                }

                if(arg.equalsIgnoreCase("end")){

                    pl.getConfig().set("pos.end.x", loc );

                    p.sendMessage("Ende wurde gesetzt");

                    pl.saveConfig();

                }

            }

        }

        returnfalse;

    }

}

Die Fehlermeldung :
Code:
[09:49:24 INFO]: payno4 issued server command: /pos start

[09:49:24 ERROR]: null

org.bukkit.command.CommandException: Unhandled exception executing command 'pos' in plugin JNR v1.0

    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]

    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]

    at org.bukkit.craftbukkit.v1_8_R2.CraftServer.dispatchCommand(CraftServer.java:646) ~[spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]

    at net.minecraft.server.v1_8_R2.PlayerConnection.handleCommand(PlayerConnection.java:1139) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]

    at net.minecraft.server.v1_8_R2.PlayerConnection.a(PlayerConnection.java:974) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]

    at net.minecraft.server.v1_8_R2.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]

    at net.minecraft.server.v1_8_R2.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]

    at net.minecraft.server.v1_8_R2.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]

    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_45]

    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_45]

    at net.minecraft.server.v1_8_R2.SystemUtils.a(SourceFile:60) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]

    at net.minecraft.server.v1_8_R2.MinecraftServer.A(MinecraftServer.java:712) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]

    at net.minecraft.server.v1_8_R2.DedicatedServer.A(DedicatedServer.java:368) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]

    at net.minecraft.server.v1_8_R2.MinecraftServer.z(MinecraftServer.java:651) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]

    at net.minecraft.server.v1_8_R2.MinecraftServer.run(MinecraftServer.java:554) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]

    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]

Caused by: java.lang.NullPointerException

    at CommandManager.savePos.onCommand(savePos.java:24) ~[?:?]

    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]

    ... 15 more
 
V

Victini151

Guest
Würdest du bitte Zeile 24 hervorheben? Die können wir uns leider nicht ansehen, so wie der Code eingefügt ist :)

Alternativ kannst du den Code auch auf hastebin.com einfügen, dort sollte das wunderbar klappen.
 

necnuc

Redstoneengineer
Registriert
15 Dezember 2013
Beiträge
36
Diamanten
0
Minecraft
necnuc | Der Kunde
Versuche es lieber wie der @seschi98 das gesagt hat, zB.:
Code:
         Player p =(Player)sender;
        Location loc = p.getLocation();
        if(senderinstanceofPlayer){
            if(args.length == 1){
                String arg = args[0];
                if(arg.equalsIgnoreCase("start")){

                    int x = loc.getBlockX();
                    int y = loc.getBlockZ();
                    int z = loc.getBlockY();

                    pl.getConfig().addDefault("pos.start.x", x);
                    pl.getConfig().addDefault("pos.start.y", y);
                    pl.getConfig().addDefault("pos.start.z", z);
                    p.sendMessage("Start wurde gesetzt");
                    pl.saveConfig();
                }

So solltest du alle Variablen in der Config speichern und bei dem auslesen setzt du diese natürlich zu einer Location zusammen wobei da noch eine Welt benötigt wird.

LG Nick.
 

Payno4

Schafhirte
Registriert
12 Februar 2015
Beiträge
127
Diamanten
300
Versuche es lieber wie der @seschi98 das gesagt hat, zB.:
Code:
         Player p =(Player)sender;
        Location loc = p.getLocation();
        if(senderinstanceofPlayer){
            if(args.length == 1){
                String arg = args[0];
                if(arg.equalsIgnoreCase("start")){

                    int x = loc.getBlockX();
                    int y = loc.getBlockZ();
                    int z = loc.getBlockY();

                    pl.getConfig().addDefault("pos.start.x", x);
                    pl.getConfig().addDefault("pos.start.y", y);
                    pl.getConfig().addDefault("pos.start.z", z);
                    p.sendMessage("Start wurde gesetzt");
                    pl.saveConfig();
                }

So solltest du alle Variablen in der Config speichern und bei dem auslesen setzt du diese natürlich zu einer Location zusammen wobei da noch eine Welt benötigt wird.

LG Nick.

Ich habs mal so gemacht wie du geschrieben hast aber irgendwie taucht immer noch die gleiche Fehlermeldung wie oben auf . :(
 

GPSforLEGENDS

Vorarbeiter
Registriert
21 März 2014
Beiträge
289
Alter
85
Diamanten
300
Minecraft
GPSforLEGENDS
Code:
private static main pl;
1. private static .....
2. Ich sehe an keiner stelle das du der Variable ein Wert zuweist.
3. Java lernen bevor man mit Bukkit anfängt.

Lösung: Mach entweder eine eigene Config Klasse so wie die hier:
Code:
public class CFG {

     // Variables
    private static YamlConfiguration myConfig;
    private static File configFile;
    private static boolean loaded = false;
    /**
     * Gets the configuration file.
     *
     * @return the myConfig
     */
    public static YamlConfiguration getConfig() {
        if (!loaded) {
            loadConfig();
        }
        return myConfig;
    }
    /**
     * Gets the configuration file.
     *
     * @return Configuration file
     */
    public static File getConfigFile() {
        return configFile;
    }
    /**
     * Loads the configuration file from the .jar.
     */
    public static void loadConfig() {
        configFile = new File(Bukkit.getServer().getPluginManager().getPlugin("DeinPluginName").getDataFolder(), "config.yml");
        if (configFile.exists()) {
            myConfig = new YamlConfiguration();
            try {
                myConfig.load(configFile);
            } catch (FileNotFoundException ex) {
                // TODO: Log exception
            } catch (IOException ex) {
                // TODO: Log exception
            } catch (InvalidConfigurationException ex) {
                // TODO: Log exception
            }
            loaded = true;
        } else {
            try {
                Bukkit.getServer().getPluginManager().getPlugin("DeinPluginName").getDataFolder().mkdir();
                InputStream jarURL = itemsCFG.class.getResourceAsStream("/config.yml");
                copyFile(jarURL, configFile);
                myConfig = new YamlConfiguration();
                myConfig.load(configFile);
                loaded = true;
                // TODO: Log that config has been loaded
            } catch (Exception e) {
                // TODO: Log exception
            }
        }
    }
    /**
     * Copies a file to a new location.
     *
     * @param in InputStream
     * @param out File
     *
     * @throws Exception
     */
    static private void copyFile(InputStream in, File out) throws Exception {
        InputStream fis = in;
        FileOutputStream fos = new FileOutputStream(out);
        try {
            byte[] buf = new byte[1024];
            int i = 0;
            while ((i = fis.read(buf)) != -1) {
                fos.write(buf, 0, i);
            }
        } catch (Exception e) {
            throw e;
        } finally {
            if (fis != null) {
                fis.close();
            }
            if (fos != null) {
                fos.close();
            }
        }
    }
    /**
     * Constructor of SpaceConfig.
     */
    private itemsCFG() {
    }

}

ODER

du benutzt ein konstruktor in deine SavePos Klasse

Code:
        private Main plugin;

    public SavePos(Main plugin){
        this.plugin = plugin;
    }

PS: Bitte berücksichtige besonders Punkt 3!!!
 
Zuletzt bearbeitet:

Payno4

Schafhirte
Registriert
12 Februar 2015
Beiträge
127
Diamanten
300
Dann zeig uns doch jetzt bitte die Zeile 24, sofern der Fehler dort noch immer auftritt :)

Nachdem ich den Code geändert hab ist es nun ein Paar Zeilen weiter unten . :)
Code:
Caused by: java.lang.NullPointerException

    at CommandManager.savePos.onCommand(savePos.java:29) ~[?:?]

    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]

    ... 15 more

Die Zeile 29 :
Code:
     pl.getConfig().addDefault("pos.start.x", x );
 

HardSoul

Ehemaliges Teammitglied
Ehem. Teammitglied
Registriert
2 August 2012
Beiträge
759
Diamanten
251
Minecraft
HardS0ul
Hier mal eine Beispiel, wie ich Locations und Sonstiges abspeichere (Ja ich weiß, dass es Umständlicher ist).

Javascript:
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String arg2, String[] args) {
        if(cmd.getName().equalsIgnoreCase("sethome")){
            if(sender instanceof Player){
                if(args.length == 0){
                    Player p = (Player) sender;
                    if(Main.permission.has(p, "ApocalypseZ.SetHome") | Main.permission.has(p, "ApocalypseZ.*")){
                       
                        try {
                            FileManager.home.load(FileManager.file3);
                        } catch (FileNotFoundException e1) {
                            e1.printStackTrace();
                        } catch (IOException e1) {
                            e1.printStackTrace();
                        } catch (InvalidConfigurationException e1) {
                            e1.printStackTrace();
                        }
                       
                        Location loc = p.getLocation();
                       
                        double x = loc.getX();
                        double y = loc.getY();
                        double z = loc.getZ();
                        double yaw = loc.getYaw();
                        double pitch = loc.getPitch();
                        String wn = loc.getWorld().getName();
                       
                        FileManager.home.set(p.getUniqueId().toString() + ".Home.X", x);
                        FileManager.home.set(p.getUniqueId().toString() + ".Home.Y", y);
                        FileManager.home.set(p.getUniqueId().toString() + ".Home.Z", z);
                        FileManager.home.set(p.getUniqueId().toString() + ".Home.Yaw", yaw);
                        FileManager.home.set(p.getUniqueId().toString() + ".Home.Pitch", pitch);
                        FileManager.home.set(p.getUniqueId().toString() + ".Home.World", wn);
                       
                        try {
                            FileManager.home.save(FileManager.file3);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                       
                        p.sendMessage("§4[§9Z§4] §2Home gesetzt!");
                       
                    }else{
                        p.sendMessage("§4[§9Z§4] §2Du hast nicht das Recht dazu!");
                    }
                }
            }
        }
       
        return true;
    }

Im FileManager steht dann folgendes:

Javascript:
    public static File file3 = new File("plugins/ApocalypseZ", "Homes.yml");
    public static FileConfiguration home = YamlConfiguration.loadConfiguration(file3);
 
Oben