No, I mean, how does one actually create mappings.
Oh, that's hard. =)
It's mostly a manual process. A person has to decide that a.b.f() is really foo.bar.doThis(). I've made some tools that make this less time-consuming though.
It's mostly a manual process. A person has to decide that a.b.f() is really foo.bar.doThis(). I've made some tools that make this less time-consuming though.
So I guess I should start by looking at what mappings have already been made, and continue on from there?
I'm having more problems. When I try to open the mappings, Enigma crashes because of this error:
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
at java.util.HashMap$ValueIterator.next(Unknown Source)
at cuchaz.enigma.Deobfuscator.setMappings(Deobfuscator.java:151)
at cuchaz.enigma.gui.GuiController.openMappings(GuiController.java:90)
at cuchaz.enigma.gui.Gui$19.actionPerformed(Gui.java:594)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Be sure to include the mappings file you're trying to open in the report. And let me know what Minecraft jar you're using. Don't actually send me the Minecraft jar though.
Someone should deobfuscate pixelmon and look at it's src. It's a bit sketchy. It posts server data to a site. If you visit it in a browser, it takes a different redirect path (as seen in a wireshark-like program) to the 404 page than usual. There used to be a backdoor to ban people from the server. I would want to see if there are any functions on startup that run those.
Someone should deobfuscate pixelmon and look at it's src. It's a bit sketchy. It posts server data to a site. If you visit it in a browser, it takes a different redirect path (as seen in a wireshark-like program) to the 404 page than usual. There used to be a backdoor to ban people from the server. I would want to see if there are any functions on startup that run those.
Interesting. I may do something similar in my future mods, I've made an enemy before even releasing any mod xD
Also right we should not look at MCP to work on the mappings.. As that would defeat the reason for not just using MCP.
Because I noticed something we have what MCP calls EntityLiving called EnitiyMob. I found this while trying to rework my deobf by diff to use the Enigma mappings as a starter.
Also right we should not look at MCP to work on the mappings.. As that would defeat the reason for not just using MCP.
Because I noticed something we have what MCP calls EntityLiving called EnitiyMob. I found this while trying to rework my deobf by diff to use the Enigma mappings as a starter.
Also that works.
Actually, Searge has said in the past it's ok for us to use MCP mappings as a reference. Technically, the copyright restrictions apply to distributing documents (and portions of documents) owned by the MCP owners. They can't copyright the ideas themselves though, that's what patents are for. Only the written expression of the ideas is copyrightable. I could have actually argued that since M3L didn't distribute the MCP files, but rather, a digested and completely reformatted version of the information in the files, that distribution wouldn't have been restricted by copyright law. But that seems to be against the spirit of the (admittedly vague) MCP license, so I didn't push it. =P'
Of course, I'm not a lawyer. I could be subtly off by a crucial detail here. Anyway, it's not a fight I wanted to pick. Hence, Enigma. =)
Anyway, as we rename the Enigma mappings to conform to SpongeAPI, we may end up making our mappings more similar to the MCP mappings. The goal of Enigma isn't necessarily to be different from MCP. We're just trying to make some kind of deobfuscation mappings open source so people can use them without being encumbered by silly license restrictions.
I see. Interesting. Also I like how they are sorted in the mapping files. A lot cleaner the MCP and also my own obf to obf matching mappings for my deobf by diff.
I just put a new version of Enigma (v0.7 beta) that fixes a whole buncha bugs.
There's not much in the way of new features in this release, but hopefully all these fixes will make Enigma stable enough to start running the core of my mod loader, M3L! I'll probably be spending my next big chunk of modding time working on M3L so I can finally get Tall Worlds Mod up and running again! =)
This version of Enigma makes a big change to the mappings format. If you're working on the Minecraft deobfuscation mappings project, make sure you pull the latest mappings from the repo. I just converted those to the new format, so everything should work for you. If not, let me know.
I'm probably going to upgrade to 1.8.3 this weekend and see if the rumors are true.
Incidentally, Enigma 0.8 beta was released recently, which added support for better inner class reconstruction. Also better support for reading jars that aren't Minecraft 1.8. =P
Oh, that's hard. =)
It's mostly a manual process. A person has to decide that a.b.f() is really foo.bar.doThis(). I've made some tools that make this less time-consuming though.
So I guess I should start by looking at what mappings have already been made, and continue on from there?
Yeah, this should help you get started:
http://www.cuchazinteractive.com/enigma/
Enigma is not dead, just sleeping
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
at java.util.HashMap$ValueIterator.next(Unknown Source)
at cuchaz.enigma.Deobfuscator.setMappings(Deobfuscator.java:151)
at cuchaz.enigma.gui.GuiController.openMappings(GuiController.java:90)
at cuchaz.enigma.gui.Gui$19.actionPerformed(Gui.java:594)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Oi... that looks bad. Make a bug report?
Be sure to include the mappings file you're trying to open in the report. And let me know what Minecraft jar you're using. Don't actually send me the Minecraft jar though.
Funny how MCF picked up the "s**t" in Hash_Iterator
Lol, I didn't even notice. Nice catch. =P
Edit:
nvm
But I can't find a actual way to down load the mapping files from bitbukket with out full cloning it.
Slabs- Bring easily place able upside down slabs back to minecraft!
Interesting. I may do something similar in my future mods, I've made an enemy before even releasing any mod xD
Maybe try this?
https://bitbucket.org/cuchaz/minecraft-mappings/raw/939fe76dfe7f4e4aeff800a4bfa01f72db721ad9/1.8.mappings
EDIT: I also restored the download on my website. I didn't even realize it was broken. =)
Yeah, it catches every instance of the word. Even in harmless things like mishits and Shitake mushrooms.
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Because I noticed something we have what MCP calls EntityLiving called EnitiyMob. I found this while trying to rework my deobf by diff to use the Enigma mappings as a starter.
Also that works.
Slabs- Bring easily place able upside down slabs back to minecraft!
Actually, Searge has said in the past it's ok for us to use MCP mappings as a reference. Technically, the copyright restrictions apply to distributing documents (and portions of documents) owned by the MCP owners. They can't copyright the ideas themselves though, that's what patents are for. Only the written expression of the ideas is copyrightable. I could have actually argued that since M3L didn't distribute the MCP files, but rather, a digested and completely reformatted version of the information in the files, that distribution wouldn't have been restricted by copyright law. But that seems to be against the spirit of the (admittedly vague) MCP license, so I didn't push it. =P'
Of course, I'm not a lawyer. I could be subtly off by a crucial detail here. Anyway, it's not a fight I wanted to pick. Hence, Enigma. =)
Anyway, as we rename the Enigma mappings to conform to SpongeAPI, we may end up making our mappings more similar to the MCP mappings. The goal of Enigma isn't necessarily to be different from MCP. We're just trying to make some kind of deobfuscation mappings open source so people can use them without being encumbered by silly license restrictions.
EDIT: here are Searge's comments earlier in this thread:
http://www.minecraftforum.net/forums/search?search-thread-id=2162136&search-forum-id=&forum-scope=f&display-type=0&search=&search-type=0&by-author=searge&begin-date=&begin-time=&end-date=&end-time=&min-posts=&min-views=&display-type=0&submit=y
Slabs- Bring easily place able upside down slabs back to minecraft!
I just put a new version of Enigma (v0.7 beta) that fixes a whole buncha bugs.
There's not much in the way of new features in this release, but hopefully all these fixes will make Enigma stable enough to start running the core of my mod loader, M3L! I'll probably be spending my next big chunk of modding time working on M3L so I can finally get Tall Worlds Mod up and running again! =)
This version of Enigma makes a big change to the mappings format. If you're working on the Minecraft deobfuscation mappings project, make sure you pull the latest mappings from the repo. I just converted those to the new format, so everything should work for you. If not, let me know.
Wheee!
"You also have exceptions, generics and inner classes now" - Grum
https://twitter.com/_grum/status/571340536474406912
I'm probably going to upgrade to 1.8.3 this weekend and see if the rumors are true.
Incidentally, Enigma 0.8 beta was released recently, which added support for better inner class reconstruction. Also better support for reading jars that aren't Minecraft 1.8. =P
Slabs- Bring easily place able upside down slabs back to minecraft!
It also probably means Enigma could let you rename local variables too! I'll see what I can do. =D