Advertisement
Corosus

Untitled

Dec 5th, 2011
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.04 KB | None | 0 0
  1. package net.minecraft.src;
  2.  
  3. import java.lang.reflect.Field;
  4.  
  5. public class Reflector {
  6.  
  7. private static Class[] classes = new Class[16];
  8. private static boolean[] classesChecked = new boolean[16];
  9. private static Map classNameMap = null;
  10. private static Method[] methods = new Method[256];
  11. private static boolean[] methodsChecked = new boolean[256];
  12. private static Map methodNameMap = null;
  13. private static Field[] fields = new Field[256];
  14. private static boolean[] fieldsChecked = new boolean[256];
  15. private static Map fieldNameMap = null;
  16. public static final int ModLoader = 0;
  17. public static final int ForgeHooksClient = 1;
  18. public static final int MinecraftForgeClient = 2;
  19. public static final int LightCache = 3;
  20. public static final int BlockCoord = 4;
  21. public static final int ModLoader_renderWorldBlock = 0;
  22. public static final int ModLoader_renderInvBlock = 1;
  23. public static final int ModLoader_renderBlockIsItemFull3D = 2;
  24. public static final int ForgeHooksClient_onBlockHighlight = 10;
  25. public static final int ForgeHooksClient_canRenderInPass = 11;
  26. public static final int ForgeHooksClient_overrideTexture = 12;
  27. public static final int ForgeHooksClient_beforeRenderPass = 13;
  28. public static final int ForgeHooksClient_afterRenderPass = 14;
  29. public static final int ForgeHooksClient_beforeBlockRender = 15;
  30. public static final int ForgeHooksClient_afterBlockRender = 16;
  31. public static final int MinecraftForgeClient_getCustomItemRenderer = 20;
  32. public static final int LightCache_clear = 30;
  33. public static final int BlockCoord_resetPool = 40;
  34. public static final int LightCache_cache = 30;
  35.  
  36.  
  37. private static Map getClassNameMap() {
  38. if(classNameMap == null) {
  39. classNameMap = new HashMap();
  40. classNameMap.put(Integer.valueOf(0), "ModLoader");
  41. classNameMap.put(Integer.valueOf(1), "forge.ForgeHooksClient");
  42. classNameMap.put(Integer.valueOf(2), "forge.MinecraftForgeClient");
  43. classNameMap.put(Integer.valueOf(3), "LightCache");
  44. classNameMap.put(Integer.valueOf(4), "BlockCoord");
  45. }
  46.  
  47. return classNameMap;
  48. }
  49.  
  50. private static Map getMethodNameMap() {
  51. if(methodNameMap == null) {
  52. methodNameMap = new HashMap();
  53. methodNameMap.put(Integer.valueOf(0), "RenderWorldBlock");
  54. methodNameMap.put(Integer.valueOf(1), "RenderInvBlock");
  55. methodNameMap.put(Integer.valueOf(2), "RenderBlockIsItemFull3D");
  56. methodNameMap.put(Integer.valueOf(10), "onBlockHighlight");
  57. methodNameMap.put(Integer.valueOf(11), "canRenderInPass");
  58. methodNameMap.put(Integer.valueOf(12), "overrideTexture");
  59. methodNameMap.put(Integer.valueOf(13), "beforeRenderPass");
  60. methodNameMap.put(Integer.valueOf(14), "afterRenderPass");
  61. methodNameMap.put(Integer.valueOf(15), "beforeBlockRender");
  62. methodNameMap.put(Integer.valueOf(16), "afterBlockRender");
  63. methodNameMap.put(Integer.valueOf(20), "getCustomItemRenderer");
  64. methodNameMap.put(Integer.valueOf(30), "clear");
  65. methodNameMap.put(Integer.valueOf(40), "resetPool");
  66. }
  67.  
  68. return methodNameMap;
  69. }
  70.  
  71. private static Map getFieldNameMap() {
  72. if(fieldNameMap == null) {
  73. fieldNameMap = new HashMap();
  74. fieldNameMap.put(Integer.valueOf(30), "cache");
  75. }
  76.  
  77. return fieldNameMap;
  78. }
  79.  
  80. public static void callVoid(int var0, Object[] var1) {
  81. try {
  82. Method var2 = getMethod(var0);
  83.  
  84. if(var2 == null) {
  85. return;
  86. }
  87.  
  88. var2.invoke((Object)null, var1);
  89. } catch (Exception var3) {
  90. var3.printStackTrace();
  91. }
  92. }
  93.  
  94. public static boolean callBoolean(int var0, Object[] var1) {
  95. try {
  96. Method var2 = getMethod(var0);
  97.  
  98. if(var2 == null) {
  99. return false;
  100. } else {
  101. Boolean var3 = (Boolean)var2.invoke((Object)null, var1);
  102. return var3.booleanValue();
  103. }
  104. } catch (Throwable var4) {
  105. var4.printStackTrace();
  106. return false;
  107. }
  108. }
  109.  
  110. public static Object call(int var0, Object[] var1) {
  111. try {
  112. Method var2 = getMethod(var0);
  113.  
  114. if(var2 == null) {
  115. return Boolean.valueOf(false);
  116. } else {
  117. Object var3 = var2.invoke((Object)null, var1);
  118. return var3;
  119. }
  120. } catch (Throwable var4) {
  121. var4.printStackTrace();
  122. return Boolean.valueOf(false);
  123. }
  124. }
  125.  
  126. public static void callVoid(Object var0, int var1, Object[] var2) {
  127. try {
  128. if(var0 == null) {
  129. return;
  130. }
  131.  
  132. Method var3 = getMethod(var1);
  133.  
  134. if(var3 == null) {
  135. return;
  136. }
  137.  
  138. var3.invoke(var0, var2);
  139. } catch (Throwable var4) {
  140. var4.printStackTrace();
  141. }
  142. }
  143.  
  144. private static Method getMethod(int var0) {
  145. Method var1 = methods[var0];
  146.  
  147. if(var1 == null) {
  148. if(methodsChecked[var0]) {
  149. return null;
  150. }
  151.  
  152. methodsChecked[var0] = true;
  153. var1 = findMethod(var0);
  154. methods[var0] = var1;
  155. }
  156.  
  157. return var1;
  158. }
  159.  
  160. private static Method findMethod(int var0) {
  161. int var1 = var0 / 10;
  162. Class var2 = getClass(var1);
  163.  
  164. if(var2 == null) {
  165. return null;
  166. } else {
  167. String var3 = (String)getMethodNameMap().get(Integer.valueOf(var0));
  168.  
  169. if(var3 == null) {
  170. Config.log("Method name not found for id: " + var0);
  171. return null;
  172. } else {
  173. Method[] var4 = var2.getMethods();
  174.  
  175. for(int var5 = 0; var5 < var4.length; ++var5) {
  176. Method var6 = var4[var5];
  177.  
  178. if(var6.getName().equals(var3)) {
  179. return var6;
  180. }
  181. }
  182.  
  183. Config.log("Method not found: " + var2.getName() + "." + var3);
  184. return null;
  185. }
  186. }
  187. }
  188.  
  189. private static Field getField(int var0) {
  190. Field var1 = fields[var0];
  191.  
  192. if(var1 == null) {
  193. if(fieldsChecked[var0]) {
  194. return null;
  195. }
  196.  
  197. fieldsChecked[var0] = true;
  198. var1 = findField(var0);
  199. fields[var0] = var1;
  200. }
  201.  
  202. return var1;
  203. }
  204.  
  205. private static Field findField(int var0) {
  206. int var1 = var0 / 10;
  207. Class var2 = getClass(var1);
  208.  
  209. if(var2 == null) {
  210. return null;
  211. } else {
  212. String var3 = (String)getFieldNameMap().get(Integer.valueOf(var0));
  213.  
  214. if(var3 == null) {
  215. Config.log("Field name not found for id: " + var0);
  216. return null;
  217. } else {
  218. try {
  219. Field var4 = var2.getDeclaredField(var3);
  220. return var4;
  221. } catch (SecurityException var5) {
  222. var5.printStackTrace();
  223. } catch (NoSuchFieldException var6) {
  224. Config.log("Field not found: " + var2.getName() + "." + var3);
  225. }
  226.  
  227. return null;
  228. }
  229. }
  230. }
  231.  
  232. private static Class getClass(int var0) {
  233. Class var1 = classes[var0];
  234.  
  235. if(var1 == null) {
  236. if(classesChecked[var0]) {
  237. return null;
  238. }
  239.  
  240. classesChecked[var0] = true;
  241. String var2 = (String)getClassNameMap().get(Integer.valueOf(var0));
  242.  
  243. if(var2 == null) {
  244. Config.log("Class name not found for id: " + var0);
  245. return null;
  246. }
  247.  
  248. try {
  249. var1 = Class.forName(var2);
  250. classes[var0] = var1;
  251. } catch (ClassNotFoundException var4) {
  252. Config.log("Class not present: " + var2);
  253. } catch (Throwable var5) {
  254. System.out.println(var2);
  255. var5.printStackTrace();
  256. }
  257. }
  258.  
  259. return var1;
  260. }
  261.  
  262. public static boolean hasClass(int var0) {
  263. Class var1 = getClass(var0);
  264. return var1 != null;
  265. }
  266.  
  267. public static Object getFieldValue(int var0) {
  268. try {
  269. Field var1 = getField(var0);
  270.  
  271. if(var1 == null) {
  272. return null;
  273. } else {
  274. Object var2 = var1.get((Object)null);
  275. return var2;
  276. }
  277. } catch (Throwable var3) {
  278. var3.printStackTrace();
  279. return null;
  280. }
  281. }
  282.  
  283. }
  284.  
  285. java.lang.NoSuchMethodError: net.minecraft.client.Minecraft.b()Ljava/io/File;
  286. at ModLoader.<clinit>(ModLoader.java:31)
  287. at java.lang.Class.forName0(Native Method)
  288. at java.lang.Class.forName(Unknown Source)
  289. at net.minecraft.src.Reflector.getClass(Reflector.java:253)
  290. at net.minecraft.src.Reflector.hasClass(Reflector.java:267)
  291. at net.minecraft.src.RenderBlocks.renderBlockByRenderType(RenderBlocks.java:207)
  292. at net.minecraft.src.WorldRenderer.updateRenderer(WorldRenderer.java:199)
  293. at net.minecraft.src.RenderGlobal.updateRenderers(RenderGlobal.java:1265)
  294. at net.minecraft.src.EntityRenderer.renderWorld(EntityRenderer.java:1012)
  295. at net.minecraft.src.EntityRenderer.updateCameraAndRender(EntityRenderer.java:844)
  296. at net.minecraft.src.EntityRendererProxy.updateCameraAndRender(EntityRendererProxy.java:18)
  297. at net.minecraft.src.EntityRendererProxyWeather.updateCameraAndRender(EntityRendererProxyWeather.java:33)
  298. at net.minecraft.client.Minecraft.func_40001_x(Minecraft.java:616)
  299. at net.minecraft.client.Minecraft.run(Minecraft.java:528)
  300. at java.lang.Thread.run(Unknown Source)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement