package net.minecraft.client.resources;
import com.google.common.collect.Lists;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import net.minecraft.client.resources.data.IMetadataSerializer;
import net.minecraft.util.ResourceLocation;
@SideOnly(Side.CLIENT)
public class FallbackResourceManager implements IResourceManager
{
protected final List resourcePacks = new ArrayList();
private final IMetadataSerializer frmMetadataSerializer;
private static final String __OBFID = "CL_00001074";
public FallbackResourceManager(IMetadataSerializer p_i1289_1_)
{
this.frmMetadataSerializer = p_i1289_1_;
}
public void addResourcePack(IResourcePack p_110538_1_)
{
this.resourcePacks.add(p_110538_1_);
}
public Set getResourceDomains()
{
return null;
}
public IResource getResource(ResourceLocation p_110536_1_) throws IOException
{
IResourcePack iresourcepack = null;
ResourceLocation resourcelocation1 = getLocationMcmeta(p_110536_1_);
for (int i = this.resourcePacks.size() - 1; i >= 0; --i)
{
IResourcePack iresourcepack1 = (IResourcePack)this.resourcePacks.get(i);
if (iresourcepack == null && iresourcepack1.resourceExists(resourcelocation1))
{
iresourcepack = iresourcepack1;
}
if (iresourcepack1.resourceExists(p_110536_1_))
{
InputStream inputstream = null;
if (iresourcepack != null)
{
inputstream = iresourcepack.getInputStream(resourcelocation1);
}
return new SimpleResource(p_110536_1_, iresourcepack1.getInputStream(p_110536_1_), inputstream, this.frmMetadataSerializer);
}
}
throw new FileNotFoundException(p_110536_1_.toString());
}
public List getAllResources(ResourceLocation p_135056_1_) throws IOException
{
ArrayList arraylist = Lists.newArrayList();
ResourceLocation resourcelocation1 = getLocationMcmeta(p_135056_1_);
Iterator iterator = this.resourcePacks.iterator();
while (iterator.hasNext())
{
IResourcePack iresourcepack = (IResourcePack)iterator.next();
if (iresourcepack.resourceExists(p_135056_1_))
{
InputStream inputstream = iresourcepack.resourceExists(resourcelocation1) ? iresourcepack.getInputStream(resourcelocation1) : null;
arraylist.add(new SimpleResource(p_135056_1_, iresourcepack.getInputStream(p_135056_1_), inputstream, this.frmMetadataSerializer));
}
}
if (arraylist.isEmpty())
{
throw new FileNotFoundException(p_135056_1_.toString());
}
else
{
return arraylist;
}
}
static ResourceLocation getLocationMcmeta(ResourceLocation p_110537_0_)
{
return new ResourceLocation(p_110537_0_.getResourceDomain(), p_110537_0_.getResourcePath() + ".mcmeta");
}
}