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 cpw.mods.fml.relauncher.Side;
6 import cpw.mods.fml.relauncher.SideOnly;
7
8 /**
9  * いろいろなデータを格納しメソッドによってチェックするクラス
10  * 使用する場合はItemAtomInfoContainerを継承することを推奨
11  * @author ponkotate
12  *
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.world = par1World;
95                 //this.entityPlayer = par2EntityPlayer;
96
97                 this.posX = (int) par2EntityPlayer.posX;
98                 this.posY = (int) par2EntityPlayer.posY;
99                 this.posZ = (int) par2EntityPlayer.posZ;
100
101                 this.biomeName = par1World.getBiomeGenForCoords(posX, posZ).biomeName;
102
103                 if (par1World.isThundering()){
104                         this.weather = "Thunder";
105                 }else if(par1World.isRaining()){
106                         this.weather = "Rain";
107                 }else{
108                         this.weather = "Sun";
109                 }
110         }
111
112
113
114         public static boolean isGas(int par1){
115                 for (int var2:gases){
116                         if (par1 == var2){
117                                 return true;
118                         }
119                 }
120                 return false;
121         }
122
123
124
125         public static boolean isLiquid(int par1){
126                 for (int var2:liquids){
127                         if (par1 == var2){
128                                 return true;
129                         }
130                 }
131                 return false;
132         }
133
134
135
136         public static boolean isSolid(int par1){
137                 if (!isGas(par1) && !isLiquid(par1) && !isUnknown(par1)){
138                         return true;
139                 }
140                 return false;
141         }
142
143
144
145         public static boolean isUnknown(int par1){
146                 for (int var2:unknown){
147                         if (par1 == var2){
148                                 return true;
149                         }
150                 }
151                 return false;
152         }
153
154
155
156         public static boolean isLanthanoid(int par1){
157                 for (int var2:lanthanoid){
158                         if (par1 == var2){
159                                 return true;
160                         }
161                 }
162                 return false;
163         }
164
165
166
167         public static boolean isActinoid(int par1){
168                 for (int var2:actinoid){
169                         if (par1 == var2){
170                                 return true;
171                         }
172                 }
173                 return false;
174         }
175
176
177
178         public static boolean isUnofficial(int par1){
179                 for (int var2:unofficial){
180                         if (par1 == var2){
181                                 return true;
182                         }
183                 }
184                 return false;
185         }
186
187
188
189         /**
190          * 引数に指定されたBiomeと同等か比較します
191          * @param biomeName 比較するBiomeの名前
192          * @return Biomeが一致しているか
193          */
194         public boolean isEquivalentBiome(String biomeName){
195                 if(this.biomeName != null){
196                         if(this.biomeName.equals(biomeName)){
197                                 return true;
198                         }else{
199                                 return false;
200                         }
201                 }else{
202                         System.err.println("AtonInfo:データが入っていません。updateメソッドでデータを入れてください");
203                         return false;
204                 }
205         }
206
207
208
209         /**
210          * 引数に指定された天候と同等か比較します
211          * 晴れ:Sun, 雨:Rain, 雷雨:Thunder
212          * @param weather 比較する天候
213          * @return 天候が一致しているか
214          */
215         public boolean isEquivalentWeather(String weather){
216                 if(this.weather != null){
217                         if(this.weather.equals(weather)){
218                                 return true;
219                         }else{
220                                 return false;
221                         }
222                 }else{
223                         System.err.println("AtonInfo:データが入っていません。updateメソッドでデータを入れてください");
224                         return false;
225                 }
226         }
227
228
229
230         /**
231          * 引数に指定されたY軸より高いか判定します
232          * @param par1
233          * @return 指定されたY軸より高いか
234          */
235         @SideOnly(Side.CLIENT)
236         public boolean isOverY(int par1){
237                 if(this.posY >= par1){
238                         return true;
239                 }else{
240                         return false;
241                 }
242         }
243
244
245
246         /**
247          * 引数に指定されたY軸と同等か判定します
248          * @param par1
249          * @return 指定されたY軸と同等かどうか
250          */
251         @SideOnly(Side.CLIENT)
252         public boolean isEquivalentY(int par1){
253                 if(this.posY == par1){
254                         return true;
255                 }else{
256                         return false;
257                 }
258         }
259
260
261
262         /**
263          * 引数に指定されたY軸より低いか判定します
264          * @param par1
265          * @return 指定されたY軸より低いか
266          */
267         @SideOnly(Side.CLIENT)
268         public boolean isBelowY(int par1){
269                 if(this.posY <= par1){
270                         return true;
271                 }else{
272                         return false;
273                 }
274         }
275
276 }