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) { |
|
//System.out.println( event.getBlock().toString() ); |
|
88 |
|
|
89 |
Block block = event.getBlock(); |
Block block = event.getBlock(); |
90 |
|
|
91 |
|
//System.out.println( block.toString() + " / " + block.getTypeId() ); |
92 |
|
|
93 |
|
|
94 |
int x,y,z; |
int x,y,z; |
95 |
Block blocks[] = getAdjacentBlocks(block); |
Block blocks[] = getAdjacentBlocks(block); |
101 |
if (d != null) { |
if (d != null) { |
102 |
//System.out.println(" found door"); |
//System.out.println(" found door"); |
103 |
d.powerChange(block.getWorld(), event.getOldCurrent(), event.getNewCurrent() ); |
d.powerChange(block.getWorld(), event.getOldCurrent(), event.getNewCurrent() ); |
104 |
|
return; |
105 |
} |
} |
106 |
} |
} |
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 |
|
|