1. 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!

ServerPlugin Config bearbeiten ?

Dieses Thema im Forum "Programmierung" wurde erstellt von Payno4, 4. August 2015.

  1. Payno4
    Offline

    Payno4

    Registriert seit:
    12. Februar 2015
    Beiträge:
    117
    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 (Text):
    1.  
    2. package CommandManager;
    3.  
    4.  
    5.  
    6. import org.bukkit.Location;
    7.  
    8. import org.bukkit.command.Command;
    9.  
    10. import org.bukkit.command.CommandExecutor;
    11.  
    12. import org.bukkit.command.CommandSender;
    13.  
    14. import org.bukkit.entity.Player;
    15.  
    16.  
    17.  
    18. import JNRmain.main;
    19.  
    20.  
    21.  
    22. publicclasssavePosimplementsCommandExecutor{
    23.  
    24.  
    25.  
    26.     privatestaticmain pl;
    27.  
    28.  
    29.  
    30.     @Override
    31.  
    32.     publicbooleanonCommand(CommandSendersender,Commandcmd,Stringlabel,String[]args){
    33.  
    34.         Player p =(Player)sender;
    35.  
    36.         Location loc = p.getLocation();
    37.  
    38.  
    39.  
    40.         if(senderinstanceofPlayer){
    41.  
    42.             if(args.length == 1){
    43.  
    44.                 String arg = args[0];
    45.  
    46.                 if(arg.equalsIgnoreCase("start")){
    47.  
    48.                     pl.getConfig().addDefault("pos.start.x", loc);
    49.  
    50.                     p.sendMessage("Start wurde gesetzt");
    51.  
    52.                     pl.saveConfig();
    53.  
    54.                 }
    55.  
    56.                 if(arg.equalsIgnoreCase("end")){
    57.  
    58.                     pl.getConfig().set("pos.end.x", loc );
    59.  
    60.                     p.sendMessage("Ende wurde gesetzt");
    61.  
    62.                     pl.saveConfig();
    63.  
    64.                 }
    65.  
    66.             }
    67.  
    68.         }
    69.  
    70.         returnfalse;
    71.  
    72.     }
    73.  
    74. }
    75.  
    76.  
    77.  

    Die Fehlermeldung :
    Code (Text):
    1.  
    2. [09:49:24 INFO]: payno4 issued server command: /pos start
    3.  
    4. [09:49:24 ERROR]: null
    5.  
    6. org.bukkit.command.CommandException: Unhandled exception executing command 'pos' in plugin JNR v1.0
    7.  
    8.     at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]
    9.  
    10.     at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]
    11.  
    12.     at org.bukkit.craftbukkit.v1_8_R2.CraftServer.dispatchCommand(CraftServer.java:646) ~[spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]
    13.  
    14.     at net.minecraft.server.v1_8_R2.PlayerConnection.handleCommand(PlayerConnection.java:1139) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]
    15.  
    16.     at net.minecraft.server.v1_8_R2.PlayerConnection.a(PlayerConnection.java:974) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]
    17.  
    18.     at net.minecraft.server.v1_8_R2.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]
    19.  
    20.     at net.minecraft.server.v1_8_R2.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]
    21.  
    22.     at net.minecraft.server.v1_8_R2.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]
    23.  
    24.     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_45]
    25.  
    26.     at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_45]
    27.  
    28.     at net.minecraft.server.v1_8_R2.SystemUtils.a(SourceFile:60) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]
    29.  
    30.     at net.minecraft.server.v1_8_R2.MinecraftServer.A(MinecraftServer.java:712) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]
    31.  
    32.     at net.minecraft.server.v1_8_R2.DedicatedServer.A(DedicatedServer.java:368) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]
    33.  
    34.     at net.minecraft.server.v1_8_R2.MinecraftServer.z(MinecraftServer.java:651) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]
    35.  
    36.     at net.minecraft.server.v1_8_R2.MinecraftServer.run(MinecraftServer.java:554) [spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]
    37.  
    38.     at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]
    39.  
    40. Caused by: java.lang.NullPointerException
    41.  
    42.     at CommandManager.savePos.onCommand(savePos.java:24) ~[?:?]
    43.  
    44.     at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]
    45.  
    46.     ... 15 more
    47.  
    48.  
    49.  
     
    #1
  2. Werbung
    Online

    Werbung

  3. Victini151
    Offline

    Victini151

    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.
     
    #2
  4. seschi98
    Offline

    seschi98

    Registriert seit:
    28. Juni 2013
    Beiträge:
    7
    Also so wie ich das sehe, versuchst du damit die ganze Location in einer Variable zu speichern. Besser wäre es jedoch, alle Parameter in einer einzelnen Config-Variable zu speichern. Ist hier im Bukkit-Forum auch erklärt, ein einfaches googlen hätte auch gereicht...
     
    #3
    • Gefällt mir Gefällt mir x 2
  5. necnuc
    Offline

    necnuc

    Registriert seit:
    15. Dezember 2013
    Beiträge:
    36
    Ort:
    /home
    Minecraft:
    necnuc | Der Kunde
    Versuche es lieber wie der @seschi98 das gesagt hat, zB.:
    Code (Text):
    1.          Player p =(Player)sender;
    2.         Location loc = p.getLocation();
    3.         if(senderinstanceofPlayer){
    4.             if(args.length == 1){
    5.                 String arg = args[0];
    6.                 if(arg.equalsIgnoreCase("start")){
    7.  
    8.                     int x = loc.getBlockX();
    9.                     int y = loc.getBlockZ();
    10.                     int z = loc.getBlockY();
    11.  
    12.                     pl.getConfig().addDefault("pos.start.x", x);
    13.                     pl.getConfig().addDefault("pos.start.y", y);
    14.                     pl.getConfig().addDefault("pos.start.z", z);
    15.                     p.sendMessage("Start wurde gesetzt");
    16.                     pl.saveConfig();
    17.                 }
    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.
     
    #4
    • Gefällt mir Gefällt mir x 1
  6. Payno4
    Offline

    Payno4

    Registriert seit:
    12. Februar 2015
    Beiträge:
    117
    Ich habs mal so gemacht wie du geschrieben hast aber irgendwie taucht immer noch die gleiche Fehlermeldung wie oben auf . :(
     
    #5
  7. Victini151
    Offline

    Victini151

    Dann zeig uns doch jetzt bitte die Zeile 24, sofern der Fehler dort noch immer auftritt :)
     
    #6
    • Gefällt mir Gefällt mir x 1
  8. GPSforLEGENDS
    Offline

    GPSforLEGENDS

    Registriert seit:
    21. März 2014
    Beiträge:
    291
    Ort:
    Bürostuhl
    Minecraft:
    GPSforLEGENDS
    Code (Text):
    1. 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 (Text):
    1. public class CFG {
    2.  
    3.      // Variables
    4.     private static YamlConfiguration myConfig;
    5.     private static File configFile;
    6.     private static boolean loaded = false;
    7.     /**
    8.      * Gets the configuration file.
    9.      *
    10.      * @return the myConfig
    11.      */
    12.     public static YamlConfiguration getConfig() {
    13.         if (!loaded) {
    14.             loadConfig();
    15.         }
    16.         return myConfig;
    17.     }
    18.     /**
    19.      * Gets the configuration file.
    20.      *
    21.      * @return Configuration file
    22.      */
    23.     public static File getConfigFile() {
    24.         return configFile;
    25.     }
    26.     /**
    27.      * Loads the configuration file from the .jar.
    28.      */
    29.     public static void loadConfig() {
    30.         configFile = new File(Bukkit.getServer().getPluginManager().getPlugin("DeinPluginName").getDataFolder(), "config.yml");
    31.         if (configFile.exists()) {
    32.             myConfig = new YamlConfiguration();
    33.             try {
    34.                 myConfig.load(configFile);
    35.             } catch (FileNotFoundException ex) {
    36.                 // TODO: Log exception
    37.             } catch (IOException ex) {
    38.                 // TODO: Log exception
    39.             } catch (InvalidConfigurationException ex) {
    40.                 // TODO: Log exception
    41.             }
    42.             loaded = true;
    43.         } else {
    44.             try {
    45.                 Bukkit.getServer().getPluginManager().getPlugin("DeinPluginName").getDataFolder().mkdir();
    46.                 InputStream jarURL = itemsCFG.class.getResourceAsStream("/config.yml");
    47.                 copyFile(jarURL, configFile);
    48.                 myConfig = new YamlConfiguration();
    49.                 myConfig.load(configFile);
    50.                 loaded = true;
    51.                 // TODO: Log that config has been loaded
    52.             } catch (Exception e) {
    53.                 // TODO: Log exception
    54.             }
    55.         }
    56.     }
    57.     /**
    58.      * Copies a file to a new location.
    59.      *
    60.      * @param in InputStream
    61.      * @param out File
    62.      *
    63.      * @throws Exception
    64.      */
    65.     static private void copyFile(InputStream in, File out) throws Exception {
    66.         InputStream fis = in;
    67.         FileOutputStream fos = new FileOutputStream(out);
    68.         try {
    69.             byte[] buf = new byte[1024];
    70.             int i = 0;
    71.             while ((i = fis.read(buf)) != -1) {
    72.                 fos.write(buf, 0, i);
    73.             }
    74.         } catch (Exception e) {
    75.             throw e;
    76.         } finally {
    77.             if (fis != null) {
    78.                 fis.close();
    79.             }
    80.             if (fos != null) {
    81.                 fos.close();
    82.             }
    83.         }
    84.     }
    85.     /**
    86.      * Constructor of SpaceConfig.
    87.      */
    88.     private itemsCFG() {
    89.     }
    90.  
    91. }
    92.  
    ODER

    du benutzt ein konstruktor in deine SavePos Klasse

    Code (Text):
    1.         private Main plugin;
    2.  
    3.     public SavePos(Main plugin){
    4.         this.plugin = plugin;
    5.     }
    PS: Bitte berücksichtige besonders Punkt 3!!!
     
    #7
    • Gefällt mir Gefällt mir x 2
  9. Payno4
    Offline

    Payno4

    Registriert seit:
    12. Februar 2015
    Beiträge:
    117
    Nachdem ich den Code geändert hab ist es nun ein Paar Zeilen weiter unten . :)
    Code (Text):
    1.  
    2. Caused by: java.lang.NullPointerException
    3.  
    4.     at CommandManager.savePos.onCommand(savePos.java:29) ~[?:?]
    5.  
    6.     at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.8.3.jar:git-Spigot-870264a-0a645a2]
    7.  
    8.     ... 15 more
    9.  
    10.  
    Die Zeile 29 :
    Code (Text):
    1.  
    2.      pl.getConfig().addDefault("pos.start.x", x );
    3.  
     
    #8
    • Gefällt mir Gefällt mir x 1
  10. Victini151
    Offline

    Victini151

    Einer der folgenden Ausdrücke läuft auf null hinaus:
    pl
    pl.getConfig()

    Ist pl initialisiert worden?
     
    #9
    • Gefällt mir Gefällt mir x 1
  11. Basti07711
    Offline

    Basti07711 Ehem. Teammitglied

    Registriert seit:
    2. August 2012
    Beiträge:
    714
    Ort:
    Hinter dir
    Minecraft:
    Basti07711
    Hier mal eine Beispiel, wie ich Locations und Sonstiges abspeichere (Ja ich weiß, dass es Umständlicher ist).

    Code (Javascript):
    1.     @Override
    2.     public boolean onCommand(CommandSender sender, Command cmd, String arg2, String[] args) {
    3.         if(cmd.getName().equalsIgnoreCase("sethome")){
    4.             if(sender instanceof Player){
    5.                 if(args.length == 0){
    6.                     Player p = (Player) sender;
    7.                     if(Main.permission.has(p, "ApocalypseZ.SetHome") | Main.permission.has(p, "ApocalypseZ.*")){
    8.                        
    9.                         try {
    10.                             FileManager.home.load(FileManager.file3);
    11.                         } catch (FileNotFoundException e1) {
    12.                             e1.printStackTrace();
    13.                         } catch (IOException e1) {
    14.                             e1.printStackTrace();
    15.                         } catch (InvalidConfigurationException e1) {
    16.                             e1.printStackTrace();
    17.                         }
    18.                        
    19.                         Location loc = p.getLocation();
    20.                        
    21.                         double x = loc.getX();
    22.                         double y = loc.getY();
    23.                         double z = loc.getZ();
    24.                         double yaw = loc.getYaw();
    25.                         double pitch = loc.getPitch();
    26.                         String wn = loc.getWorld().getName();
    27.                        
    28.                         FileManager.home.set(p.getUniqueId().toString() + ".Home.X", x);
    29.                         FileManager.home.set(p.getUniqueId().toString() + ".Home.Y", y);
    30.                         FileManager.home.set(p.getUniqueId().toString() + ".Home.Z", z);
    31.                         FileManager.home.set(p.getUniqueId().toString() + ".Home.Yaw", yaw);
    32.                         FileManager.home.set(p.getUniqueId().toString() + ".Home.Pitch", pitch);
    33.                         FileManager.home.set(p.getUniqueId().toString() + ".Home.World", wn);
    34.                        
    35.                         try {
    36.                             FileManager.home.save(FileManager.file3);
    37.                         } catch (IOException e) {
    38.                             e.printStackTrace();
    39.                         }
    40.                        
    41.                         p.sendMessage("§4[§9Z§4] §2Home gesetzt!");
    42.                        
    43.                     }else{
    44.                         p.sendMessage("§4[§9Z§4] §2Du hast nicht das Recht dazu!");
    45.                     }
    46.                 }
    47.             }
    48.         }
    49.        
    50.         return true;
    51.     }
    Im FileManager steht dann folgendes:

    Code (Javascript):
    1.     public static File file3 = new File("plugins/ApocalypseZ", "Homes.yml");
    2.     public static FileConfiguration home = YamlConfiguration.loadConfiguration(file3);
     
    #10