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

  ViewVC Help
Powered by ViewVC 1.1.20