Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
В рантайме миксины нельзя включать и отключать по желаниюИ для решения нужно отключать миксин проверкой -ModList.get().isLoaded("ыыы")
И не знаю как это сделать...
IMixinConfigPlugin, который будет контролировать, какие миксины нужно применять?PS: Проверка внутри методов миксинов не поможет т.к.@Redirect()
сорри, боковым зрением прочитал ахаха
В рантайме миксины нельзя включать и отключать по желаниюИ для решения нужно отключать миксин проверкой -ModList.get().isLoaded("ыыы")
И не знаю как это сделать...
IMixinConfigPlugin, который будет контролировать, какие миксины нужно применятьpublic class MFRAPIMixinPlugin implements IMixinConfigPlugin {
@Override
public void onLoad(String mixinPackage) {}
@Override
public String getRefMapperConfig() {
return null;
}
@Override
public boolean shouldApplyMixin(String targetClassName, String mixinClassName) {
if (mixinClassName.startsWith("foundationgames.enhancedblockentities.core.mixin.mfrapi.") && SinytraIntegration.FFAPI.isLoaded()) {
EBE.LOGGER.debug(EBE.FFAPI, "Sinytra detected. Force disabling MFRAPI.");
return false;
}
return true;
}
@Override
public void acceptTargets(Set<String> myTargets, Set<String> otherTargets) {}
@Override
public List<String> getMixins() {
return null;
}
@Override
public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {}
@Override
public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) {}
}
Препроцессор миксинов запускается за до инициализации классов модов - естественно оно нуллкидается nullpointer т.к. ModList.get() == null
Если эти миксины применятся то игра крашится(с sinytra модом).Препроцессор миксинов запускается за до инициализации классов модов - естественно оно нулл
Я уже писал выше - нужно написать максимально независимым условие
public static boolean isSinytraOrFFAPILoaded() {
Path path = FMLPaths.MODSDIR.get();
return Files.exists(path.resolve(SINYTRA.modid())) || Files.exists(path.resolve(FFAPI_JAR));
}
Вспомнил еще такую вещь - ты можешь попытаться проверить наличие ресурсаНюансы - в IDE не проверить, Если .jar будут переименованы, то краш.
example/mod/Main.classЗвучит лучше чем конфигом, но я уже опубликовал версию(Все равно попробую еще).Вспомнил еще такую вещь - ты можешь попытаться проверить наличие ресурсаexample/mod/Main.class
shouldApplyMixin(В preApply не вариант).LoadingModList.get().getModFileById("modid")