Scala support!
It's still primitive, I hope that people will like it. I do :)
This commit is contained in:
parent
f744cd0686
commit
304e717aea
|
@ -105,15 +105,43 @@ public class FMLModContainer implements ModContainer
|
||||||
private boolean fingerprintNotPresent;
|
private boolean fingerprintNotPresent;
|
||||||
private Set<String> sourceFingerprints;
|
private Set<String> sourceFingerprints;
|
||||||
private Certificate certificate;
|
private Certificate certificate;
|
||||||
|
private String modLanguage;
|
||||||
|
private ILanguageAdapter languageAdapter;
|
||||||
|
|
||||||
|
public static interface ILanguageAdapter {
|
||||||
|
public Object getNewInstance(FMLModContainer container, Class<?> objectClass, ClassLoader classLoader) throws Exception;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class ScalaAdapter implements ILanguageAdapter {
|
||||||
|
@Override
|
||||||
|
public Object getNewInstance(FMLModContainer container, Class<?> scalaObjectClass, ClassLoader classLoader) throws Exception
|
||||||
|
{
|
||||||
|
System.out.println("Scala class : "+ scalaObjectClass);
|
||||||
|
Class<?> sObjectClass = Class.forName(scalaObjectClass.getName()+"$",true,classLoader);
|
||||||
|
return sObjectClass.getField("MODULE$").get(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class JavaAdapter implements ILanguageAdapter {
|
||||||
|
@Override
|
||||||
|
public Object getNewInstance(FMLModContainer container, Class<?> objectClass, ClassLoader classLoader) throws Exception
|
||||||
|
{
|
||||||
|
return objectClass.newInstance();
|
||||||
|
}
|
||||||
|
}
|
||||||
public FMLModContainer(String className, File modSource, Map<String,Object> modDescriptor)
|
public FMLModContainer(String className, File modSource, Map<String,Object> modDescriptor)
|
||||||
{
|
{
|
||||||
this.className = className;
|
this.className = className;
|
||||||
this.source = modSource;
|
this.source = modSource;
|
||||||
this.descriptor = modDescriptor;
|
this.descriptor = modDescriptor;
|
||||||
|
this.modLanguage = (String) modDescriptor.get("modLanguage");
|
||||||
|
this.languageAdapter = "scala".equals(modLanguage) ? new ScalaAdapter() : new JavaAdapter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ILanguageAdapter getLanguageAdapter()
|
||||||
|
{
|
||||||
|
return languageAdapter;
|
||||||
|
}
|
||||||
@Override
|
@Override
|
||||||
public String getModId()
|
public String getModId()
|
||||||
{
|
{
|
||||||
|
@ -456,7 +484,7 @@ public class FMLModContainer implements ModContainer
|
||||||
|
|
||||||
annotations = gatherAnnotations(clazz);
|
annotations = gatherAnnotations(clazz);
|
||||||
isNetworkMod = FMLNetworkHandler.instance().registerNetworkMod(this, clazz, event.getASMHarvestedData());
|
isNetworkMod = FMLNetworkHandler.instance().registerNetworkMod(this, clazz, event.getASMHarvestedData());
|
||||||
modInstance = clazz.newInstance();
|
modInstance = getLanguageAdapter().getNewInstance(this,clazz, modClassLoader);
|
||||||
if (fingerprintNotPresent)
|
if (fingerprintNotPresent)
|
||||||
{
|
{
|
||||||
eventBus.post(new FMLFingerprintViolationEvent(source.isDirectory(), source, ImmutableSet.copyOf(this.sourceFingerprints), expectedFingerprint));
|
eventBus.post(new FMLFingerprintViolationEvent(source.isDirectory(), source, ImmutableSet.copyOf(this.sourceFingerprints), expectedFingerprint));
|
||||||
|
|
|
@ -14,8 +14,8 @@ package cpw.mods.fml.relauncher;
|
||||||
|
|
||||||
public class CoreFMLLibraries implements ILibrarySet
|
public class CoreFMLLibraries implements ILibrarySet
|
||||||
{
|
{
|
||||||
private static String[] libraries = { "argo-small-3.2.jar","guava-14.0-rc3.jar","asm-all-4.1.jar", "bcprov-jdk15on-148.jar", FMLInjectionData.debfuscationDataName() };
|
private static String[] libraries = { "argo-small-3.2.jar","guava-14.0-rc3.jar","asm-all-4.1.jar", "bcprov-jdk15on-148.jar", FMLInjectionData.debfuscationDataName(), "scala-library.jar" };
|
||||||
private static String[] checksums = { "58912ea2858d168c50781f956fa5b59f0f7c6b51", "931ae21fa8014c3ce686aaa621eae565fefb1a6a", "054986e962b88d8660ae4566475658469595ef58", "960dea7c9181ba0b17e8bab0c06a43f0a5f04e65", FMLInjectionData.deobfuscationDataHash };
|
private static String[] checksums = { "58912ea2858d168c50781f956fa5b59f0f7c6b51", "931ae21fa8014c3ce686aaa621eae565fefb1a6a", "054986e962b88d8660ae4566475658469595ef58", "960dea7c9181ba0b17e8bab0c06a43f0a5f04e65", FMLInjectionData.deobfuscationDataHash, "458d046151ad179c85429ed7420ffb1eaf6ddf85" };
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String[] getLibraries()
|
public String[] getLibraries()
|
||||||
|
|
|
@ -526,7 +526,7 @@ public class RelaunchLibraryManager
|
||||||
return loadedLibraries;
|
return loadedLibraries;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ByteBuffer downloadBuffer = ByteBuffer.allocateDirect(1 << 22);
|
private static ByteBuffer downloadBuffer = ByteBuffer.allocateDirect(1 << 23);
|
||||||
static IDownloadDisplay downloadMonitor;
|
static IDownloadDisplay downloadMonitor;
|
||||||
|
|
||||||
private static void performDownload(InputStream is, int sizeGuess, String validationHash, File target)
|
private static void performDownload(InputStream is, int sizeGuess, String validationHash, File target)
|
||||||
|
|
Loading…
Reference in New Issue