fixed crash with reflection

This commit is contained in:
2016-05-13 16:02:05 +02:00
parent bf6fbd1061
commit bf2ef79692
6 changed files with 60 additions and 48 deletions

View File

@@ -43,15 +43,14 @@ public class Blocks {
if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) {
Class<?> targetType = field.getType(); Class<?> targetType = field.getType();
try { try {
Object newInstance = targetType.newInstance(); Block block = (Block) field.get(targetType);
BasicBlockOre block = (BasicBlockOre) field.get(newInstance);
Utils.registerBlockWithItem(block); Utils.registerBlockWithItem(block);
if (block.isOreDict()) { if (block instanceof BasicBlockOre) {
OreDictionary.registerOre(block.oreDictName, block); if (((BasicBlockOre) block).isOreDict()) {
OreDictionary.registerOre(((BasicBlockOre) block).getOreDictName(), block);
}
} }
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@@ -3,46 +3,45 @@ package com.sosnitzka.ztic_addon;
import com.sosnitzka.ztic_addon.generic.BasicTinkerFluid; import com.sosnitzka.ztic_addon.generic.BasicTinkerFluid;
import com.sosnitzka.ztic_addon.util.Utils; import com.sosnitzka.ztic_addon.util.Utils;
import net.minecraftforge.fluids.Fluid;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.lang.reflect.Field; import java.lang.reflect.Field;
public class Fluids { public class Fluids {
public static Fluid arcaniteFluid = new BasicTinkerFluid("arcaniteFluid", 0xFF272354, true, 200, 10, 4000); public static BasicTinkerFluid arcaniteFluid = new BasicTinkerFluid("arcaniteFluid", 0xFF272354, true, 200, 10, 4000);
public static Fluid aardiumFluid = new BasicTinkerFluid("aardiumFluid", 0xFFC3F93D, true, 200, 10, 4000); public static BasicTinkerFluid aardiumFluid = new BasicTinkerFluid("aardiumFluid", 0xFFC3F93D, true, 200, 10, 4000);
public static Fluid adamantiteFluid = new BasicTinkerFluid("adamantiteFluid", 0xFFc45c82, true, 200, 10, 4000); public static BasicTinkerFluid adamantiteFluid = new BasicTinkerFluid("adamantiteFluid", 0xFFc45c82, true, 200, 10, 4000);
public static Fluid axiidianFluid = new BasicTinkerFluid("axiidianFluid", 0xFF77a19a, true, 200, 10, 4000); public static BasicTinkerFluid axiidianFluid = new BasicTinkerFluid("axiidianFluid", 0xFF77a19a, true, 200, 10, 4000);
public static Fluid bismuthFluid = new BasicTinkerFluid("bismuthFluid", 0xFF555555, true, 200, 10, 4000); public static BasicTinkerFluid bismuthFluid = new BasicTinkerFluid("bismuthFluid", 0xFF555555, true, 200, 10, 4000);
public static Fluid eterniteFluid = new BasicTinkerFluid("eterniteFluid", 0xFFfafa98, true, 200, 10, 4000); public static BasicTinkerFluid eterniteFluid = new BasicTinkerFluid("eterniteFluid", 0xFFfafa98, true, 200, 10, 4000);
public static Fluid ignititeFluid = new BasicTinkerFluid("ignititeFluid", 0xFFd29453, true, 200, 10, 4000); public static BasicTinkerFluid ignititeFluid = new BasicTinkerFluid("ignititeFluid", 0xFFd29453, true, 200, 10, 4000);
public static Fluid karmesineFluid = new BasicTinkerFluid("karmesineFluid", 0xFFc16d6d, true, 200, 10, 4000); public static BasicTinkerFluid karmesineFluid = new BasicTinkerFluid("karmesineFluid", 0xFFc16d6d, true, 200, 10, 4000);
public static Fluid meteoriteFluid = new BasicTinkerFluid("meteoriteFluid", 0xFF6e6a62, true, 200, 10, 4000); public static BasicTinkerFluid meteoriteFluid = new BasicTinkerFluid("meteoriteFluid", 0xFF6e6a62, true, 200, 10, 4000);
public static Fluid mindoriteFluid = new BasicTinkerFluid("mindoriteFluid", 0xFF6bbbbf, true, 200, 10, 4000); public static BasicTinkerFluid mindoriteFluid = new BasicTinkerFluid("mindoriteFluid", 0xFF6bbbbf, true, 200, 10, 4000);
public static Fluid mythrilFluid = new BasicTinkerFluid("mythrilFluid", 0xFFa8c0ba, true, 200, 10, 4000); public static BasicTinkerFluid mythrilFluid = new BasicTinkerFluid("mythrilFluid", 0xFFa8c0ba, true, 200, 10, 4000);
public static Fluid palladiumFluid = new BasicTinkerFluid("palladiumFluid", 0xFFfe5c05, true, 200, 10, 4000); public static BasicTinkerFluid palladiumFluid = new BasicTinkerFluid("palladiumFluid", 0xFFfe5c05, true, 200, 10, 4000);
public static Fluid prometheumFluid = new BasicTinkerFluid("prometheumFluid", 0xFF2b282f, true, 200, 10, 4000); public static BasicTinkerFluid prometheumFluid = new BasicTinkerFluid("prometheumFluid", 0xFF2b282f, true, 200, 10, 4000);
public static Fluid tiberiumFluid = new BasicTinkerFluid("tiberiumFluid", 0xFF86bd5a, true, 200, 10, 4000); public static BasicTinkerFluid tiberiumFluid = new BasicTinkerFluid("tiberiumFluid", 0xFF86bd5a, true, 200, 10, 4000);
public static Fluid vibraniumFluid = new BasicTinkerFluid("vibraniumFluid", 0xFFb6bba8, true, 200, 10, 4000); public static BasicTinkerFluid vibraniumFluid = new BasicTinkerFluid("vibraniumFluid", 0xFFb6bba8, true, 200, 10, 4000);
public static Fluid yrdeanFluid = new BasicTinkerFluid("yrdeanFluid", 0xFF3e3c6f, true, 200, 10, 4000); public static BasicTinkerFluid yrdeanFluid = new BasicTinkerFluid("yrdeanFluid", 0xFF3e3c6f, true, 200, 10, 4000);
public static Fluid astriumFluid = new BasicTinkerFluid("astriumFluid", 0xFF7a3b74, true, 200, 10, 4000); public static BasicTinkerFluid astriumFluid = new BasicTinkerFluid("astriumFluid", 0xFF7a3b74, true, 200, 10, 4000);
public static Fluid instableNitroniteFluid = new BasicTinkerFluid("instableNitroniteFluid", 0xFF659933, true, 200, 10, 4000); public static BasicTinkerFluid instableNitroniteFluid = new BasicTinkerFluid("instableNitroniteFluid", 0xFF659933, true, 200, 10, 4000);
public static Fluid proxideumFluid = new BasicTinkerFluid("proxideumFluid", 0xFF416565, true, 200, 10, 4000); public static BasicTinkerFluid proxideumFluid = new BasicTinkerFluid("proxideumFluid", 0xFF416565, true, 200, 10, 4000);
public static Fluid instablePolyniumFluid = new BasicTinkerFluid("instablePolyniumFluid", 0xFF6c6aa3, true, 200, 10, 4000); public static BasicTinkerFluid instablePolyniumFluid = new BasicTinkerFluid("instablePolyniumFluid", 0xFF6c6aa3, true, 200, 10, 4000);
public static Fluid imperomiteFluid = new BasicTinkerFluid("imperomiteFluid", 0xFF339966, true, 200, 10, 4000); public static BasicTinkerFluid imperomiteFluid = new BasicTinkerFluid("imperomiteFluid", 0xFF339966, true, 200, 10, 4000);
public static Fluid cryptogenFluid = new BasicTinkerFluid("cryptogenFluid", 0xFF9f8a4a, true, 200, 10, 4000); public static BasicTinkerFluid cryptogenFluid = new BasicTinkerFluid("cryptogenFluid", 0xFF9f8a4a, true, 200, 10, 4000);
public static Fluid fractoryteFluid = new BasicTinkerFluid("fractoryteFluid", 0xFFb44a14, true, 200, 10, 4000); public static BasicTinkerFluid fractoryteFluid = new BasicTinkerFluid("fractoryteFluid", 0xFFb44a14, true, 200, 10, 4000);
public static Fluid seismodiumFluid = new BasicTinkerFluid("seismodiumFluid", 0xFF46131D, true, 200, 10, 4000); public static BasicTinkerFluid seismodiumFluid = new BasicTinkerFluid("seismodiumFluid", 0xFF46131D, true, 200, 10, 4000);
public static Fluid terramiteFluid = new BasicTinkerFluid("terramiteFluid", 0xFFa6b27a, true, 200, 10, 4000); public static BasicTinkerFluid terramiteFluid = new BasicTinkerFluid("terramiteFluid", 0xFFa6b27a, true, 200, 10, 4000);
public static Fluid instablePrysociteFluid = new BasicTinkerFluid("instablePrysociteFluid", 0xFFbde398, true, 200, 10, 4000); public static BasicTinkerFluid instablePrysociteFluid = new BasicTinkerFluid("instablePrysociteFluid", 0xFFbde398, true, 200, 10, 4000);
public static Fluid blazingXylititeFluid = new BasicTinkerFluid("blazingXylititeFluid", 0xFFffc81d, true, 200, 10, 4000); public static BasicTinkerFluid blazingXylititeFluid = new BasicTinkerFluid("blazingXylititeFluid", 0xFFffc81d, true, 200, 10, 4000);
public static Fluid instableDyoniteFluid = new BasicTinkerFluid("instableDyoniteFluid", 0xFFff6743, true, 200, 10, 4000); public static BasicTinkerFluid instableDyoniteFluid = new BasicTinkerFluid("instableDyoniteFluid", 0xFFff6743, true, 200, 10, 4000);
public static Fluid ultraniteFluid = new BasicTinkerFluid("ultraniteFluid", 0xFFfff69b, true, 200, 10, 4000); public static BasicTinkerFluid ultraniteFluid = new BasicTinkerFluid("ultraniteFluid", 0xFFfff69b, true, 200, 10, 4000);
public static Fluid radiantPliniumFluid = new BasicTinkerFluid("radiantPliniumFluid", 0xFFc1ff68, true, 200, 10, 4000); public static BasicTinkerFluid radiantPliniumFluid = new BasicTinkerFluid("radiantPliniumFluid", 0xFFc1ff68, true, 200, 10, 4000);
public static Fluid dysprosaniumFluid = new BasicTinkerFluid("dysprosaniumFluid", 0xFFb7a2bd, true, 200, 10, 4000); public static BasicTinkerFluid dysprosaniumFluid = new BasicTinkerFluid("dysprosaniumFluid", 0xFFb7a2bd, true, 200, 10, 4000);
public static Fluid refractiveBysmuidFluid = new BasicTinkerFluid("refractiveBysmuidFluid", 0xFF7b97b0, true, 200, 10, 4000); public static BasicTinkerFluid refractiveBysmuidFluid = new BasicTinkerFluid("refractiveBysmuidFluid", 0xFF7b97b0, true, 200, 10, 4000);
static void register() { static void register() {
@@ -51,11 +50,8 @@ public class Fluids {
if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) {
Class<?> targetType = field.getType(); Class<?> targetType = field.getType();
try { try {
Object newInstance = targetType.newInstance(); BasicTinkerFluid fluid = (BasicTinkerFluid) field.get(targetType);
BasicTinkerFluid fluid = (BasicTinkerFluid) field.get(newInstance);
Utils.registerTinkerFluid(StringUtils.capitalize(field.getName().replace("Fluid", "")), fluid, fluid.isToolForge()); Utils.registerTinkerFluid(StringUtils.capitalize(field.getName().replace("Fluid", "")), fluid, fluid.isToolForge());
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@@ -8,6 +8,7 @@ import com.sosnitzka.ztic_addon.items.ItemSlaggoldIngot;
import com.sosnitzka.ztic_addon.items.ItemSlagironIngot; import com.sosnitzka.ztic_addon.items.ItemSlagironIngot;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.oredict.OreDictionary;
import java.lang.reflect.Field; import java.lang.reflect.Field;
@@ -61,10 +62,15 @@ public class Items {
if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) {
Class<?> targetType = field.getType(); Class<?> targetType = field.getType();
try { try {
Object newInstance = targetType.newInstance(); Item item = (Item) field.get(targetType);
GameRegistry.register(((Item) field.get(newInstance)));
} catch (InstantiationException e) { GameRegistry.register(item);
e.printStackTrace();
if (item instanceof BasicItem) {
if (((BasicItem) item).isOreDict()) {
OreDictionary.registerOre(((BasicItem) item).getOreDictName(), item);
}
}
} catch (IllegalAccessException e) { } catch (IllegalAccessException e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@@ -19,4 +19,8 @@ public class BasicBlockOre extends Block {
public boolean isOreDict() { public boolean isOreDict() {
return this.oreDictName != null; return this.oreDictName != null;
} }
public String getOreDictName() {
return oreDictName;
}
} }

View File

@@ -3,7 +3,7 @@ package com.sosnitzka.ztic_addon.generic;
import net.minecraft.item.Item; import net.minecraft.item.Item;
public class BasicItem extends Item { public class BasicItem extends Item {
public String oreDictName; private String oreDictName;
public BasicItem(String name, String oreDictName) { public BasicItem(String name, String oreDictName) {
setUnlocalizedName(name); setUnlocalizedName(name);
@@ -18,4 +18,8 @@ public class BasicItem extends Item {
public boolean isOreDict() { public boolean isOreDict() {
return this.oreDictName != null; return this.oreDictName != null;
} }
public String getOreDictName() {
return oreDictName;
}
} }

View File

@@ -12,12 +12,15 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
public class Utils { public class Utils {
public static void registerBlockWithItem(Block block) { public static void registerBlockWithItem(Block block) {
System.out.println(String.format("Register Block: %s", block.getUnlocalizedName()));
GameRegistry.register(block); GameRegistry.register(block);
GameRegistry.register(new ItemBlock(block).setRegistryName(block.getRegistryName())); GameRegistry.register(new ItemBlock(block).setRegistryName(block.getRegistryName()));
System.out.println(String.format("Registered: %s", block));
} }
public static void registerTinkerFluid(String oreDictSuffix, Fluid fluid, boolean toolForge) { public static void registerTinkerFluid(String oreDictSuffix, Fluid fluid, boolean toolForge) {
System.out.println(String.format("Register TinkerFluid with oreDictSuffix: %s", oreDictSuffix));
registerFluid(fluid); registerFluid(fluid);
NBTTagCompound tag = new NBTTagCompound(); NBTTagCompound tag = new NBTTagCompound();