Jump to content

Decompile java classes without field_ and func_


ElTotisPro50

Recommended Posts

so i installed java decompiler gui but because minecraft has custom fields and things is showing them and func_ and field_ are not readable, i watched a tutorial but is too old(is using bearded octo nemesis but i cant download it), is there another way to deobfuscate the func_numbers and field_numbers?

Link to comment
Share on other sites

21 hours ago, ElTotisPro50 said:

im in minecraft 1.16.5 and using Intellij Idea Community, do you mean i can open a .class file(that is not mine) in mi IDLE?(if i can, how)

in your IDE yes, take a look at the Dependencies of your project,
you will find the minecraft scource code in the forge-<forge_version>_<mappings_type>_<minecraft_version>.jar, in the package net.minecraft

unfortunately i can't tell, where you find the Dependencies exactly in your Project since i'm not familiar with Intellij (i use Eclipse)

Link to comment
Share on other sites

1 hour ago, Luis_ST said:

in your IDE yes, take a look at the Dependencies of your project,
you will find the minecraft scource code in the forge-<forge_version>_<mappings_type>_<minecraft_version>.jar, in the package net.minecraft

unfortunately i can't tell, where you find the Dependencies exactly in your Project since i'm not familiar with Intellij (i use Eclipse)

i dont want the source code of my project or minecraft or forge, i want to deobfuscate  a separated .class file of other mod for example:

InventedMod

InventedBlock.class

inventedBlockContainer.class

 

ETC

Link to comment
Share on other sites

[EDIT] Sorry I misread your post. This isn't possible for other mods unless you have specific mappings for them. Many are open source, and you can find the source code on curseforge. Many mods that don't list their source on curseforge still have public github repos you can search for.

If you want to build off of a mod that doesn't provide source it's a good idea to check the license first to make sure the author permits what you're trying to do. If they do or you reach out and get permission you'll have to figure out what methods mean contextually, or ask the mod dev for source. 

Edited by Drosophila
misread
Link to comment
Share on other sites

1 hour ago, Drosophila said:

[EDIT] Sorry I misread your post. This isn't possible for other mods unless you have specific mappings for them. Many are open source, and you can find the source code on curseforge. Many mods that don't list their source on curseforge still have public github repos you can search for.

If you want to build off of a mod that doesn't provide source it's a good idea to check the license first to make sure the author permits what you're trying to do. If they do or you reach out and get permission you'll have to figure out what methods mean contextually, or ask the mod dev for source. 

is there a internet page where i can find what func_ and field_ means one by one, like a translation for them?, literally thats the only thing i need

Link to comment
Share on other sites

13 minutes ago, ElTotisPro50 said:

is there a internet page where i can find what func_ and field_ means one by one, like a translation for them?, literally thats the only thing i need

Those are arbitrary prefixes created by the process of obfuscation. The naming convention refers to functions and fields. They could just have easily been foo_ and bar_. 

Edited by Drosophila
typo
Link to comment
Share on other sites

  • 3 weeks later...
1 hour ago, Majd123mc said:

Hold on, there might be a chance that the mod files aren't being the ones obfuscated, but simply the vanilla function calls are.

@ElTotisPro50 Are all the functions and methods like this? Or are only some of them

oh i know that the mod didnt obfuscated the methods, maybe minecraft did, an example is: world.func_numbers or player.func_numbers, this is from a mod called deathnote mod

public class DeathNoteGUIGui extends DeathnoteModElements.ModElement {
  public static HashMap guistate = new HashMap<>();
  
  private static ContainerType<GuiContainerMod> containerType = null;
  
  public DeathNoteGUIGui(DeathnoteModElements instance) {
    super(instance, 5);
    this.elements.addNetworkMessage(ButtonPressedMessage.class, ButtonPressedMessage::buffer, net.neio.deathnote.gui.DeathNoteGUIGui.ButtonPressedMessage::new, ButtonPressedMessage::handler);
    this.elements.addNetworkMessage(GUISlotChangedMessage.class, GUISlotChangedMessage::buffer, net.neio.deathnote.gui.DeathNoteGUIGui.GUISlotChangedMessage::new, GUISlotChangedMessage::handler);
    containerType = new ContainerType((ContainerType.IFactory)new GuiContainerModFactory());
    FMLJavaModLoadingContext.get().getModEventBus().register(this);
  }
  
  @OnlyIn(Dist.CLIENT)
  public void initElements() {
    DeferredWorkQueue.runLater(() -> ScreenManager.func_216911_a(containerType, net.neio.deathnote.gui.DeathNoteGUIGui.GuiWindow::new));
  }
  
  @SubscribeEvent
  public void registerContainer(RegistryEvent.Register<ContainerType<?>> event) {
    event.getRegistry().register(containerType.setRegistryName("death_note_gui"));
  }
  
  private static void handleButtonAction(PlayerEntity entity, int buttonID, int x, int y, int z) {
    World world = entity.field_70170_p;
    if (!world.func_175667_e(new BlockPos(x, y, z)))
      return; 
    if (buttonID == 0) {
      Map<String, Object> $_dependencies = new HashMap<>();
      $_dependencies.put("entity", entity);
      $_dependencies.put("guistate", guistate);
      $_dependencies.put("x", Integer.valueOf(x));
      $_dependencies.put("y", Integer.valueOf(y));
      $_dependencies.put("z", Integer.valueOf(z));
      $_dependencies.put("world", world);
      WriteProcedureProcedure.executeProcedure($_dependencies);
    } 
  }
  
  private static void handleSlotAction(PlayerEntity entity, int slotID, int changeType, int meta, int x, int y, int z) {
    World world = entity.field_70170_p;
    if (!world.func_175667_e(new BlockPos(x, y, z)))
      return; 
  }
}

as you can see func_numbers is seen after "something."

Link to comment
Share on other sites

1 hour ago, Majd123mc said:

Hold on, there might be a chance that the mod files aren't being the ones obfuscated, but simply the vanilla function calls are.

@ElTotisPro50 Are all the functions and methods like this? Or are only some of them

also there is a program called bearded octo nemesis that deobfuscate any .class files(is made for minecraft) but it doesnt work :(

Link to comment
Share on other sites

On 12/29/2021 at 9:18 PM, ElTotisPro50 said:

i dont want the source code of my project or minecraft or forge, i want to deobfuscate  a separated .class file of other mod for example:

of how many classes/methods/fields do you need the SRG names (and yes func_175667_e is a SRG name and not a obfuscate name)

Link to comment
Share on other sites

1 hour ago, Luis_ST said:

of how many classes/methods/fields do you need the SRG names (and yes func_175667_e is a SRG name and not a obfuscate name)

what is a SRG?, ( https://imgur.com/a/RRPPegl )

"of how many classes/methods/fields do you need the SRG names" i dont understand your question, i need to convert those obfuscated fields or "SRG" as you said to readable fields

Link to comment
Share on other sites

Hi!

I think the Forge Discord has a Bot for converting SRG Names to the newest Mappings. I don't know how it works but try just going on their discord an typing !help or something like that 

Sorry if my Posts are weird sometimes, I just try to help and learn as much as I can :D

Also: PLEASE use SPOILERS for logs!

Link to comment
Share on other sites

1 hour ago, Luis_ST said:

I think this would make the hole thing clear

ok that just explained me how forge obfuscate the fields but i need to really deobfuscate them not to explain mehow they do it(maybe im blind and in the page there is  tool or something that deobfuscates the fields but i didnt see anything)

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now


  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • 16:16:14.455 mixin main Mixin config dynamiclightsreforged.mixins.json does not specify "minVersion" property 16:16:14.938 mixin main Mixin config pmmo.mixins.json does not specify "minVersion" property 16:16:15.366 mixin main Mixin config rei-jei-internals-workaround.mixins.json does not specify "minVersion" property 16:16:15.475 mixin main Mixin config itshallnottick.mixins.json does not specify "minVersion" property 16:16:15.593 mixin main Mixin config polylib.mixins.json does not specify "minVersion" property 16:16:15.765 mixin main Mixin config rei.mixins.json does not specify "minVersion" property   these are the error scripts  
    • "Minecraft APK is an absolute gem for mobile gaming enthusiasts. With its immersive pixelated world and limitless creative possibilities, it offers an unparalleled gaming experience on the go. Whether you're building magnificent structures, exploring vast landscapes, or engaging in thrilling multiplayer battles, Minecraft APK delivers endless hours of entertainment. The controls are intuitive, and the regular updates keep the game fresh and exciting. It's a must-have for any gaming aficionado looking to unleash their creativity and embark on extraordinary adventures right from their mobile device." https://apk-minecraft.com/
    • This is the Crash message that comes when it crashes and the mods im using. ---------------------------------------------------- jei-1.16.5-7.7.1.152.jar journeymap-1.16.5-5.8.5p5.jar OptiFine_1.16.5_HD_U_G8.jar Pixelmon-1.16.5-9.1.3-universal.jar ReAuth-1.16-Forge-4.0.4.jar ---------------------------------------------------- ---- Minecraft Crash Report ---- // Hi. I'm Minecraft, and I'm a crashaholic. Time: 5/30/23 9:24 PM Description: Rendering screen java.lang.ArrayIndexOutOfBoundsException: 0     at com.pixelmonmod.pixelmon.client.gui.battles.BattleScreen.setTargeting(BattleScreen.java:663) ~[?:1.16.5-9.1.3] {re:classloading}     at com.pixelmonmod.pixelmon.client.gui.battles.battleScreens.ChooseAttack.render(ChooseAttack.java:109) ~[?:1.16.5-9.1.3] {re:classloading}     at com.pixelmonmod.pixelmon.client.gui.battles.BattleScreen.func_230430_a_(BattleScreen.java:440) ~[?:1.16.5-9.1.3] {re:classloading}     at net.minecraftforge.client.ForgeHooksClient.drawScreenInternal(ForgeHooksClient.java:377) ~[?:?] {re:classloading}     at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:370) ~[?:?] {re:classloading}     at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source) ~[?:?] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.optifine.reflect.Reflector.callVoid(Reflector.java:789) ~[?:?] {re:classloading}     at net.minecraft.client.renderer.GameRenderer.func_195458_a(GameRenderer.java:821) ~[?:?] {re:classloading,pl:accesstransformer:B,xf:OptiFine:default}     at net.minecraft.client.Minecraft.func_195542_b(Minecraft.java:977) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:607) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:184) [?:?] {re:classloading,pl:runtimedistcleaner:A}     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51] {}     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider.lambda$launchService$0(FMLClientLaunchProvider.java:51) [forge-1.16.5-36.2.34.jar:36.2] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider$$Lambda$474/2041611826.call(Unknown Source) [forge-1.16.5-36.2.34.jar:36.2] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.1.3.jar:?] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Render thread Stacktrace:     at com.pixelmonmod.pixelmon.client.gui.battles.BattleScreen.setTargeting(BattleScreen.java:663) ~[?:1.16.5-9.1.3] {re:classloading}     at com.pixelmonmod.pixelmon.client.gui.battles.battleScreens.ChooseAttack.render(ChooseAttack.java:109) ~[?:1.16.5-9.1.3] {re:classloading}     at com.pixelmonmod.pixelmon.client.gui.battles.BattleScreen.func_230430_a_(BattleScreen.java:440) ~[?:1.16.5-9.1.3] {re:classloading}     at net.minecraftforge.client.ForgeHooksClient.drawScreenInternal(ForgeHooksClient.java:377) ~[?:?] {re:classloading}     at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:370) ~[?:?] {re:classloading}     at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source) ~[?:?] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.optifine.reflect.Reflector.callVoid(Reflector.java:789) ~[?:?] {re:classloading} -- Screen render details -- Details:     Screen name: com.pixelmonmod.pixelmon.client.gui.battles.BattleScreen     Mouse location: Scaled: (408, 302). Absolute: (1225.000000, 907.000000)     Screen size: Scaled: (640, 360). Absolute: (1920, 1080). Scale factor of 3.000000 -- Affected level -- Details:     All players: 1 total; [ClientPlayerEntity['SebPer2708'/551350, l='ClientLevel', x=-162.35, y=28.94, z=-208.94]]     Chunk stats: Client Chunk Cache: 225, 98     Level dimension: minecraft:safari     Level spawn location: World: (7461,68,-15650), Chunk: (at 5,4,14 in 466,-979; contains blocks 7456,0,-15664 to 7471,255,-15649), Region: (14,-31; contains chunks 448,-992 to 479,-961, blocks 7168,0,-15872 to 7679,255,-15361)     Level time: 1243445879 game time, 1255605750 day time     Server brand: forge arclight (Velocity)     Server type: Non-integrated multiplayer server Stacktrace:     at net.minecraft.client.world.ClientWorld.func_72914_a(ClientWorld.java:617) ~[?:?] {re:classloading,xf:OptiFine:default}     at net.minecraft.client.Minecraft.func_71396_d(Minecraft.java:2031) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:623) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A}     at net.minecraft.client.main.Main.main(Main.java:184) [?:?] {re:classloading,pl:runtimedistcleaner:A}     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51] {}     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51] {}     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51] {}     at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider.lambda$launchService$0(FMLClientLaunchProvider.java:51) [forge-1.16.5-36.2.34.jar:36.2] {}     at net.minecraftforge.fml.loading.FMLClientLaunchProvider$$Lambda$474/2041611826.call(Unknown Source) [forge-1.16.5-36.2.34.jar:36.2] {}     at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.1.3.jar:?] {}     at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.1.3.jar:?] {} -- System Details -- Details:     Minecraft Version: 1.16.5     Minecraft Version ID: 1.16.5     Operating System: Windows 10 (amd64) version 10.0     Java Version: 1.8.0_51, Oracle Corporation     Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation     Memory: 1736668104 bytes (1656 MB) / 4697620480 bytes (4480 MB) up to 5368709120 bytes (5120 MB)     CPUs: 8     JVM Flags: 10 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -XX:+IgnoreUnrecognizedVMOptions -Xmx5G -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M     ModLauncher: 8.1.3+8.1.3+main-8.1.x.c94d18ec     ModLauncher launch target: fmlclient     ModLauncher naming: srg     ModLauncher services:          /mixin-0.8.4.jar mixin PLUGINSERVICE          /eventbus-4.0.0.jar eventbus PLUGINSERVICE          /forge-1.16.5-36.2.34.jar object_holder_definalize PLUGINSERVICE          /forge-1.16.5-36.2.34.jar runtime_enum_extender PLUGINSERVICE          /accesstransformers-3.0.1.jar accesstransformer PLUGINSERVICE          /forge-1.16.5-36.2.34.jar capability_inject_definalize PLUGINSERVICE          /forge-1.16.5-36.2.34.jar runtimedistcleaner PLUGINSERVICE          /mixin-0.8.4.jar mixin TRANSFORMATIONSERVICE          /OptiFine_1.16.5_HD_U_G8.jar OptiFine TRANSFORMATIONSERVICE          /forge-1.16.5-36.2.34.jar fml TRANSFORMATIONSERVICE      FML: 36.2     Forge: net.minecraftforge:36.2.34     FML Language Providers:          javafml@36.2         minecraft@1     Mod List:          forge-1.16.5-36.2.34-client.jar                   |Minecraft                     |minecraft                     |1.16.5              |DONE      |Manifest: NOSIGNATURE         forge-1.16.5-36.2.34-universal.jar                |Forge                         |forge                         |36.2.34             |DONE      |Manifest: 22:af:21:d8:19:82:7f:93:94:fe:2b:ac:b7:e4:41:57:68:39:87:b1:a7:5c:c6:44:f9:25:74:21:14:f5:0d:90         journeymap-1.16.5-5.8.5p5 (1).jar                 |Journeymap                    |journeymap                    |5.8.5p5             |DONE      |Manifest: NOSIGNATURE         ReAuth-1.16-Forge-4.0.4.jar                       |ReAuth                        |reauth                        |4.0.4               |DONE      |Manifest: 3d:06:1e:e5:da:e2:ff:ae:04:00:be:45:5b:ff:fd:70:65:00:67:0b:33:87:a6:5f:af:20:3c:b6:a1:35:ca:7e         Pixelmon-1.16.5-9.1.3-universal.jar               |Pixelmon Mod                  |pixelmon                      |9.1.3               |DONE      |Manifest: NOSIGNATURE         jei-1.16.5-7.7.1.152.jar                          |Just Enough Items             |jei                           |7.7.1.152           |DONE      |Manifest: NOSIGNATURE     Crash Report UUID: 717af89e-5f3d-4e21-a252-816efbf74f7d     Launched Version: 1.16.5-forge-36.2.34     Backend library: LWJGL version 3.2.2 build 10     Backend API: NVIDIA GeForce GTX 1650 with Max-Q Design/PCIe/SSE2 GL version 4.6.0 NVIDIA 526.86, NVIDIA Corporation     GL Caps: Using framebuffer using OpenGL 3.0     Using VBOs: Yes     Is Modded: Definitely; Client brand changed to 'forge'     Type: Client (map_client.txt)     Graphics mode: fast     Resource Packs: mod_resources, vanilla     Current Language: English (US)     CPU: 8x Intel(R) Core(TM) i5-9300H CPU @ 2.40GHz     OptiFine Version: OptiFine_1.16.5_HD_U_G8     OptiFine Build: 20210515-161946     Render Distance Chunks: 7     Mipmaps: 4     Anisotropic Filtering: 1     Antialiasing: 0     Multitexture: false     Shaders: null     OpenGlVersion: 4.6.0 NVIDIA 526.86     OpenGlRenderer: NVIDIA GeForce GTX 1650 with Max-Q Design/PCIe/SSE2     OpenGlVendor: NVIDIA Corporation     CpuCount: 8  
    • Whenever I attempt to create a singleplayer world the world generation gets stuck in 0% and minecraft stops responding after a few seconds and I'm forced to close it. However, I am still able to play multiplayer servers Log: https://paste.gg/p/anonymous/aad7e1be3fc545359383677fbdc3c6e9
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.