
Originally Posted by
shivira
Yes
Welp
I'm probably doing it the wrong way, but it works, so...
You get both the last version of the client plus an older version, in which you know exactly
what and
where to put the code, then you disassemble both. Find the edited file in the old version, and look for the trait that contains the edit, and after what the edit comes. Random example ahead:
Code:
trait slot QName(PrivateNamespace("*", "_-0Rj:_-0nX"), "_-vm") type QName(PackageNamespace("", "#0"), "Number") end trait method QName(PackageNamespace("", "#0"), "update") flag OVERRIDE
method
refid "_-0Rj:_-0nX/update"
param QName(PackageNamespace("", "#0"), "int")
param QName(PackageNamespace("", "#0"), "int")
returns QName(PackageNamespace("", "#0"), "Boolean")
body
maxstack 6
localcount 7
initscopedepth 7
maxscopedepth 8
code
returnvoid
pushfalse
pushtrue
swap
jump L10
Assume the red text is the edit you need to update. Now you know
what but you still don't know
where. Here's comes handy a tool/command (Mac/Linux) called
Grep. It basically reads everything in every file you point it to, and tells you if it finds the text string you specified. Now, tell him to search something that may not be in every .class
(this is where it looks weird to me) : it will probably poop out a couple to dozens of results. In this case, there are unobfuscated(?) .classes that will help you find the right directory and therefore the right file (ExplosionEffect, TeleportEffect, etc). Open it and look for the same trait as above and paste the edit in the right place.
Obviously this works only if no major change has been made to the game. In the eventuality you need to update a namespace, the logic is a little different, posting it if you want to know.