OSDN Git Service

パッケージ変更
[chemicraft/ChemiCraftNext.git] / src / asia / tcrs / ccnp / chemicraftnext / core / debug / SetBlockSupport.java
1 package asia.tcrs.ccnp.chemicraftnext.core.debug;\r
2 import java.util.Random;\r
3 \r
4 import net.minecraft.world.World;\r
5 \r
6 public class SetBlockSupport\r
7 {\r
8 \r
9         static Random rand = new Random();\r
10 \r
11         /**\r
12          * X方向に線状にBlockを配置します。\r
13          * Directionが0の場合、特殊な計算式で\r
14          * +,-方向:loop-1の長さになります。\r
15          * @param par1World\r
16          * @param X 基準X座標\r
17          * @param Y 基準Y座標\r
18          * @param Z 基準Z座標\r
19          * @param Block 配置するBlock\r
20          * @param meta 配置するMetadata\r
21          * @param Length 長さ\r
22          * @param Direction 方向(+方向:1,-方向:-1,中心から-+の方向:0)\r
23          * @return Object\r
24          */\r
25         public static Object lineX(World par1World,int X,int Y,int Z,int Block,int meta,int Length,int Direction)\r
26         {\r
27                 int loop2=0;\r
28                 Object DataBox=null;\r
29                 for(loop2=0;loop2 < Length;loop2++)\r
30                 {\r
31                         switch(Direction)\r
32                         {\r
33                         case -1:\r
34                                 DataBox = par1World.setBlock(X, Y, Z, Block, meta, 0x02);\r
35                                 break;\r
36                         case 0:\r
37                                 DataBox = par1World.setBlock(X-(Length-1)+loop2,Y,Z,Block,meta, 0x02);\r
38                                 break;\r
39                         case 1:\r
40                                 DataBox = par1World.setBlock(X+loop2, Y, Z, Block,meta, 0x02);\r
41                                 break;\r
42                         }\r
43                 }\r
44                 return DataBox;\r
45         }\r
46 \r
47         /**\r
48          * Y方向に線状にBlockを配置します。\r
49          * Directionが0の場合、特殊な計算式で\r
50          * +,-方向:loop-1の長さになります。\r
51          * @param par1World\r
52          * @param X 基準X座標\r
53          * @param Y 基準Y座標\r
54          * @param Z 基準Z座標\r
55          * @param Block 配置するBlock\r
56          * @param meta 配置するMetadata\r
57          * @param Length 長さ\r
58          * @param Direction 方向(+方向:1,-方向:-1,中心から-+の方向:0)\r
59          * @return Object\r
60          */\r
61         public static Object lineY(World par1World,int X,int Y,int Z,int Block,int meta,int Length,int Direction)\r
62         {\r
63                 int loop2=0;\r
64                 Object DataBox=null;\r
65                 for(loop2=0;loop2 < Length;loop2++)\r
66                 {\r
67                         switch(Direction)\r
68                         {\r
69                         case -1:\r
70                                 DataBox = par1World.setBlock(X, Y-loop2, Z, Block,meta, 0x02);\r
71                                 break;\r
72                         case 0:\r
73                                 DataBox = par1World.setBlock(X,Y-(Length-1)+loop2,Z,Block,meta, 0x02);\r
74                                 break;\r
75                         case 1:\r
76                                 DataBox = par1World.setBlock(X, Y+loop2, Z, Block,meta, 0x02);\r
77                                 break;\r
78                         }\r
79                 }\r
80                 return DataBox;\r
81         }\r
82 \r
83         /**\r
84          * Z方向に線状にBlockを配置します。\r
85          * Directionが0の場合、特殊な計算式で\r
86          * +,-方向:loop-1の長さになります。\r
87          * @param par1World\r
88          * @param X 基準X座標\r
89          * @param Y 基準Y座標\r
90          * @param Z 基準Z座標\r
91          * @param Block 配置するBlock\r
92          * @param meta 配置するMetadata\r
93          * @param Length 長さ\r
94          * @param Direction 方向指定(+方向:1,-方向:-1,中心から-+の方向:0)\r
95          * @return Object\r
96          */\r
97         public static Object lineZ(World par1World,int X,int Y,int Z,int Block,int meta,int Length,int Direction)\r
98         {\r
99                 int loop2=0;\r
100                 Object DataBox=null;\r
101                 for(loop2=0;loop2 < Length;loop2++)\r
102                 {\r
103                         switch(Direction)\r
104                         {\r
105                         case -1:\r
106                                 DataBox = par1World.setBlock(X, Y, Z-loop2, Block,meta, 0x02);\r
107                                 break;\r
108                         case 0:\r
109                                 DataBox = par1World.setBlock(X,Y,Z-(Length-1)+loop2,Block,meta, 0x02);\r
110                                 break;\r
111                         case 1:\r
112                                 DataBox = par1World.setBlock(X, Y, Z+loop2, Block,meta, 0x02);\r
113                                 break;\r
114                         }\r
115                 }\r
116                 return DataBox;\r
117         }\r
118 \r
119         /**\r
120          * XY方向に線状にBlockを配置します。\r
121          * Directionが0の場合、特殊な計算式で\r
122          * +,-方向:loop-1の長さになります。\r
123          * @param par1World\r
124          * @param X 基準X座標\r
125          * @param Y 基準Y座標\r
126          * @param Z 基準Z座標\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
133          * @return Object\r
134          */\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
136         {\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
140                 return DataBox;\r
141         }\r
142 \r
143         /**\r
144          * XZ方向に線状にBlockを配置します。\r
145          * Directionが0の場合、特殊な計算式で\r
146          * +,-方向:loop-1の長さになります。\r
147          * @param par1World\r
148          * @param X 基準X座標\r
149          * @param Y 基準Y座標\r
150          * @param Z 基準Z座標\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
157          * @return Object\r
158          */\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
160         {\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
164                 return DataBox;\r
165         }\r
166 \r
167         /**\r
168          * YZ方向に線状にBlockを配置します。\r
169          * Directionが0の場合、特殊な計算式で\r
170          * +,-方向:loop-1の長さになります。\r
171          * @param par1World\r
172          * @param X 基準X座標\r
173          * @param Y 基準Y座標\r
174          * @param Z 基準Z座標\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
181          * @return Object\r
182          */\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
184         {\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
188                 return DataBox;\r
189         }\r
190 \r
191         /**\r
192          * XYZ方向に線状にBlockを配置します。\r
193          * Directionが0の場合、特殊な計算式で\r
194          * +,-方向:loop-1の長さになります。\r
195          * @param par1World\r
196          * @param X 基準X座標\r
197          * @param Y 基準Y座標\r
198          * @param Z 基準Z座標\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
207          * @return Object\r
208          */\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
210         {\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
215                 return DataBox;\r
216         }\r
217 \r
218         /**\r
219          * X方向の壁を作成します。\r
220          * Directionは1で固定です。\r
221          * @param par1World\r
222          * @param X 基準X座標\r
223          * @param Y 基準Y座標\r
224          * @param Z 基準Z座標\r
225          * @param Block 配置するBlock\r
226          * @param meta 配置するMetadata\r
227          * @param Length 幅\r
228          * @param height 高さ\r
229          * @return Object\r
230          */\r
231         public static Object wallX(World par1World,int X,int Y,int Z,int Block,int meta,int Length,int height)\r
232         {\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
236                 }\r
237                 return DataBox;\r
238         }\r
239 \r
240         /**\r
241          * Z方向の壁を作成します。\r
242          * Directionは1で固定です。\r
243          * @param par1World\r
244          * @param X 基準X座標\r
245          * @param Y 基準Y座標\r
246          * @param Z 基準Z座標\r
247          * @param Block 配置するBlock\r
248          * @param meta 配置するMetadata\r
249          * @param Length 幅\r
250          * @param height 高さ\r
251          * @return Object\r
252          */\r
253         public static Object wallZ(World par1World,int X,int Y,int Z,int Block,int meta,int Length,int height)\r
254         {\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
258                 }\r
259                 return DataBox;\r
260         }\r
261 \r
262         /**\r
263          * 辺だけの四角を作成します。\r
264          * @param par1World\r
265          * @param X 基準X座標\r
266          * @param Y 基準Y座標\r
267          * @param Z 基準Z座標\r
268          * @param Block 配置するBlock\r
269          * @param meta 配置するMetadata\r
270          * @param LengthX X方向の長さ\r
271          * @param LengthZ  Z方向の長さ\r
272          * @return Object\r
273          */\r
274         public static Object spuareFrame(World par1World,int X,int Y,int Z,int Block,int meta,int LengthX,int LengthZ)\r
275         {\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
281                 return DataBox;\r
282         }\r
283 \r
284         /**\r
285          * 辺だけの箱を作成します。\r
286          * @param par1World\r
287          * @param X 基準X座標\r
288          * @param Y 基準Y座標\r
289          * @param Z 基準Z座標\r
290          * @param Block 配置するBlock\r
291          * @param meta 配置するMetadata\r
292          * @param LengthX X方向の長さ\r
293          * @param LengthZ  Z方向の長さ\r
294          * @param height 高さ\r
295          * @return Object\r
296          */\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
298         {\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
304 \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
309 \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
314                 return DataBox;\r
315         }\r
316 \r
317         /**\r
318          * 四角を作成します。\r
319          * @param par1World\r
320          * @param X 基準X座標\r
321          * @param Y 基準Y座標\r
322          * @param Z 基準Z座標\r
323          * @param Block 配置するBlock\r
324          * @param meta 配置するMetadata\r
325          * @param LengthX X方向の長さ\r
326          * @param LengthZ  Z方向の長さ\r
327          * @return Object\r
328          */\r
329         public static Object square(World par1World,int X,int Y,int Z,int Block,int meta,int LengthX,int LengthZ)\r
330         {\r
331                 Object DataBox = null;\r
332                 int loop1 = 0;\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
335                 }\r
336                 return DataBox;\r
337         }\r
338 \r
339         /**\r
340          * 箱を生成します。\r
341          * @param par1World\r
342          * @param X 基準X座標\r
343          * @param Y 基準Y座標\r
344          * @param Z 基準Z座標\r
345          * @param Block 配置するBlock\r
346          * @param meta 配置するMetadata\r
347          * @param LengthX X方向の長さ\r
348          * @param LengthZ  Z方向の長さ\r
349          * @param height 高さ\r
350          * @return Object\r
351          */\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
353         {\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
361                 return DataBox;\r
362         }\r
363 \r
364         /**\r
365          * Blockで埋め尽くされた箱を生成します。\r
366          * @param par1World\r
367          * @param X 基準X座標\r
368          * @param Y 基準Y座標\r
369          * @param Z 基準Z座標\r
370          * @param Block 配置するBlock\r
371          * @param meta 配置するMetadata\r
372          * @param LengthX X方向の長さ\r
373          * @param LengthZ  Z方向の長さ\r
374          * @param height 高さ\r
375          * @return Object\r
376          */\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
378         {\r
379                 Object DataBox = null;\r
380 \r
381                 for(int i = 0; i < height; i++)\r
382                 {\r
383                         DataBox = square(par1World,X,Y+i,Z,Block,meta,LengthX,LengthZ);\r
384                 }\r
385 \r
386                 return DataBox;\r
387         }\r
388 \r
389         /**\r
390          * 座標ごとにデータを指定して配置します。\r
391          * 配列になっているので、順番に指定してください。\r
392          * @param par1World\r
393          * @param X 基準X座標\r
394          * @param Y 基準Y座標\r
395          * @param Z 基準Z座標\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
401          * @param Option\r
402          * @return Object\r
403          */\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
408                 }\r
409 \r
410                 if(Option!=null){\r
411                         for(int j=0;j<Option.length;j++){\r
412                                 DataBox = Option[j];\r
413                         }\r
414                 }\r
415                 return DataBox;\r
416         }\r
417 \r
418         /**\r
419          * X方向に台形を作成します。\r
420          * 必ずbottom/(upper*3)*(height/upper)かupper/(bottom*3)*(height/buttom)が整数になるようにしてください。\r
421          * @param par1World\r
422          * @param X 基準X座標\r
423          * @param Y 基準Y座標\r
424          * @param Z 基準Z座標\r
425          * @param Block 配置するBlock\r
426          * @param meta 配置するMetadata\r
427          * @param upperSide 上辺の長さ\r
428          * @param bottomSide 下辺の長さ\r
429          * @param height 高さ\r
430          * @return Object\r
431          */\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
434                 int Rate=0;\r
435                 int Math=0;\r
436                 int XRate=0;\r
437                 int YRate = 0;\r
438                 for(int i=0;i<height;i++){\r
439                         YRate++;\r
440                         Math++;\r
441                         XRate++;\r
442                         if(upperSide < bottomSide){\r
443                                 if(Math == bottomSide/(upperSide*3)*(height/upperSide)){\r
444                                         Rate++;\r
445                                         Math=0;\r
446                                 }\r
447                         }\r
448 \r
449                         if(bottomSide < upperSide){\r
450                                 if(Math == upperSide/(bottomSide*3)*(height/bottomSide)){\r
451                                         Rate--;\r
452                                         Math=0;\r
453                                 }\r
454                         }\r
455 \r
456                         DataBox=lineZ(par1World, X+XRate-1, Y+YRate, Z, Block, meta, upperSide+Rate, 0);\r
457                 }\r
458                 return DataBox;\r
459         }\r
460 \r
461         /**\r
462          * Y方向のXラインに台形を作成します。\r
463          * 必ずbottom/(upper*3)*(height/upper)かupper/(bottom*3)*(height/buttom)が整数になるようにしてください。\r
464          * @param par1World\r
465          * @param X 基準X座標\r
466          * @param Y 基準Y座標\r
467          * @param Z 基準Z座標\r
468          * @param Block 配置するBlock\r
469          * @param meta 配置するMetadata\r
470          * @param upperSide 上辺の長さ\r
471          * @param bottomSide 下辺の長さ\r
472          * @param height 高さ\r
473          * @return Object\r
474          */\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
477                 int Rate=0;\r
478                 int Math=0;\r
479                 int YRate = 0;\r
480                 for(int i=0;i<height;i++){\r
481                         YRate++;\r
482                         Math++;\r
483                         if(upperSide < bottomSide){\r
484                                 if(Math == bottomSide/(upperSide*3)*(height/upperSide)){\r
485                                         Rate++;\r
486                                         Math=0;\r
487                                 }\r
488                         }\r
489 \r
490                         if(bottomSide < upperSide){\r
491                                 if(Math == upperSide/(bottomSide*3)*(height/bottomSide)){\r
492                                         Rate--;\r
493                                         Math=0;\r
494                                 }\r
495                         }\r
496 \r
497                         DataBox=lineZ(par1World, X, Y+YRate, Z, Block, meta, upperSide+Rate, 0);\r
498                 }\r
499                 return DataBox;\r
500         }\r
501 \r
502         /**\r
503          * Y方向のZラインに台形を作成します。\r
504          * 必ずbottom/(upper*3)*(height/upper)かupper/(bottom*3)*(height/buttom)が整数になるようにしてください。\r
505          * @param par1World\r
506          * @param X 基準X座標\r
507          * @param Y 基準Y座標\r
508          * @param Z 基準Z座標\r
509          * @param Block 配置するBlock\r
510          * @param meta 配置するMetadata\r
511          * @param upperSide 上辺の長さ\r
512          * @param bottomSide 下辺の長さ\r
513          * @param height 高さ\r
514          * @return Object\r
515          */\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
518                 int Rate=0;\r
519                 int Math=0;\r
520                 int YRate = 0;\r
521                 for(int i=0;i<height;i++){\r
522                         YRate++;\r
523                         Math++;\r
524                         if(upperSide < bottomSide){\r
525                                 if(Math == bottomSide/(upperSide*3)*(height/upperSide)){\r
526                                         Rate++;\r
527                                         Math=0;\r
528                                 }\r
529                         }\r
530 \r
531                         if(bottomSide < upperSide){\r
532                                 if(Math == upperSide/(bottomSide*3)*(height/bottomSide)){\r
533                                         Rate--;\r
534                                         Math=0;\r
535                                 }\r
536                         }\r
537 \r
538                         DataBox=lineX(par1World, X, Y+YRate, Z, Block, meta, upperSide+Rate, 0);\r
539                 }\r
540                 return DataBox;\r
541         }\r
542 \r
543         /**\r
544          * Z方向に台形を作成します。\r
545          * 必ずbottom/(upper*3)*(height/upper)かupper/(bottom*3)*(height/buttom)が整数になるようにしてください。\r
546          * @param par1World\r
547          * @param X 基準X座標\r
548          * @param Y 基準Y座標\r
549          * @param Z 基準Z座標\r
550          * @param Block 配置するBlock\r
551          * @param meta 配置するMetadata\r
552          * @param upperSide 上辺の長さ\r
553          * @param bottomSide 下辺の長さ\r
554          * @param height 高さ\r
555          * @return Object\r
556          */\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
559                 int Rate=0;\r
560                 int Math=0;\r
561                 int ZRate=0;\r
562                 for(int i=0;i<height;i++){\r
563                         Math++;\r
564                         ZRate++;\r
565                         if(upperSide < bottomSide){\r
566                                 if(Math == bottomSide/(upperSide*3)*(height/upperSide)){\r
567                                         Rate++;\r
568                                         Math=0;\r
569                                 }\r
570                         }\r
571 \r
572                         if(bottomSide < upperSide){\r
573                                 if(Math == upperSide/(bottomSide*3)*(height/bottomSide)){\r
574                                         Rate--;\r
575                                         Math=0;\r
576                                 }\r
577                         }\r
578 \r
579                         DataBox=lineX(par1World, X, Y, Z+ZRate, Block, meta, upperSide+Rate, 0);\r
580                 }\r
581                 return DataBox;\r
582         }\r
583 \r
584 }