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

Annotation of /miscJava/bukkit-minecraft-plugins/HoerupUtils/src/dk/thoerup/bukkit/hoeruputils/secretdoor/Door.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1530 - (hide annotations) (download)
Mon Jun 27 16:14:34 2011 UTC (12 years, 11 months ago) by torben
File size: 3536 byte(s)
Refactor secret door code to seperate classes
1 torben 1530 package dk.thoerup.bukkit.hoeruputils.secretdoor;
2    
3     import java.util.Map;
4    
5     import org.bukkit.Location;
6     import org.bukkit.Server;
7     import org.bukkit.World;
8     import org.bukkit.block.Block;
9    
10    
11    
12     class Door {
13     Location leftUpper;
14     Location rightUpper;
15     Location leftLower;
16     Location rightLower;
17    
18     int material;
19    
20     public Door(Block sign) {
21     leftUpper = sign.getLocation().clone();
22     rightUpper = sign.getLocation().clone();
23    
24     switch ( sign.getData() ) {
25     case 2: //facing east
26     leftUpper.setZ( leftUpper.getZ() + 1 );
27     rightUpper.setZ( rightUpper.getZ() + 1 );
28     rightUpper.setX( rightUpper.getX() - 1 );
29     break;
30     case 3: //facing west
31     leftUpper.setZ( leftUpper.getZ() - 1 );
32     rightUpper.setZ( rightUpper.getZ() - 1 );
33     rightUpper.setX( rightUpper.getX() + 1 );
34     break;
35     case 4: //facing north
36     leftUpper.setX( leftUpper.getX() + 1);
37     rightUpper.setX( rightUpper.getX() + 1);
38     rightUpper.setZ( rightUpper.getZ() + 1);
39     break;
40     case 5: //facing south
41     leftUpper.setX( leftUpper.getX() - 1);
42     rightUpper.setX( rightUpper.getX() - 1);
43     rightUpper.setZ( rightUpper.getZ() - 1);
44     break;
45     }
46    
47     material = sign.getWorld().getBlockAt( leftUpper ).getTypeId();
48    
49     leftLower = leftUpper.clone();
50     rightLower = rightUpper.clone();
51    
52     leftLower.setY( leftLower.getY() - 1);
53     rightLower.setY( rightLower.getY() - 1);
54     }
55    
56     public Door(String input, Server server) {
57     String parts[] = input.split(":");
58    
59     World w = server.getWorld( parts[0] );
60    
61     leftUpper = new Location(w, Integer.parseInt(parts[1]), Integer.parseInt(parts[2]), Integer.parseInt(parts[3]) );
62     rightUpper = new Location(w, Integer.parseInt(parts[4]), Integer.parseInt(parts[5]), Integer.parseInt(parts[6]) );
63     leftLower = new Location(w, Integer.parseInt(parts[7]), Integer.parseInt(parts[8]), Integer.parseInt(parts[9]) );
64     rightLower = new Location(w, Integer.parseInt(parts[10]), Integer.parseInt(parts[11]), Integer.parseInt(parts[12]) );
65     material = Integer.parseInt( parts[13] );
66     }
67    
68     public String toCsv() {
69     StringBuilder sb = new StringBuilder();
70     sb.append( leftUpper.getWorld().getName() );
71    
72     sb.append( ":" + leftUpper.getBlockX() );
73     sb.append( ":" + leftUpper.getBlockY() );
74     sb.append( ":" + leftUpper.getBlockZ() );
75    
76     sb.append( ":" + rightUpper.getBlockX() );
77     sb.append( ":" + rightUpper.getBlockY() );
78     sb.append( ":" + rightUpper.getBlockZ() );
79    
80    
81     sb.append( ":" + leftLower.getBlockX() );
82     sb.append( ":" + leftLower.getBlockY() );
83     sb.append( ":" + leftLower.getBlockZ() );
84    
85    
86     sb.append( ":" + rightLower.getBlockX() );
87     sb.append( ":" + rightLower.getBlockY() );
88     sb.append( ":" + rightLower.getBlockZ() );
89    
90     sb.append( ":" + material );
91    
92     return sb.toString();
93     }
94    
95    
96     public void registerMap(Map<Location,Door> map) {
97     map.put(leftUpper, this );
98     map.put(rightUpper, this );
99     map.put(leftLower, this );
100     map.put(rightLower, this );
101     }
102    
103     public void unregisterMap(Map<Location,Door> map) {
104     map.remove(leftUpper);
105     map.remove(rightUpper);
106     map.remove(leftLower);
107     map.remove(rightLower);
108     }
109    
110     public void open(World world) {
111     world.getBlockAt( leftUpper ).setTypeId( 0 );
112     world.getBlockAt( rightUpper ).setTypeId( 0 );
113     world.getBlockAt( leftLower ).setTypeId( 0 );
114     world.getBlockAt( rightLower ).setTypeId( 0 );
115     }
116    
117     public void close(World world) {
118     world.getBlockAt( leftUpper ).setTypeId( material );
119     world.getBlockAt( rightUpper ).setTypeId( material );
120     world.getBlockAt( leftLower ).setTypeId( material );
121     world.getBlockAt( rightLower ).setTypeId( material );
122     }
123    
124     }

  ViewVC Help
Powered by ViewVC 1.1.20