package net.minecraft.client.resources;
import com.google.common.base.Splitter;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import java.io.Closeable;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Set;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class FileResourcePack extends AbstractResourcePack implements Closeable
{
public static final Splitter entryNameSplitter = Splitter.on('/').omitEmptyStrings().limit(3);
private ZipFile resourcePackZipFile;
private static final String __OBFID = "CL_00001075";
public FileResourcePack(File p_i1290_1_)
{
super(p_i1290_1_);
}
private ZipFile getResourcePackZipFile() throws IOException
{
if (this.resourcePackZipFile == null)
{
this.resourcePackZipFile = new ZipFile(this.resourcePackFile);
}
return this.resourcePackZipFile;
}
protected InputStream getInputStreamByName(String p_110591_1_) throws IOException
{
ZipFile var2 = this.getResourcePackZipFile();
ZipEntry var3 = var2.getEntry(p_110591_1_);
if (var3 == null)
{
throw new ResourcePackFileNotFoundException(this.resourcePackFile, p_110591_1_);
}
else
{
return var2.getInputStream(var3);
}
}
public boolean hasResourceName(String p_110593_1_)
{
try
{
return this.getResourcePackZipFile().getEntry(p_110593_1_) != null;
}
catch (IOException var3)
{
return false;
}
}
public Set getResourceDomains()
{
ZipFile var1;
try
{
var1 = this.getResourcePackZipFile();
}
catch (IOException var8)
{
return Collections.emptySet();
}
Enumeration var2 = var1.entries();
HashSet var3 = Sets.newHashSet();
while (var2.hasMoreElements())
{
ZipEntry var4 = (ZipEntry)var2.nextElement();
String var5 = var4.getName();
if (var5.startsWith("assets/"))
{
ArrayList var6 = Lists.newArrayList(entryNameSplitter.split(var5));
if (var6.size() > 1)
{
String var7 = (String)var6.get(1);
if (!var7.equals(var7.toLowerCase()))
{
this.logNameNotLowercase(var7);
}
else
{
var3.add(var7);
}
}
}
}
return var3;
}
protected void finalize() throws Throwable
{
this.close();
super.finalize();
}
public void close() throws IOException
{
if (this.resourcePackZipFile != null)
{
this.resourcePackZipFile.close();
this.resourcePackZipFile = null;
}
}
}