--- miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/HomeCommand.java 2011/08/24 18:45:40 1592 +++ miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/HomeCommand.java 2011/12/21 16:42:43 1666 @@ -1,6 +1,7 @@ package dk.thoerup.bukkit.hoeruputils; import java.io.File; +import java.io.IOException; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -10,21 +11,27 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; -import org.bukkit.util.config.Configuration; +import org.bukkit.configuration.file.YamlConfiguration; public class HomeCommand implements CommandExecutor { Plugin plugin; - Configuration config; + YamlConfiguration config; + + File file; public HomeCommand(Plugin plugin) { this.plugin = plugin; - File file = new File( plugin.getDataFolder(), "homes.yml"); + file = new File( plugin.getDataFolder(), "homes.yml"); - config = new Configuration( file ); - config.load(); + config = new YamlConfiguration(); + try { + config.load(file); + } catch (Exception e) { + System.out.println("[HoerupUtils] exception loading config file: " + e.getMessage() ); + } } @@ -34,12 +41,11 @@ if (!(sender instanceof Player)) { return false; } - Player p = (Player) sender; + final Player p = (Player) sender; String name = p.getName(); if ( command.getName().equals("home") ) { - config.load(); String worldName = config.getString( name + ".world"); if (worldName != null) { @@ -50,10 +56,21 @@ double z = config.getDouble( name + ".z", 0.0); World world = p.getServer().getWorld(worldName); + int blockX = (int) Math.floor(x); + int blockZ = (int) Math.floor(z); + world.loadChunk(blockX, blockZ); + + final Location loc = new Location( world, x, y, z, (float)yaw, (float)pitch); + + Runnable r = new Runnable() { + public void run() { + p.teleport(loc); + } + }; + int tickCount = 2; // 2 ticks = 100ms - Location loc = new Location( world, x, y, z, (float)yaw, (float)pitch); + p.getServer().getScheduler().scheduleSyncDelayedTask(plugin, r, tickCount); - p.teleport(loc); } else { p.sendMessage(ChatColor.YELLOW + "You haven't set a home yet!"); } @@ -61,15 +78,19 @@ if (command.getName().equals("sethome") ) { Location loc = p.getLocation(); - config.setProperty( name + ".yaw", loc.getYaw() ); - config.setProperty( name + ".pitch", loc.getPitch() ); - config.setProperty( name + ".world", loc.getWorld().getName() ); - config.setProperty( name + ".x", loc.getX() ); - config.setProperty( name + ".y", loc.getY() ); - config.setProperty( name + ".z", loc.getZ() ); - - config.save(); - p.sendMessage(ChatColor.YELLOW + "home is set"); + config.set( name + ".yaw", loc.getYaw() ); + config.set( name + ".pitch", loc.getPitch() ); + config.set( name + ".world", loc.getWorld().getName() ); + config.set( name + ".x", loc.getX() ); + config.set( name + ".y", loc.getY() ); + config.set( name + ".z", loc.getZ() ); + + try { + config.save(file); + p.sendMessage(ChatColor.YELLOW + "home is set"); + } catch (IOException e) { + System.out.println("[HoerupUtils] : /sethome save threw an IO exception: " + e.getMessage() ); + } } return true;