diff --git a/src/main/java/net/minecraftforge/client/EnumHelperClient.java b/src/main/java/net/minecraftforge/client/EnumHelperClient.java index c3520e0ba1..65149fb1a9 100644 --- a/src/main/java/net/minecraftforge/client/EnumHelperClient.java +++ b/src/main/java/net/minecraftforge/client/EnumHelperClient.java @@ -13,8 +13,7 @@ public class EnumHelperClient extends EnumHelper { {GameType.class, int.class, String.class}, {Options.class, String.class, boolean.class, boolean.class}, - {EnumOS.class}, - {EnumRarity.class, int.class, String.class} + {EnumOS.class} }; public static GameType addGameType(String name, int id, String displayName) @@ -31,11 +30,6 @@ public class EnumHelperClient extends EnumHelper { return addEnum(EnumOS.class, name); } - - public static EnumRarity addRarity(String name, int color, String displayName) - { - return addEnum(EnumRarity.class, name, color, displayName); - } public static > T addEnum(Class enumType, String enumName, Object... paramValues) { diff --git a/src/main/java/net/minecraftforge/common/util/EnumHelper.java b/src/main/java/net/minecraftforge/common/util/EnumHelper.java index 5cc5e71983..f71408a3e1 100644 --- a/src/main/java/net/minecraftforge/common/util/EnumHelper.java +++ b/src/main/java/net/minecraftforge/common/util/EnumHelper.java @@ -13,8 +13,10 @@ import net.minecraft.entity.EnumCreatureType; import net.minecraft.entity.item.EntityPainting.EnumArt; import net.minecraft.entity.player.EntityPlayer.EnumStatus; import net.minecraft.item.EnumAction; +import net.minecraft.item.EnumRarity; import net.minecraft.item.Item.ToolMaterial; import net.minecraft.item.ItemArmor.ArmorMaterial; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MovingObjectPosition.MovingObjectType; import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.gen.structure.StructureStrongholdPieces.Stronghold.Door; @@ -37,7 +39,7 @@ public class EnumHelper {ArmorMaterial.class, int.class, int[].class, int.class}, {EnumArt.class, String.class, int.class, int.class, int.class, int.class}, {EnumCreatureAttribute.class}, - {EnumCreatureType.class, Class.class, int.class, Material.class, boolean.class}, + {EnumCreatureType.class, Class.class, int.class, Material.class, boolean.class, boolean.class}, {Door.class}, {EnumEnchantmentType.class}, {EnumEntitySize.class}, @@ -45,7 +47,8 @@ public class EnumHelper {MovingObjectType.class}, {EnumSkyBlock.class, int.class}, {EnumStatus.class}, - {ToolMaterial.class, int.class, int.class, float.class, float.class, int.class} + {ToolMaterial.class, int.class, int.class, float.class, float.class, int.class}, + {EnumRarity.class, EnumChatFormatting.class, String.class} }; public static EnumAction addAction(String name) @@ -65,9 +68,9 @@ public class EnumHelper return addEnum(EnumCreatureAttribute.class, name); } @SuppressWarnings("rawtypes") - public static EnumCreatureType addCreatureType(String name, Class typeClass, int maxNumber, Material material, boolean peaceful) + public static EnumCreatureType addCreatureType(String name, Class typeClass, int maxNumber, Material material, boolean peaceful, boolean animal) { - return addEnum(EnumCreatureType.class, name, typeClass, maxNumber, material, peaceful); + return addEnum(EnumCreatureType.class, name, typeClass, maxNumber, material, peaceful, animal); } public static Door addDoor(String name) { @@ -101,6 +104,10 @@ public class EnumHelper { return addEnum(ToolMaterial.class, name, harvestLevel, maxUses, efficiency, damage, enchantability); } + public static EnumRarity addRarity(String name, EnumChatFormatting color, String displayName) + { + return addEnum(EnumRarity.class, name, color, displayName); + } private static void setup() { diff --git a/src/test/java/net/minecraftforge/test/EnumHelperTest.java b/src/test/java/net/minecraftforge/test/EnumHelperTest.java new file mode 100644 index 0000000000..a79582ec55 --- /dev/null +++ b/src/test/java/net/minecraftforge/test/EnumHelperTest.java @@ -0,0 +1,58 @@ +package net.minecraftforge.test; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; + +import net.minecraftforge.client.EnumHelperClient; +import net.minecraftforge.common.util.EnumHelper; + +import org.apache.logging.log4j.core.helpers.Assert; +import org.junit.Test; + +import cpw.mods.fml.relauncher.ReflectionHelper; + +public class EnumHelperTest +{ + private boolean failed = false; + + @Test + public void test() + { + System.out.println("Testing EnumHelper:"); + Object[][] types = (Object[][])ReflectionHelper.getPrivateValue(EnumHelper.class, null, "commonTypes"); + for (Object[] o : types) + testType(o); + + System.out.println("Testing EnumHelperClient:"); + types = (Object[][])ReflectionHelper.getPrivateValue(EnumHelperClient.class, null, "clentTypes"); + for (Object[] o : types) + testType(o); + + if (failed) + throw new RuntimeException("Enum Helper test failed!"); + } + private void testType(Object[] info) + { + Class cls = (Class)info[0]; + Class[] parameterTypes = new Class[info.length + 2 - 1]; + parameterTypes[0] = String.class; + parameterTypes[1] = int.class; + System.arraycopy(info, 1, parameterTypes, 2, info.length - 1); + try + { + cls.getDeclaredConstructor(parameterTypes); + System.out.println(" " + cls.getName() + ": Success"); + } + catch (Exception e) + { + System.out.println(" " + cls.getName() + ": Failed"); + for (Constructor c : cls.getDeclaredConstructors()) + { + System.out.println(" " + c.toString()); + } + failed = true; + } + } +}