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

  ViewVC Help
Powered by ViewVC 1.1.20