ServerPlugin Meine Config wird nicht gespeichert!

Dieses Thema im Forum "Programmierung" wurde erstellt von 2801MC, 29. August 2015.

  1. 2801MC
    Offline

    2801MC

    Registriert seit:
    15. August 2013
    Beiträge:
    77
    Hallo, ich programmiere (mal wieder...) ein Plugin, dieses aber nur für meinen eigenen Server!
    Ich habe das Problem, dass die Config nicht gespeichert wird.

    Code (Text):
    1. package de.skycraft.levelsystem;
    2.  
    3. import java.io.IOException;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.command.Command;
    8. import org.bukkit.command.CommandSender;
    9. import org.bukkit.entity.Player;
    10. import org.bukkit.event.EventHandler;
    11. import org.bukkit.event.Listener;
    12. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    13. import org.bukkit.event.entity.PlayerDeathEvent;
    14. import org.bukkit.event.player.PlayerJoinEvent;
    15. import org.bukkit.plugin.java.JavaPlugin;
    16.  
    17. public class scls extends JavaPlugin implements Listener {
    18.    
    19.     public void onEnable(){
    20.         this.reloadConfig();
    21.     }
    22.    
    23.     public void sc(){
    24.         this.saveConfig();
    25.     }
    26.    
    27.     public void sclevel(Player p){
    28.         int kills = this.getConfig().getInt("players." + p.getName() + ".kills");
    29.         int level = 0;
    30.         int xp = 0;
    31.         xp += kills*20;
    32.         int xpn = 0;
    33.         int xpg = xp;
    34.         while(xp >= xpn){
    35.             level++;
    36.             xp -= xpn;
    37.             xpn += 100;
    38.         }
    39.         int ang = level * 2;
    40.         int vert = level * 2;
    41.         int leben = level * 10;
    42.         p.setMaxHealth((double) leben);
    43.         this.getConfig().set("players." + p.getName() + ".ang", ang);
    44.         this.getConfig().set("players." + p.getName() + ".vert", vert);
    45.         this.getConfig().set("players." + p.getName() + ".leben", leben);
    46.         this.getConfig().set("players." + p.getName() + ".level", level);
    47.         this.getConfig().set("players." + p.getName() + ".xp", xp);
    48.         this.getConfig().set("players." + p.getName() + ".xpn", xpn);
    49.         this.getConfig().set("players." + p.getName() + ".xpg", xpg);
    50.         sc();
    51.     }
    52.    
    53.     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
    54.         if(sender instanceof Player){
    55.             Player p = (Player) sender;
    56.             if(cmd.getName().equalsIgnoreCase("scinfo")){
    57.                 if(args.length == 0){
    58.                     int death = this.getConfig().getInt("players." + p.getName() + ".death");
    59.                     int kills = this.getConfig().getInt("players." + p.getName() + ".kills");
    60.                     double kdr = 0;
    61.                     int ang = this.getConfig().getInt("players." + p.getName() + ".ang");
    62.                     int vert = this.getConfig().getInt("players." + p.getName() + ".vert");
    63.                     int xp = this.getConfig().getInt("players." + p.getName() + ".xp");
    64.                     int xpn = this.getConfig().getInt("players." + p.getName() + ".xpn");
    65.                     int xpg = this.getConfig().getInt("players." + p.getName() + ".xpg");
    66.                     int level = this.getConfig().getInt("players." + p.getName() + ".level");
    67.                     int leben = this.getConfig().getInt("players." + p.getName() + ".leben");
    68.                     p.sendMessage(ChatColor.AQUA + "Deine Kills: " + kills);
    69.                     p.sendMessage(ChatColor.AQUA + "Deine Tode: " + death);
    70.                     p.sendMessage(ChatColor.AQUA + "Deine KDR: " + kdr);
    71.                     p.sendMessage(ChatColor.AQUA + "Dein Angriffswert: " + ang);
    72.                     p.sendMessage(ChatColor.AQUA + "Dein Verteidigungswert: " + vert);
    73.                     p.sendMessage(ChatColor.AQUA + "Deine EXP:/n- Gesammt: " + xpg + "/n- Zum nächstem Level: " + xp + "/" + xpn);
    74.                     p.sendMessage(ChatColor.AQUA + "Dein Level: " + level);
    75.                     p.sendMessage(ChatColor.AQUA + "Deine Leben: " + p.getHealth() + "/" + leben);
    76.                 } else {
    77.                     int death = this.getConfig().getInt("players." + args[0] + ".death");
    78.                     int kills = this.getConfig().getInt("players." + args[0] + ".kills");
    79.                     double kdr = 0;
    80.                     int ang = this.getConfig().getInt("players." + args[0] + ".ang");
    81.                     int vert = this.getConfig().getInt("players." + args[0] + ".vert");
    82.                     int xp = this.getConfig().getInt("players." + args[0] + ".xp");
    83.                     int xpn = this.getConfig().getInt("players." + args[0] + ".xpn");
    84.                     int xpg = this.getConfig().getInt("players." + args[0] + ".xpg");
    85.                     int level = this.getConfig().getInt("players." + args[0] + ".level");
    86.                     int leben = this.getConfig().getInt("players." + args[0] + ".leben");
    87.                     p.sendMessage(ChatColor.AQUA + args[0] + "'s Kills: " + kills);
    88.                     p.sendMessage(ChatColor.AQUA + args[0] + "'s Tode: " + death);
    89.                     p.sendMessage(ChatColor.AQUA + args[0] + "'s KDR: " + kdr);
    90.                     p.sendMessage(ChatColor.AQUA + args[0] + "'s Angriffswert: " + ang);
    91.                     p.sendMessage(ChatColor.AQUA + args[0] + "'s Verteidigungswert: " + vert);
    92.                     p.sendMessage(ChatColor.AQUA + args[0] + "'s EXP:/n- Gesammt: " + xpg + "/n- Zum nächstem Level: " + xp + "/" + xpn);
    93.                     p.sendMessage(ChatColor.AQUA + args[0] + "'s Level: " + level);
    94.                     p.sendMessage(ChatColor.AQUA + args[0] + "'s Leben: " + p.getHealth() + "/" + leben);
    95.                 }
    96.             }
    97.         }
    98.         return true;
    99.     }
    100.    
    101.     @EventHandler
    102.     public void onPlayerDeath(PlayerDeathEvent e){
    103.         Player p = e.getEntity();
    104.         Player k = p.getKiller();
    105.         if(p instanceof Player && k instanceof Player){
    106.             int death = this.getConfig().getInt("players." + p.getName() + ".death");
    107.             int kills = this.getConfig().getInt("players." + k.getName() + ".kills");
    108.             death++;
    109.             kills++;
    110.             this.getConfig().set("players." + p.getName() + ".death", death);
    111.             this.getConfig().set("players." + k.getName() + ".kills", kills);
    112.             sc();
    113.             sclevel(p);
    114.             sclevel(k);
    115.         }
    116.     }
    117.    
    118.     @EventHandler
    119.     public void onAttack(EntityDamageByEntityEvent e){
    120.         if(e.getEntity() instanceof Player && e.getDamager() instanceof Player){
    121.             Player p = (Player) e.getEntity();
    122.             Player d = (Player) e.getDamager();
    123.             int ang = this.getConfig().getInt("players." + d.getName() + ".ang");
    124.             int vert = this.getConfig().getInt("players." + p.getName() + ".vert");
    125.             float angmulti = 1.0f;
    126.             float vertmulti = 1.0f;
    127.             float schaden = (ang * angmulti)/(vert * vertmulti);
    128.             e.setDamage(schaden);
    129.             sclevel(p);
    130.             sclevel(d);
    131.         }
    132.     }
    133.    
    134.     @EventHandler
    135.     public void onJoin(PlayerJoinEvent e){
    136.         Player p = e.getPlayer();
    137.         Bukkit.broadcastMessage(ChatColor.GOLD + "##########");
    138.         Bukkit.broadcastMessage(ChatColor.AQUA + p.getName() + " ist Online!");
    139.         Bukkit.broadcastMessage(ChatColor.GOLD + "##########");
    140.         sclevel(p);
    141.     }
    142.    
    143. }
    144.  

    Ich glaube es könnte wegen den events sein, diese scheinen nicht aufgerufen zu werden
    Durch die Methode "sclevel(p)" müssten eigentlich sofort werte wie ang,vert,xp,xpn,xpg und ein paar andere gesetzt werden, aber die config bleibt leer und die broadcasts im "PlayerJoinEvent" werden auch nicht gezeigt...
     
    #1
  2. Inkemann
    Offline

    Inkemann

    Registriert seit:
    3. Mai 2015
    Beiträge:
    341
    Ort:
    Aachen
    Minecraft:
    Inkemann
    Unregistrierte Listener werden von Bukkit auch nicht angestoßen wenn Events feuern.
    Probier's mal mit
    Code (Text):
    1. this.getServer().getPluginManager().registerEvents(this, this);
    in deiner onEnable-Methode.
     
    #2
  3. Payno4
    Offline

    Payno4

    Registriert seit:
    12. Februar 2015
    Beiträge:
    117
    #Edit
    Diese Antwort nicht beachten , leider falsch :)
    Ich bin mir nicht sicher , aber ich würd's mal so versuchen :

    Oben hinzufügen :
    Code (Text):
    1.  
    2. private static main plugin;
    3.  
    4.     public static maingetPlugin(){
    5.  
    6.         return plugin;
    7.  
    8.     }
    9.  
    und dann :
    Code (Text):
    1.  
    2.     public void sclevel(Player p){
    3.  
    4.         main pl =main.getPlugin();
    5.  
    6.    
    7.  
    8.         int kills = this.getConfig().getInt("players." + p.getName() + ".kills");
    9.  
    10.         int level = 0;
    11.  
    12.         int xp = 0;
    13.  
    14.         xp += kills*20;
    15.  
    16.         int xpn = 0;
    17.  
    18.         int xpg = xp;
    19.  
    20.         while(xp >= xpn){
    21.  
    22.             level++;
    23.  
    24.             xp -= xpn;
    25.  
    26.             xpn += 100;
    27.  
    28.         }
    29.  
    30.         int ang = level * 2;
    31.  
    32.         int vert = level * 2;
    33.  
    34.         int leben = level * 10;
    35.  
    36.         p.setMaxHealth((double) leben);
    37.  
    38.         this.getConfig().set("players." + p.getName() + ".ang", ang);
    39.  
    40.         this.getConfig().set("players." + p.getName() + ".vert", vert);
    41.  
    42.         this.getConfig().set("players." + p.getName() + ".leben", leben);
    43.  
    44.         this.getConfig().set("players." + p.getName() + ".level", level);
    45.  
    46.         this.getConfig().set("players." + p.getName() + ".xp", xp);
    47.  
    48.         this.getConfig().set("players." + p.getName() + ".xpn", xpn);
    49.  
    50.         this.getConfig().set("players." + p.getName() + ".xpg", xpg);
    51.  
    52.         pl.saveConfig();
    53.  
    54.     }
    55.  

    Kann aber auch totaler Blödsinn sein :D einfach mal ausprobieren ob's geht :)
     
    #3
  4. Inkemann
    Offline

    Inkemann

    Registriert seit:
    3. Mai 2015
    Beiträge:
    341
    Ort:
    Aachen
    Minecraft:
    Inkemann
    @Payno4 No, just no. Ich mag gar nicht damit anfangen aufzuzählen was an diesem Code unlogisch ist.
     
    #4
  5. 2801MC
    Offline

    2801MC

    Registriert seit:
    15. August 2013
    Beiträge:
    77
    @Payno4 Das ist wirklich einfach nur unlogisch, was du da geschrieben hast.
    @Inkemann Danke, hab ich vergessen, jetzt gehts aber! :)
     
    #5
  6. Payno4
    Offline

    Payno4

    Registriert seit:
    12. Februar 2015
    Beiträge:
    117
    Ich hab ja geschrieben "kann aber auch totaler Blödsin sein" xD
     
    #6