OSDN Git Service

修正・変更
[chemicraft/chemicraft.git] / common / pcc / chemicraft / util / AtomInfo.java
1 package pcc.chemicraft.util;
2
3 import net.minecraft.entity.player.EntityPlayer;
4 import net.minecraft.world.World;
5 import pcc.chemicraft.util.Auxiliary.Probability;
6 import cpw.mods.fml.relauncher.Side;
7 import cpw.mods.fml.relauncher.SideOnly;
8
9 /**
10  * いろいろなデータを格納しメソッドによってチェックするクラス。<br>
11  * 使用する場合はItemAtomInfoContainerを継承することを推奨します。
12  * @author ponkotate
13  */
14 public final class AtomInfo {
15
16         /**
17          * 気体
18          */
19         public static final Integer[] GASES = new Integer[] {
20                 1, 2, 7, 8, 9, 10, 17, 18, 36, 54, 86
21         };
22
23
24         /**
25          * 液体
26          */
27         public static final Integer[] LIQUIDS = new Integer[] {
28                 35, 80
29         };
30
31
32         /**
33          * 不明
34          */
35         public static final Integer[] UNKNOWN = new Integer[] {
36                 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118
37         };
38
39
40         public static final Integer[] LANTHANOID = new Integer[] {
41                 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71
42         };
43
44
45         public static final Integer[] ACTINOID = new Integer[] {
46                 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103
47         };
48
49
50         public static final Integer[] UNOFFICIAL = new Integer[] {
51                 113, 114, 115, 116, 117, 118
52         };
53
54
55         /**
56          * X, Y, Z座標
57          */
58         private  int posX;
59         private  int posY;
60         private  int posZ;
61
62
63         /**
64          * biomeの名前
65          */
66         private  String biomeName;
67
68
69         /**
70          * 天候
71          */
72         private  String weather;
73
74
75         /**
76          * EntityPlayerのインスタンス
77          */
78         private EntityPlayer entityPlayer;
79
80
81         /**
82          * Worldのインスタンス
83          */
84         private World world;
85
86
87
88         /**
89          * AtomInfoのデータをupdateします
90          * @param par1World Worldのインスタンス
91          * @param par2EntityPlayer EntityPlayerのインスタンス
92          */
93         public void update(World par1World, EntityPlayer par2EntityPlayer){
94                 this.posX = (int) par2EntityPlayer.posX;
95                 this.posY = (int) par2EntityPlayer.posY;
96                 this.posZ = (int) par2EntityPlayer.posZ;
97
98                 this.biomeName = par1World.getBiomeGenForCoords(posX, posZ).biomeName;
99
100                 if (par1World.isThundering()) {
101                         this.weather = "Thunder";
102                 } else if(par1World.isRaining()) {
103                         this.weather = "Rain";
104                 } else {
105                         this.weather = "Sun";
106                 }
107         }
108
109
110
111         public static boolean isGas(int par1) {
112                 for (int var2:GASES) {
113                         if (par1 == var2) {
114                                 return true;
115                         }
116                 }
117                 return false;
118         }
119
120
121
122         public static boolean isLiquid(int par1) {
123                 for (int var2:LIQUIDS) {
124                         if (par1 == var2) {
125                                 return true;
126                         }
127                 }
128                 return false;
129         }
130
131
132
133         public static boolean isSolid(int par1) {
134                 if (!isGas(par1) && !isLiquid(par1) && !isUnknown(par1)) {
135                         return true;
136                 }
137                 return false;
138         }
139
140
141
142         public static boolean isUnknown(int par1) {
143                 for (int var2:UNKNOWN) {
144                         if (par1 == var2) {
145                                 return true;
146                         }
147                 }
148                 return false;
149         }
150
151
152
153         public static boolean isLanthanoid(int par1) {
154                 for (int var2:LANTHANOID) {
155                         if (par1 == var2) {
156                                 return true;
157                         }
158                 }
159                 return false;
160         }
161
162
163
164         public static boolean isActinoid(int par1) {
165                 for (int var2:ACTINOID) {
166                         if (par1 == var2) {
167                                 return true;
168                         }
169                 }
170                 return false;
171         }
172
173
174
175         public static boolean isUnofficial(int par1) {
176                 for (int var2:UNOFFICIAL) {
177                         if (par1 == var2) {
178                                 return true;
179                         }
180                 }
181                 return false;
182         }
183
184
185
186         public static boolean isRI(int par1) {
187                 return collapseUraniumSeries(par1) != -1;
188         }
189
190
191
192         public static int collapseUraniumSeries(int par1) {
193                 int var1 = 0;
194                 Probability var2 = new Probability();
195                 switch (par1) {
196                         case 92:
197                                 var1 = 90;
198                                 break;
199                         case 91:
200                                 var1 = 92;
201                                 break;
202                         case 90:
203                                 switch (var2.getProbability(1, 1)) {
204                                         case 0:
205                                                 var1 = 91;
206                                                 break;
207                                         case 1:
208                                                 var1 = 88;
209                                                 break;
210                                 }
211                                 break;
212                         case 88:
213                                 var1 = 86;
214                                 break;
215                         case 86:
216                                 var1 = 84;
217                                 break;
218                         case 85:
219                                 switch (var2.getProbability(1, 1)) {
220                                         case 0:
221                                                 var1 = 86;
222                                                 break;
223                                         case 1:
224                                                 var1 = 83;
225                                                 break;
226                                 }
227                                 break;
228                         case 84:
229                                 switch (var2.getProbability(1, 1)) {
230                                         case 0:
231                                                 var1 = 85;
232                                                 break;
233                                         case 1:
234                                                 var1 = 82;
235                                                 break;
236                                 }
237                                 break;
238                         case 83:
239                                 switch (var2.getProbability(1, 1)) {
240                                         case 0:
241                                                 var1 = 84;
242                                                 break;
243                                         case 1:
244                                                 var1 = 81;
245                                                 break;
246                                 }
247                                 break;
248                         case 82:
249                                 switch (var2.getProbability(1, 1)) {
250                                         case 0:
251                                                 var1 = 83;
252                                                 break;
253                                         case 1:
254                                                 var1 = 80;
255                                                 break;
256                                 }
257                                 break;
258                         case 81:
259                                 var1 = 82;
260                                 break;
261                         case 80:
262                                 var1 = 81;
263                                 break;
264                         default:
265                                 return -1;
266                 }
267                 return var1;
268         }
269
270
271
272         public static boolean isExisting(String par1) {
273                 return false;
274         }
275
276
277
278         /**
279          * 引数に指定されたBiomeと同等か比較します
280          * @param biomeName 比較するBiomeの名前
281          * @return Biomeが一致しているか
282          */
283         public boolean isEquivalentBiome(String biomeName) {
284                 if(this.biomeName != null){
285                         if(this.biomeName.equals(biomeName)){
286                                 return true;
287                         }else{
288                                 return false;
289                         }
290                 }else{
291                         System.err.println("AtonInfo:データが入っていません。updateメソッドでデータを入れてください");
292                         return false;
293                 }
294         }
295
296
297
298         /**
299          * 引数に指定された天候と同等か比較します
300          * 晴れ:Sun, 雨:Rain, 雷雨:Thunder
301          * @param weather 比較する天候
302          * @return 天候が一致しているか
303          */
304         public boolean isEquivalentWeather(String weather) {
305                 if (this.weather != null) {
306                         if (this.weather.equals(weather)) {
307                                 return true;
308                         } else {
309                                 return false;
310                         }
311                 } else {
312                         System.err.println("AtonInfo:データが入っていません。updateメソッドでデータを入れてください");
313                         return false;
314                 }
315         }
316
317
318
319         /**
320          * 引数に指定されたY軸より高いか判定します
321          * @param par1
322          * @return 指定されたY軸より高いか
323          */
324         @SideOnly(Side.CLIENT)
325         public boolean isOverY(int par1) {
326                 if (this.posY >= par1) {
327                         return true;
328                 }else{
329                         return false;
330                 }
331         }
332
333
334
335         /**
336          * 引数に指定されたY軸と同等か判定します
337          * @param par1
338          * @return 指定されたY軸と同等かどうか
339          */
340         @SideOnly(Side.CLIENT)
341         public boolean isEquivalentY(int par1) {
342                 if (this.posY == par1) {
343                         return true;
344                 }else{
345                         return false;
346                 }
347         }
348
349
350
351         /**
352          * 引数に指定されたY軸より低いか判定します
353          * @param par1
354          * @return 指定されたY軸より低いか
355          */
356         @SideOnly(Side.CLIENT)
357         public boolean isBelowY(int par1) {
358                 if (this.posY <= par1) {
359                         return true;
360                 }else{
361                         return false;
362                 }
363         }
364
365 }