4 |
import java.util.regex.Matcher; |
import java.util.regex.Matcher; |
5 |
import java.util.regex.Pattern; |
import java.util.regex.Pattern; |
6 |
|
|
7 |
|
import org.bukkit.Material; |
8 |
import org.bukkit.block.Block; |
import org.bukkit.block.Block; |
9 |
import org.bukkit.entity.Player; |
import org.bukkit.entity.Player; |
10 |
|
import org.bukkit.event.EventHandler; |
11 |
|
import org.bukkit.event.Listener; |
12 |
import org.bukkit.event.block.BlockBreakEvent; |
import org.bukkit.event.block.BlockBreakEvent; |
|
import org.bukkit.event.block.BlockListener; |
|
13 |
import org.bukkit.event.block.BlockRedstoneEvent; |
import org.bukkit.event.block.BlockRedstoneEvent; |
14 |
import org.bukkit.event.block.SignChangeEvent; |
import org.bukkit.event.block.SignChangeEvent; |
|
import org.bukkit.event.player.PlayerListener; |
|
15 |
import org.bukkit.plugin.Plugin; |
import org.bukkit.plugin.Plugin; |
16 |
|
|
17 |
|
|
18 |
public class DoorBlockListener extends BlockListener { |
|
19 |
|
public class DoorBlockListener implements Listener { |
20 |
|
|
21 |
|
|
22 |
private DoorStorage store; |
private DoorStorage store; |
34 |
handler = new DoorOpenListener(store, plugin); |
handler = new DoorOpenListener(store, plugin); |
35 |
} |
} |
36 |
|
|
37 |
public PlayerListener getPlayerListener() { |
public Listener getPlayerListener() { |
38 |
return handler; |
return handler; |
39 |
} |
} |
40 |
|
|
41 |
@Override |
@EventHandler |
42 |
public void onBlockBreak(BlockBreakEvent event) { |
public void onBlockBreak(BlockBreakEvent event) { |
43 |
Door door = store.findDoor(event.getBlock().getLocation() ); |
Door door = store.findDoor(event.getBlock().getLocation() ); |
44 |
if (door != null) { |
if (door != null) { |
45 |
|
|
46 |
Player player = event.getPlayer(); |
Player player = event.getPlayer(); |
47 |
if ( ! door.getOwner().equals( player.getName() )) { |
if ( ! door.getOwner().equals( player.getName() )) { |
48 |
|
player.sendMessage("Can not break secret door"); |
49 |
Player owner = player.getServer().getPlayer( door.getOwner() ); |
event.setCancelled(true); |
50 |
|
} else { |
51 |
if (owner != null) { |
player.sendMessage("Secret door broken"); |
52 |
owner.sendMessage("" + player.getName() + " broke one of your secret doors"); |
store.removeDoor(door); |
|
} |
|
53 |
} |
} |
|
player.sendMessage("Secret door broken"); |
|
|
store.removeDoor(door); |
|
54 |
} |
} |
55 |
} |
} |
56 |
|
|
83 |
|
|
84 |
} |
} |
85 |
|
|
86 |
@Override |
@EventHandler |
87 |
public void onBlockRedstoneChange(BlockRedstoneEvent event) { |
public void onBlockRedstoneChange(BlockRedstoneEvent event) { |
88 |
|
|
89 |
Block block = event.getBlock(); |
Block block = event.getBlock(); |
107 |
|
|
108 |
} |
} |
109 |
|
|
110 |
@Override |
@EventHandler |
111 |
public void onSignChange(SignChangeEvent event) { |
public void onSignChange(SignChangeEvent event) { |
112 |
|
|
113 |
Block sign = event.getBlock(); |
Block sign = event.getBlock(); |
114 |
|
|
115 |
if (sign.getTypeId() == 63) { |
if ( sign.getType().equals( Material.SIGN) ) { |
116 |
// don't react on floor signs |
// don't react on floor signs |
117 |
return; |
return; |
118 |
} |
} |
119 |
|
|
120 |
String line0 = event.getLine(0).trim().toLowerCase(); |
String line0 = event.getLine(0).trim().toLowerCase(); |
121 |
String line1 = event.getLine(1).trim().toLowerCase(); |
String line1 = event.getLine(1).trim().toLowerCase(); |
122 |
|
String line2 = event.getLine(2).trim().toLowerCase(); |
123 |
|
String line3 = event.getLine(3).trim(); |
124 |
|
|
125 |
int width = 2; |
int width = 2; |
126 |
int height = 2; |
int height = 2; |
127 |
|
|
128 |
|
boolean isPrivate = false; |
129 |
|
String password = ""; |
130 |
|
|
131 |
|
String owner = event.getPlayer().getName(); |
132 |
|
|
133 |
if (line0.equals("secretdoor") ) { |
if (line0.equals("secretdoor") ) { |
134 |
if ( ! line1.equals("")) { |
if ( ! line1.equals("")) { |
135 |
Pattern p = Pattern.compile("^[0-9]x[0-9]$"); |
Pattern p = Pattern.compile("^[0-9]x[0-9]$"); |
153 |
return; |
return; |
154 |
} |
} |
155 |
} |
} |
156 |
|
|
157 |
|
if( line2.equals("private") ) { |
158 |
|
isPrivate = true; |
159 |
|
} |
160 |
|
password = line3; |
161 |
|
|
162 |
try { |
try { |
163 |
Door door = new Door(sign, width, height, store, event.getPlayer().getName() ); |
Door door = new Door(sign, width, height, store, owner, isPrivate, password); |
164 |
|
|
165 |
store.addDoor(door); |
store.addDoor(door); |
166 |
|
|
167 |
event.getPlayer().sendMessage("Secret door created"); |
event.getPlayer().sendMessage("Secret door created"); |
168 |
|
|
169 |
sign.setTypeId(0); |
sign.setType( Material.AIR ); |
170 |
} catch (ConflictingDoorException e) { |
} catch (ConflictingDoorException e) { |
171 |
event.getPlayer().sendMessage("Door conflicts whith another secretdoor"); |
event.getPlayer().sendMessage("Door conflicts whith another secretdoor"); |
172 |
} |
} |