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

Annotation of /miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/secretdoor/DoorOpenListener.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1945 - (hide annotations) (download)
Thu Mar 21 19:09:02 2013 UTC (11 years, 2 months ago) by torben
File size: 2785 byte(s)
Clean up imports
1 torben 1530 package dk.thoerup.bukkit.hoeruputils.secretdoor;
2    
3 torben 1913
4 torben 1530 import org.bukkit.Effect;
5     import org.bukkit.Location;
6 torben 1532 import org.bukkit.Material;
7 torben 1530 import org.bukkit.World;
8 torben 1912 import org.bukkit.block.Block;
9 torben 1530 import org.bukkit.entity.Player;
10 torben 1912 import org.bukkit.event.EventHandler;
11     import org.bukkit.event.Listener;
12     import org.bukkit.event.player.AsyncPlayerChatEvent;
13 torben 1530 import org.bukkit.event.player.PlayerInteractEvent;
14     import org.bukkit.plugin.Plugin;
15    
16    
17    
18 torben 1913
19 torben 1680 public class DoorOpenListener implements Listener{
20 torben 1530
21 torben 1538 private DoorStorage store;
22 torben 1530
23 torben 1538 private Plugin plugin;
24 torben 1530
25     public DoorOpenListener(DoorStorage store, Plugin plugin) {
26     super();
27     this.store = store;
28     this.plugin = plugin;
29     }
30    
31 torben 1680 @EventHandler
32 torben 1530 public void onPlayerInteract(PlayerInteractEvent event) {
33    
34     Player player = event.getPlayer();
35    
36 torben 1532 if ( player.getItemInHand().getType() != Material.AIR ) {
37 torben 1530 return;
38 torben 1532 }
39 torben 1530
40     if ( event.hasBlock() == false ) {
41     return;
42     }
43    
44     final Door door = store.findDoor( event.getClickedBlock().getLocation() );
45    
46     if (door == null) {
47     return;
48     }
49    
50 torben 1605 if (door.isPrivate() == true && !door.getOwner().equals(player.getName() ) ) {
51     return;
52     }
53    
54 torben 1913 openDoor(door, player,false );
55 torben 1530
56 torben 1912 }
57    
58 torben 1913 private void openDoor(final Door door, Player player, boolean longDelay ) {
59 torben 1912 final World world = player.getWorld();
60 torben 1913
61 torben 1912 //final Location loc = event.getClickedBlock().getLocation();
62     final Location loc = door.getLeftUpper();
63    
64 torben 1579 door.open();
65 torben 1530
66     world.playEffect( loc, Effect.DOOR_TOGGLE, 0);
67    
68     Runnable doorCloser = new Runnable() {
69     public void run() {
70 torben 1579 door.close( );
71 torben 1530 world.playEffect( loc, Effect.DOOR_TOGGLE, 0);
72     }
73     };
74 torben 1913
75     int delay = (longDelay == true) ? 8*20 : 4*20;
76 torben 1530
77 torben 1913 player.getServer().getScheduler().scheduleSyncDelayedTask(plugin, doorCloser, delay);
78    
79 torben 1912 }
80    
81 torben 1913
82     @EventHandler
83 torben 1912 public void onPlayerChat(AsyncPlayerChatEvent evt) {
84     if (evt.isCancelled())
85     return;
86 torben 1913
87     String parts[] = evt.getMessage().split(" ");
88     if (parts.length == 1) {
89     Runnable r = new DooOpenOnChat( evt );
90     r.run();
91     //plugin.getServer().getScheduler().runTask(plugin, r); //force sync handling of this
92     }
93    
94 torben 1912 }
95    
96     class DooOpenOnChat implements Runnable {
97     AsyncPlayerChatEvent evt;
98     public DooOpenOnChat(AsyncPlayerChatEvent evt) {
99     this.evt = evt;
100     }
101 torben 1913
102 torben 1530
103 torben 1912 @Override
104     public void run() {
105     Player p = evt.getPlayer();
106     Block target = p.getTargetBlock(null, 40);
107    
108     if (target == null || target.getType() == Material.AIR) {
109     return;
110     }
111    
112     final Door door = store.findDoor( target.getLocation() );
113    
114     if (door == null) {
115     return;
116     }
117    
118     if (door.isPrivate() == true && !door.getOwner().equals(p.getName() ) ) {
119     return;
120     }
121    
122 torben 1913 if (door.getPassword().equals( evt.getMessage() )) {
123     openDoor(door, p, true);
124 torben 1912 evt.setCancelled(true);
125     }
126 torben 1913 }
127 torben 1530 }
128     }

  ViewVC Help
Powered by ViewVC 1.1.20