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

Contents of /miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/message/MessageWrapper.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1803 - (show annotations) (download)
Mon May 28 14:32:53 2012 UTC (11 years, 11 months ago) by torben
File size: 2192 byte(s)
offline messages should also register the sender
1 package dk.thoerup.bukkit.hoeruputils.message;
2
3 import java.util.List;
4 import java.util.logging.Level;
5
6 import javax.persistence.PersistenceException;
7
8 import org.bukkit.OfflinePlayer;
9 import org.bukkit.entity.Player;
10 import org.bukkit.event.EventHandler;
11 import org.bukkit.event.Listener;
12 import org.bukkit.event.player.PlayerLoginEvent;
13 import org.bukkit.plugin.Plugin;
14 import org.bukkit.scheduler.BukkitScheduler;
15
16 import com.avaje.ebean.EbeanServer;
17
18 import java.sql.Timestamp;
19
20 public class MessageWrapper implements Listener {
21
22 EbeanServer server;
23 Plugin plugin;
24
25
26 public MessageWrapper(Plugin plugin, Runnable installer) {
27 this.plugin = plugin;
28 server = plugin.getDatabase();
29
30 try {
31 server.find(MessageBean.class).findRowCount(); //probe
32 } catch (Exception e) {
33
34 installer.run();
35 }
36
37 }
38
39 @EventHandler
40 public void onPlayerLogin(final PlayerLoginEvent event) {
41 final Player player = event.getPlayer();
42
43 Runnable messagehandler = new Runnable() {
44 @Override
45 public void run() {
46 List<MessageBean> beans = server.find( MessageBean.class)
47 .where()
48 .eq("player", player.getName() )
49 .eq("isread", 0)
50 .findList();
51
52 for(MessageBean msg : beans) {
53 player.sendMessage( msg.getMessage() );
54 msg.setIsread(true);
55 msg.setReadtime( new Timestamp(System.currentTimeMillis()) );
56 server.save(msg);
57 }
58 }
59 };
60
61 BukkitScheduler sched = plugin.getServer().getScheduler();
62 sched.scheduleSyncDelayedTask(plugin, messagehandler, 20*4);
63
64 }
65
66 public void sendMessage(String from, OfflinePlayer player, String message) {
67 if (player.isOnline()) {
68 Player online = (Player) player;
69 online.sendMessage(message);
70 } else {
71 queueMessage(from, player.getName(), message);
72 }
73 }
74
75 protected void queueMessage(String from, String player, String message) {
76
77 MessageBean msg = new MessageBean();
78 msg.setFromplayer(from);
79 msg.setPlayer(player);
80 msg.setMessage(message);
81 msg.setCreatetimeNow();;
82 try {
83 server.save(msg);
84 } catch (PersistenceException e) {
85 plugin.getLogger().log(Level.SEVERE, "MessageWrapper.queueMessage() failed:" + e.getMessage() );
86 }
87
88
89 }
90
91 }

  ViewVC Help
Powered by ViewVC 1.1.20