/[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 1530 by torben, Mon Jun 27 16:14:34 2011 UTC miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/secretdoor/DoorOpenListener.java revision 1912 by torben, Sun Jan 13 13:05:16 2013 UTC
# Line 2  package dk.thoerup.bukkit.hoeruputils.se Line 2  package dk.thoerup.bukkit.hoeruputils.se
2    
3  import org.bukkit.Effect;  import org.bukkit.Effect;
4  import org.bukkit.Location;  import org.bukkit.Location;
5    import org.bukkit.Material;
6  import org.bukkit.World;  import org.bukkit.World;
7    import org.bukkit.block.Block;
8  import org.bukkit.entity.Player;  import org.bukkit.entity.Player;
9    import org.bukkit.event.EventHandler;
10    import org.bukkit.event.Listener;
11    import org.bukkit.event.player.AsyncPlayerChatEvent;
12  import org.bukkit.event.player.PlayerInteractEvent;  import org.bukkit.event.player.PlayerInteractEvent;
 import org.bukkit.event.player.PlayerListener;  
13  import org.bukkit.plugin.Plugin;  import org.bukkit.plugin.Plugin;
14    
15    
16    
17  public class DoorOpenListener extends PlayerListener{  public class DoorOpenListener implements Listener{
18                    
19          DoorStorage store;          private DoorStorage store;
20                    
21          Plugin plugin;          private Plugin plugin;
22                    
23          public DoorOpenListener(DoorStorage store, Plugin plugin) {          public DoorOpenListener(DoorStorage store, Plugin plugin) {
24                  super();                  super();
# Line 22  public class DoorOpenListener extends Pl Line 26  public class DoorOpenListener extends Pl
26                  this.plugin = plugin;                  this.plugin = plugin;
27          }          }
28                    
29          @Override          @EventHandler
30          public void onPlayerInteract(PlayerInteractEvent event) {          public void onPlayerInteract(PlayerInteractEvent event) {
31    
32                  Player player = event.getPlayer();                  Player player = event.getPlayer();
33    
34                  /*if ( player.getItemInHand().getType() != Material.AIR ) {                  if ( player.getItemInHand().getType() != Material.AIR ) {
35                          return;                          return;
36                  }*/                  }
37    
38                  if ( event.hasBlock() == false ) {                  if ( event.hasBlock() == false ) {
39                          return;                          return;
# Line 41  public class DoorOpenListener extends Pl Line 45  public class DoorOpenListener extends Pl
45                          return;                          return;
46                  }                  }
47    
48                  final World world = player.getWorld();                  if (door.isPrivate() == true && !door.getOwner().equals(player.getName() ) ) {
49                  final Location loc = event.getClickedBlock().getLocation();                          return;
50                    }
51    
52                  door.open( player.getWorld() );                  openDoor(door, player);
53    
54            }
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                    door.open();
62    
63                  world.playEffect( loc, Effect.DOOR_TOGGLE, 0);                  world.playEffect( loc, Effect.DOOR_TOGGLE, 0);
64    
65                  Runnable doorCloser = new Runnable() {                  Runnable doorCloser = new Runnable() {
66                          public void run() {                          public void run() {
67                                  door.close( world );                                  door.close( );
68                                  world.playEffect( loc, Effect.DOOR_TOGGLE, 0);                                  world.playEffect( loc, Effect.DOOR_TOGGLE, 0);
69                          }                          }
70                  };                  };
71    
72                  player.getServer().getScheduler().scheduleSyncDelayedTask(plugin, doorCloser, 4*20);                  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    
88                    @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          }          }
114  }  }

Legend:
Removed from v.1530  
changed lines
  Added in v.1912

  ViewVC Help
Powered by ViewVC 1.1.20