[Minecraft Server Plugin] Problem mit der Config

12/30/2013 15:28 Stjubit#1
Hi e*pvpers!

Und zwar habe ich bei meinem Plugin das Problem, dass sich die config.yml immer automatisch leert!

Hier der Code von dem Plugin:
Code:
package tk.bukkit.gorok;

import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class Gorok extends JavaPlugin {
	
	public void onEnable()
	{
		loadConfig();
	}
	
	public void onDisable()
	{
		saveConfig();
	}
	
	@Override
	public boolean onCommand(CommandSender sender, Command cmd,
			String label, String[] args) {
		
		Player p=null;
		
		//Umwandlung Sender --> Player				
		if(sender instanceof Player)
		{
			p = (Player) sender;
		}
		
		FileConfiguration cfg=this.getConfig();
		
		if(cmd.getName().equalsIgnoreCase("lobby"))
		{
			if(p!=null&&p.hasPermission("gorok.lobby"))
			{
				float x=cfg.getInt("lobby.x");
				float y=cfg.getInt("lobby.y");
				float z=cfg.getInt("lobby.z");
				
				World welt = p.getWorld();
				Location ziel = new Location(welt, x,y,z);
				p.teleport(ziel);
				return true;
			}
			else
			{
				sender.sendMessage("Du hast keine Rechte oder der Befehl ist nur In-Game verfügbar");
				return true;
			}
		}
		
		if(cmd.getName().equalsIgnoreCase("leave"))
		{
			if(p!=null&&p.hasPermission("gorok.leave"))
			{
				float x=cfg.getInt("leave.x");
				float y=cfg.getInt("leave.y");
				float z=cfg.getInt("leave.z");
			
				World welt = p.getWorld();
				Location ziel = new Location(welt, x,y,z);
				p.teleport(ziel);
				return true;
			}
			else
			{
				sender.sendMessage("Du hast keine Rechte oder der Befehl ist nur In-Game verfügbar");
				return true;
			}
		}
		
		if(cmd.getName().equalsIgnoreCase("hub"))
		{
			if(p!=null&&p.hasPermission("gorok.hub"))
			{
				float x=cfg.getInt("hub.x");
				float y=cfg.getInt("hub.y");
				float z=cfg.getInt("hub.z");
			
				World welt = p.getWorld();
				Location ziel = new Location(welt, x,y,z);
				p.teleport(ziel);
				return true;
			}
			else
			{
				sender.sendMessage("Du hast keine Rechte oder der Befehl ist nur In-Game verfügbar");
				return true;
			}
		}
		
		if(cmd.getName().equalsIgnoreCase("setlobby"))
		{
			if(p!=null&&p.hasPermission("gorok.setlobby"))
			{
				if(args.length==3)
				{
					float x = Float.parseFloat(args[0]);
					float y = Float.parseFloat(args[1]);
					float z = Float.parseFloat(args[2]);
					p.sendMessage("x="+x+", y="+y+", z="+z);
					getConfig().set("lobby.x", x);
					getConfig().set("lobby.y", y);
					getConfig().set("lobby.z", z);
					saveConfig();
					p.sendMessage("Lobby-Point gesetzt!");
					saveConfig();
					return true;
				}
				else
				{
					p.sendMessage("/setlobby <x> <y> <z>");
					return true;
				}
			}
			else
			{
				sender.sendMessage("Du hast keine Rechte oder der Befehl ist nur In-Game verfügbar");
				return true;
			}
		}
		
		if(cmd.getName().equalsIgnoreCase("sethub"))
		{
			if(p!=null&&p.hasPermission("gorok.sethub"))
			{
				if(args.length==3)
				{
					float x = Float.parseFloat(args[0]);
					float y = Float.parseFloat(args[1]);
					float z = Float.parseFloat(args[2]);
					p.sendMessage("x="+x+", y="+y+", z="+z);
					getConfig().set("hub.x", x);
					getConfig().set("hub.y", y);
					getConfig().set("hub.z", z);
					saveConfig();
					p.sendMessage("Hub-Point gesetzt!");
					this.saveConfig();
					return true;
				}
				else
				{
					p.sendMessage("/sethub <x> <y> <z>");
					return true;
				}
			}
			else
			{
				sender.sendMessage("Du hast keine Rechte oder der Befehl ist nur In-Game verfügbar");
				return true;
			}
		}
		
		if(cmd.getName().equalsIgnoreCase("setleave"))
		{
			if(p!=null&&p.hasPermission("gorok.setleave"))
			{
				if(args.length==3)
				{
					float x = Float.parseFloat(args[0]);
					float y = Float.parseFloat(args[1]);
					float z = Float.parseFloat(args[2]);
					p.sendMessage("x="+x+", y="+y+", z="+z);
					getConfig().set("leave.x", x);
					getConfig().set("leave.y", y);
					getConfig().set("leave.z", z);
					saveConfig();
					p.sendMessage("Leave-Point gesetzt!");
					this.saveConfig();
					return true;
				}
				else
				{
					p.sendMessage("/setleave <x> <y> <z>");
					return true;
				}
			}
			else
			{
				sender.sendMessage("Du hast keine Rechte oder der Befehl ist nur In-Game verfügbar");
				return true;
			}
		}
		
		if(cmd.getName().equalsIgnoreCase("setpaintball"))
		{
			if(p!=null&&p.hasPermission("gorok.setpaintball"))
			{
				if(args.length==3)
				{
					float x = Float.parseFloat(args[0]);
					float y = Float.parseFloat(args[1]);
					float z = Float.parseFloat(args[2]);
					p.sendMessage("x="+x+", y="+y+", z="+z);
					getConfig().set("paintball.x", x);
					getConfig().set("paintball.y", y);
					getConfig().set("paintball.z", z);
					saveConfig();
					p.sendMessage("Paintball-Point gesetzt!");
					this.saveConfig();
					return true;
				}
				else
				{
					p.sendMessage("/setpaintball <x> <y> <z>");
					return true;
				}
			}
			else
			{
				sender.sendMessage("Du hast keine Rechte oder der Befehl ist nur In-Game verfügbar");
				return true;
			}
		}
		
		if(cmd.getName().equalsIgnoreCase("setsplegg"))
		{
			if(p!=null&&p.hasPermission("gorok.setsplegg"))
			{
				if(args.length==3)
				{
					float x = Float.parseFloat(args[0]);
					float y = Float.parseFloat(args[1]);
					float z = Float.parseFloat(args[2]);
					p.sendMessage("x="+x+", y="+y+", z="+z);
					getConfig().set("splegg.x", x);
					getConfig().set("splegg.y", y);
					getConfig().set("splegg.z", z);
					saveConfig();
					p.sendMessage("Splegg-Point gesetzt!");
					this.saveConfig();
					return true;
				}
				else
				{
					p.sendMessage("/setsplegg <x> <y> <z>");
					return true;
				}
			}
			else
			{
				sender.sendMessage("Du hast keine Rechte oder der Befehl ist nur In-Game verfügbar");
				return true;
			}
		}
		
		if(cmd.getName().equalsIgnoreCase("setspeedbattle"))
		{
			if(p!=null&&p.hasPermission("gorok.setspeedbattle"))
			{
				if(args.length==3)
				{
					float x = Float.parseFloat(args[0]);
					float y = Float.parseFloat(args[1]);
					float z = Float.parseFloat(args[2]);
					p.sendMessage("x="+x+", y="+y+", z="+z);
					getConfig().set("speedbattle.x", x);
					getConfig().set("speedbattle.y", y);
					getConfig().set("speedbattle.z", z);
					saveConfig();
					p.sendMessage("Speedbattle-Point gesetzt!");
					this.saveConfig();
					return true;
				}
				else
				{
					p.sendMessage("/setsplegg <x> <y> <z>");
					return true;
				}
			}
			else
			{
				sender.sendMessage("Du hast keine Rechte oder der Befehl ist nur In-Game verfügbar");
				return true;
			}
		}
		
		if(cmd.getName().equalsIgnoreCase("paintball"))
		{
			if(p!=null&&p.hasPermission("gorok.paintball"))
			{
				float x=cfg.getInt("paintball.x");
				float y=cfg.getInt("paintball.y");
				float z=cfg.getInt("paintball.z");
				
				World welt = p.getWorld();
				Location ziel = new Location(welt, x,y,z);
				p.teleport(ziel);
				return true;
			}
			else
			{
				sender.sendMessage("Du hast keine Rechte oder der Befehl ist nur In-Game verfügbar");
				return true;
			}
		}
		
		if(cmd.getName().equalsIgnoreCase("splegg"))
		{
			if(p!=null&&p.hasPermission("gorok.splegg"))
			{
				float x=cfg.getInt("splegg.x");
				float y=cfg.getInt("splegg.y");
				float z=cfg.getInt("splegg.z");
				
				World welt = p.getWorld();
				Location ziel = new Location(welt, x,y,z);
				p.teleport(ziel);
				return true;
			}
			else
			{
				sender.sendMessage("Du hast keine Rechte oder der Befehl ist nur In-Game verfügbar");
				return true;
			}
		}
		
		if(cmd.getName().equalsIgnoreCase("speedbattle"))
		{
			if(p!=null&&p.hasPermission("gorok.speedbattle"))
			{
				float x=cfg.getInt("speedbattle.x");
				float y=cfg.getInt("speedbattle.y");
				float z=cfg.getInt("speedbattle.z");
				
				World welt = p.getWorld();
				Location ziel = new Location(welt, x,y,z);
				p.teleport(ziel);
				return true;
			}
			else
			{
				sender.sendMessage("Du hast keine Rechte oder der Befehl ist nur In-Game verfügbar");
				return true;
			}
		}
		
		return false;
	}
	
	public void loadConfig()
	{
		this.getConfig().options().copyDefaults();
		this.saveConfig();
	}
	
}
Und der Code von der config.yml:
Code:
lobby:
  x: 0
  y: 0
  z: 0
leave:
  x: 0
  y: 0
  z: 0
hub:
  x: 0
  y: 0
  z: 0
paintball:
  x: 0
  y: 0
  z: 0
splegg:
  x: 0
  y: 0
  z: 0
speedbattle:
  x: 0
  y: 0
  z: 0
Und falls ihr ihn noch braucht, der Code von der plugin.yml:
Code:
name: Gorok
main: tk.bukkit.gorok.Gorok
version: 1.0
author: Stjubit
commands:
  lobby:
    usage: /lobby
    description: Teleportiert dich zur Lobby
    permission: gorok.lobby
  leave:
    usage: /leave
    description: Verlaesst das Spiel und teleportiert dich zum Spawn
    permission: gorok.leave
  hub:
    usage: /hub
    description: Teleportiert dich zum Hub
    permission: gorok.hub
  paintball:
    usage: /paintball
    description: Teleportiert dich zum Paintball
    permission: gorok.paintball
  splegg:
    usage: /splegg
    description: Teleportiert dich zum Splegg
    permission: gorok.splegg
  speedbattle:
    usage: /speedbattle
    description: Teleportiert dich zum Speedbattle
    permission: gorok.speedbattle
  setlobby:
    usage: /setlobby <x> <y> <z>
    description: Setzt den Punkt fuer /lobby
    permission: gorok.setlobby
  sethub:
    usage: /sethub <x> <y> <z>
    description: Setzt den Punkt fuer /hub
    permission: gorok.sethub
  setleave:
    usage: /setleave <x> <y> <z>
    description: Setzt den Punkt fuer /leave
    permission: gorok.setleave
  setpaintball:
    usage: /setpaintball <x> <y> <z>
    description: Setzt den Punkt fuer /paintball
    permission: gorok.setpaintball
  setsplegg:
    usage: /setsplegg <x> <y> <z>
    description: Setzt den Punkt fuer /splegg
    permission: gorok.setsplegg
  setspeedbattle:
    usage: /setspeedbattle <x> <y> <z>
    description: Setzt den Punkt fuer /speedbattle
    permission: gorok.setspeedbattle
permissions:
  gorok.*:
    description: Alle Commands zu Gorok
    children:
      gorok.lobby: true
      gorok.leave: true
      gorok.hub: true
      gorok.paintball: true
      gorok.speedbattle: true
      gorok.splegg: true
      gorok.setlobby: true
      gorok.setleave: true
      gorok.sethub: true
      gorok.setpaintball: true
      gorok.setspeedbattle: true
      gorok.setsplegg: true
  gorok.standard:
    description: Normale Commands wie /lobby
    children:
      gorok.lobby: true
      gorok.leave: true
      gorok.hub: true
      gorok.paintball: true
      gorok.speedbattle: true
      gorok.splegg: true
      gorok.setlobby: false
      gorok.setleave: false
      gorok.sethub: false
      gorok.setpaintball: false
      gorok.setspeedbattle: false
      gorok.setsplegg: false
Schon mal im voraus Danke für die Antworten!

Mfg,
Stjubit