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.
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...
Ich habe das Problem, dass die Config nicht gespeichert wird.
Code:
package de.skycraft.levelsystem;
import java.io.IOException;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class scls extends JavaPlugin implements Listener {
public void onEnable(){
this.reloadConfig();
}
public void sc(){
this.saveConfig();
}
public void sclevel(Player p){
int kills = this.getConfig().getInt("players." + p.getName() + ".kills");
int level = 0;
int xp = 0;
xp += kills*20;
int xpn = 0;
int xpg = xp;
while(xp >= xpn){
level++;
xp -= xpn;
xpn += 100;
}
int ang = level * 2;
int vert = level * 2;
int leben = level * 10;
p.setMaxHealth((double) leben);
this.getConfig().set("players." + p.getName() + ".ang", ang);
this.getConfig().set("players." + p.getName() + ".vert", vert);
this.getConfig().set("players." + p.getName() + ".leben", leben);
this.getConfig().set("players." + p.getName() + ".level", level);
this.getConfig().set("players." + p.getName() + ".xp", xp);
this.getConfig().set("players." + p.getName() + ".xpn", xpn);
this.getConfig().set("players." + p.getName() + ".xpg", xpg);
sc();
}
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
if(sender instanceof Player){
Player p = (Player) sender;
if(cmd.getName().equalsIgnoreCase("scinfo")){
if(args.length == 0){
int death = this.getConfig().getInt("players." + p.getName() + ".death");
int kills = this.getConfig().getInt("players." + p.getName() + ".kills");
double kdr = 0;
int ang = this.getConfig().getInt("players." + p.getName() + ".ang");
int vert = this.getConfig().getInt("players." + p.getName() + ".vert");
int xp = this.getConfig().getInt("players." + p.getName() + ".xp");
int xpn = this.getConfig().getInt("players." + p.getName() + ".xpn");
int xpg = this.getConfig().getInt("players." + p.getName() + ".xpg");
int level = this.getConfig().getInt("players." + p.getName() + ".level");
int leben = this.getConfig().getInt("players." + p.getName() + ".leben");
p.sendMessage(ChatColor.AQUA + "Deine Kills: " + kills);
p.sendMessage(ChatColor.AQUA + "Deine Tode: " + death);
p.sendMessage(ChatColor.AQUA + "Deine KDR: " + kdr);
p.sendMessage(ChatColor.AQUA + "Dein Angriffswert: " + ang);
p.sendMessage(ChatColor.AQUA + "Dein Verteidigungswert: " + vert);
p.sendMessage(ChatColor.AQUA + "Deine EXP:/n- Gesammt: " + xpg + "/n- Zum nächstem Level: " + xp + "/" + xpn);
p.sendMessage(ChatColor.AQUA + "Dein Level: " + level);
p.sendMessage(ChatColor.AQUA + "Deine Leben: " + p.getHealth() + "/" + leben);
} else {
int death = this.getConfig().getInt("players." + args[0] + ".death");
int kills = this.getConfig().getInt("players." + args[0] + ".kills");
double kdr = 0;
int ang = this.getConfig().getInt("players." + args[0] + ".ang");
int vert = this.getConfig().getInt("players." + args[0] + ".vert");
int xp = this.getConfig().getInt("players." + args[0] + ".xp");
int xpn = this.getConfig().getInt("players." + args[0] + ".xpn");
int xpg = this.getConfig().getInt("players." + args[0] + ".xpg");
int level = this.getConfig().getInt("players." + args[0] + ".level");
int leben = this.getConfig().getInt("players." + args[0] + ".leben");
p.sendMessage(ChatColor.AQUA + args[0] + "'s Kills: " + kills);
p.sendMessage(ChatColor.AQUA + args[0] + "'s Tode: " + death);
p.sendMessage(ChatColor.AQUA + args[0] + "'s KDR: " + kdr);
p.sendMessage(ChatColor.AQUA + args[0] + "'s Angriffswert: " + ang);
p.sendMessage(ChatColor.AQUA + args[0] + "'s Verteidigungswert: " + vert);
p.sendMessage(ChatColor.AQUA + args[0] + "'s EXP:/n- Gesammt: " + xpg + "/n- Zum nächstem Level: " + xp + "/" + xpn);
p.sendMessage(ChatColor.AQUA + args[0] + "'s Level: " + level);
p.sendMessage(ChatColor.AQUA + args[0] + "'s Leben: " + p.getHealth() + "/" + leben);
}
}
}
return true;
}
@EventHandler
public void onPlayerDeath(PlayerDeathEvent e){
Player p = e.getEntity();
Player k = p.getKiller();
if(p instanceof Player && k instanceof Player){
int death = this.getConfig().getInt("players." + p.getName() + ".death");
int kills = this.getConfig().getInt("players." + k.getName() + ".kills");
death++;
kills++;
this.getConfig().set("players." + p.getName() + ".death", death);
this.getConfig().set("players." + k.getName() + ".kills", kills);
sc();
sclevel(p);
sclevel(k);
}
}
@EventHandler
public void onAttack(EntityDamageByEntityEvent e){
if(e.getEntity() instanceof Player && e.getDamager() instanceof Player){
Player p = (Player) e.getEntity();
Player d = (Player) e.getDamager();
int ang = this.getConfig().getInt("players." + d.getName() + ".ang");
int vert = this.getConfig().getInt("players." + p.getName() + ".vert");
float angmulti = 1.0f;
float vertmulti = 1.0f;
float schaden = (ang * angmulti)/(vert * vertmulti);
e.setDamage(schaden);
sclevel(p);
sclevel(d);
}
}
@EventHandler
public void onJoin(PlayerJoinEvent e){
Player p = e.getPlayer();
Bukkit.broadcastMessage(ChatColor.GOLD + "##########");
Bukkit.broadcastMessage(ChatColor.AQUA + p.getName() + " ist Online!");
Bukkit.broadcastMessage(ChatColor.GOLD + "##########");
sclevel(p);
}
}
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...