diff --git a/src/main/java/cpw/mods/fml/common/LoadController.java b/src/main/java/cpw/mods/fml/common/LoadController.java index b1e8558..388a0ba 100644 --- a/src/main/java/cpw/mods/fml/common/LoadController.java +++ b/src/main/java/cpw/mods/fml/common/LoadController.java @@ -266,10 +266,17 @@ public void printModStates(StringBuilder ret) { + ret.append("\n\tStates:"); + for (ModState state : ModState.values()) + ret.append(" '").append(state.getMarker()).append("' = ").append(state.toString()); + for (ModContainer mc : loader.getModList()) { - ret.append("\n\t").append(mc.getModId()).append("{").append(mc.getVersion()).append("} [").append(mc.getName()).append("] (").append(mc.getSource().getName()).append(") "); - Joiner.on("->"). appendTo(ret, modStates.get(mc.getModId())); + ret.append("\n\t"); + for (ModState state : modStates.get(mc.getModId())) + ret.append(state.getMarker()); + + ret.append("\t").append(mc.getModId()).append("{").append(mc.getVersion()).append("} [").append(mc.getName()).append("] (").append(mc.getSource().getName()).append(") "); } } diff --git a/src/main/java/cpw/mods/fml/common/Loader.java b/src/main/java/cpw/mods/fml/common/Loader.java index 820d513..d98edb1 100644 --- a/src/main/java/cpw/mods/fml/common/Loader.java +++ b/src/main/java/cpw/mods/fml/common/Loader.java @@ -19,6 +19,7 @@ import java.io.IOException; import java.net.MalformedURLException; import java.util.ArrayList; +import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.LinkedHashMap; @@ -510,10 +511,30 @@ } modController.transition(LoaderState.CONSTRUCTING, false); modController.distributeStateMessage(LoaderState.CONSTRUCTING, modClassLoader, discoverer.getASMTable(), reverseDependencies); + + List mods = Lists.newArrayList(); + mods.addAll(getActiveModList()); + Collections.sort(mods, new Comparator() + { + @Override + public int compare(ModContainer o1, ModContainer o2) + { + return o1.getModId().compareTo(o2.getModId()); + } + }); + FMLLog.fine("Mod signature data"); + FMLLog.fine(" \tValid Signatures:"); for (ModContainer mod : getActiveModList()) { - FMLLog.fine("\t%s(%s:%s): %s (%s)", mod.getModId(), mod.getName(), mod.getVersion(), mod.getSource().getName(), CertificateHelper.getFingerprint(mod.getSigningCertificate())); + if (mod.getSigningCertificate() != null) + FMLLog.fine("\t\t(%s) %s\t(%s\t%s)\t%s", CertificateHelper.getFingerprint(mod.getSigningCertificate()), mod.getModId(), mod.getName(), mod.getVersion(), mod.getSource().getName()); + } + FMLLog.fine(" \tMissing Signatures:"); + for (ModContainer mod : getActiveModList()) + { + if (mod.getSigningCertificate() == null) + FMLLog.fine("\t\t%s\t(%s\t%s)\t%s", mod.getModId(), mod.getName(), mod.getVersion(), mod.getSource().getName()); } if (getActiveModList().isEmpty()) { diff --git a/src/main/java/cpw/mods/fml/common/LoaderState.java b/src/main/java/cpw/mods/fml/common/LoaderState.java index ca4b44f..7eb4cb9 100644 --- a/src/main/java/cpw/mods/fml/common/LoaderState.java +++ b/src/main/java/cpw/mods/fml/common/LoaderState.java @@ -95,21 +95,23 @@ } public enum ModState { - UNLOADED("Unloaded"), - LOADED("Loaded"), - CONSTRUCTED("Constructed"), - PREINITIALIZED("Pre-initialized"), - INITIALIZED("Initialized"), - POSTINITIALIZED("Post-initialized"), - AVAILABLE("Available"), - DISABLED("Disabled"), - ERRORED("Errored"); + UNLOADED ("Unloaded", "U"), + LOADED ("Loaded", "L"), + CONSTRUCTED ("Constructed", "C"), + PREINITIALIZED ("Pre-initialized", "H"), + INITIALIZED ("Initialized", "I"), + POSTINITIALIZED("Post-initialized", "J"), + AVAILABLE ("Available", "A"), + DISABLED ("Disabled", "D"), + ERRORED ("Errored", "E"); private String label; + private String marker; - private ModState(String label) + private ModState(String label, String marker) { this.label = label; + this.marker = marker; } @Override @@ -117,5 +119,10 @@ { return this.label; } + + public String getMarker() + { + return this.marker; + } } } \ No newline at end of file diff --git a/src/main/java/cpw/mods/fml/common/MinecraftDummyContainer.java b/src/main/java/cpw/mods/fml/common/MinecraftDummyContainer.java index fba4f55..c05642c 100644 --- a/src/main/java/cpw/mods/fml/common/MinecraftDummyContainer.java +++ b/src/main/java/cpw/mods/fml/common/MinecraftDummyContainer.java @@ -12,8 +12,12 @@ package cpw.mods.fml.common; +import java.security.cert.Certificate; + import cpw.mods.fml.common.versioning.VersionParser; import cpw.mods.fml.common.versioning.VersionRange; +import cpw.mods.fml.relauncher.FMLLaunchHandler; +import cpw.mods.fml.relauncher.Side; public class MinecraftDummyContainer extends DummyModContainer { @@ -33,4 +37,20 @@ { return staticRange; } + + @Override + public Certificate getSigningCertificate() + { + if (FMLLaunchHandler.side() != Side.CLIENT) + return null; + + try + { + Class cbr = Class.forName("net.minecraft.client.ClientBrandRetriever", false, getClass().getClassLoader()); + Certificate[] certificates = cbr.getProtectionDomain().getCodeSource().getCertificates(); + return certificates != null ? certificates[0] : null; + } + catch (Exception e){} // Errors don't matter just return null. + return null; + } } \ No newline at end of file diff --git a/src/main/java/cpw/mods/fml/common/asm/transformers/AccessTransformer.java b/src/main/java/cpw/mods/fml/common/asm/transformers/AccessTransformer.java index deaa7e0..04b7475 100644 --- a/src/main/java/cpw/mods/fml/common/asm/transformers/AccessTransformer.java +++ b/src/main/java/cpw/mods/fml/common/asm/transformers/AccessTransformer.java @@ -118,7 +118,7 @@ rulesResource = Resources.getResource(rulesFile); } processATFile(Resources.asCharSource(rulesResource, Charsets.UTF_8)); - FMLRelaunchLog.fine("Loaded %d rules from AccessTransformer config file %s\n", modifiers.size(), rulesFile); + FMLRelaunchLog.fine("Loaded %d rules from AccessTransformer config file %s", modifiers.size(), rulesFile); } protected void processATFile(CharSource rulesResource) throws IOException { diff --git a/src/main/java/cpw/mods/fml/common/asm/transformers/ModAPITransformer.java b/src/main/java/cpw/mods/fml/common/asm/transformers/ModAPITransformer.java index 0e5abdb..85c1e35 100644 --- a/src/main/java/cpw/mods/fml/common/asm/transformers/ModAPITransformer.java +++ b/src/main/java/cpw/mods/fml/common/asm/transformers/ModAPITransformer.java @@ -25,7 +25,7 @@ public class ModAPITransformer implements IClassTransformer { - private static final boolean logDebugInfo = Boolean.valueOf(System.getProperty("fml.debugAPITransformer", "true")); + private static final boolean logDebugInfo = Boolean.valueOf(System.getProperty("fml.debugAPITransformer", "false")); private ListMultimap optionals; @Override diff --git a/src/main/java/cpw/mods/fml/common/patcher/ClassPatchManager.java b/src/main/java/cpw/mods/fml/common/patcher/ClassPatchManager.java index a2e1082..373d6ce 100644 --- a/src/main/java/cpw/mods/fml/common/patcher/ClassPatchManager.java +++ b/src/main/java/cpw/mods/fml/common/patcher/ClassPatchManager.java @@ -38,6 +38,7 @@ public static final ClassPatchManager INSTANCE = new ClassPatchManager(); public static final boolean dumpPatched = Boolean.parseBoolean(System.getProperty("fml.dumpPatchedClasses", "false")); + public static final boolean DEBUG = Boolean.parseBoolean(System.getProperty("fml.debugClassPatchManager", "false")); private GDiffPatcher patcher = new GDiffPatcher(); private ListMultimap patches; @@ -75,7 +76,8 @@ return inputData; } boolean ignoredError = false; - FMLRelaunchLog.fine("Runtime patching class %s (input size %d), found %d patch%s", mappedName, (inputData == null ? 0 : inputData.length), list.size(), list.size()!=1 ? "es" : ""); + if (DEBUG) + FMLRelaunchLog.fine("Runtime patching class %s (input size %d), found %d patch%s", mappedName, (inputData == null ? 0 : inputData.length), list.size(), list.size()!=1 ? "es" : ""); for (ClassPatch patch: list) { if (!patch.targetClassName.equals(mappedName) && !patch.sourceClassName.equals(name)) @@ -122,7 +124,7 @@ } } } - if (!ignoredError) + if (!ignoredError && DEBUG) { FMLRelaunchLog.fine("Successfully applied runtime patches for %s (new size %d)", mappedName, inputData.length); } @@ -194,13 +196,15 @@ } } while (true); FMLRelaunchLog.fine("Read %d binary patches", patches.size()); - FMLRelaunchLog.fine("Patch list :\n\t%s", Joiner.on("\t\n").join(patches.asMap().entrySet())); + if (DEBUG) + FMLRelaunchLog.fine("Patch list :\n\t%s", Joiner.on("\t\n").join(patches.asMap().entrySet())); patchedClasses.clear(); } private ClassPatch readPatch(JarEntry patchEntry, JarInputStream jis) { - FMLRelaunchLog.finer("Reading patch data from %s", patchEntry.getName()); + if (DEBUG) + FMLRelaunchLog.finer("Reading patch data from %s", patchEntry.getName()); ByteArrayDataInput input; try { diff --git a/src/main/java/cpw/mods/fml/common/registry/FMLControlledNamespacedRegistry.java b/src/main/java/cpw/mods/fml/common/registry/FMLControlledNamespacedRegistry.java index 335de20..d3b32d5 100644 --- a/src/main/java/cpw/mods/fml/common/registry/FMLControlledNamespacedRegistry.java +++ b/src/main/java/cpw/mods/fml/common/registry/FMLControlledNamespacedRegistry.java @@ -23,6 +23,7 @@ import cpw.mods.fml.common.functions.GenericIterableFactory; public class FMLControlledNamespacedRegistry extends RegistryNamespaced { + public static final boolean DEBUG = Boolean.parseBoolean(System.getProperty("fml.debugRegistryEntries", "false")); private final Class superType; private String optionalDefaultName; private I optionalDefaultObject; @@ -396,14 +397,16 @@ } addObjectRaw(idToUse, name, thing); - FMLLog.finer("Registry add: %s %d %s (req. id %d)", name, idToUse, thing, id); + if (DEBUG) + FMLLog.finer("Registry add: %s %d %s (req. id %d)", name, idToUse, thing, id); return idToUse; } void addAlias(String from, String to) { aliases.put(from, to); - FMLLog.finer("Registry alias: %s -> %s", from, to); + if (DEBUG) + FMLLog.finer("Registry alias: %s -> %s", from, to); } Map getEntriesNotIn(FMLControlledNamespacedRegistry registry) @@ -426,6 +429,9 @@ void dump() { + if (!DEBUG) + return; + List ids = new ArrayList(); for (I thing : this.typeSafeIterable()) @@ -439,7 +445,7 @@ for (int id : ids) { I thing = getRaw(id); - FMLLog.finer("Registry: %s %d %s", getNameForObject(thing), id, thing); + FMLLog.finer("Registry: %d %s %s", id, getNameForObject(thing), thing); } } diff --git a/src/main/java/cpw/mods/fml/common/registry/GameData.java b/src/main/java/cpw/mods/fml/common/registry/GameData.java index cdd994c..022dedf 100644 --- a/src/main/java/cpw/mods/fml/common/registry/GameData.java +++ b/src/main/java/cpw/mods/fml/common/registry/GameData.java @@ -834,7 +834,8 @@ } else // ItemBlock after its Block { - FMLLog.fine("Found matching Block %s for ItemBlock %s at id %d, original id requested: %d", block, item, id, idHint); + if (FMLControlledNamespacedRegistry.DEBUG) + FMLLog.fine("Found matching Block %s for ItemBlock %s at id %d, original id requested: %d", block, item, id, idHint); freeSlot(id, item); // temporarily free the slot occupied by the Block for the item registration } diff --git a/src/main/java/cpw/mods/fml/common/registry/LanguageRegistry.java b/src/main/java/cpw/mods/fml/common/registry/LanguageRegistry.java index 50ee2c3..dc5f782 100644 --- a/src/main/java/cpw/mods/fml/common/registry/LanguageRegistry.java +++ b/src/main/java/cpw/mods/fml/common/registry/LanguageRegistry.java @@ -20,6 +20,7 @@ import java.net.URL; import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; @@ -35,6 +36,8 @@ import net.minecraft.util.StringTranslate; import com.google.common.base.Charsets; +import com.google.common.base.Joiner; +import com.google.common.collect.Lists; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLLog; @@ -273,13 +276,15 @@ private void searchZipForLanguages(File source, Side side) throws IOException { ZipFile zf = new ZipFile(source); + List added = Lists.newArrayList(); for (ZipEntry ze : Collections.list(zf.entries())) { Matcher matcher = assetENUSLang.matcher(ze.getName()); if (matcher.matches()) { String lang = matcher.group(2); - FMLLog.fine("Injecting found translation data for lang %s in zip file %s at %s into language system", lang, source.getName(), ze.getName()); + //FMLLog.fine("Injecting found translation data for lang %s in zip file %s at %s into language system", lang, source.getName(), ze.getName()); + added.add(lang); LanguageRegistry.instance().injectLanguage(lang, StringTranslate.parseLangFile(zf.getInputStream(ze))); // Ensure en_US is available to StringTranslate on the server if ("en_US".equals(lang) && side == Side.SERVER) @@ -288,6 +293,8 @@ } } } + if (added.size() > 0) + FMLLog.fine("Found translations in %s [%s]", source.getName(), Joiner.on(", ").join(added)); zf.close(); } diff --git a/src/main/java/net/minecraftforge/common/ForgeModContainer.java b/src/main/java/net/minecraftforge/common/ForgeModContainer.java index c0c9b74..eaa31e6 100644 --- a/src/main/java/net/minecraftforge/common/ForgeModContainer.java +++ b/src/main/java/net/minecraftforge/common/ForgeModContainer.java @@ -12,6 +12,7 @@ import static net.minecraftforge.common.config.Configuration.CATEGORY_GENERAL; import java.io.File; +import java.security.cert.Certificate; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -381,4 +382,13 @@ "net.minecraftforge.transformers" ); } + + + + @Override + public Certificate getSigningCertificate() + { + Certificate[] certificates = getClass().getProtectionDomain().getCodeSource().getCertificates(); + return certificates != null ? certificates[0] : null; + } } diff --git a/src/main/java/net/minecraftforge/common/MinecraftForge.java b/src/main/java/net/minecraftforge/common/MinecraftForge.java index 1744040..7c43ac9 100644 --- a/src/main/java/net/minecraftforge/common/MinecraftForge.java +++ b/src/main/java/net/minecraftforge/common/MinecraftForge.java @@ -140,16 +140,16 @@ else handlers = ObjectArrays.concat(handlers, server, String.class); - FMLLog.info("Preloading CrashReport classes", ForgeVersion.getVersion()); + //FMLLog.info("Preloading CrashReport classes", ForgeVersion.getVersion()); for (String s : handlers) { - FMLLog.info("\t" + s); + //FMLLog.info("\t" + s); try { Class cls = Class.forName(s, false, MinecraftForge.class.getClassLoader()); if (cls != null && !Callable.class.isAssignableFrom(cls)) { - FMLLog.info("\t% s is not a instance of callable!", s); + //FMLLog.info("\t% s is not a instance of callable!", s); } } catch (Exception e){}