/[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 1538 - (hide annotations) (download)
Wed Jun 29 18:16:51 2011 UTC (12 years, 11 months ago) by torben
File size: 2685 byte(s)
encapsulation
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 torben 1537 import org.bukkit.entity.Player;
9 torben 1530 import org.bukkit.event.block.BlockBreakEvent;
10     import org.bukkit.event.block.BlockListener;
11     import org.bukkit.event.block.SignChangeEvent;
12     import org.bukkit.event.player.PlayerListener;
13     import org.bukkit.plugin.Plugin;
14    
15    
16     public class DoorBlockListener extends BlockListener {
17    
18    
19 torben 1538 private DoorStorage store;
20 torben 1530 private DoorOpenListener handler;
21    
22 torben 1538 private Plugin plugin;
23 torben 1530
24     public DoorBlockListener(Plugin plugin) {
25     this.plugin = plugin;
26    
27     store = new DoorStorage( plugin );
28    
29     store.loadAll();
30    
31     handler = new DoorOpenListener(store, plugin);
32     }
33    
34     public PlayerListener getPlayerListener() {
35     return handler;
36     }
37    
38     @Override
39     public void onBlockBreak(BlockBreakEvent event) {
40     Door door = store.findDoor(event.getBlock().getLocation() );
41     if (door != null) {
42 torben 1537 Player player = event.getPlayer();
43 torben 1538 if ( ! door.getOwner().equals( player.getName() )) {
44 torben 1537
45 torben 1538 Player owner = player.getServer().getPlayer( door.getOwner() );
46    
47 torben 1537 if (owner != null) {
48     owner.sendMessage("" + player.getName() + " broke one of your secret doors");
49     }
50     }
51     player.sendMessage("Secret door broken");
52 torben 1532 store.removeDoor(door);
53 torben 1530 }
54     }
55    
56     @Override
57     public void onSignChange(SignChangeEvent event) {
58    
59     Block sign = event.getBlock();
60    
61     if (sign.getTypeId() == 63) {
62     // don't react on floor signs
63     return;
64     }
65 torben 1533
66     String line0 = event.getLine(0).trim().toLowerCase();
67     String line1 = event.getLine(1).trim().toLowerCase();
68    
69     int width = 2;
70     int height = 2;
71 torben 1530
72 torben 1533 if (line0.equals("secretdoor") ) {
73     if ( ! line1.equals("")) {
74     Pattern p = Pattern.compile("^[0-9]x[0-9]$");
75     Matcher m = p.matcher(line1);
76    
77     if ( !m.matches() ) {
78     event.getPlayer().sendMessage("The second line must be of the format [width]x[height]");
79     return;
80     }
81    
82     String parts[] = line1.split("x");
83     width = Integer.parseInt( parts[0] );
84     height = Integer.parseInt( parts[0] );
85    
86     if (width <1 || width>5) {
87     event.getPlayer().sendMessage("width must be between 1 and 5 (inclusive)");
88     return;
89     }
90     if (height <2 || height>5) {
91     event.getPlayer().sendMessage("height must be between 2 and 5 (inclusive)");
92     return;
93     }
94     }
95 torben 1534 try {
96 torben 1536 Door door = new Door(sign, width, height, store, event.getPlayer().getName() );
97 torben 1530
98 torben 1534 store.addDoor(door);
99 torben 1530
100 torben 1534 event.getPlayer().sendMessage("Secret door created");
101 torben 1530
102 torben 1534 sign.setTypeId(0);
103     } catch (ConflictingDoorException e) {
104     event.getPlayer().sendMessage("Door conflicts whith another secretdoor");
105     }
106 torben 1530
107    
108     }
109     }
110    
111     }

  ViewVC Help
Powered by ViewVC 1.1.20