6 |
|
|
7 |
import org.bukkit.block.Block; |
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.block.BlockBreakEvent; |
import org.bukkit.event.block.BlockBreakEvent; |
|
import org.bukkit.event.block.BlockListener; |
|
12 |
import org.bukkit.event.block.BlockRedstoneEvent; |
import org.bukkit.event.block.BlockRedstoneEvent; |
13 |
import org.bukkit.event.block.SignChangeEvent; |
import org.bukkit.event.block.SignChangeEvent; |
|
import org.bukkit.event.player.PlayerListener; |
|
14 |
import org.bukkit.plugin.Plugin; |
import org.bukkit.plugin.Plugin; |
15 |
|
|
16 |
|
|
17 |
public class DoorBlockListener extends BlockListener { |
|
18 |
|
public class DoorBlockListener implements Listener { |
19 |
|
|
20 |
|
|
21 |
private DoorStorage store; |
private DoorStorage store; |
33 |
handler = new DoorOpenListener(store, plugin); |
handler = new DoorOpenListener(store, plugin); |
34 |
} |
} |
35 |
|
|
36 |
public PlayerListener getPlayerListener() { |
public Listener getPlayerListener() { |
37 |
return handler; |
return handler; |
38 |
} |
} |
39 |
|
|
40 |
@Override |
@EventHandler |
41 |
public void onBlockBreak(BlockBreakEvent event) { |
public void onBlockBreak(BlockBreakEvent event) { |
42 |
Door door = store.findDoor(event.getBlock().getLocation() ); |
Door door = store.findDoor(event.getBlock().getLocation() ); |
43 |
if (door != null) { |
if (door != null) { |
44 |
|
|
45 |
Player player = event.getPlayer(); |
Player player = event.getPlayer(); |
46 |
if ( ! door.getOwner().equals( player.getName() )) { |
if ( ! door.getOwner().equals( player.getName() )) { |
47 |
|
player.sendMessage("Can not break secret door"); |
48 |
Player owner = player.getServer().getPlayer( door.getOwner() ); |
event.setCancelled(true); |
49 |
|
} else { |
50 |
if (owner != null) { |
player.sendMessage("Secret door broken"); |
51 |
owner.sendMessage("" + player.getName() + " broke one of your secret doors"); |
store.removeDoor(door); |
|
} |
|
52 |
} |
} |
|
player.sendMessage("Secret door broken"); |
|
|
store.removeDoor(door); |
|
53 |
} |
} |
54 |
} |
} |
55 |
|
|
82 |
|
|
83 |
} |
} |
84 |
|
|
85 |
@Override |
@EventHandler |
86 |
public void onBlockRedstoneChange(BlockRedstoneEvent event) { |
public void onBlockRedstoneChange(BlockRedstoneEvent event) { |
87 |
|
|
88 |
Block block = event.getBlock(); |
Block block = event.getBlock(); |
106 |
|
|
107 |
} |
} |
108 |
|
|
109 |
@Override |
@EventHandler |
110 |
public void onSignChange(SignChangeEvent event) { |
public void onSignChange(SignChangeEvent event) { |
111 |
|
|
112 |
Block sign = event.getBlock(); |
Block sign = event.getBlock(); |
118 |
|
|
119 |
String line0 = event.getLine(0).trim().toLowerCase(); |
String line0 = event.getLine(0).trim().toLowerCase(); |
120 |
String line1 = event.getLine(1).trim().toLowerCase(); |
String line1 = event.getLine(1).trim().toLowerCase(); |
121 |
|
String line2 = event.getLine(2).trim().toLowerCase(); |
122 |
|
|
123 |
int width = 2; |
int width = 2; |
124 |
int height = 2; |
int height = 2; |
125 |
|
|
126 |
|
boolean isPrivate = false; |
127 |
|
|
128 |
|
String owner = event.getPlayer().getName(); |
129 |
|
|
130 |
if (line0.equals("secretdoor") ) { |
if (line0.equals("secretdoor") ) { |
131 |
if ( ! line1.equals("")) { |
if ( ! line1.equals("")) { |
132 |
Pattern p = Pattern.compile("^[0-9]x[0-9]$"); |
Pattern p = Pattern.compile("^[0-9]x[0-9]$"); |
150 |
return; |
return; |
151 |
} |
} |
152 |
} |
} |
153 |
|
|
154 |
|
if( line2.equals("private") ) { |
155 |
|
isPrivate = true; |
156 |
|
} |
157 |
|
|
158 |
try { |
try { |
159 |
Door door = new Door(sign, width, height, store, event.getPlayer().getName() ); |
Door door = new Door(sign, width, height, store, owner, isPrivate ); |
160 |
|
|
161 |
store.addDoor(door); |
store.addDoor(door); |
162 |
|
|