package dk.thoerup.bukkit.hoeruputils; import java.io.File; import java.io.RandomAccessFile; import java.util.ArrayList; import java.util.List; import java.util.Random; import org.bukkit.ChatColor; import org.bukkit.Server; import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityListener; import org.bukkit.event.player.PlayerListener; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.Plugin; public class RespawnHandler extends PlayerListener{ Plugin plugin; public RespawnHandler(Plugin plugin) { this.plugin = plugin; } public static class PlayerDeathListener extends EntityListener { List msgs = new ArrayList(); Random rand = new Random(); public PlayerDeathListener(File dataFolder) { if (!dataFolder.exists()) { dataFolder.mkdir(); } try { File msgfile = new File( dataFolder.getAbsolutePath() + File.separator + "deaths.txt"); if (msgfile.exists()) { RandomAccessFile raf = new RandomAccessFile(msgfile,"r"); String line; while ( (line=raf.readLine()) != null) { line = line.trim(); if (line.startsWith("#")) { continue; } if (line.length() > 0) { msgs.add(line); } } raf.close(); } else { String defaultMsg = "is pushing up the daisies"; RandomAccessFile raf = new RandomAccessFile(msgfile,"rw"); raf.writeBytes(defaultMsg); raf.close(); msgs.add(defaultMsg); } } catch (Exception e) { System.out.println("PlayerDeathListener failed to handle file: " + e.toString() ); } System.out.println("HoerupUtils loaded " + msgs.size() + " death messages"); } @Override public void onEntityDeath(EntityDeathEvent event) { super.onEntityDeath(event); if (event.getEntity() instanceof Player) { Player player = (Player) event.getEntity(); String msg = msgs.get( rand.nextInt(msgs.size()) ); player.getServer().broadcastMessage( "" + ChatColor.YELLOW + player.getName() + " " + msg); } } } class DelayedRespawnHandler implements Runnable { private Player player; public DelayedRespawnHandler(Player player) { this.player = player; } @Override public void run() { if (player.isOnline()) { /* This doesn't work yet PlayerInventory inv = player.getInventory(); inv.addItem( new ItemStack(50,16) ); //torches inv.addItem( new ItemStack(271,1)); //tools inv.addItem( new ItemStack(272,1)); inv.addItem( new ItemStack(273,1)); inv.setChestplate( new ItemStack(299) ); player.updateInventory(); //what comes instead of this ?? */ player.getWorld().dropItem(player.getLocation(), new ItemStack(50,16) ); player.getWorld().dropItem(player.getLocation(), new ItemStack(272,1) ); player.getWorld().dropItem(player.getLocation(), new ItemStack(273,1) ); player.getWorld().dropItem(player.getLocation(), new ItemStack(274,1) ); player.getWorld().dropItem(player.getLocation(), new ItemStack(299,1) ); player.sendMessage("You have been given a basic care-package"); } else { player.sendMessage("You have are not online !?!"); } } } @Override public void onPlayerRespawn(PlayerRespawnEvent event) { super.onPlayerRespawn(event); Player player = event.getPlayer(); Server server = player.getServer(); server.getScheduler().scheduleSyncDelayedTask(plugin, new DelayedRespawnHandler(player), 1*20); } }