[Гайд][Легко][1.6+] Модификация чужого кода при запуске (трансфомеры)

timaxa007

Модератор
5,831
409
672
Но у меня нет такой папки.
Ну, на подходящую версию. У меня так для 1.7.10 этой сборки.
Ничего, что единственные методы у меня лежат в
Если версия та, то думаю, что да.
Или дело в том, что запускаю я его на forge-1.12.2-14.23.5.2811???
Не думаю.
 

timaxa007

Модератор
5,831
409
672
@Liahim, ну окей.
Java:
List<String> lines = FileUtils.readLines(new File("C:/Users/timaxa007/.gradle/caches/minecraft/de/oceanlabs/mcp/mcp_snapshot/20171003/methods.csv"));
И у меня получился такой - methods.bin
 
808
3
124
У меня ошибка при запуске собранного мода. Что не так?
Код:
> 2019-05-04 11:54:46,327 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
> [11:54:46] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
> [11:54:46] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
> [11:54:46] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker
> [11:54:46] [main/INFO] [FML]: Forge Mod Loader version 14.23.5.2811 for Minecraft 1.12.2 loading
> [11:54:46] [main/INFO] [FML]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_131, running on Windows 7:amd64:6.1, installed at C:\Program Files\Java\jre1.8.0_131
> [11:54:46] [main/INFO] [FML]: Searching C:\Users\Liahim\AppData\Roaming\.minecraft\mods for mods
> [11:54:46] [main/WARN] [FML]: Found FMLCorePluginContainsFMLMod marker in modid-1.0.jar. This is not recommended, @Mods should be in a separate jar from the coremod.
> [11:54:46] [main/INFO] [FML]: [HOOKLIB]  Obfuscated: true
> [11:54:46] [main/ERROR] [LaunchWrapper]: Unable to launch
> java.lang.RuntimeException: An error occurred trying to configure the Minecraft home at C:\Users\Liahim
\AppData\Roaming\.minecraft for Forge Mod Loader
>     at net.minecraftforge.fml.relauncher.FMLLaunchHandler.setupHome(FMLLaunchHandler.java:111) ~[forge-1.12.2-14.23.5.2811.jar:?]
>     at net.minecraftforge.fml.relauncher.FMLLaunchHandler.setupClient(FMLLaunchHandler.java:81) ~[forge-1.12.2-14.23.5.2811.jar:?]
>     at net.minecraftforge.fml.relauncher.FMLLaunchHandler.configureForClientLaunch(FMLLaunchHandler.java:42) ~[forge-1.12.2-14.23.5.2811.jar:?]
>     at net.minecraftforge.fml.common.launcher.FMLTweaker.injectIntoClassLoader(FMLTweaker.java:141) ~[forge-1.12.2-14.23.5.2811.jar:?]
>     at net.minecraft.launchwrapper.Launch.launch(Launch.java:115) [launchwrapper-1.12.jar:?]
>     at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
> Caused by: java.lang.ExceptionInInitializerError
>     at java.lang.Class.forName0(Native Method) ~[?:1.8.0_131]
>     at java.lang.Class.forName(Unknown Source) ~[?:1.8.0_131]
>     at net.minecraftforge.fml.relauncher.CoreModManager.loadCoreMod(CoreModManager.java:527) ~[forge-1.12.2-14.23.5.2811.jar:?]
>     at net.minecraftforge.fml.relauncher.CoreModManager.discoverCoreMods(CoreModManager.java:451) ~[forge-1.12.2-14.23.5.2811.jar:?]
>     at net.minecraftforge.fml.relauncher.CoreModManager.handleLaunch(CoreModManager.java:265) ~[forge-1.12.2-14.23.5.2811.jar:?]
>     at net.minecraftforge.fml.relauncher.FMLLaunchHandler.setupHome(FMLLaunchHandler.java:107) ~[forge-1.12.2-14.23.5.2811.jar:?]
>     ... 5 more
> Caused by: java.lang.NullPointerException
>     at net.minecraftforge.fml.common.asm.transformers.DeobfuscationTransformer.<init>(DeobfuscationTransformer.java:61) ~[forge-1.12.2-14.23.5.2811.jar:?]
>     at ru.liahim.mist.hooklib.minecraft.HookLoader.<clinit>(HookLoader.java:23) ~[HookLoader.class:?]
>     at java.lang.Class.forName0(Native Method) ~[?:1.8.0_131]
>     at java.lang.Class.forName(Unknown Source) ~[?:1.8.0_131]
>     at net.minecraftforge.fml.relauncher.CoreModManager.loadCoreMod(CoreModManager.java:527) ~[forge-1.12.2-14.23.5.2811.jar:?]
>     at net.minecraftforge.fml.relauncher.CoreModManager.discoverCoreMods(CoreModManager.java:451) ~[forge-1.12.2-14.23.5.2811.jar:?]
>     at net.minecraftforge.fml.relauncher.CoreModManager.handleLaunch(CoreModManager.java:265) ~[forge-1.12.2-14.23.5.2811.jar:?]
>     at net.minecraftforge.fml.relauncher.FMLLaunchHandler.setupHome(FMLLaunchHandler.java:107) ~[forge-1.12.2-14.23.5.2811.jar:?]
>     ... 5 more
> Exception in thread "main" [11:54:46] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: net.minecraftforge.fml.relauncher.FMLSecurityManager$ExitTrappedException
> [11:54:46] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]:     at net.minecraftforge.fml.relauncher.FMLSecurityManager.checkPermission(FMLSecurityManager.java:49)
> [11:54:46] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]:     at java.lang.SecurityManager.checkExit(Unknown Source)
> [11:54:46] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]:     at java.lang.Runtime.exit(Unknown Source)
> [11:54:46] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]:     at java.lang.System.exit(Unknown Source)
> [11:54:46] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]:     at net.minecraft.launchwrapper.Launch.launch(Launch.java:138)
> [11:54:46] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]:     at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
Here I am!
[VersionManager] Refreshing versions locally...
[VersionManager] Versions has been refreshed (16 ms)
[Launcher] Minecraft closed with exit code: 1
[Launcher] Launcher exited.

Смотри сообщение #273, уже сталкивались с этим. Пойду добавлю этот фикс на гитхабе что ли
 
4,045
63
645
@GloomyFolken, а каким образом можно вставить хук в начало класса возвращающего int, но чтобы сам хук возвращал число только при каком-то условии. А если условие не соблюдено, чтобы возвращалось стандартное значение...
Пока что делаю через @Hook(returnCondition = ReturnCondition.ALWAYS)
Но в таком случае я так или иначе должен что-то вернуть...
Но стандартного значения в начале выполнения у меня нет. Его я вернуть не могу.
А если я запихиваю хук в конец, то получаю кучу лишней ванильной логики, которую хочу отсечь.
 
4,045
63
645
Так! Кое-чаво протестил и понял, что обычным условием в хуке не справиться.
Мне нужно чтобы сам хук добавлялся по условию! Это возможно?
Как раз таки в отсутствии оптифайна добавлять хук, но не трогать ничего при его наличии?
 
3,005
192
592
7,099
324
1,509
Где краш?
Можно классы чекать при помощи Class.forName
 
1,200
37
237
@hohserg, а что по порядку загрузки jar'ников? Что если optifine.jar находится а) до; б) после jar с хуками?
 
Сверху