Advertisement
Superloup10

Class Transformer

Aug 10th, 2014
274
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.24 KB | None | 0 0
  1. package fr.mcnanotech.nhg.asm;
  2. import java.io.InputStream;
  3. import java.util.zip.ZipEntry;
  4. import java.util.zip.ZipFile;
  5. public class NHGClassTransformer implements net.minecraft.launchwrapper.IClassTransformer
  6. {
  7. @Override
  8. public byte[] transform(String name, String transformedName, byte[] byteCode)
  9. {
  10. if(name.equals("vo") || name.equals("net.minecraft.entity.ai.EntityAINearestAttackableTarget"))
  11. {
  12. System.out.println("********* INSIDE AI ABOUT TO PATCH: " + name);
  13. byteCode = patchClassInJar("net.minecraft.entity.ai.EntityAINearestAttackableTarget", byteCode);
  14. }
  15. else if(name.equals("un") || name.equals("net.minecraft.entity.ai.EntityAIWatchClosest"))
  16. {
  17. System.out.println("********* INSIDE AI ABOUT TO PATCH: " + name);
  18. byteCode = patchClassInJar("net.minecraft.entity.ai.EntityAIWatchClosest", byteCode);
  19. }
  20. else if(name.equals("yn") || name.equals("net.minecraft.entity.monster.EntitySpider"))
  21. {
  22. System.out.println("********* INSIDE MOB ABOUT TO PATCH: " + name);
  23. byteCode = patchClassInJar("net.minecraft.entity.monster.EntitySpider", byteCode);
  24. }
  25. else if(name.equals("yk") || name.equals("net.minecraft.entity.monster.EntitySilverfish"))
  26. {
  27. System.out.println("********* INSIDE MOB ABOUT TO PATCH: " + name);
  28. byteCode = patchClassInJar("net.minecraft.entity.monster.EntitySilverfish", byteCode);
  29. }
  30. else if(name.equals("ym") || name.equals("net.minecraft.entity.monster.EntitySlime"))
  31. {
  32. System.out.println("********* INSIDE MOB ABOUT TO PATCH: " + name);
  33. byteCode = patchClassInJar("net.minecraft.entity.monster.EntitySlime", byteCode);
  34. }
  35. else if(name.equals("wv") || name.equals("net.minecraft.entity.passive.EntityWolf"))
  36. {
  37. System.out.println("********* INSIDE MOB ABOUT TO PATCH: " + name);
  38. byteCode = patchClassInJar("net.minecraft.entity.passive.EntityWolf", byteCode);
  39. }
  40. else if(name.equals("bjk") || name.equals("net.minecraft.client.entity.EntityClientPlayerMP"))
  41. {
  42. System.out.println("********* INSIDE Player ABOUT TO PATCH: " + name);
  43. byteCode = patchClassInJar("net.minecraft.client.entity.EntityClientPlayerMP", byteCode);
  44. }
  45. else if(name.equals("blo") || name.equals("net.minecraft.client.renderer.WorldRenderer"))
  46. {
  47. System.out.println("********* INSIDE WORLDRENDERER ABOUT TO PATCH: " + name);
  48. byteCode = patchClassInJar("net.minecraft.client.renderer.WorldRenderer", byteCode);
  49. }
  50. else if(name.equals("bhm") || name.equals("net.minecraft.client.model.ModelBiped"))
  51. {
  52. System.out.println("********* INSIDE MODEL ABOUT TO PATCH: " + name);
  53. byteCode = patchClassInJar("net.minecraft.client.model.ModelBiped", byteCode);
  54. }
  55. return byteCode;
  56. }
  57. private byte[] patchClassInJar(String name, byte[] byteCode)
  58. {
  59. try
  60. {
  61. ZipFile zip = new ZipFile(NHGLoadingPlugin.location);
  62. ZipEntry entry = zip.getEntry(name.replace('.', '/') + ".class");
  63. if(entry == null)
  64. {
  65. System.err.println(name + " not found in " + NHGLoadingPlugin.location.getName());
  66. }
  67. else
  68. {
  69. InputStream zin = zip.getInputStream(entry);
  70. byteCode = new byte[(int)entry.getSize()];
  71. zin.read(byteCode);
  72. zin.close();
  73. System.out.println("[" + "NanotechHungerGames" + "]: " + "Class " + name + " patched!");
  74. }
  75. zip.close();
  76. }
  77. catch(Exception e)
  78. {
  79. throw new RuntimeException("Error overriding " + name + " from " + NHGLoadingPlugin.location.getName(), e);
  80. }
  81. return byteCode;
  82. }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement