package net.minecraft.client.resources; import com.google.common.base.Splitter; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; 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; @SideOnly(Side.CLIENT) 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 zipfile = this.getResourcePackZipFile(); ZipEntry zipentry = zipfile.getEntry(p_110591_1_); if (zipentry == null) { throw new ResourcePackFileNotFoundException(this.resourcePackFile, p_110591_1_); } else { return zipfile.getInputStream(zipentry); } } public boolean hasResourceName(String p_110593_1_) { try { return this.getResourcePackZipFile().getEntry(p_110593_1_) != null; } catch (IOException ioexception) { return false; } } public Set getResourceDomains() { ZipFile zipfile; try { zipfile = this.getResourcePackZipFile(); } catch (IOException ioexception) { return Collections.emptySet(); } Enumeration enumeration = zipfile.entries(); HashSet hashset = Sets.newHashSet(); while (enumeration.hasMoreElements()) { ZipEntry zipentry = (ZipEntry)enumeration.nextElement(); String s = zipentry.getName(); if (s.startsWith("assets/")) { ArrayList arraylist = Lists.newArrayList(entryNameSplitter.split(s)); if (arraylist.size() > 1) { String s1 = (String)arraylist.get(1); if (!s1.equals(s1.toLowerCase())) { this.logNameNotLowercase(s1); } else { hashset.add(s1); } } } } return hashset; } protected void finalize() throws Throwable { this.close(); super.finalize(); } public void close() throws IOException { if (this.resourcePackZipFile != null) { this.resourcePackZipFile.close(); this.resourcePackZipFile = null; } } }