package dk.thoerup.bukkit.creativeworld; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.configuration.*; public class TeleportCommand implements CommandExecutor { CreativeMain plugin; public TeleportCommand(CreativeMain plugin) { this.plugin = plugin; } @Override public boolean onCommand(final CommandSender sender, Command command, String label, String[] args) { if (!(sender instanceof Player)) { // it's not a console command return false; } Configuration config = plugin.getConfig(); Player p = (Player) sender; if (command.getName().equalsIgnoreCase("creative")) { if (p.getWorld().getName().equalsIgnoreCase("creative")) { p.sendMessage(ChatColor.YELLOW + "You are already in creative"); } else { Location old = p.getLocation(); config.set( p.getName() + ".loc.survival.x", old.getX() ); config.set( p.getName() + ".loc.survival.y", old.getY() ); config.set( p.getName() + ".loc.survival.z", old.getZ() ); config.set( p.getName() + ".loc.survival.yaw", old.getYaw() ); config.set( p.getName() + ".loc.survival.pitch", old.getPitch() ); config.set( p.getName() + ".loc.survival.world", old.getWorld().getName() ); World creative = sender.getServer().getWorld("creative"); double creativeX = config.getDouble( p.getName() + ".loc.creative.x", -1.0); double creativeY = config.getDouble( p.getName() + ".loc.creative.y", -1.0); double creativeZ = config.getDouble( p.getName() + ".loc.creative.z", -1.0); double creativeYaw = config.getDouble( p.getName() + ".loc.creative.yaw", -1.0); double creativePitch = config.getDouble( p.getName() + ".loc.creative.pitch", -1.0); Location loc; if ( creativeY == -1) { loc = creative.getSpawnLocation(); } else { loc = new Location(creative, creativeX, creativeY, creativeZ, (float) creativeYaw, (float) creativePitch); } p.teleport( loc ); } } else { if (!p.getWorld().getName().equalsIgnoreCase("creative")) { p.sendMessage(ChatColor.YELLOW + "You are already in survival"); } else { Location old = p.getLocation(); config.set( p.getName() + ".loc.creative.x", old.getX() ); config.set( p.getName() + ".loc.creative.y", old.getY() ); config.set( p.getName() + ".loc.creative.z", old.getZ() ); config.set( p.getName() + ".loc.creative.yaw", old.getYaw() ); config.set( p.getName() + ".loc.creative.pitch", old.getPitch() ); double survivalX = config.getDouble( p.getName() + ".loc.survival.x", -1.0); double survivalY = config.getDouble( p.getName() + ".loc.survival.y", -1.0); double survivalZ = config.getDouble( p.getName() + ".loc.survival.z", -1.0); double survivalYaw = config.getDouble( p.getName() + ".loc.survival.yaw", -1.0); double survivalPitch = config.getDouble( p.getName() + ".loc.survival.pitch", -1.0); String survivalWorld = config.getString( p.getName() + ".loc.survival.world"); Location loc; if (survivalY == -1) { World world = sender.getServer().getWorld("world"); loc = world.getSpawnLocation(); } else { World world = sender.getServer().getWorld(survivalWorld); loc = new Location(world, survivalX, survivalY, survivalZ, (float)survivalYaw, (float)survivalPitch); } p.teleport( loc ); } } plugin.saveConfig(); return true; } }