/[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 1945 by torben, Thu Mar 21 19:09:02 2013 UTC
# Line 1  Line 1 
1  package dk.thoerup.bukkit.hoeruputils.secretdoor;  package dk.thoerup.bukkit.hoeruputils.secretdoor;
2    
3    
4  import org.bukkit.Effect;  import org.bukkit.Effect;
5  import org.bukkit.Location;  import org.bukkit.Location;
6  import org.bukkit.Material;  import org.bukkit.Material;
7  import org.bukkit.World;  import org.bukkit.World;
8    import org.bukkit.block.Block;
9  import org.bukkit.entity.Player;  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;  import org.bukkit.event.player.PlayerInteractEvent;
 import org.bukkit.event.player.PlayerListener;  
14  import org.bukkit.plugin.Plugin;  import org.bukkit.plugin.Plugin;
15    
16    
17    
18  public class DoorOpenListener extends PlayerListener{  
19    public class DoorOpenListener implements Listener{
20                    
21          DoorStorage store;          private DoorStorage store;
22                    
23          Plugin plugin;          private Plugin plugin;
24                    
25          public DoorOpenListener(DoorStorage store, Plugin plugin) {          public DoorOpenListener(DoorStorage store, Plugin plugin) {
26                  super();                  super();
# Line 23  public class DoorOpenListener extends Pl Line 28  public class DoorOpenListener extends Pl
28                  this.plugin = plugin;                  this.plugin = plugin;
29          }          }
30                    
31          @Override          @EventHandler
32          public void onPlayerInteract(PlayerInteractEvent event) {          public void onPlayerInteract(PlayerInteractEvent event) {
33    
34                  Player player = event.getPlayer();                  Player player = event.getPlayer();
# Line 42  public class DoorOpenListener extends Pl Line 47  public class DoorOpenListener extends Pl
47                          return;                          return;
48                  }                  }
49    
50                  final World world = player.getWorld();                  if (door.isPrivate() == true && !door.getOwner().equals(player.getName() ) ) {
51                  final Location loc = event.getClickedBlock().getLocation();                          return;
52                    }
53    
54                    openDoor(door, player,false );
55    
56                  door.open( player.getWorld() );          }
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);                  world.playEffect( loc, Effect.DOOR_TOGGLE, 0);
67    
68                  Runnable doorCloser = new Runnable() {                  Runnable doorCloser = new Runnable() {
69                          public void run() {                          public void run() {
70                                  door.close( world );                                  door.close( );
71                                  world.playEffect( loc, Effect.DOOR_TOGGLE, 0);                                  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                  player.getServer().getScheduler().scheduleSyncDelayedTask(plugin, doorCloser, 4*20);                  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  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.20