Something that needs to happen: warn people about bad modids- if they're not lowercased, or if they're too long.

This commit is contained in:
cpw 2016-07-23 19:57:13 -04:00
parent cc0e6a1825
commit 45b299ce06
2 changed files with 23 additions and 1 deletions

View File

@ -29,6 +29,7 @@ import java.net.URL;
import java.security.cert.Certificate;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
@ -50,6 +51,7 @@ import net.minecraftforge.fml.common.versioning.VersionParser;
import net.minecraftforge.fml.common.versioning.VersionRange;
import net.minecraftforge.fml.relauncher.Side;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.Level;
import java.util.zip.ZipEntry;
@ -119,8 +121,24 @@ public class FMLModContainer implements ModContainer
this.languageAdapter = null;
FMLLog.finer("Using custom language adapter %s for %s (modid: %s)", languageAdapterType, this.className, getModId());
}
sanityCheckModId();
}
private void sanityCheckModId()
{
String modid = (String)this.descriptor.get("modid");
if (Strings.isNullOrEmpty(modid))
{
throw new IllegalArgumentException("Modid cannot be null or empty");
}
if (modid.length() > 64) {
FMLLog.bigWarning("The modid %s is longer than the recommended maximum of 64 characters. Truncation will be enforced in 1.11", modid);
}
if (!modid.equals(modid.toLowerCase(Locale.ENGLISH)))
{
FMLLog.bigWarning("The modid %s is not the same as it's lowercase version. Lowercasing will be enforced in 1.11", modid);
}
}
private ILanguageAdapter getLanguageAdapter()
{
if (languageAdapter == null)

View File

@ -75,7 +75,11 @@ import net.minecraftforge.fml.common.registry.GameRegistry;
public @interface Mod
{
/**
* The unique mod identifier for this mod
* The unique mod identifier for this mod.
* <b>Required to be lowercased in the english locale for compatibility. Will be truncated to 64 characters long.</b>
*
* This will be used to identify your mod for third parties (other mods), it will be used to identify your mod for registries such as block and item registries.
* By default, you will have a resource domain that matches the modid. All these uses require that constraints are imposed on the format of the modid.
*/
String modid();
/**