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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1534 by torben, Mon Jun 27 19:43:33 2011 UTC revision 1680 by torben, Wed Jan 25 21:55:33 2012 UTC
# Line 5  import java.util.regex.Matcher; Line 5  import java.util.regex.Matcher;
5  import java.util.regex.Pattern;  import java.util.regex.Pattern;
6    
7  import org.bukkit.block.Block;  import org.bukkit.block.Block;
8    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;
12  import org.bukkit.event.block.BlockListener;  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    
 public class DoorBlockListener extends BlockListener {  
17    
18    public class DoorBlockListener implements Listener {
19    
20          DoorStorage store;  
21            private DoorStorage store;
22          private DoorOpenListener handler;          private DoorOpenListener handler;
23    
24          Plugin plugin;          private Plugin plugin;
25    
26          public DoorBlockListener(Plugin plugin) {          public DoorBlockListener(Plugin plugin) {
27                  this.plugin = plugin;                  this.plugin = plugin;
# Line 30  public class DoorBlockListener extends B Line 33  public class DoorBlockListener extends B
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                          event.getPlayer().sendMessage("Secret door broken");                          
45                          store.removeDoor(door);                          Player player = event.getPlayer();
46                            if ( ! door.getOwner().equals( player.getName() )) {
47                                    player.sendMessage("Can not break secret door");
48                                    event.setCancelled(true);
49                            } else {
50                                    player.sendMessage("Secret door broken");
51                                    store.removeDoor(door);
52                            }
53                  }                  }
54          }          }
55    
56          @Override          private Block[] getAdjacentBlocks(Block block) {
57    /*
58                    Block out[] = new Block[6];
59    
60                    out[0] = block.getRelative(-1,0,0);
61                    out[1] = block.getRelative(1,0,0);
62    
63                    out[2] = block.getRelative(0,-1,0);
64                    out[3] = block.getRelative(0,1,0);
65    
66                    out[4] = block.getRelative(0,0,-1);
67                    out[5] = block.getRelative(0,0,1);
68    */
69    
70                    Block out[] = new Block[27];
71                    int count = 0;
72                    for (int x=-1; x<=1; x++) {
73                            for (int y=-1; y<=1; y++) {
74                                    for (int z=-1; z<=1; z++) {
75                                            out[count++] = block.getRelative(x,y,z);                
76                                    }
77                            }
78                            
79                    }
80    
81                    return out;
82                    
83            }
84    
85            @EventHandler
86            public void onBlockRedstoneChange(BlockRedstoneEvent event) {
87                    
88                    Block block = event.getBlock();        
89    
90                    //System.out.println( block.toString() + " / " + block.getTypeId() );
91    
92    
93                    int x,y,z;
94                    Block blocks[] = getAdjacentBlocks(block);
95    
96                    for (int i=0; i<blocks.length; i++) {
97                            //System.out.println(" " + i + ">" + blocks[i].toString() );
98                            Door d = store.findDoor( blocks[i].getLocation() );
99    
100                            if (d != null) {
101                                    //System.out.println("  found door");
102                                    d.powerChange(block.getWorld(), event.getOldCurrent(), event.getNewCurrent() );
103                                    return;
104                            }
105                    }
106    
107            }
108    
109            @EventHandler
110          public void onSignChange(SignChangeEvent event) {          public void onSignChange(SignChangeEvent event) {
111    
112                  Block sign = event.getBlock();                  Block sign = event.getBlock();
# Line 55  public class DoorBlockListener extends B Line 118  public class DoorBlockListener extends B
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]$");
# Line 71  public class DoorBlockListener extends B Line 139  public class DoorBlockListener extends B
139                                                                    
140                                  String parts[] = line1.split("x");                                  String parts[] = line1.split("x");
141                                  width = Integer.parseInt( parts[0] );                                  width = Integer.parseInt( parts[0] );
142                                  height = Integer.parseInt( parts[0] );                                  height = Integer.parseInt( parts[1] );
143                                                                    
144                                  if (width <1 || width>5) {                                  if (width <1 || width>8) {
145                                          event.getPlayer().sendMessage("width must be between 1 and 5 (inclusive)");                                          event.getPlayer().sendMessage("width must be between 1 and 8 (inclusive)");
146                                          return;                                          return;
147                                  }                                  }
148                                  if (height <2 || height>5) {                                  if (height <2 || height>5) {
# Line 82  public class DoorBlockListener extends B Line 150  public class DoorBlockListener extends B
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);                                  Door door = new Door(sign, width, height, store, owner, isPrivate );
160    
161                                  store.addDoor(door);                                  store.addDoor(door);
162    

Legend:
Removed from v.1534  
changed lines
  Added in v.1680

  ViewVC Help
Powered by ViewVC 1.1.20