/[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 1912 - (show annotations) (download)
Sun Jan 13 13:05:16 2013 UTC (11 years, 4 months ago) by torben
File size: 2574 byte(s)
First try at opening doors with passwords
1 package dk.thoerup.bukkit.hoeruputils.secretdoor;
2
3 import org.bukkit.Effect;
4 import org.bukkit.Location;
5 import org.bukkit.Material;
6 import org.bukkit.World;
7 import org.bukkit.block.Block;
8 import org.bukkit.entity.Player;
9 import org.bukkit.event.EventHandler;
10 import org.bukkit.event.Listener;
11 import org.bukkit.event.player.AsyncPlayerChatEvent;
12 import org.bukkit.event.player.PlayerInteractEvent;
13 import org.bukkit.plugin.Plugin;
14
15
16
17 public class DoorOpenListener implements Listener{
18
19 private DoorStorage store;
20
21 private Plugin plugin;
22
23 public DoorOpenListener(DoorStorage store, Plugin plugin) {
24 super();
25 this.store = store;
26 this.plugin = plugin;
27 }
28
29 @EventHandler
30 public void onPlayerInteract(PlayerInteractEvent event) {
31
32 Player player = event.getPlayer();
33
34 if ( player.getItemInHand().getType() != Material.AIR ) {
35 return;
36 }
37
38 if ( event.hasBlock() == false ) {
39 return;
40 }
41
42 final Door door = store.findDoor( event.getClickedBlock().getLocation() );
43
44 if (door == null) {
45 return;
46 }
47
48 if (door.isPrivate() == true && !door.getOwner().equals(player.getName() ) ) {
49 return;
50 }
51
52 openDoor(door, player);
53
54 }
55
56 private void openDoor(final Door door, Player player) {
57 final World world = player.getWorld();
58 //final Location loc = event.getClickedBlock().getLocation();
59 final Location loc = door.getLeftUpper();
60
61 door.open();
62
63 world.playEffect( loc, Effect.DOOR_TOGGLE, 0);
64
65 Runnable doorCloser = new Runnable() {
66 public void run() {
67 door.close( );
68 world.playEffect( loc, Effect.DOOR_TOGGLE, 0);
69 }
70 };
71
72 player.getServer().getScheduler().scheduleSyncDelayedTask(plugin, doorCloser, 4*20);
73 }
74
75 public void onPlayerChat(AsyncPlayerChatEvent evt) {
76 if (evt.isCancelled())
77 return;
78 Runnable r = new DooOpenOnChat( evt );
79 plugin.getServer().getScheduler().runTask(plugin, r); //force sync handling og this
80 }
81
82 class DooOpenOnChat implements Runnable {
83 AsyncPlayerChatEvent evt;
84 public DooOpenOnChat(AsyncPlayerChatEvent evt) {
85 this.evt = evt;
86 }
87
88 @Override
89 public void run() {
90 Player p = evt.getPlayer();
91 Block target = p.getTargetBlock(null, 40);
92
93 if (target == null || target.getType() == Material.AIR) {
94 return;
95 }
96
97 final Door door = store.findDoor( target.getLocation() );
98
99 if (door == null) {
100 return;
101 }
102
103 if (door.isPrivate() == true && !door.getOwner().equals(p.getName() ) ) {
104 return;
105 }
106
107 if (door.getPassword().equals( evt.getMessage() )); {
108 openDoor(door, p);
109 evt.setCancelled(true);
110 }
111 }
112
113 }
114 }

  ViewVC Help
Powered by ViewVC 1.1.20