LibJF/libjf-unsafe-v0/src/main/java/io/gitlab/jfronny/libjf/unsafe/JfLanguageAdapter.java

34 lines
1.7 KiB
Java
Raw Normal View History

2021-09-27 20:55:48 +02:00
package io.gitlab.jfronny.libjf.unsafe;
2022-05-09 22:53:54 +02:00
import io.gitlab.jfronny.commons.log.Logger;
import io.gitlab.jfronny.commons.serialize.gson.api.GsonHolder;
import io.gitlab.jfronny.libjf.Flags;
2022-04-29 15:48:27 +02:00
import io.gitlab.jfronny.libjf.gson.HiddenAnnotationExclusionStrategy;
2021-12-30 13:37:05 +01:00
import io.gitlab.jfronny.libjf.unsafe.inject.FabricLauncherClassUnlocker;
import io.gitlab.jfronny.libjf.unsafe.inject.KnotClassLoaderInterfaceAccessor;
2021-09-27 20:55:48 +02:00
import net.fabricmc.loader.api.LanguageAdapter;
2021-12-30 13:37:05 +01:00
import net.fabricmc.loader.impl.FabricLoaderImpl;
import java.util.Set;
import java.util.stream.Collectors;
2021-09-27 20:55:48 +02:00
public class JfLanguageAdapter implements LanguageAdapter {
@Override
public native <T> T create(net.fabricmc.loader.api.ModContainer mod, String value, Class<T> type);
static {
Logger.registerFactory(FLLogger::new); // Reset in SafeLog entrypoint
Set<Flags.BooleanFlag> flags = Flags.getBoolFlags("unsafe.unlock");
if (flags.stream().map(Flags.BooleanFlag::value).reduce(false, (left, right) -> left || right)) {
SafeLog.warn("Unlocking classpath due to: " + flags.stream().map(Flags.BooleanFlag::source).collect(Collectors.joining(", ")));
FabricLoaderImpl.INSTANCE.getGameProvider().unlockClassPath(new FabricLauncherClassUnlocker(new KnotClassLoaderInterfaceAccessor(Thread.currentThread().getContextClassLoader())));
2022-05-18 15:03:38 +02:00
SafeLog.warn("Completed classpath unlock");
}
2022-04-29 15:48:27 +02:00
HiddenAnnotationExclusionStrategy.register();
GsonHolder.register();
DynamicEntry.execute("libjf:preEarly", UltraEarlyInit.class, s -> s.instance().init());
DynamicEntry.execute("libjf:early", UltraEarlyInit.class, s -> s.instance().init());
SafeLog.info("LibJF unsafe init completed");
2021-09-27 20:55:48 +02:00
}
}