Как изменить клиент / как запустить необфусцированный 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)

Ничего из этого не получается и не знаю как дальше быть...
Надеюсь вы сможете помочь чем-то.
Заранее спасибо.
 
25
2
gradlew build и будут тебе обфусцированные классы.
Мне именно нужно оригинальные классы изменять, а ни форджовские.
Вот что у меня получается:
LmG3O8PHe6DPqm.jpg

А нужно, чтобы классы из трех буков назывались.
 
476
9
39
это тебе к mcp и ты eula нарушаешь
 
25
2
Они и так ориджинал просто с патчами. Если модифицируешь онли майн, то бери mcp, и чего него модифицируй. Там уже выбираешь build и reobfuscate.
Тоже в этом проблема
1. Еще нет MCP на 1.12.2.
2. Что делать, если мне нужно использовать форджовские методы для гл.меню?
 
25
2
1.Правда что ли? А как по твоему появился forge 1.12.2? Магия? Масоны?
2.Использовать forge mdk? И какие форджевские методы ты собрался использовать в гл. меню?
1. На modcoderpack.com только есть MCP 1.12
2. Forge MDK использую, но нужно изменять как-то клиент ванильный. Использовать например онлайн сервера на кнопке.
 

Icosider

Kotliner
Администратор
3,603
99
664
1.Главные цифры 1.12, все остальное это мелкие исправления.
2.Достаешь нужные сорсы, изменяешь что нужно и компилируешь. И ты так и не ответил, что ты будешь от forge использовать в гуиМаинМеню? Онлайн серверов можно получить и через пингер самого майна. Forge тебе в принципе не нужен, если конечно же у тебя не модовый клиент.
 
476
9
39
Все эти костыли "без форджа", один вопрос зачем?Фордж дает возможность менять все, даже его самого с помощью хуков и/или ивентов
Портирование чутка упрощает.
Хз как ты без форджа на 1.13 будешь все портировать где новый lwjgl завезли. Странно это. Если фич мало то выбор фордж, если много тоже фордж.
Да и без оптифайна чутка туго будет жить, если его классы зацепишь. Он ведь асм юзает. Т.е меняя классы оригинала ты и байткод меняешь. Так можно много чего схватить даже, если получится обфусцировать, лол)
 
25
2
1.Главные цифры 1.12, все остальное это мелкие исправления.
Вот попробывал, в GuiMainMain ничего не менял, только текст в одной кнопке.
META-INF удалил.
> 2018-03-05 22:59:39,789 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
> 2018-03-05 22:59:39,809 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
> [22:59:40] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
> [22:59:40] [main/INFO] [LaunchWrapper]: Using primary tweak class name net.minecraftforge.fml.common.launcher.FMLTweaker
> [22:59:40] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLTweaker
> [22:59:40] [main/INFO] [FML]: Forge Mod Loader version 14.23.2.2611 for Minecraft 1.12.2 loading
> [22:59:40] [main/INFO] [FML]: 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
> [22:59:40] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
> [22:59:40] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
> [22:59:40] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
> [22:59:40] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLInjectionAndSortingTweaker
> [22:59:40] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
> 2018-03-05 22:59:42,309 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
> 2018-03-05 22:59:42,336 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
> 2018-03-05 22:59:42,340 main WARN Unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream
> [22:59:43] [main/INFO] [FML]: Found valid fingerprint for Minecraft Forge. Certificate fingerprint e3c3d50c7c986df74c645c0ac54639741c90a557
> [22:59:43] [main/ERROR] [FML]: The minecraft jar file:/C:/Users/VENTO/AppData/Roaming/.minecraft/versions/Forge%201.12.2/Forge%201.12.2.jar!/net/minecraft/client/ClientBrandRetriever.class appears to be corrupt! There has been CRITICAL TAMPERING WITH MINECRAFT, it is highly unlikely minecraft will work! STOP NOW, get a clean copy and try again!
> [22:59:43] [main/ERROR] [FML]: FML has been ordered to ignore the invalid or missing minecraft certificate. This is very likely to cause a problem!
> [22:59:43] [main/ERROR] [FML]: Technical information: ClientBrandRetriever was at jar:file:/C:/Users/VENTO/AppData/Roaming/.minecraft/versions/Forge%201.12.2/Forge%201.12.2.jar!/net/minecraft/client/ClientBrandRetriever.class, there were 0 certificates for it
> [22:59:43] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.relauncher.CoreModManager$FMLPluginWrapper
> [22:59:43] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.FMLDeobfTweaker
> [22:59:44] [main/INFO] [LaunchWrapper]: Loading tweak class name net.minecraftforge.fml.common.launcher.TerminalTweaker
> [22:59:44] [main/INFO] [LaunchWrapper]: Calling tweak class net.minecraftforge.fml.common.launcher.TerminalTweaker
> [22:59:44] [main/INFO] [LaunchWrapper]: Launching wrapped minecraft {net.minecraft.client.main.Main}
> [22:59:45] [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
> Exception in thread "main" [22:59:45] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: net.minecraftforge.fml.relauncher.FMLSecurityManager$ExitTrappedException
> [22:59:45] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraftforge.fml.relauncher.FMLSecurityManager.checkPermission(FMLSecurityManager.java:49)
> [22:59:45] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at java.lang.SecurityManager.checkExit(Unknown Source)
> [22:59:45] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at java.lang.Runtime.exit(Unknown Source)
> [22:59:45] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at java.lang.System.exit(Unknown Source)
> [22:59:45] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraft.launchwrapper.Launch.launch(Launch.java:138)
> [22:59:45] [main/INFO] [STDERR]: [java.lang.ThreadGroup:uncaughtException:-1]: at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
Сделал recompile и reobfuscate. Теперь не понимаю, почему оно требует другие классы, которые не должны быть в гл.меню.
 
Последнее редактирование:
476
9
39
потому что фордж большая библиотека и там все взаимосвязанно и фордж во время загрузки-запуска мейнкласс гуи патчит.(добавление кнопки "моды")
Он не смог пропатчить и вывалился с такой ошибкой
ClientBrandRetriever.class appears to be corrupt! There has been CRITICAL TAMPERING WITH MINECRAFT, it is highly unlikely minecraft will work! STOP NOW, get a clean copy and try again!
 
25
2
Вот поэтому я пытался использовать исходники Майнкрафта где используется фордж.
Так вот, есть какие-то варианты чтобы решить проблему?
Я ещё в MCP пытался вставить фордж библиотеку, но оно ошибками посыпало меня.
Или на крайняк мне выпиливать патч главного меню?
 
476
9
39
у форджа есть исходники подключенные вроде к mcp, глянь у них на гите
 
3,005
192
592
476
9
39
Тогда только таски у гриля менять чтобы он исходники майна компилил, сверху фордж и готово. Но таски к грилю я не писал поэтому хз как что. Предполагаю что за таски у форджа ForgeGradle отвечает.
 

Icosider

Kotliner
Администратор
3,603
99
664
Я ещё в MCP пытался вставить фордж библиотеку, но оно ошибками посыпало меня.
Или на крайняк мне выпиливать патч главного меню?
Что ты городишь?!? Используй Forge 1.12.2 MDK, и будет тебе счастье. Там все есть.
 

Icosider

Kotliner
Администратор
3,603
99
664
@talosdx, нельзя так. Там плагин для граблей форджевский. Ты можешь собрать исходники и реобфусцировать их, в любом другом случаи ему придется лезть в mcp и делать все там. Если бы автор не отказывался от forge, то уже бы давно решил бы данный вопрос.
 
25
2
@talosdx, нельзя так. Там плагин для граблей форджевский. Ты можешь собрать исходники и реобфусцировать их, в любом другом случаи ему придется лезть в mcp и делать все там. Если бы автор не отказывался от forge, то уже бы давно решил бы данный вопрос.
Та блин, у меня проблема с реобфускацией. Через BON не проходит она.
 
Сверху