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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1530 - (show annotations) (download)
Mon Jun 27 16:14:34 2011 UTC (12 years, 10 months ago) by torben
File size: 3536 byte(s)
Refactor secret door code to seperate classes
1 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