Posted March 19, 201510 yr Hello everyone! Its me again.. I recently thought about whether its possible to get the obfuscated name for a method or a field at runtime. This would mean you wouldn't have to write two statements to get the fields "field_71428_T" and "timer" from the class Minecraft.class, but you can just write getFieldName("timer", Minecraft.class) and you would automatically have the right field name. Would this be possible? http://i.imgur.com/wNvtGZw.png[/img] MODS and MODDING TUTORIALS
March 19, 201510 yr There's a way of detecting if you're in a deobf environment (I don't use reflection often enough to be using that method, or remember what it's called) and you can do an if(obf) { str = "p_1234_0_" } else { str = "theThing" } and do the reflection with the str variable. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
March 19, 201510 yr Author Apparently I didnt say clearly what I meant. I wanted to know whether there is a method to find out which obfuscated name belongs to a non-obfuscated name in a special class. For instance, I have a method for this, I insert the class and the unobfuscated name and it returns the obfuscated one. getObfuscatedName(Minecraft.class, "timer") returns: "field_71428_T" http://i.imgur.com/wNvtGZw.png[/img] MODS and MODDING TUTORIALS
March 19, 201510 yr Oh that. Not that I know of. All that info is stored in a CSV file: C:\Users\[username]\.gradle\caches\minecraft\net\minecraftforge\forge\[forge version]\unpacked\conf You want fields.csv and methods.csv and be aware that same-name objects in different classes have different obfuscated names. Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable. If you think this is the case, JUST REPORT ME. Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice. Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked. DO NOT PM ME WITH PROBLEMS. No help will be given.
March 19, 201510 yr Author Basically it would be possible to do the same with a mapping from MCP->SRG. The only problem would be that for some special variables more than one name would be returned. For these variables a special test would be needed which of the names exist in the given class. If you do it right, this method would be as fast as direct reflection. But anyway, I think this is possible, or do I miss something? EDIT: Btw, is there a way to get the csv files for the mapping at runtime in eclipse as well as in the compiled mod somehow without copying them manually? Or do I need to copy them for every minecraft version that has a new mapping? http://i.imgur.com/wNvtGZw.png[/img] MODS and MODDING TUTORIALS
March 20, 201510 yr Look at ReflectionHelper.java. It allows you to put the SRG and dev names for fields and find them automatically. Maker of the Craft++ mod.
March 20, 201510 yr Author I know that there is the possibility to modify a field when providing two possible names, but I want to get the Srg name from the Mcp one.. I think I'll include the mapping files in my library mod and create a class which loads them and acts like a dictionary. http://i.imgur.com/wNvtGZw.png[/img] MODS and MODDING TUTORIALS
March 20, 201510 yr Author This is a bad idea for several reasons. But oh well, go ahead. Your mod. Why do you think this is a bad idea? And what are the reasons therefore? http://i.imgur.com/wNvtGZw.png[/img] MODS and MODDING TUTORIALS
March 20, 201510 yr Author I know how I could solve the problem with the non-unique names. On the other hand the copyright is a heavy argument. Didnt know that the data is protected. I think I can forget this idea now if no one has another idea. How unfortunate. http://i.imgur.com/wNvtGZw.png[/img] MODS and MODDING TUTORIALS
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.