1 package chemicraft.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
36 DataBox = par1World.setBlockAndMetadataWithNotify(X, Y, Z, Block, meta);
\r
39 DataBox = par1World.setBlockAndMetadataWithNotify(X-(Length-1)+loop2,Y,Z,Block,meta);
\r
42 DataBox = par1World.setBlockAndMetadataWithNotify(X+loop2, Y, Z, Block,meta);
\r
50 * Y方向に線状にBlockを配置します。
\r
51 * Directionが0の場合、特殊な計算式で
\r
52 * +,-方向:loop-1の長さになります。
\r
57 * @param Block 配置するBlock
\r
58 * @param meta 配置するMetadata
\r
60 * @param Direction 方向(+方向:1,-方向:-1,中心から-+の方向:0)
\r
63 public static Object lineY(World par1World,int X,int Y,int Z,int Block,int meta,int Length,int Direction)
\r
66 Object DataBox=null;
\r
67 for(loop2=0;loop2 < Length;loop2++)
\r
74 DataBox = par1World.setBlockAndMetadataWithNotify(X, Y-loop2, Z, Block,meta);
\r
77 DataBox = par1World.setBlockAndMetadataWithNotify(X,Y-(Length-1)+loop2,Z,Block,meta);
\r
80 DataBox = par1World.setBlockAndMetadataWithNotify(X, Y+loop2, Z, Block,meta);
\r
88 * Z方向に線状にBlockを配置します。
\r
89 * Directionが0の場合、特殊な計算式で
\r
90 * +,-方向:loop-1の長さになります。
\r
95 * @param Block 配置するBlock
\r
96 * @param meta 配置するMetadata
\r
98 * @param Direction 方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
101 public static Object lineZ(World par1World,int X,int Y,int Z,int Block,int meta,int Length,int Direction)
\r
104 Object DataBox=null;
\r
105 for(loop2=0;loop2 < Length;loop2++)
\r
112 DataBox = par1World.setBlockAndMetadataWithNotify(X, Y, Z-loop2, Block,meta);
\r
115 DataBox = par1World.setBlockAndMetadataWithNotify(X,Y,Z-(Length-1)+loop2,Block,meta);
\r
118 DataBox = par1World.setBlockAndMetadataWithNotify(X, Y, Z+loop2, Block,meta);
\r
126 * XY方向に線状にBlockを配置します。
\r
127 * Directionが0の場合、特殊な計算式で
\r
128 * +,-方向:loop-1の長さになります。
\r
133 * @param Block 配置するBlock
\r
134 * @param meta 配置するMetadata
\r
135 * @param XLength X方向の長さ
\r
136 * @param YLength Y方向の長さ
\r
137 * @param XDirection X方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
138 * @param YDirection Y方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
141 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
143 Object DataBox=null;
\r
144 DataBox = lineX(par1World,X,Y,Z,Block,meta,XLength,XDirection);
\r
145 DataBox = lineY(par1World,X,Y,Z,Block,YLength,meta,YDirection);
\r
150 * XZ方向に線状にBlockを配置します。
\r
151 * Directionが0の場合、特殊な計算式で
\r
152 * +,-方向:loop-1の長さになります。
\r
157 * @param Block 配置するBlock
\r
158 * @param meta 配置するMetadata
\r
159 * @param XLength X方向の長さ
\r
160 * @param ZLength Y方向の長さ
\r
161 * @param XDirection X方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
162 * @param ZDirection Z方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
165 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
167 Object DataBox=null;
\r
168 DataBox = lineX(par1World,X,Y,Z,Block,meta,XLength,XDirection);
\r
169 DataBox = lineZ(par1World,X,Y,Z,Block,meta,ZLength,ZDirection);
\r
174 * YZ方向に線状にBlockを配置します。
\r
175 * Directionが0の場合、特殊な計算式で
\r
176 * +,-方向:loop-1の長さになります。
\r
181 * @param Block 配置するBlock
\r
182 * @param meta 配置するMetadata
\r
183 * @param YLength X方向の長さ
\r
184 * @param ZLength Y方向の長さ
\r
185 * @param YDirection Y方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
186 * @param ZDirection Z方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
189 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
191 Object DataBox=null;
\r
192 DataBox = lineY(par1World,X,Y,Z,Block,meta,YLength,YDirection);
\r
193 DataBox = lineZ(par1World,X,Y,Z,Block,meta,ZLength,ZDirection);
\r
198 * XYZ方向に線状にBlockを配置します。
\r
199 * Directionが0の場合、特殊な計算式で
\r
200 * +,-方向:loop-1の長さになります。
\r
205 * @param Block 配置するBlock
\r
206 * @param meta 配置するMetadata
\r
207 * @param XLength X方向の長さ
\r
208 * @param YLength Y方向の長さ
\r
209 * @param ZLength Z方向の長さ
\r
210 * @param XDirection X方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
211 * @param YDirection Y方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
212 * @param ZDirection Z方向指定(+方向:1,-方向:-1,中心から-+の方向:0)
\r
215 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
217 Object DataBox=null;
\r
218 DataBox = lineX(par1World,X,Y,Z,Block,meta,XLength,XDirection);
\r
219 DataBox = lineY(par1World,X,Y,Z,Block,meta,YLength,YDirection);
\r
220 DataBox = lineZ(par1World,X,Y,Z,Block,meta,ZLength,ZDirection);
\r
226 * Directionは1で固定です。
\r
231 * @param Block 配置するBlock
\r
232 * @param meta 配置するMetadata
\r
237 public static Object wallX(World par1World,int X,int Y,int Z,int Block,int meta,int Length,int height)
\r
239 Object DataBox = null;
\r
240 for(int loop = 0;loop < Length;loop++){
\r
241 lineY(par1World, X - (Length/2) + loop, Y, Z, Block,meta, height, 1);
\r
248 * Directionは1で固定です。
\r
253 * @param Block 配置するBlock
\r
254 * @param meta 配置するMetadata
\r
259 public static Object wallZ(World par1World,int X,int Y,int Z,int Block,int meta,int Length,int height)
\r
261 Object DataBox = null;
\r
262 for(int loop = 0;loop < Length;loop++){
\r
263 lineY(par1World, X, Y, Z - (Length/2) + loop, Block,meta, height, 1);
\r
274 * @param Block 配置するBlock
\r
275 * @param meta 配置するMetadata
\r
276 * @param LengthX X方向の長さ
\r
277 * @param LengthZ Z方向の長さ
\r
280 public static Object spuareFrame(World par1World,int X,int Y,int Z,int Block,int meta,int LengthX,int LengthZ)
\r
282 Object DataBox = null;
\r
283 DataBox = lineX(par1World, X, Y, Z + (LengthZ/2), Block,meta, LengthX/2+1, 0);
\r
284 DataBox = lineX(par1World, X, Y, Z - (LengthZ/2), Block,meta, LengthX/2+1, 0);
\r
285 DataBox = lineZ(par1World, X + (LengthX/2), Y, Z, Block,meta, LengthZ/2+1, 0);
\r
286 DataBox = lineZ(par1World, X - (LengthX/2), Y, Z, Block,meta, LengthZ/2+1, 0);
\r
296 * @param Block 配置するBlock
\r
297 * @param meta 配置するMetadata
\r
298 * @param LengthX X方向の長さ
\r
299 * @param LengthZ Z方向の長さ
\r
303 public static Object boxFrame(World par1World,int X,int Y,int Z,int Block,int meta,int LengthX,int LengthZ,int height)
\r
305 Object DataBox=null;
\r
306 DataBox = lineX(par1World, X, Y, Z + (LengthZ/2), Block,meta, LengthX/2, 0);
\r
307 DataBox = lineX(par1World, X, Y, Z - (LengthZ/2), Block,meta, LengthX/2, 0);
\r
308 DataBox = lineX(par1World, X, Y + height-1, Z + (LengthZ/2), Block,meta, LengthX/2, 0);
\r
309 DataBox = lineX(par1World, X, Y + height-1, Z - (LengthZ/2), Block,meta, LengthX/2, 0);
\r
311 DataBox = lineY(par1World,X +(LengthX/2),Y,Z +(LengthZ/2),Block,meta,height,1);
\r
312 DataBox = lineY(par1World,X -(LengthX/2),Y,Z +(LengthZ/2),Block,meta,height,1);
\r
313 DataBox = lineY(par1World,X +(LengthX/2),Y,Z - (LengthZ/2),Block,meta,height,1);
\r
314 DataBox = lineY(par1World,X -(LengthX/2),Y,Z - (LengthZ/2),Block,meta,height,1);
\r
316 DataBox = lineZ(par1World, X + (LengthX/2), Y, Z, Block,meta, LengthZ/2, 0);
\r
317 DataBox = lineZ(par1World, X - (LengthX/2), Y, Z, Block,meta, LengthZ/2, 0);
\r
318 DataBox = lineZ(par1World, X + (LengthX/2), Y + height-1, Z, Block,meta, LengthZ/2, 0);
\r
319 DataBox = lineZ(par1World, X - (LengthX/2), Y + height-1, Z, Block,meta, LengthZ/2, 0);
\r
329 * @param Block 配置するBlock
\r
330 * @param meta 配置するMetadata
\r
331 * @param LengthX X方向の長さ
\r
332 * @param LengthZ Z方向の長さ
\r
335 public static Object square(World par1World,int X,int Y,int Z,int Block,int meta,int LengthX,int LengthZ)
\r
337 Object DataBox = null;
\r
339 for(loop1=0; loop1 < LengthZ; loop1++){
\r
340 DataBox = lineX(par1World,X - (LengthX/2),Y,Z - (LengthZ/2) + loop1,Block,meta,LengthX,1);
\r
351 * @param Block 配置するBlock
\r
352 * @param meta 配置するMetadata
\r
353 * @param LengthX X方向の長さ
\r
354 * @param LengthZ Z方向の長さ
\r
358 public static Object box(World par1World,int X,int Y,int Z,int Block,int meta,int LengthX,int LengthZ,int height)
\r
360 Object DataBox = null;
\r
361 DataBox = square(par1World, X, Y, Z, Block, meta,LengthX,LengthZ);
\r
362 DataBox = square(par1World,X,Y+height,Z,Block,meta,LengthX,LengthZ);
\r
363 DataBox = wallX(par1World,X,Y,Z-(LengthZ/2),Block,meta,LengthX,height);
\r
364 DataBox = wallZ(par1World,X-(LengthX/2),Y,Z,Block,meta,LengthZ,height);
\r
365 DataBox = wallX(par1World,X,Y,Z+(LengthZ/2),Block,meta,LengthX,height);
\r
366 DataBox = wallZ(par1World,X+(LengthX/2),Y,Z,Block,meta,LengthZ,height);
\r
371 * Blockで埋め尽くされた箱を生成します。
\r
376 * @param Block 配置するBlock
\r
377 * @param meta 配置するMetadata
\r
378 * @param LengthX X方向の長さ
\r
379 * @param LengthZ Z方向の長さ
\r
383 public static Object fillBox(World par1World , int X,int Y,int Z,int Block,int meta,int LengthX,int LengthZ,int height)
\r
385 Object DataBox = null;
\r
386 DataBox = square(par1World, X, Y, Z, Block,meta, LengthX,LengthZ);
\r
387 DataBox = square(par1World,X,Y+height,Z,Block,meta,LengthX,LengthZ);
\r
388 DataBox = wallX(par1World,X,Y,Z-(LengthZ/2),Block,meta,LengthX,height);
\r
389 DataBox = wallZ(par1World,X-(LengthX/2),Y,Z,Block,meta,LengthZ,height);
\r
390 DataBox = wallX(par1World,X,Y,Z+(LengthZ/2),Block,meta,LengthX,height);
\r
391 DataBox = wallZ(par1World,X+(LengthX/2),Y,Z,Block,meta,LengthZ,height);
\r
393 for(int i = 0; i < LengthX - 1; i++)
\r
395 DataBox = wallZ(par1World,X + 1 - LengthX / 2 + i, Y , Z , Block ,meta,LengthZ, height);
\r
402 * 座標ごとにデータを指定して配置します。
\r
403 * 配列になっているので、順番に指定してください。
\r
408 * @param Block 配置するBlock
\r
409 * @param meta 配置するMetadata
\r
410 * @param XPosition 配置する相対X座標
\r
411 * @param YPosition 配置する相対Y座標
\r
412 * @param ZPosition 配置する相対Z座標
\r
416 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
417 Object DataBox = null;
\r
418 for(int i=0;i<Block.length;i++){
\r
419 DataBox = par1World.setBlockAndMetadata(X+XPosition[i], Y+YPosition[i], Z+ZPosition[i], Block[i],meta[i]);
\r
423 for(int j=0;j<Option.length;j++){
\r
424 DataBox = Option[j];
\r
432 * 必ずbottom/(upper*3)*(height/upper)かupper/(bottom*3)*(height/buttom)が整数になるようにしてください。
\r
437 * @param Block 配置するBlock
\r
438 * @param meta 配置するMetadata
\r
439 * @param upperSide 上辺の長さ
\r
440 * @param bottomSide 下辺の長さ
\r
444 public static Object trapezoidX(World par1World,int X,int Y,int Z,int Block,int meta,int upperSide,int bottomSide,int height){
\r
445 Object dataBox = null;
\r
450 for(int i=0;i<height;i++){
\r
454 if(upperSide < bottomSide){
\r
455 if(Math == bottomSide/(upperSide*3)*(height/upperSide)){
\r
461 if(bottomSide < upperSide){
\r
462 if(Math == upperSide/(bottomSide*3)*(height/bottomSide)){
\r
468 dataBox=lineZ(par1World, X+XRate-1, Y+YRate, Z, Block, meta, upperSide+Rate, 0);
\r
474 * Y方向のXラインに台形を作成します。
\r
475 * 必ずbottom/(upper*3)*(height/upper)かupper/(bottom*3)*(height/buttom)が整数になるようにしてください。
\r
480 * @param Block 配置するBlock
\r
481 * @param meta 配置するMetadata
\r
482 * @param upperSide 上辺の長さ
\r
483 * @param bottomSide 下辺の長さ
\r
487 public static Object trapezoidY_X(World par1World,int X,int Y,int Z,int Block,int meta,int upperSide,int bottomSide,int height){
\r
488 Object dataBox = null;
\r
492 for(int i=0;i<height;i++){
\r
495 if(upperSide < bottomSide){
\r
496 if(Math == bottomSide/(upperSide*3)*(height/upperSide)){
\r
502 if(bottomSide < upperSide){
\r
503 if(Math == upperSide/(bottomSide*3)*(height/bottomSide)){
\r
509 dataBox=lineZ(par1World, X, Y+YRate, Z, Block, meta, upperSide+Rate, 0);
\r
515 * Y方向のZラインに台形を作成します。
\r
516 * 必ずbottom/(upper*3)*(height/upper)かupper/(bottom*3)*(height/buttom)が整数になるようにしてください。
\r
521 * @param Block 配置するBlock
\r
522 * @param meta 配置するMetadata
\r
523 * @param upperSide 上辺の長さ
\r
524 * @param bottomSide 下辺の長さ
\r
528 public static Object trapezoidY_Z(World par1World,int X,int Y,int Z,int Block,int meta,int upperSide,int bottomSide,int height){
\r
529 Object dataBox = null;
\r
533 for(int i=0;i<height;i++){
\r
536 if(upperSide < bottomSide){
\r
537 if(Math == bottomSide/(upperSide*3)*(height/upperSide)){
\r
543 if(bottomSide < upperSide){
\r
544 if(Math == upperSide/(bottomSide*3)*(height/bottomSide)){
\r
550 dataBox=lineX(par1World, X, Y+YRate, Z, Block, meta, upperSide+Rate, 0);
\r
557 * 必ずbottom/(upper*3)*(height/upper)かupper/(bottom*3)*(height/buttom)が整数になるようにしてください。
\r
562 * @param Block 配置するBlock
\r
563 * @param meta 配置するMetadata
\r
564 * @param upperSide 上辺の長さ
\r
565 * @param bottomSide 下辺の長さ
\r
569 public static Object TrapezoidZ(World par1World,int X,int Y,int Z,int Block,int meta,int upperSide,int bottomSide,int height){
\r
570 Object dataBox = null;
\r
574 for(int i=0;i<height;i++){
\r
577 if(upperSide < bottomSide){
\r
578 if(Math == bottomSide/(upperSide*3)*(height/upperSide)){
\r
584 if(bottomSide < upperSide){
\r
585 if(Math == upperSide/(bottomSide*3)*(height/bottomSide)){
\r
591 dataBox=lineX(par1World, X, Y, Z+ZRate, Block, meta, upperSide+Rate, 0);
\r