我目前正在开发一个将 mod 安装到 Minecraft 中的应用程序,并且我几乎完成了 3.1DEV 版本,唯一阻止我的是我的代码不会删除 META-INF,这是我的代码
ZipInputStream modZip = new ZipInputStream(new FileInputStream(mod.getDir()));
ZipInputStream minecraftZip = new ZipInputStream(new FileInputStream(new File(mcDir + "\\bin\\", "minecraft.jar")));
ZipOutputStream tmpZip = new ZipOutputStream(new FileOutputStream(new File("temp\\tmp.jar")));
byte[] buffer = new byte[1024];
for(ZipEntry ze = modZip.getNextEntry(); ze != null; ze = modZip.getNextEntry())
{
tmpZip.putNextEntry(ze);
for(int read = modZip.read(buffer); read != -1; read = modZip.read(buffer))
{
tmpZip.write(buffer, 0, read);
}
tmpZip.closeEntry();
}
modZip.close();
for(ZipEntry ze = minecraftZip.getNextEntry(); ze != null; ze = minecraftZip.getNextEntry())
{
try
{
boolean isMetaInf = false;
if(ze.getName().contains("META-INF"))
{
isMetaInf = true;
}
if(!isMetaInf)
{
tmpZip.putNextEntry(ze);
for(int read = minecraftZip.read(buffer); read != -1; read = minecraftZip.read(buffer))
{
tmpZip.write(buffer, 0, read);
}
tmpZip.closeEntry();
}
}
catch(Exception e)
{
continue;
}
}
minecraftZip.close();
tmpZip.flush();
tmpZip.close();
File tmp = new File("temp//tmp.jar");
tmp.renameTo(new File("temp//minecraft.jar"));
File minecraft = new File(mcDir + "\\bin\\minecraft.jar");
minecraft.delete();
FileUtils.copyFile(new File("temp\\minecraft.jar"), minecraft);
tmp.delete();
欢迎任何链接或示例
- Hachi Software 首席执行官 Liam