I've been trying to update my NBTEdit mod, which has a couple of GUI textures.
I first tried "assets/nbtedit/textures/gui/..." and a similar ResourceLocator,
public static final ResourceLocation TEXTURE = new ResourceLocation("nbtedit", "textures/gui/widgets.png");
That of course didn't work, but, if I move my textures to "assets/minecraft/nbtedit/textures/gui/..." and use this code, it works.
public static final ResourceLocation TEXTURE = new ResourceLocation("nbtedit/textures/gui/widgets.png");
Now, I dug into the problem, and here are my findings. SimpleReloadableResourceManager attempts to load the texture with a call to func_110536_a(ResourceLocation), which then uses the first string (normally "minecraft", attempted to set for my mod "nbtedit") to locate a ResourceManager from its ResourceManager map. Of course, nothing is mapped to "nbtedit". The reason one is mapped to "minecraft" is because in a call to SimpleReloadableResourceManager.func_110545_a(ResourcePack), the default resource pack is loaded, which contains an immutable set of strings to map with a FallbackResourceManager. The set only contains "minecraft", and when it sees "nbtedit" later, it crashes instead of creating a new FallbackResourceManager. I believe we need to wait for a proper Forge implementation of "AbstractResourcePack" or an edit of SimpleReloadableResourceManager.