/[projects]/miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/RespawnHandler.java
ViewVC logotype

Contents of /miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/RespawnHandler.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1238 - (show annotations) (download)
Tue Mar 22 18:39:02 2011 UTC (13 years, 1 month ago) by torben
File size: 3644 byte(s)
Broadcast message on death instead of on respawn + load messages from txt file
1 package dk.thoerup.bukkit.hoeruputils;
2
3
4 import java.io.File;
5 import java.io.RandomAccessFile;
6 import java.util.ArrayList;
7 import java.util.List;
8 import java.util.Random;
9
10 import org.bukkit.ChatColor;
11 import org.bukkit.Server;
12 import org.bukkit.entity.Player;
13 import org.bukkit.event.entity.EntityDeathEvent;
14 import org.bukkit.event.entity.EntityListener;
15 import org.bukkit.event.player.PlayerListener;
16 import org.bukkit.event.player.PlayerRespawnEvent;
17 import org.bukkit.inventory.ItemStack;
18 import org.bukkit.plugin.Plugin;
19
20 public class RespawnHandler extends PlayerListener{
21
22
23
24 Plugin plugin;
25 public RespawnHandler(Plugin plugin) {
26 this.plugin = plugin;
27 }
28
29 public static class PlayerDeathListener extends EntityListener {
30 List<String> msgs = new ArrayList<String>();
31 Random rand = new Random();
32
33 public PlayerDeathListener(File dataFolder) {
34 if (!dataFolder.exists()) {
35 dataFolder.mkdir();
36 }
37
38 try {
39 File msgfile = new File( dataFolder.getAbsolutePath() + File.separator + "deaths.txt");
40 if (msgfile.exists()) {
41 RandomAccessFile raf = new RandomAccessFile(msgfile,"r");
42
43
44 String line;
45 while ( (line=raf.readLine()) != null) {
46
47 line = line.trim();
48 if (line.startsWith("#")) {
49 continue;
50 }
51 if (line.length() > 0) {
52 msgs.add(line);
53 }
54 }
55 raf.close();
56
57 } else {
58 String defaultMsg = "is pushing up the daisies";
59
60 RandomAccessFile raf = new RandomAccessFile(msgfile,"rw");
61 raf.writeBytes(defaultMsg);
62 raf.close();
63 msgs.add(defaultMsg);
64 }
65 } catch (Exception e) {
66 System.out.println("PlayerDeathListener failed to handle file: " + e.toString() );
67 }
68 System.out.println("HoerupUtils loaded " + msgs.size() + " death messages");
69 }
70
71 @Override
72 public void onEntityDeath(EntityDeathEvent event) {
73 super.onEntityDeath(event);
74 if (event.getEntity() instanceof Player) {
75 Player player = (Player) event.getEntity();
76 String msg = msgs.get( rand.nextInt(msgs.size()) );
77
78 player.getServer().broadcastMessage( "" + ChatColor.YELLOW + player.getName() + " " + msg);
79 }
80 }
81
82 }
83
84 class DelayedRespawnHandler implements Runnable {
85
86
87 private Player player;
88 public DelayedRespawnHandler(Player player) {
89 this.player = player;
90 }
91
92 @Override
93 public void run() {
94
95 if (player.isOnline()) {
96
97 /* This doesn't work yet
98 PlayerInventory inv = player.getInventory();
99 inv.addItem( new ItemStack(50,16) ); //torches
100 inv.addItem( new ItemStack(271,1)); //tools
101 inv.addItem( new ItemStack(272,1));
102 inv.addItem( new ItemStack(273,1));
103
104 inv.setChestplate( new ItemStack(299) );
105 player.updateInventory(); //what comes instead of this ??
106 */
107
108
109 player.getWorld().dropItem(player.getLocation(), new ItemStack(50,16) );
110
111 player.getWorld().dropItem(player.getLocation(), new ItemStack(272,1) );
112 player.getWorld().dropItem(player.getLocation(), new ItemStack(273,1) );
113 player.getWorld().dropItem(player.getLocation(), new ItemStack(274,1) );
114
115
116 player.getWorld().dropItem(player.getLocation(), new ItemStack(299,1) );
117
118 player.sendMessage("You have been given a basic care-package");
119 } else {
120 player.sendMessage("You have are not online !?!");
121 }
122 }
123
124 }
125
126 @Override
127 public void onPlayerRespawn(PlayerRespawnEvent event) {
128 super.onPlayerRespawn(event);
129
130 Player player = event.getPlayer();
131 Server server = player.getServer();
132
133 server.getScheduler().scheduleSyncDelayedTask(plugin, new DelayedRespawnHandler(player), 1*20);
134
135 }
136
137 }

  ViewVC Help
Powered by ViewVC 1.1.20