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

Legend:
Removed from v.1538  
changed lines
  Added in v.2429

  ViewVC Help
Powered by ViewVC 1.1.20