Как изменить клиент / как запустить необфусцированный MC

Версия Minecraft
1.12.2
25
2
Доброго времени суток.

Решил изменить клиент (переписать главное меню, изменить заголовок окна и т.д.), но столкнулся с проблемой, что через BON не получается обфусцировать файлы Minecraft, чтобы они совпадали с оригинальной обфускацией.

Вообщем, такой вопрос, возможно ли как-то изменить оригинальные классы майнкрафт и обфусцировать их?

Еще хотел немного сделать извращенный способ, запустить необфусцированный майнкрафт.
Нашел я файлик с форджем и майнкрафтом тут: C:\Users\<user>\.gradle\caches\minecraft\net\minecraftforge\forge\1.12.2-14.23.2.2624\snapshot\20171003\forgeBin-1.12.2-14.23.2.2624.jar
Поставил его в клиент и перейменовал Forge 1.12.2.jar
С .json файла выпилил Forge 1.12.2 (т.к. он уже есть в джанике выше) и попытался запустить:
> [21:51:19] [main/INFO]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
> [21:51:19] [main/INFO]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
> [21:51:19] [main/INFO]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker
> [21:51:19] [main/INFO]: Forge Mod Loader version 14.23.2.2624 for Minecraft 1.12.2 loading
> [21:51:19] [main/INFO]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.8.0_131, running on Windows 10:amd64:10.0, installed at C:\Program Files\Java\jre1.8.0_131
> [21:51:19] [main/INFO]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation
> [21:51:19] [main/INFO]: Ignoring missing certificate for coremod FMLCorePlugin (net.minecraftforge.fml.relauncher.FMLCorePlugin), we are in deobf and it's a forge core plugin
> [21:51:19] [main/INFO]: Ignoring missing certificate for coremod FMLForgePlugin (net.minecraftforge.classloading.FMLForgePlugin), we are in deobf and it's a forge core plugin
> [21:51:19] [main/INFO]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
> [21:51:19] [main/INFO]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
> [21:51:19] [main/INFO]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
> [21:51:19] [main/INFO]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
> [21:51:19] [main/INFO]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
> [21:51:20] [main/ERROR]: Unable to launch
> java.lang.RuntimeException: java.lang.NullPointerException
> at net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper.injectIntoClassLoader(CoreModManager.java:170) ~[Forge%201.12.2.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.NullPointerException
> at LZMA.LzmaInputStream.readHeader(LzmaInputStream.java:246) ~[lzma-0.0.1.jar:?]
> at LZMA.LzmaInputStream.<init>(LzmaInputStream.java:65) ~[lzma-0.0.1.jar:?]
> at net.minecraftforge.fml.common.asm.transformers.deobf.LZMAInputSupplier.openStream(LZMAInputSupplier.java:40) ~[Forge%201.12.2.jar:?]
> at com.google.common.io.ByteSource$AsCharSource.openStream(ByteSource.java:456) ~[guava-21.0.jar:?]
> at com.google.common.io.CharSource.openBufferedStream(CharSource.java:107) ~[guava-21.0.jar:?]
> at com.google.common.io.CharSource.readLines(CharSource.java:276) ~[guava-21.0.jar:?]
> at net.minecraftforge.fml.common.asm.transformers.deobf.FMLDeobfuscatingRemapper.setup(FMLDeobfuscatingRemapper.java:134) ~[Forge%201.12.2.jar:?]
> at net.minecraftforge.fml.common.asm.FMLSanityChecker.injectData(FMLSanityChecker.java:188) ~[Forge%201.12.2.jar:?]
> at net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper.injectIntoClassLoader(CoreModManager.java:165) ~[Forge%201.12.2.jar:?]
> ... 2 more
> Exception in thread "main" [21:51:20] [main/INFO]: [java.lang.ThreadGroup:uncaughtException:-1]: net.minecraftforge.fml.relauncher.FMLSecurityManager$ExitTrappedException
> [21:51:20] [main/INFO]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraftforge.fml.relauncher.FMLSecurityManager.checkPermission(FMLSecurityManager.java:49)
> [21:51:20] [main/INFO]: [java.lang.ThreadGroup:uncaughtException:-1]: at java.lang.SecurityManager.checkExit(Unknown Source)
> [21:51:20] [main/INFO]: [java.lang.ThreadGroup:uncaughtException:-1]: at java.lang.Runtime.exit(Unknown Source)
> [21:51:20] [main/INFO]: [java.lang.ThreadGroup:uncaughtException:-1]: at java.lang.System.exit(Unknown Source)
> [21:51:20] [main/INFO]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraft.launchwrapper.Launch.launch(Launch.java:138)
> [21:51:20] [main/INFO]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraft.launchwrapper.Launch.main(Launch.java:28)

Ничего из этого не получается и не знаю как дальше быть...
Надеюсь вы сможете помочь чем-то.
Заранее спасибо.
 
476
9
39
Не оскорбляй пользователей.
 
25
2
Зачем тебе BON? Ты не мод реобфусцируешь, а mc. В mcp специально есть bat скрипт reobfuscate.bat!
Уже делал так. Как сказали выше, Forge патчит классы и не может запуститься, если я его эти классы. И что дальше делать?
 
25
2
Пыатаюсь выпилить эту проверку, но не могу понять как оно работает


> [17:59:31] [main/ERROR] [LaunchWrapper]: Unable to launch
> java.lang.reflect.InvocationTargetException: null
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
> at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
> at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
> at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
> Caused by: java.lang.NoClassDefFoundError: net/minecraft/client/gui/GuiSleepMP
> at net.minecraft.client.main.Main.main(SourceFile:38) ~[Main.class:?]
> ... 6 more
> Caused by: java.lang.ClassNotFoundException: net.minecraft.client.gui.GuiSleepMP
> at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.12.jar:?]
> at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_131]
> at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_131]
> at net.minecraft.client.main.Main.main(SourceFile:38) ~[Main.class:?]
> ... 6 more
> Caused by: java.lang.NoClassDefFoundError: net/minecraft/client/gui/GuiChat
> at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_131]
> at java.lang.ClassLoader.defineClass(Unknown Source) ~[?:1.8.0_131]
> at java.security.SecureClassLoader.defineClass(Unknown Source) ~[?:1.8.0_131]
> at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.12.jar:?]
> at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_131]
> at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_131]
> at net.minecraft.client.main.Main.main(SourceFile:38) ~[Main.class:?]
> ... 6 more
> Caused by: java.lang.ClassNotFoundException: net.minecraft.client.gui.GuiChat
> at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.12.jar:?]
> at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_131]
> at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_131]
> at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_131]
> at java.lang.ClassLoader.defineClass(Unknown Source) ~[?:1.8.0_131]
> at java.security.SecureClassLoader.defineClass(Unknown Source) ~[?:1.8.0_131]
> at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.12.jar:?]
> at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_131]
> at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_131]
> at net.minecraft.client.main.Main.main(SourceFile:38) ~[Main.class:?]
> ... 6 more
> Caused by: java.lang.IncompatibleClassChangeError: Implementing class
> at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_131]
> at java.lang.ClassLoader.defineClass(Unknown Source) ~[?:1.8.0_131]
> at java.security.SecureClassLoader.defineClass(Unknown Source) ~[?:1.8.0_131]
> at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.12.jar:?]
> at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_131]
> at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_131]
> at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_131]
> at java.lang.ClassLoader.defineClass(Unknown Source) ~[?:1.8.0_131]
> at java.security.SecureClassLoader.defineClass(Unknown Source) ~[?:1.8.0_131]
> at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:182) ~[launchwrapper-1.12.jar:?]
> at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_131]
> at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_131]
> at net.minecraft.client.main.Main.main(SourceFile:38) ~[Main.class:?]
> ... 6 more

Залез в LaunchClassLoader.java и изменил строчки 182-188.

> java.lang.reflect.InvocationTargetException: null
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
> at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
> at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
> at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
> Caused by: java.lang.NoClassDefFoundError: net/minecraft/client/gui/GuiSleepMP
> at net.minecraft.client.main.Main.main(SourceFile:38) ~[Main.class:?]
> ... 6 more

И теперь я вообще хз за что хвататься дальше.
 

Вложения

  • LaunchClassLoader.java.txt
    15.8 KB · Просмотры: 1
Последнее редактирование модератором:
25
2
Я это и пытаюсь сделать. Я хочу изменить главное меню GuiMainMenu, но существует две проблемы:
1. Если делать через gradlew build, оно не обфусцирует классы для майнкрафта (то бишь классы должны перейменоваться)
2. Если менять через MCP, будет краш, т.к. фордж патчит этот класс
 
Последнее редактирование модератором:
25
2
1.Главные цифры 1.12, все остальное это мелкие исправления.
Циферки это конечно хорошо, но маппинги отличаются. Только что заметил, что MCP мне реобфусцировало класс, который не соотвествует гл.меню в 1.12.2
 
476
9
39
Не не умею, а даже не пытался.
Я сделал замену гуишки 3 строками кода. На фордже. И вся эта вакнахалия с классами, mcp, форджем никому не сдалась.
А ежели ты не можешь подстроиться под фордж, то ты не крутой программист.
Каждый разр ежесекундно учится делать то или иное.
И фордж облегчает кодинг. Там все интуетивно понятно. Код сам за себя говорит и делает это хорошо что без комментов все понятно почти всегда.
Исключение рендер и без форджа его больновато писать. Наполовину седой уже, а мне только 21 всего
 
25
2
Не цитируйте предыдущее сообщение, если отвечаете на него целиком!
Да, ты прав.

Ладно, тему наверное закрою. Нашел человека у которого BON работает.

Спасибо всем, кто учавствовал в этой теме :)
 
Последнее редактирование модератором:
Сверху