--- miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/RespawnHandler.java 2011/03/20 16:59:53 1237 +++ miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/RespawnHandler.java 2011/03/22 18:39:02 1238 @@ -1,8 +1,17 @@ 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; @@ -10,10 +19,67 @@ 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 { @@ -25,8 +91,6 @@ @Override public void run() { - player.getServer().broadcastMessage( "" + player.getName() + " respawned after a gruesome death"); - if (player.isOnline()) {