/[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

miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/secretdoor/DoorBlockListener.java revision 1538 by torben, Wed Jun 29 18:16:51 2011 UTC miscJava/bukkit-minecraft-plugins/HoerupUtils/src/main/java/dk/thoerup/bukkit/hoeruputils/secretdoor/DoorBlockListener.java revision 2432 by torben, Mon Mar 9 13:55:54 2015 UTC
# Line 4  package dk.thoerup.bukkit.hoeruputils.se Line 4  package dk.thoerup.bukkit.hoeruputils.se
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;
13  import org.bukkit.event.block.BlockListener;  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;
# Line 31  public class DoorBlockListener extends B Line 34  public class DoorBlockListener extends B
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                                    event.setCancelled(true);
50                            } else {
51                                    player.sendMessage("Secret door broken");
52                                    store.removeDoor(door);
53                            }
54                    }
55            }
56    
57                                  Player owner = player.getServer().getPlayer( door.getOwner() );          private Block[] getAdjacentBlocks(Block block) {
58    /*
59                                  if (owner != null) {                  Block out[] = new Block[6];
60                                          owner.sendMessage("" + player.getName() + " broke one of your secret doors");  
61                    out[0] = block.getRelative(-1,0,0);
62                    out[1] = block.getRelative(1,0,0);
63    
64                    out[2] = block.getRelative(0,-1,0);
65                    out[3] = block.getRelative(0,1,0);
66    
67                    out[4] = block.getRelative(0,0,-1);
68                    out[5] = block.getRelative(0,0,1);
69    */
70    
71                    Block out[] = new Block[27];
72                    int count = 0;
73                    for (int x=-1; x<=1; x++) {
74                            for (int y=-1; y<=1; y++) {
75                                    for (int z=-1; z<=1; z++) {
76                                            out[count++] = block.getRelative(x,y,z);                
77                                  }                                  }
78                          }                          }
79                          player.sendMessage("Secret door broken");                          
                         store.removeDoor(door);  
80                  }                  }
81    
82                    return out;
83                    
84          }          }
85    
86          @Override          @EventHandler
87            public void onBlockRedstoneChange(BlockRedstoneEvent event) {
88                    
89                    Block block = event.getBlock();        
90    
91                    //System.out.println( block.toString() + " / " + block.getTypeId() );
92    
93    
94                    int x,y,z;
95                    Block blocks[] = getAdjacentBlocks(block);
96    
97                    for (int i=0; i<blocks.length; i++) {
98                            //System.out.println(" " + i + ">" + blocks[i].toString() );
99                            Door d = store.findDoor( blocks[i].getLocation() );
100    
101                            if (d != null) {
102                                    //System.out.println("  found door");
103                                    d.powerChange(block.getWorld(), event.getOldCurrent(), event.getNewCurrent() );
104                                    return;
105                            }
106                    }
107    
108            }
109    
110            @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]$");
# Line 81  public class DoorBlockListener extends B Line 142  public class DoorBlockListener extends B
142                                                                    
143                                  String parts[] = line1.split("x");                                  String parts[] = line1.split("x");
144                                  width = Integer.parseInt( parts[0] );                                  width = Integer.parseInt( parts[0] );
145                                  height = Integer.parseInt( parts[0] );                                  height = Integer.parseInt( parts[1] );
146                                                                    
147                                  if (width <1 || width>5) {                                  if (width <1 || width>8) {
148                                          event.getPlayer().sendMessage("width must be between 1 and 5 (inclusive)");                                          event.getPlayer().sendMessage("width must be between 1 and 8 (inclusive)");
149                                          return;                                          return;
150                                  }                                  }
151                                  if (height <2 || height>5) {                                  if (height <2 || height>5) {
# Line 92  public class DoorBlockListener extends B Line 153  public class DoorBlockListener extends B
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                          }                          }

Legend:
Removed from v.1538  
changed lines
  Added in v.2432

  ViewVC Help
Powered by ViewVC 1.1.20