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

Diff of /miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/secretdoor/DoorOpenListener.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/secretdoor/DoorOpenListener.java revision 1532 by torben, Mon Jun 27 18:10:05 2011 UTC miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/secretdoor/DoorOpenListener.java revision 1913 by torben, Sun Jan 13 15:39:59 2013 UTC
# Line 1  Line 1 
1  package dk.thoerup.bukkit.hoeruputils.secretdoor;  package dk.thoerup.bukkit.hoeruputils.secretdoor;
2    
3    import java.util.Set;
4    
5  import org.bukkit.Effect;  import org.bukkit.Effect;
6  import org.bukkit.Location;  import org.bukkit.Location;
7  import org.bukkit.Material;  import org.bukkit.Material;
8  import org.bukkit.World;  import org.bukkit.World;
9    import org.bukkit.block.Block;
10  import org.bukkit.entity.Player;  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.PlayerChatEvent;
15  import org.bukkit.event.player.PlayerInteractEvent;  import org.bukkit.event.player.PlayerInteractEvent;
 import org.bukkit.event.player.PlayerListener;  
16  import org.bukkit.plugin.Plugin;  import org.bukkit.plugin.Plugin;
17    
18    import com.google.common.base.Ascii;
19    
20    
21    
22  public class DoorOpenListener extends PlayerListener{  public class DoorOpenListener implements Listener{
23                    
24          DoorStorage store;          private DoorStorage store;
25                    
26          Plugin plugin;          private Plugin plugin;
27                    
28          public DoorOpenListener(DoorStorage store, Plugin plugin) {          public DoorOpenListener(DoorStorage store, Plugin plugin) {
29                  super();                  super();
# Line 23  public class DoorOpenListener extends Pl Line 31  public class DoorOpenListener extends Pl
31                  this.plugin = plugin;                  this.plugin = plugin;
32          }          }
33                    
34          @Override          @EventHandler
35          public void onPlayerInteract(PlayerInteractEvent event) {          public void onPlayerInteract(PlayerInteractEvent event) {
36    
37                  Player player = event.getPlayer();                  Player player = event.getPlayer();
# Line 42  public class DoorOpenListener extends Pl Line 50  public class DoorOpenListener extends Pl
50                          return;                          return;
51                  }                  }
52    
53                  final World world = player.getWorld();                  if (door.isPrivate() == true && !door.getOwner().equals(player.getName() ) ) {
54                  final Location loc = event.getClickedBlock().getLocation();                          return;
55                    }
56    
57                    openDoor(door, player,false );
58    
59                  door.open( player.getWorld() );          }
60            
61            private void openDoor(final Door door, Player player, boolean longDelay ) {
62                    final World world = player.getWorld();          
63                    
64                    //final Location loc = event.getClickedBlock().getLocation();
65                    final Location loc = door.getLeftUpper();
66    
67                    door.open();
68    
69                  world.playEffect( loc, Effect.DOOR_TOGGLE, 0);                  world.playEffect( loc, Effect.DOOR_TOGGLE, 0);
70    
71                  Runnable doorCloser = new Runnable() {                  Runnable doorCloser = new Runnable() {
72                          public void run() {                          public void run() {
73                                  door.close( world );                                  door.close( );
74                                  world.playEffect( loc, Effect.DOOR_TOGGLE, 0);                                  world.playEffect( loc, Effect.DOOR_TOGGLE, 0);
75                          }                          }
76                  };                  };
77                    
78                    int delay = (longDelay == true) ? 8*20 : 4*20;
79    
80                    player.getServer().getScheduler().scheduleSyncDelayedTask(plugin, doorCloser, delay);
81                    
82            }
83            
84            
85            @EventHandler
86            public void onPlayerChat(AsyncPlayerChatEvent evt) {
87                    if (evt.isCancelled())
88                            return;
89    
90                  player.getServer().getScheduler().scheduleSyncDelayedTask(plugin, doorCloser, 4*20);                  String parts[] = evt.getMessage().split(" ");
91                    if (parts.length == 1) {                        
92                            Runnable r = new DooOpenOnChat( evt );
93                            r.run();
94                            //plugin.getServer().getScheduler().runTask(plugin, r); //force sync handling of this
95                    }
96                    
97            }
98            
99            class DooOpenOnChat implements Runnable {
100                    AsyncPlayerChatEvent evt;
101                    public DooOpenOnChat(AsyncPlayerChatEvent evt) {
102                            this.evt = evt;                
103                    }
104                    
105    
106                    @Override
107                    public void run() {
108                            Player p = evt.getPlayer();
109                            Block target = p.getTargetBlock(null, 40);
110                            
111                            if (target == null || target.getType() == Material.AIR) {
112                                    return;
113                            }
114                            
115                            final Door door = store.findDoor( target.getLocation() );
116                            
117                            if (door == null) {
118                                    return;
119                            }
120                            
121                            if (door.isPrivate() == true && !door.getOwner().equals(p.getName() ) ) {
122                                    return;
123                            }                      
124                            
125                            if (door.getPassword().equals(  evt.getMessage() )) {
126                                    openDoor(door, p, true);
127                                    evt.setCancelled(true);
128                            }
129                    }              
130          }          }
131  }  }

Legend:
Removed from v.1532  
changed lines
  Added in v.1913

  ViewVC Help
Powered by ViewVC 1.1.20