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

Contents 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 - (show annotations) (download)
Thu Mar 21 19:09:02 2013 UTC (11 years, 1 month ago) by torben
File size: 2785 byte(s)
Clean up imports
1 package dk.thoerup.bukkit.hoeruputils.secretdoor;
2
3
4 import org.bukkit.Effect;
5 import org.bukkit.Location;
6 import org.bukkit.Material;
7 import org.bukkit.World;
8 import org.bukkit.block.Block;
9 import org.bukkit.entity.Player;
10 import org.bukkit.event.EventHandler;
11 import org.bukkit.event.Listener;
12 import org.bukkit.event.player.AsyncPlayerChatEvent;
13 import org.bukkit.event.player.PlayerInteractEvent;
14 import org.bukkit.plugin.Plugin;
15
16
17
18
19 public class DoorOpenListener implements Listener{
20
21 private DoorStorage store;
22
23 private Plugin plugin;
24
25 public DoorOpenListener(DoorStorage store, Plugin plugin) {
26 super();
27 this.store = store;
28 this.plugin = plugin;
29 }
30
31 @EventHandler
32 public void onPlayerInteract(PlayerInteractEvent event) {
33
34 Player player = event.getPlayer();
35
36 if ( player.getItemInHand().getType() != Material.AIR ) {
37 return;
38 }
39
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 if (door.isPrivate() == true && !door.getOwner().equals(player.getName() ) ) {
51 return;
52 }
53
54 openDoor(door, player,false );
55
56 }
57
58 private void openDoor(final Door door, Player player, boolean longDelay ) {
59 final World world = player.getWorld();
60
61 //final Location loc = event.getClickedBlock().getLocation();
62 final Location loc = door.getLeftUpper();
63
64 door.open();
65
66 world.playEffect( loc, Effect.DOOR_TOGGLE, 0);
67
68 Runnable doorCloser = new Runnable() {
69 public void run() {
70 door.close( );
71 world.playEffect( loc, Effect.DOOR_TOGGLE, 0);
72 }
73 };
74
75 int delay = (longDelay == true) ? 8*20 : 4*20;
76
77 player.getServer().getScheduler().scheduleSyncDelayedTask(plugin, doorCloser, delay);
78
79 }
80
81
82 @EventHandler
83 public void onPlayerChat(AsyncPlayerChatEvent evt) {
84 if (evt.isCancelled())
85 return;
86
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 }
95
96 class DooOpenOnChat implements Runnable {
97 AsyncPlayerChatEvent evt;
98 public DooOpenOnChat(AsyncPlayerChatEvent evt) {
99 this.evt = evt;
100 }
101
102
103 @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 if (door.getPassword().equals( evt.getMessage() )) {
123 openDoor(door, p, true);
124 evt.setCancelled(true);
125 }
126 }
127 }
128 }

  ViewVC Help
Powered by ViewVC 1.1.20