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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1541 - (show annotations) (download)
Thu Jun 30 18:37:43 2011 UTC (12 years, 10 months ago) by torben
File size: 2685 byte(s)
fix a bug related to custom size and increase max width
1 package dk.thoerup.bukkit.hoeruputils.secretdoor;
2
3
4 import java.util.regex.Matcher;
5 import java.util.regex.Pattern;
6
7 import org.bukkit.block.Block;
8 import org.bukkit.entity.Player;
9 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 private DoorStorage store;
20 private DoorOpenListener handler;
21
22 private Plugin plugin;
23
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 Player player = event.getPlayer();
43 if ( ! door.getOwner().equals( player.getName() )) {
44
45 Player owner = player.getServer().getPlayer( door.getOwner() );
46
47 if (owner != null) {
48 owner.sendMessage("" + player.getName() + " broke one of your secret doors");
49 }
50 }
51 player.sendMessage("Secret door broken");
52 store.removeDoor(door);
53 }
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
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
72 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[1] );
85
86 if (width <1 || width>8) {
87 event.getPlayer().sendMessage("width must be between 1 and 8 (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 try {
96 Door door = new Door(sign, width, height, store, event.getPlayer().getName() );
97
98 store.addDoor(door);
99
100 event.getPlayer().sendMessage("Secret door created");
101
102 sign.setTypeId(0);
103 } catch (ConflictingDoorException e) {
104 event.getPlayer().sendMessage("Door conflicts whith another secretdoor");
105 }
106
107
108 }
109 }
110
111 }

  ViewVC Help
Powered by ViewVC 1.1.20