/[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 1912 - (hide 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 torben 1530 package dk.thoerup.bukkit.hoeruputils.secretdoor;
2    
3     import org.bukkit.Effect;
4     import org.bukkit.Location;
5 torben 1532 import org.bukkit.Material;
6 torben 1530 import org.bukkit.World;
7 torben 1912 import org.bukkit.block.Block;
8 torben 1530 import org.bukkit.entity.Player;
9 torben 1912 import org.bukkit.event.EventHandler;
10     import org.bukkit.event.Listener;
11     import org.bukkit.event.player.AsyncPlayerChatEvent;
12 torben 1530 import org.bukkit.event.player.PlayerInteractEvent;
13     import org.bukkit.plugin.Plugin;
14    
15    
16    
17 torben 1680 public class DoorOpenListener implements Listener{
18 torben 1530
19 torben 1538 private DoorStorage store;
20 torben 1530
21 torben 1538 private Plugin plugin;
22 torben 1530
23     public DoorOpenListener(DoorStorage store, Plugin plugin) {
24     super();
25     this.store = store;
26     this.plugin = plugin;
27     }
28    
29 torben 1680 @EventHandler
30 torben 1530 public void onPlayerInteract(PlayerInteractEvent event) {
31    
32     Player player = event.getPlayer();
33    
34 torben 1532 if ( player.getItemInHand().getType() != Material.AIR ) {
35 torben 1530 return;
36 torben 1532 }
37 torben 1530
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 torben 1605 if (door.isPrivate() == true && !door.getOwner().equals(player.getName() ) ) {
49     return;
50     }
51    
52 torben 1912 openDoor(door, player);
53 torben 1530
54 torben 1912 }
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 torben 1579 door.open();
62 torben 1530
63     world.playEffect( loc, Effect.DOOR_TOGGLE, 0);
64    
65     Runnable doorCloser = new Runnable() {
66     public void run() {
67 torben 1579 door.close( );
68 torben 1530 world.playEffect( loc, Effect.DOOR_TOGGLE, 0);
69     }
70     };
71    
72 torben 1912 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 torben 1530
88 torben 1912 @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 torben 1530 }
114     }

  ViewVC Help
Powered by ViewVC 1.1.20