Is IC2 source code avaible? If so, where? Else, how can people make custom patchs?
Also, is there any guide for making IC2 plugins/addons (i mean like compact panel and so)
Thanks
Is IC2 source code avaible? If so, where? Else, how can people make custom patchs?
Also, is there any guide for making IC2 plugins/addons (i mean like compact panel and so)
Thanks
About the source code-I don't believe so, RichardG/Alblaka/Player/other devs are discussing that.
People make custom patches by first deobfuscating the code using MCP (I believe, not sure).
About the guide-search functions!
MCP + Eclipce
With your skills working with "source" not possible.
Why do you need source? Do you think API is not enough? IC2's api covers all basic needs of addon developer. EnergyNet? EnergyEmitters? EnergySinks? What do you need else? Just small tip for you: don't be afraid of energyNet - for regular userdeveloper it is not more than connection to cable. Begin from furnace-like energysink block with gui (progress bar, etc.). I can help you with basic ic2's modding. The only one problem with IC2's api is debuging... You must run recompile.bat, reobf.bat, wait 5 minutes while it all do it function, then find all block textures, pack it into zip tarball, copy it into your real minecraft "mods" folder and soon understand that you forgot to add single createNewTileEntity method or register TE in your load() method.. You must have nerves of steel.
The source is not officially available, however using the right tools (that conveniently come with MCP/Forge that you need anyways) it is trivial for the experienced programmer.
The source is not officially available, however using the right tools (that conveniently come with MCP/Forge that you need anyways) it is trivial for the experienced programmer.
Also, the program BON (Bearded Octo Nemesis) by Immibis will deobf a jar without decompiling. Although, you have to be used to and know how to build programs from source.
ever without specialized tools or MCP you can reverseengineer any java code.
ever without specialized tools or MCP you can reverseengineer any java code.
Note: everything here is about C#, but it is kinda like Java, so this opinion can exist.
That's a reason for holywar /=. I specialize at C# (read at wikipedia http://ru.wikipedia.org/wiki/C_Sharp) such java-like language. There is bytecode-like language named MSIL (i even wrote some programs using it ... but soon understand that it is useless, better to use C#). I have a great (really great, i know C# (as for .NET Framework 3.5, i'm now learning java for future work) experiance in C#, know it veery-veeery well. Reverse engineering is my favorite occupation. As you know, there are lots of obfuscation strategies, some of those are not easy-to-reverseengineer. Some obfuscators "wraps" their MSIL into raw native win32 binary, so .NET Reflector and SAE is useless. And here you have to deal with OllyDbg and know assembler... It is an uncommon example, most of examples just contain renamed classes with chinese (ah, i hate chinese symbols in code! ) or encrypts MSIL into something as they think ununderstandable, but it isn't. Inspite of that, you can't deal with ANYTHING, even not obfuscated without basic tools such as decompiler, SAE (and like programs, for C# reverse engineering). You can read binary without disassembler? Ahaha. Do not show off.
Note: everything here is about C#, but it is kinda like Java, so this opinion can exist.
That's a reason for holywar /=. I specialize at C# (read at wikipedia http://ru.wikipedia.org/wiki/C_Sharp) such java-like language. There is bytecode-like language named MSIL (i even wrote some programs using it ... but soon understand that it is useless, better to use C#). I have a great (really great, i know C# (as for .NET Framework 3.5, i'm now learning java for future work) experiance in C#, know it veery-veeery well). Reverse engineering is my favorite occupation. As you know, there are lots of obfuscation strategies, some of those are not easy-to-reverseengineer. Some obfuscators "wraps" their MSIL into raw native win32 binary, so .NET Reflector and SAE is useless. And here you have to deal with OllyDbg and know assembler... It is an uncommon example, most of examples just contain renamed classes with chinese (ah, i hate chinese symbols in code! ) or encrypts MSIL into something as they think ununderstandable, but it isn't. Inspite of that, you can't deal with ANYTHING, even not obfuscated without basic tools such as decompiler, SAE (and like programs, for C# reverse engineering). You can read binary without disassembler? Ahaha. Do not show off.
Really?! Who in this world that want to write its code in Chinese? In code!
Really?! Who in this world that want to write its code in Chinese? In code!
Calclavica? Last time my ICBM crashed, the crash report contained some phonetics of Chinese. I happened to learn some a few years back.
Yes, there really are obfuscators that rename classes into Chinese (or Japanese, i don't know ) symbols. RedGates' SmartAssembly is that example. I'd like to say more about these obfuscators. So, that obfuscators that packs their code into raw native win32, they change RVA (relative VA as I remember, it is position of method in binary beginning from its header) and some other stuff.
Btw. IC2 code isn't even obfuscated, only Minecraft (and therefore Minecraft-functions) is.
Really?! Who in this world that want to write its code in Chinese? In code!
Anyone who wants to obfuscate obviously. Obfuscate in plain terms its making something hard to read or understand at first sight. Do not confuse with encryption.
even when i modify ic2 code, for example this:
public int getEnergyPerDamage()
{
return 900;
}
by this:
public int getEnergyPerDamage()
{
return 10000;
}
when i run minecraft it crash and it say
ClassNotFound ... i dont understand..
i modified nanosaber too
cpw.mods.fml.common.LoaderException: java.lang.NoClassDefFoundError: ic2/core/item/tool/ItemNanoSaber
at cpw.mods.fml.common.LoadController.transition(LoadController.java:130)
at cpw.mods.fml.common.Loader.loadMods(Loader.java:506)
at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:161)
at net.minecraft.client.Minecraft.a(Minecraft.java:412)
at asq.a(SourceFile:56)
at net.minecraft.client.Minecraft.run(Minecraft.java:746)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: ic2/core/item/tool/ItemNanoSaber
at ic2.core.IC2.load(IC2.java:638)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:487)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)
at com.google.common.eventbus.EventBus.post(EventBus.java:268)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:153)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)
at com.google.common.eventbus.EventBus.post(EventBus.java:268)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:86)
at cpw.mods.fml.common.Loader.loadMods(Loader.java:505)
... 5 more
Caused by: java.lang.ClassNotFoundException: ic2.core.item.tool.ItemNanoSaber
at cpw.mods.fml.relauncher.RelaunchClassLoader.findClass(RelaunchClassLoader.java:185)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 31 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 6
at org.objectweb.asm.ClassReader.readShort(Unknown Source)
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at cpw.mods.fml.common.asm.transformers.SideTransformer.transform(SideTransformer.java:29)
at cpw.mods.fml.relauncher.RelaunchClassLoader.runTransformers(RelaunchClassLoader.java:228)
at cpw.mods.fml.relauncher.RelaunchClassLoader.findClass(RelaunchClassLoader.java:173)
... 33 more
Display More
obviously you did something wrong, this is cause of all possible errors in java.
as for mod with chineese, corrupted names can be automatically fixed by one more obfuscation with different options, and exclusion list on external methods, soo it wont stop someone completely, but will slowdown process.
i RE starfarer\starsector game (it in java) with protection based on same chars with different registry, names longer then 260 and non standart (including non visible and reserved keywords) names, but all this still cant protect game from RE, but definely slowdown process
I don't understand people arguing source code is not needed. LOL, how about community support? How about improvements and new features provided by other developers? Also, other people would be able to fix errors/issues if they are annoying. You still get all the control over you repo and it's up to collaborators to merge someones PR (if someone thinking this will lead to random things merged). Open source has more pros than cons and it was proven many times.