1 package asia.tcrs.ccnp.chemicraftnext.core.debug;
\r
2 import java.util.Random;
\r
4 import net.minecraft.world.World;
\r
6 public class SetBlockSupport
\r
9 static Random rand = new Random();
\r
12 * X方向に線状にBlockを配置します。
\r
13 * Directionが0の場合、特殊な計算式で
\r
14 * +,-方向:loop-1の長さになります。
\r
19 * @param Block 配置するBlock
\r
20 * @param meta 配置するMetadata
\r
22 * @param Direction 方向(+方向:1,-方向:-1,中心から-+の方向:0)
\r
25 public static Object lineX(World par1World,int X,int Y,int Z,int Block,int meta,int Length,int Direction)
\r
28 Object DataBox=null;
\r
29 for(loop2=0;loop2 < Length;loop2++)
\r
34 DataBox = par1World.setBlock(X, Y, Z, Block, meta, 0x02);
\r
37 DataBox = par1World.setBlock(X-(Length-1)+loop2,Y,Z,Block,meta, 0x02);
\r
40 DataBox = par1World.setBlock(X+loop2, Y, Z, Block,meta, 0x02);
\r
48 * Y方向に線状にBlockを配置します。
\r
49 * Directionが0の場合、特殊な計算式で
\r
50 * +,-方向:loop-1の長さになります。
\r
55 * @param Block 配置するBlock
\r
56 * @param meta 配置するMetadata
\r
58 * @param Direction 方向(+方向:1,-方向:-1,中心から-+の方向:0)
\r
61 public static Object lineY(World par1World,int X,int Y,int Z,int Block,int meta,int Length,int Direction)
\r
64 Object DataBox=null;
\r
65 for(loop2=0;loop2 < Length;loop2++)
\r
70 DataBox = par1World.setBlock(X, Y-loop2, Z, Block,meta, 0x02);
\r
73 DataBox = par1World.setBlock(X,Y-(Length-1)+loop2,Z,Block,meta, 0x02);
\r
76 DataBox = par1World.setBlock(X, Y+loop2, Z, Block,meta, 0x02);
\r
84 * Z方向に線状にBlockを配置します。
\r
85 * Directionが0の場合、特殊な計算式で
\r
86 * +,-方向:loop-1の長さになります。
\r
91 * @param Block 配置するBlock
\r
92 * @param meta 配置するMetadata
\r
94 * @param Direction 方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
97 public static Object lineZ(World par1World,int X,int Y,int Z,int Block,int meta,int Length,int Direction)
\r
100 Object DataBox=null;
\r
101 for(loop2=0;loop2 < Length;loop2++)
\r
106 DataBox = par1World.setBlock(X, Y, Z-loop2, Block,meta, 0x02);
\r
109 DataBox = par1World.setBlock(X,Y,Z-(Length-1)+loop2,Block,meta, 0x02);
\r
112 DataBox = par1World.setBlock(X, Y, Z+loop2, Block,meta, 0x02);
\r
120 * XY方向に線状にBlockを配置します。
\r
121 * Directionが0の場合、特殊な計算式で
\r
122 * +,-方向:loop-1の長さになります。
\r
127 * @param Block 配置するBlock
\r
128 * @param meta 配置するMetadata
\r
129 * @param XLength X方向の長さ
\r
130 * @param YLength Y方向の長さ
\r
131 * @param XDirection X方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
132 * @param YDirection Y方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
135 public static Object lineXY(World par1World,int X,int Y,int Z,int Block,int meta,int XLength,int YLength,int XDirection,int YDirection)
\r
137 Object DataBox=null;
\r
138 DataBox = lineX(par1World,X,Y,Z,Block,meta,XLength,XDirection);
\r
139 DataBox = lineY(par1World,X,Y,Z,Block,YLength,meta,YDirection);
\r
144 * XZ方向に線状にBlockを配置します。
\r
145 * Directionが0の場合、特殊な計算式で
\r
146 * +,-方向:loop-1の長さになります。
\r
151 * @param Block 配置するBlock
\r
152 * @param meta 配置するMetadata
\r
153 * @param XLength X方向の長さ
\r
154 * @param ZLength Y方向の長さ
\r
155 * @param XDirection X方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
156 * @param ZDirection Z方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
159 public static Object lineXZ(World par1World,int X,int Y,int Z,int Block,int meta,int XLength,int ZLength,int XDirection,int ZDirection)
\r
161 Object DataBox=null;
\r
162 DataBox = lineX(par1World,X,Y,Z,Block,meta,XLength,XDirection);
\r
163 DataBox = lineZ(par1World,X,Y,Z,Block,meta,ZLength,ZDirection);
\r
168 * YZ方向に線状にBlockを配置します。
\r
169 * Directionが0の場合、特殊な計算式で
\r
170 * +,-方向:loop-1の長さになります。
\r
175 * @param Block 配置するBlock
\r
176 * @param meta 配置するMetadata
\r
177 * @param YLength X方向の長さ
\r
178 * @param ZLength Y方向の長さ
\r
179 * @param YDirection Y方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
180 * @param ZDirection Z方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
183 public static Object lineYZ(World par1World,int X,int Y,int Z,int Block,int meta,int YLength,int ZLength,int YDirection,int ZDirection)
\r
185 Object DataBox=null;
\r
186 DataBox = lineY(par1World,X,Y,Z,Block,meta,YLength,YDirection);
\r
187 DataBox = lineZ(par1World,X,Y,Z,Block,meta,ZLength,ZDirection);
\r
192 * XYZ方向に線状にBlockを配置します。
\r
193 * Directionが0の場合、特殊な計算式で
\r
194 * +,-方向:loop-1の長さになります。
\r
199 * @param Block 配置するBlock
\r
200 * @param meta 配置するMetadata
\r
201 * @param XLength X方向の長さ
\r
202 * @param YLength Y方向の長さ
\r
203 * @param ZLength Z方向の長さ
\r
204 * @param XDirection X方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
205 * @param YDirection Y方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
206 * @param ZDirection Z方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
209 public static Object lineXYZ(World par1World,int X,int Y,int Z,int Block,int meta,int XLength,int YLength,int ZLength,int XDirection,int YDirection,int ZDirection)
\r
211 Object DataBox=null;
\r
212 DataBox = lineX(par1World,X,Y,Z,Block,meta,XLength,XDirection);
\r
213 DataBox = lineY(par1World,X,Y,Z,Block,meta,YLength,YDirection);
\r
214 DataBox = lineZ(par1World,X,Y,Z,Block,meta,ZLength,ZDirection);
\r
220 * Directionは1で固定です。
\r
225 * @param Block 配置するBlock
\r
226 * @param meta 配置するMetadata
\r
231 public static Object wallX(World par1World,int X,int Y,int Z,int Block,int meta,int Length,int height)
\r
233 Object DataBox = null;
\r
234 for(int loop = 0;loop < Length;loop++){
\r
235 lineY(par1World, X - (Length/2) + loop, Y, Z, Block,meta, height, 1);
\r
242 * Directionは1で固定です。
\r
247 * @param Block 配置するBlock
\r
248 * @param meta 配置するMetadata
\r
253 public static Object wallZ(World par1World,int X,int Y,int Z,int Block,int meta,int Length,int height)
\r
255 Object DataBox = null;
\r
256 for(int loop = 0;loop < Length;loop++){
\r
257 lineY(par1World, X, Y, Z - (Length/2) + loop, Block,meta, height, 1);
\r
268 * @param Block 配置するBlock
\r
269 * @param meta 配置するMetadata
\r
270 * @param LengthX X方向の長さ
\r
271 * @param LengthZ Z方向の長さ
\r
274 public static Object spuareFrame(World par1World,int X,int Y,int Z,int Block,int meta,int LengthX,int LengthZ)
\r
276 Object DataBox = null;
\r
277 DataBox = lineX(par1World, X, Y, Z + (LengthZ/2), Block,meta, LengthX/2+1, 0);
\r
278 DataBox = lineX(par1World, X, Y, Z - (LengthZ/2), Block,meta, LengthX/2+1, 0);
\r
279 DataBox = lineZ(par1World, X + (LengthX/2), Y, Z, Block,meta, LengthZ/2+1, 0);
\r
280 DataBox = lineZ(par1World, X - (LengthX/2), Y, Z, Block,meta, LengthZ/2+1, 0);
\r
290 * @param Block 配置するBlock
\r
291 * @param meta 配置するMetadata
\r
292 * @param LengthX X方向の長さ
\r
293 * @param LengthZ Z方向の長さ
\r
297 public static Object boxFrame(World par1World,int X,int Y,int Z,int Block,int meta,int LengthX,int LengthZ,int height)
\r
299 Object DataBox=null;
\r
300 DataBox = lineX(par1World, X, Y, Z + (LengthZ/2), Block,meta, LengthX/2, 0);
\r
301 DataBox = lineX(par1World, X, Y, Z - (LengthZ/2), Block,meta, LengthX/2, 0);
\r
302 DataBox = lineX(par1World, X, Y + height-1, Z + (LengthZ/2), Block,meta, LengthX/2, 0);
\r
303 DataBox = lineX(par1World, X, Y + height-1, Z - (LengthZ/2), Block,meta, LengthX/2, 0);
\r
305 DataBox = lineY(par1World,X +(LengthX/2),Y,Z +(LengthZ/2),Block,meta,height,1);
\r
306 DataBox = lineY(par1World,X -(LengthX/2),Y,Z +(LengthZ/2),Block,meta,height,1);
\r
307 DataBox = lineY(par1World,X +(LengthX/2),Y,Z - (LengthZ/2),Block,meta,height,1);
\r
308 DataBox = lineY(par1World,X -(LengthX/2),Y,Z - (LengthZ/2),Block,meta,height,1);
\r
310 DataBox = lineZ(par1World, X + (LengthX/2), Y, Z, Block,meta, LengthZ/2, 0);
\r
311 DataBox = lineZ(par1World, X - (LengthX/2), Y, Z, Block,meta, LengthZ/2, 0);
\r
312 DataBox = lineZ(par1World, X + (LengthX/2), Y + height-1, Z, Block,meta, LengthZ/2, 0);
\r
313 DataBox = lineZ(par1World, X - (LengthX/2), Y + height-1, Z, Block,meta, LengthZ/2, 0);
\r
323 * @param Block 配置するBlock
\r
324 * @param meta 配置するMetadata
\r
325 * @param LengthX X方向の長さ
\r
326 * @param LengthZ Z方向の長さ
\r
329 public static Object square(World par1World,int X,int Y,int Z,int Block,int meta,int LengthX,int LengthZ)
\r
331 Object DataBox = null;
\r
333 for(loop1=0; loop1 < LengthZ; loop1++){
\r
334 DataBox = lineX(par1World,X - (LengthX/2),Y,Z - (LengthZ/2) + loop1,Block,meta,LengthX,1);
\r
345 * @param Block 配置するBlock
\r
346 * @param meta 配置するMetadata
\r
347 * @param LengthX X方向の長さ
\r
348 * @param LengthZ Z方向の長さ
\r
352 public static Object box(World par1World,int X,int Y,int Z,int Block,int meta,int LengthX,int LengthZ,int height)
\r
354 Object DataBox = null;
\r
355 DataBox = square(par1World, X, Y, Z, Block, meta,LengthX,LengthZ);
\r
356 DataBox = square(par1World,X,Y+height,Z,Block,meta,LengthX,LengthZ);
\r
357 DataBox = wallX(par1World,X,Y,Z-(LengthZ/2),Block,meta,LengthX,height);
\r
358 DataBox = wallZ(par1World,X-(LengthX/2),Y,Z,Block,meta,LengthZ,height);
\r
359 DataBox = wallX(par1World,X,Y,Z+(LengthZ/2),Block,meta,LengthX,height);
\r
360 DataBox = wallZ(par1World,X+(LengthX/2),Y,Z,Block,meta,LengthZ,height);
\r
365 * Blockで埋め尽くされた箱を生成します。
\r
370 * @param Block 配置するBlock
\r
371 * @param meta 配置するMetadata
\r
372 * @param LengthX X方向の長さ
\r
373 * @param LengthZ Z方向の長さ
\r
377 public static Object fillBox(World par1World , int X,int Y,int Z,int Block,int meta,int LengthX,int LengthZ,int height)
\r
379 Object DataBox = null;
\r
381 for(int i = 0; i < height; i++)
\r
383 DataBox = square(par1World,X,Y+i,Z,Block,meta,LengthX,LengthZ);
\r
390 * 座標ごとにデータを指定して配置します。
\r
391 * 配列になっているので、順番に指定してください。
\r
396 * @param Block 配置するBlock
\r
397 * @param meta 配置するMetadata
\r
398 * @param XPosition 配置する相対X座標
\r
399 * @param YPosition 配置する相対Y座標
\r
400 * @param ZPosition 配置する相対Z座標
\r
404 public static Object fineSetBlock(World par1World,int X,int Y,int Z,int[] Block,int[] meta,int[] XPosition,int[] YPosition,int[] ZPosition,Object[] Option){
\r
405 Object DataBox = null;
\r
406 for(int i=0;i<Block.length;i++){
\r
407 DataBox = par1World.setBlock(X+XPosition[i], Y+YPosition[i], Z+ZPosition[i], Block[i],meta[i], 0x02);
\r
411 for(int j=0;j<Option.length;j++){
\r
412 DataBox = Option[j];
\r
420 * 必ずbottom/(upper*3)*(height/upper)かupper/(bottom*3)*(height/buttom)が整数になるようにしてください。
\r
425 * @param Block 配置するBlock
\r
426 * @param meta 配置するMetadata
\r
427 * @param upperSide 上辺の長さ
\r
428 * @param bottomSide 下辺の長さ
\r
432 public static Object TrapezoidX(World par1World,int X,int Y,int Z,int Block,int meta,int upperSide,int bottomSide,int height){
\r
433 Object DataBox = null;
\r
438 for(int i=0;i<height;i++){
\r
442 if(upperSide < bottomSide){
\r
443 if(Math == bottomSide/(upperSide*3)*(height/upperSide)){
\r
449 if(bottomSide < upperSide){
\r
450 if(Math == upperSide/(bottomSide*3)*(height/bottomSide)){
\r
456 DataBox=lineZ(par1World, X+XRate-1, Y+YRate, Z, Block, meta, upperSide+Rate, 0);
\r
462 * Y方向のXラインに台形を作成します。
\r
463 * 必ずbottom/(upper*3)*(height/upper)かupper/(bottom*3)*(height/buttom)が整数になるようにしてください。
\r
468 * @param Block 配置するBlock
\r
469 * @param meta 配置するMetadata
\r
470 * @param upperSide 上辺の長さ
\r
471 * @param bottomSide 下辺の長さ
\r
475 public static Object TrapezoidY_X(World par1World,int X,int Y,int Z,int Block,int meta,int upperSide,int bottomSide,int height){
\r
476 Object DataBox = null;
\r
480 for(int i=0;i<height;i++){
\r
483 if(upperSide < bottomSide){
\r
484 if(Math == bottomSide/(upperSide*3)*(height/upperSide)){
\r
490 if(bottomSide < upperSide){
\r
491 if(Math == upperSide/(bottomSide*3)*(height/bottomSide)){
\r
497 DataBox=lineZ(par1World, X, Y+YRate, Z, Block, meta, upperSide+Rate, 0);
\r
503 * Y方向のZラインに台形を作成します。
\r
504 * 必ずbottom/(upper*3)*(height/upper)かupper/(bottom*3)*(height/buttom)が整数になるようにしてください。
\r
509 * @param Block 配置するBlock
\r
510 * @param meta 配置するMetadata
\r
511 * @param upperSide 上辺の長さ
\r
512 * @param bottomSide 下辺の長さ
\r
516 public static Object TrapezoidY_Z(World par1World,int X,int Y,int Z,int Block,int meta,int upperSide,int bottomSide,int height){
\r
517 Object DataBox = null;
\r
521 for(int i=0;i<height;i++){
\r
524 if(upperSide < bottomSide){
\r
525 if(Math == bottomSide/(upperSide*3)*(height/upperSide)){
\r
531 if(bottomSide < upperSide){
\r
532 if(Math == upperSide/(bottomSide*3)*(height/bottomSide)){
\r
538 DataBox=lineX(par1World, X, Y+YRate, Z, Block, meta, upperSide+Rate, 0);
\r
545 * 必ずbottom/(upper*3)*(height/upper)かupper/(bottom*3)*(height/buttom)が整数になるようにしてください。
\r
550 * @param Block 配置するBlock
\r
551 * @param meta 配置するMetadata
\r
552 * @param upperSide 上辺の長さ
\r
553 * @param bottomSide 下辺の長さ
\r
557 public static Object TrapezoidZ(World par1World,int X,int Y,int Z,int Block,int meta,int upperSide,int bottomSide,int height){
\r
558 Object DataBox = null;
\r
562 for(int i=0;i<height;i++){
\r
565 if(upperSide < bottomSide){
\r
566 if(Math == bottomSide/(upperSide*3)*(height/upperSide)){
\r
572 if(bottomSide < upperSide){
\r
573 if(Math == upperSide/(bottomSide*3)*(height/bottomSide)){
\r
579 DataBox=lineX(par1World, X, Y, Z+ZRate, Block, meta, upperSide+Rate, 0);
\r