public void load(Minecraft mc, MinecraftClass mcClass)
    {
        minecraft = mc;
        Class<?> clazz = mcClass.getClazz();
        int i = 0;
        try
        {
            if (hasParameters)
            {
                for (; i < paramNames.length; i++)
                {
                    paramClasses[i] = primitives.get(paramNames[i]);
                    if (paramClasses[i] == null)
                    {
                        paramClasses[i] = mc.getClassLoader().loadClass(paramNames[i]); // TODO: Does this cause duplicate loads?
                    }
                }
            }

            method = clazz.getDeclaredMethod(internalName, paramClasses);
            method.setAccessible(true);
            String methodType = method.getReturnType().getName();
            if (methodType.contains("."))
            {
                String[] typeSplit = methodType.split("\\.");
                methodType = typeSplit[typeSplit.length - 1];
            }
            returnType = minecraft.getClassByType(methodType);
            if (returnType == null)
            {
                isMinecraftClass = false;
            }
        }
        catch (ClassNotFoundException e)
        {
            loadFailed = true;
            Log.w(e, "Unable to find class for parameter. (" + paramNames[i] + ") on (" + mcClass.getName() + " / " + mcClass.getClassName() + ")");
            //e.printStackTrace();
        }
        catch (SecurityException e)
        {
            loadFailed = true;
            Log.w(e, "SecurityException on (" + mcClass.getName() + " / " + mcClass.getClassName() + ") method (" + name + " / " + internalName + ")");
            e.printStackTrace();
        }
        catch (NoSuchMethodException e)
        {
            loadFailed = true;
            Log.w(e, "Unable to find class method (" + mcClass.getName() + " / " + mcClass.getClassName() + ") (" + name + " / " + internalName + ")");
            //e.printStackTrace();
        }
    }