This is a continuation of http://www.minecraftforge.net/forum/index.php/topic,27599.0.html. The original issue was loading a texture from an external location. The proposed solution for this was to use reflection to get the default Minecraft texture pack list, and this seemed to work. Until the project was finally built. I believe issue related to reflection an obfuscation, and therefore, the below code will only work in the development environment.
List defaultResourcePacks = ObfuscationReflectionHelper.getPrivateValue(Minecraft.class, Minecraft.getMinecraft(), "defaultResourcePacks");
Yes, I have looked at examples of using ObfuscationReflectionHelper, and I understand that you can also pass in the obfuscated name, which should make it work. However, this seems very hacky, and could be a problem if the obfuscation names changed. The main point of this suggestion is that I found that FMLClientHandler actually has access to the list of resource packs. The below code will always work, since FML isn't obfuscated.
List defaultResourcePacks = ObfuscationReflectionHelper.getPrivateValue(FMLClientHandler.class, FMLClientHandler.instance(), "resourcePackList");
Currently I believe this is the best solution, but seems like a bit of a workaround. If Minecraft Forge is made to give you access to Minecraft code, you shouldn't need to use reflection on it. I propose adding a method into FMLClientHandler that gives you access to the resource pack list, such as getResourcePacks() or addResourcePack(IResourcePack).