001 package cpw.mods.fml.common.discovery;
002
003 import java.io.File;
004 import java.util.List;
005
006 import com.google.common.collect.Lists;
007
008 import cpw.mods.fml.common.FMLLog;
009 import cpw.mods.fml.common.ModContainer;
010 import cpw.mods.fml.common.discovery.asm.ASMModParser;
011
012
013 public class ModCandidate
014 {
015 private File classPathRoot;
016 private File modContainer;
017 private ContainerType sourceType;
018 private boolean classpath;
019 private List<String> baseModTypes = Lists.newArrayList();
020 private boolean isMinecraft;
021 private List<ASMModParser> baseModCandidateTypes = Lists.newArrayListWithCapacity(1);
022
023 public ModCandidate(File classPathRoot, File modContainer, ContainerType sourceType)
024 {
025 this(classPathRoot, modContainer, sourceType, false, false);
026 }
027 public ModCandidate(File classPathRoot, File modContainer, ContainerType sourceType, boolean isMinecraft, boolean classpath)
028 {
029 this.classPathRoot = classPathRoot;
030 this.modContainer = modContainer;
031 this.sourceType = sourceType;
032 this.isMinecraft = isMinecraft;
033 this.classpath = classpath;
034 }
035
036 public File getClassPathRoot()
037 {
038 return classPathRoot;
039 }
040
041 public File getModContainer()
042 {
043 return modContainer;
044 }
045
046 public ContainerType getSourceType()
047 {
048 return sourceType;
049 }
050 public List<ModContainer> explore(ASMDataTable table)
051 {
052 List<ModContainer> mods = sourceType.findMods(this, table);
053 if (!baseModCandidateTypes.isEmpty())
054 {
055 FMLLog.info("Attempting to reparse the mod container %s", getModContainer().getName());
056 return sourceType.findMods(this, table);
057 }
058 else
059 {
060 return mods;
061 }
062 }
063
064 public boolean isClasspath()
065 {
066 return classpath;
067 }
068 public void rememberBaseModType(String className)
069 {
070 baseModTypes.add(className);
071 }
072 public List<String> getRememberedBaseMods()
073 {
074 return baseModTypes;
075 }
076 public boolean isMinecraftJar()
077 {
078 return isMinecraft;
079 }
080 public void rememberModCandidateType(ASMModParser modParser)
081 {
082 baseModCandidateTypes.add(modParser);
083 }
084 }