- 507
- 49
- 133
Доброго времени суток, в общем мне взбрела в голову идея портировать forge на новые версии java. Сейчас смог добиться совместимости с java 11, но дальше пошли проблемы.
Суть проблемы: Спецефикации новой jav-ы ,,блокируют,, ,,окольные,, пути модификации доступа к полям
Например в java 11 в
MinecraftForge/src/main/java/net/minecraftforge/registries/ObjectHolderRegistry.java at 1.12.x · MinecraftForge/MinecraftForge
MinecraftForge/src/main/java/net/minecraftforge/registries/ObjectHolderRef.java at 1.12.x · MinecraftForge/MinecraftForge (180 строка)
https://www.reddit.com/r/feedthebeast/comments/que3wq
Подскажите любой способ снять final с поля, который будет работать на java 17
(Оригинальная ошибка на всякий случай, их просто куча)
(Как ни странно, если обернуть это в try-catch и тупо игнорировать исключения, майн запустится на java17 и даже поиграть можно, но в консоли будет лютый спам этими ошибками)
Суть проблемы: Спецефикации новой jav-ы ,,блокируют,, ,,окольные,, пути модификации доступа к полям
Например в java 11 в
public static final net.minecraft.block.Block net.minecraft.init.Blocks.field_150350_a
без проблем присваивается какое-то значение на этапе запуска майна, но на 16+ вылетает ошибка.MinecraftForge/src/main/java/net/minecraftforge/registries/ObjectHolderRegistry.java at 1.12.x · MinecraftForge/MinecraftForge
MinecraftForge/src/main/java/net/minecraftforge/registries/ObjectHolderRef.java at 1.12.x · MinecraftForge/MinecraftForge (180 строка)
https://www.reddit.com/r/feedthebeast/comments/que3wq
Подскажите любой способ снять final с поля, который будет работать на java 17
(Оригинальная ошибка на всякий случай, их просто куча)
Java:
java.lang.IllegalAccessException: Can not set static final net.minecraft.block.Block field net.minecraft.init.Blocks.field_150481_bH to net.minecraft.block.BlockStairs
at jdk.internal.reflect.UnsafeFieldAccessorImpl.throwFinalFieldIllegalAccessException(UnsafeFieldAccessorImpl.java:76) ~[?:?]
at jdk.internal.reflect.UnsafeFieldAccessorImpl.throwFinalFieldIllegalAccessException(UnsafeFieldAccessorImpl.java:80) ~[?:?]
at jdk.internal.reflect.UnsafeQualifiedStaticObjectFieldAccessorImpl.set(UnsafeQualifiedStaticObjectFieldAccessorImpl.java:77) ~[?:?]
at java.lang.reflect.Field.set(Field.java:793) ~[?:?]
at net.minecraftforge.registries.ObjectHolderRef$FinalFieldHelper.setField(ObjectHolderRef.java:143) ~[ObjectHolderRef$FinalFieldHelper.class:?]
at net.minecraftforge.registries.ObjectHolderRef.apply(ObjectHolderRef.java:111) [ObjectHolderRef.class:?]
at net.minecraftforge.registries.ObjectHolderRegistry.applyObjectHolders(ObjectHolderRegistry.java:134) [ObjectHolderRegistry.class:?]
at net.minecraftforge.registries.GameData.fireRegistryEvents(GameData.java:846) [GameData.class:?]
at net.minecraftforge.fml.common.Loader.preinitializeMods(Loader.java:630) [Loader.class:?]
at net.minecraftforge.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:252) [FMLClientHandler.class:?]
at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:467) [bib.class:?]
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:378) [bib.class:?]
at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:567) ~[?:?]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:107) [te4_forgepatch.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:26) [te4_forgepatch.jar:?]
(Как ни странно, если обернуть это в try-catch и тупо игнорировать исключения, майн запустится на java17 и даже поиграть можно, но в консоли будет лютый спам этими ошибками)