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

Annotation of /miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/secretdoor/DoorBlockListener.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1533 - (hide annotations) (download)
Mon Jun 27 19:34:03 2011 UTC (12 years, 11 months ago) by torben
File size: 2193 byte(s)
add support for custom door sizes
1 torben 1530 package dk.thoerup.bukkit.hoeruputils.secretdoor;
2    
3    
4 torben 1533 import java.util.regex.Matcher;
5     import java.util.regex.Pattern;
6    
7 torben 1530 import org.bukkit.block.Block;
8     import org.bukkit.event.block.BlockBreakEvent;
9     import org.bukkit.event.block.BlockListener;
10     import org.bukkit.event.block.SignChangeEvent;
11     import org.bukkit.event.player.PlayerListener;
12     import org.bukkit.plugin.Plugin;
13    
14    
15     public class DoorBlockListener extends BlockListener {
16    
17    
18     DoorStorage store;
19     private DoorOpenListener handler;
20    
21     Plugin plugin;
22    
23     public DoorBlockListener(Plugin plugin) {
24     this.plugin = plugin;
25    
26     store = new DoorStorage( plugin );
27    
28     store.loadAll();
29    
30     handler = new DoorOpenListener(store, plugin);
31     }
32    
33     public PlayerListener getPlayerListener() {
34     return handler;
35     }
36    
37     @Override
38     public void onBlockBreak(BlockBreakEvent event) {
39     Door door = store.findDoor(event.getBlock().getLocation() );
40     if (door != null) {
41     event.getPlayer().sendMessage("Secret door broken");
42 torben 1532 store.removeDoor(door);
43 torben 1530 }
44     }
45    
46     @Override
47     public void onSignChange(SignChangeEvent event) {
48    
49     Block sign = event.getBlock();
50    
51     if (sign.getTypeId() == 63) {
52     // don't react on floor signs
53     return;
54     }
55 torben 1533
56     String line0 = event.getLine(0).trim().toLowerCase();
57     String line1 = event.getLine(1).trim().toLowerCase();
58    
59     int width = 2;
60     int height = 2;
61 torben 1530
62 torben 1533 if (line0.equals("secretdoor") ) {
63     if ( ! line1.equals("")) {
64     Pattern p = Pattern.compile("^[0-9]x[0-9]$");
65     Matcher m = p.matcher(line1);
66    
67     if ( !m.matches() ) {
68     event.getPlayer().sendMessage("The second line must be of the format [width]x[height]");
69     return;
70     }
71    
72     String parts[] = line1.split("x");
73     width = Integer.parseInt( parts[0] );
74     height = Integer.parseInt( parts[0] );
75    
76     if (width <1 || width>5) {
77     event.getPlayer().sendMessage("width must be between 1 and 5 (inclusive)");
78     return;
79     }
80     if (height <2 || height>5) {
81     event.getPlayer().sendMessage("height must be between 2 and 5 (inclusive)");
82     return;
83     }
84     }
85    
86     Door door = new Door(sign, width, height);
87 torben 1530
88     store.addDoor(door);
89    
90     event.getPlayer().sendMessage("Secret door created");
91    
92     sign.setTypeId(0);
93    
94    
95     }
96     }
97    
98     }

  ViewVC Help
Powered by ViewVC 1.1.20