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