1 package pcc.chemicraft.util;
3 import java.util.ArrayList;
5 import net.minecraft.block.Block;
6 import net.minecraft.entity.Entity;
7 import net.minecraft.item.Item;
8 import net.minecraft.item.ItemStack;
9 import net.minecraft.world.World;
10 import cpw.mods.fml.common.registry.LanguageRegistry;
12 public class Auxiliary {
19 public static class NameAuxiliary {
26 public void addName(Object object,Object name){
27 LanguageRegistry.addName(object, (String) name);
33 * 名前を設定します(ItemStack版)
38 public void addName(ItemStack itemstack,Object name){
39 LanguageRegistry.addName(itemstack, (String) name);
50 public void addName(Object object,String lang,Object name){
51 LanguageRegistry.instance().addNameForObject(object, lang, (String) name);
57 * 指定言語にそって名前を追加します(ItemStack版)
62 public void addName(ItemStack object,String lang,Object name){
63 LanguageRegistry.instance().addNameForObject(object, lang, (String) name);
69 * メタデータごとに名前を追加します(Block版)
73 public void addName(Block object,Object[] name){
74 for(int i=0;i<name.length;i++){
75 LanguageRegistry.addName(new ItemStack(object,0,i), (String) name[i]);
82 * メタデータごとに名前を追加します(Item版)
86 public void addName(Item object,Object[] name){
87 for(int i=0;i<name.length;i++){
88 LanguageRegistry.addName(new ItemStack(object,0,i), (String) name[i]);
95 * 指定された言語にそってメタデータごとに名前を設定します(Block版)
99 public void addName(Block object,String lang,Object[] name){
100 for(int i=0;i<name.length;i++){
101 LanguageRegistry.instance().addNameForObject(new ItemStack(object,0,i), lang, (String) name[i]);
108 * 指定された言語にそってメタデータごとに名前を設定します(Item版)
112 public void addName(Item object,String lang, Object[] name){
113 for(int i=0;i<name.length;i++){
114 LanguageRegistry.instance().addNameForObject(new ItemStack(object,0,i), lang, (String) name[i]);
119 * 指定された言語にそってメタデータごとに名前を設定します(Block版)
120 * また、配列の前に任意の文字列を追加できます。
124 public void addName(Block object,String lang, String string, Object[] name){
125 for(int i=0;i<name.length;i++){
126 LanguageRegistry.instance().addNameForObject(new ItemStack(object,0,i), lang, string + (String) name[i]);
133 * 指定された言語にそってメタデータごとに名前を設定します(Item版)
134 * また、配列の前に任意の文字列を追加できます。
138 public void addName(Item object,String lang, String string, Object[] name){
139 for(int i=0;i<name.length;i++){
140 LanguageRegistry.instance().addNameForObject(new ItemStack(object,0,i), lang, string + (String) name[i]);
145 * 指定された言語にそってメタデータごとに名前を設定します(Block版)
146 * また、配列の後ろに任意の文字列を追加できます。
150 public void addName(Block object,String lang, Object[] name, String string){
151 for(int i=0;i<name.length;i++){
152 LanguageRegistry.instance().addNameForObject(new ItemStack(object,0,i), lang, (String) name[i] + string);
159 * 指定された言語にそってメタデータごとに名前を設定します(Item版)
160 * また、配列の後ろに任意の文字列を追加できます。
164 public void addName(Item object,String lang, Object[] name, String string){
165 for(int i=0;i<name.length;i++){
166 LanguageRegistry.instance().addNameForObject(new ItemStack(object,0,i), lang, (String) name[i] + string);
172 public static class ArrayAuxiliary{
174 public ItemStack[] deleteNull(ItemStack[] array){
176 ItemStack[] arrayCopy;
177 for(int i = 0;i < array.length;i++){
178 if(array[array.length - 1 - i] == null){
184 arrayCopy = new ItemStack[array.length - count];
185 for(int i = 0;i < arrayCopy.length;i++){
186 arrayCopy[i] = array[i];
188 array = arrayCopy.clone();
194 public static class Probability {
197 * Return probability(0,1,2,etc...).
199 public int getProbability(double... par1){
200 ArrayList<Double> var1 = new ArrayList<Double>();
201 for (int var2 = 0; var2 < par1.length; var2++) {
202 var1.add(par1[var2]);
204 return getProbability(var1);
207 public int getProbability(ArrayList<Double> par1){
211 for (int i = 0; i < par1.size(); i++){
216 double var3 = Math.random();
218 for (int j = 0; j < par1.size(); j++){
219 double var4 = par1.get(j) / var1;
232 public static class MathAuxiliary {
234 public static ArrayList<Entity> getTriangleEntitysByPlayer(World par1World,
235 double par2, double par3, double par4,
241 ArrayList<Entity> entitys = (ArrayList<Entity>) par1World.loadedEntityList;
242 ArrayList<Entity> result = new ArrayList<Entity>();
243 for (int i = 0; i < entitys.size(); i++) {
245 Entity entity = entitys.get(i);
246 double x = entity.posX;
247 double y = entity.posY;
248 double z = entity.posZ;
252 double look = Math.sin(Math.toRadians(yaw)) * 180;
253 double lookPitch = Math.abs(pitch);
254 double playerToEntityAngleXZ = Math.sin(Math.atan2(bx - x, bz - z)) * 180;
255 double playerToEntityAngleY = Math.toDegrees(Math.atan(y - by));
258 Math.pow(Math.abs(bx - x), 2) +
259 Math.pow(Math.abs(by - y), 2) +
260 Math.pow(Math.abs(bz - z), 2));
262 if (look + angle/2 > playerToEntityAngleXZ && look - angle/2 < playerToEntityAngleXZ) {
273 public static ArrayList<Entity> getTriangleEntitys(World par1World,
274 double par2, double par3, double par4,
280 ArrayList<Entity> entitys = (ArrayList<Entity>) par1World.loadedEntityList;
281 ArrayList<Entity> result = new ArrayList<Entity>();
282 for (int i = 0; i < entitys.size(); i++) {
284 Entity entity = entitys.get(i);
285 double x = entity.posX;
286 double y = entity.posY;
287 double z = entity.posZ;
291 double playerToEntityAngleXZ = Math.sin(Math.atan2(bx - x, bz - z)) * 180;
292 double playerToEntityAngleY = Math.toDegrees(Math.atan(y - by));
295 Math.pow(Math.abs(bx - x), 2) +
296 Math.pow(Math.abs(by - y), 2) +
297 Math.pow(Math.abs(bz - z), 2));
299 if (playerToEntityAngleXZ + angle/2 > playerToEntityAngleXZ && playerToEntityAngleXZ - angle/2 < playerToEntityAngleXZ) {