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

Annotation 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 1768 - (hide annotations) (download)
Tue Apr 3 20:21:02 2012 UTC (12 years, 2 months ago) by torben
File size: 2029 byte(s)
Added SnitchingChest feature (still missing persistance)
Added offLine message functionality with persistance to mysql via JPA /Ebean
1 torben 1768 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     public class MessageWrapper implements Listener {
19    
20     EbeanServer server;
21     Plugin plugin;
22    
23    
24     public MessageWrapper(Plugin plugin, Runnable installer) {
25     this.plugin = plugin;
26     server = plugin.getDatabase();
27    
28     try {
29     server.find(MessageBean.class).findRowCount(); //probe
30     } catch (Exception e) {
31    
32     installer.run();
33     }
34    
35     }
36    
37     @EventHandler
38     public void onPlayerLogin(final PlayerLoginEvent event) {
39    
40     Runnable messagehandler = new Runnable() {
41     @Override
42     public void run() {
43     Player player = event.getPlayer();
44     List<MessageBean> beans = server.find( MessageBean.class)
45     .where()
46     .eq("player", player.getName() )
47     .eq("isread", 0)
48     .findList();
49    
50     for(MessageBean msg : beans) {
51     player.sendMessage( msg.getMessage() );
52     msg.setIsread(true);
53     server.save(msg);
54     }
55     }
56     };
57    
58     BukkitScheduler sched = plugin.getServer().getScheduler();
59     sched.scheduleSyncDelayedTask(plugin, messagehandler, 20*4);
60    
61     }
62    
63     public void sendMessage(OfflinePlayer player, String message) {
64     if (player.isOnline()) {
65     Player online = (Player) player;
66     online.sendMessage(message);
67     } else {
68     queueMessage(player.getName(), message);
69     }
70     }
71    
72     protected void queueMessage(String player, String message) {
73    
74     MessageBean msg = new MessageBean();
75     msg.setPlayer(player);
76     msg.setMessage(message);
77     msg.setCreatetimeNow();
78     try {
79     server.save(msg);
80     } catch (PersistenceException e) {
81     plugin.getLogger().log(Level.SEVERE, "MessageWrapper.queueMessage() failed:" + e.getMessage() );
82     }
83    
84    
85     }
86    
87     }

  ViewVC Help
Powered by ViewVC 1.1.20