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

  ViewVC Help
Powered by ViewVC 1.1.20