diff options
Diffstat (limited to 'src/Java/binnie/core/mod/parser')
| -rw-r--r-- | src/Java/binnie/core/mod/parser/FieldParser.java | 55 | ||||
| -rw-r--r-- | src/Java/binnie/core/mod/parser/ItemParser.java | 24 |
2 files changed, 79 insertions, 0 deletions
diff --git a/src/Java/binnie/core/mod/parser/FieldParser.java b/src/Java/binnie/core/mod/parser/FieldParser.java new file mode 100644 index 0000000000..c063d5aca9 --- /dev/null +++ b/src/Java/binnie/core/mod/parser/FieldParser.java @@ -0,0 +1,55 @@ +package binnie.core.mod.parser; + +import binnie.core.AbstractMod; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Collection; + +public abstract class FieldParser +{ + public static Collection<FieldParser> parsers = new ArrayList(); + + public abstract boolean isHandled(Field paramField, AbstractMod paramAbstractMod); + + public void preInit(Field field, AbstractMod mod) + throws IllegalArgumentException, IllegalAccessException + {} + + public void init(Field field, AbstractMod mod) + throws IllegalArgumentException, IllegalAccessException + {} + + public void postInit(Field field, AbstractMod mod) + throws IllegalArgumentException, IllegalAccessException + {} + + public static void preInitParse(Field field, AbstractMod mod) + throws IllegalArgumentException, IllegalAccessException + { + for (FieldParser parser : parsers) { + if (parser.isHandled(field, mod)) { + parser.preInit(field, mod); + } + } + } + + public static void initParse(Field field, AbstractMod mod) + throws IllegalArgumentException, IllegalAccessException + { + for (FieldParser parser : parsers) { + if (parser.isHandled(field, mod)) { + parser.init(field, mod); + } + } + } + + public static void postInitParse(Field field, AbstractMod mod) + throws IllegalArgumentException, IllegalAccessException + { + for (FieldParser parser : parsers) { + if (parser.isHandled(field, mod)) { + parser.postInit(field, mod); + } + } + } +} diff --git a/src/Java/binnie/core/mod/parser/ItemParser.java b/src/Java/binnie/core/mod/parser/ItemParser.java new file mode 100644 index 0000000000..8892a20aba --- /dev/null +++ b/src/Java/binnie/core/mod/parser/ItemParser.java @@ -0,0 +1,24 @@ +package binnie.core.mod.parser; + +import binnie.core.AbstractMod; +import cpw.mods.fml.common.registry.GameRegistry; +import java.lang.reflect.Field; +import net.minecraft.item.Item; + +public class ItemParser + extends FieldParser +{ + public boolean isHandled(Field field, AbstractMod mod) + { + return Item.class.isAssignableFrom(field.getType()); + } + + public void preInit(Field field, AbstractMod mod) + throws IllegalArgumentException, IllegalAccessException + { + Item item = (Item)field.get(null); + if (item != null) { + GameRegistry.registerItem(item, item.getUnlocalizedName().substring(5)); + } + } +} |
