• Главная
  • Форум
  • Загрузки
  • Сервер без вайпов
  • Рецепты
  • Статьи
  • Видео
  • Галерея
  • FAQ
  • Топ серверов
  • О игре Minecraft
Сайт переместился на новый адрес...
Сервер со своими модами
Вход | Быстрая регистрация | Новые темы | Правила форума | Поиск | Участники
Форум переехал на новый адрес
  • Страница 1 из 1
  • 1
Архив - только для чтения
Форум » Minecraft » Сервера » Фикс распаковки client.zip
Фикс распаковки client.zip
Bars1-е сообщение, написано 16.10.2012 в 21:45
Иссушитель
Сообщения: 1103
Репутация: 112
Подарки: 32
Offline
Сегодня рылся в коде и через 3 минуты выявил проблему. Распаковывается client.zip только у тех, кто вошёл в Windows под именем администратора dance

Вы можете скачать готовый исходник, а можете всё сделать вручную (изменять будем файл GameUpdater.java).

Удалим в начале данные строки:
Code
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FilePermission;
import java.io.IOException;
import java.io.InputStream;
import java.iutputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;

import java.util.Enumeration;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.Vector;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;
import java.util.jar.Pack200;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;


И добавим эти:
Code
import java.io.*;
import java.util.*;
import java.util.jar.*;
import java.util.zip.*;


Идём дальше. Нажимаем Ctrl+F и вводим в строку поиска:
Code
protected void UnZip

И нажимаем Enter.

Чуть выше удаляем строку:
Quote
* @throws PrivilegedActionException


Затем удаляем весь код, который начинается с этой строчки:
Code
protected void UnZip() throws PrivilegedActionException

До последнего символа.

И вставляем это:
Code
protected void UnZip() {

      String szZipFilePath;

      String szExtractPath;

      String path = Util.getWorkingDirectory() + File.separator;

      int i;

       

      szZipFilePath = path + "bin" + File.separator + "client.zip";

         

      File f = new File(szZipFilePath);

      if(!f.exists())

      {

        System.out.println(

      "\nNot found: " + szZipFilePath);

      }

         

      if(f.isDirectory())

      {

        System.out.println(

      "\nNot file: " + szZipFilePath);

      }

       

      System.out.println(

        "Enter path to extract files: ");

      szExtractPath = path;

       

      File f1 = new File(szExtractPath);

      if(!f1.exists())

      {

        System.out.println(

      "\nNot found: " + szExtractPath);

      }

         

      if(!f1.isDirectory())

      {

        System.out.println(

      "\nNot directory: " + szExtractPath);

      }

       

      ZipFile zf;

      Vector zipEntries = new Vector();

         

      try

      {   

        zf = new ZipFile(szZipFilePath);     

        Enumeration en = zf.entries();

         

        while(en.hasMoreElements())

        {

          zipEntries.addElement(

        (ZipEntry)en.nextElement());

        }

         

        for (i = 0; i < zipEntries.size(); i++)

        {

          ZipEntry ze =

        (ZipEntry)zipEntries.elementAt(i);

         

          extractFromZip(szZipFilePath, szExtractPath,

        ze.getName(), zf, ze);

        }

         

        zf.close();

        System.out.println("Done!");

      }

      catch(Exception ex)

      {

        System.out.println(ex.toString());

      }

      f.delete();

    }

     

    // ============================================

    // extractFromZip

    // ============================================

    static void extractFromZip(

      String szZipFilePath, String szExtractPath,

      String szName,

      ZipFile zf, ZipEntry ze)

    {

      if(ze.isDirectory())

        return;

         

      String szDstName = slash2sep(szName);

       

      String szEntryDir;

       

      if(szDstName.lastIndexOf(File.separator) != -1)

      {

        szEntryDir =

          szDstName.substring(

        0, szDstName.lastIndexOf(File.separator));

      }

      else       

        szEntryDir = "";

       

      System.out.print(szDstName);

      long nSize = ze.getSize();

      long nCompressedSize =

        ze.getCompressedSize();

       

      System.out.println(" " + nSize + " (" +

        nCompressedSize + ")");   

     

      try

      {

        File newDir = new File(szExtractPath +

      File.separator + szEntryDir);

       

        newDir.mkdirs();     

         

        FileOutputStream fos =

      new FileOutputStream(szExtractPath +

      File.separator + szDstName);

        InputStream is = zf.getInputStream(ze);

        byte[] buf = new byte[1024];

        int nLength;

         

        while(true)

        {

          try

          {

        nLength = is.read(buf);

          }     

          catch (EOFException ex)

          {

        break;

      }   

       

          if(nLength < 0)

        break;

          fos.write(buf, 0, nLength);

        }

         

        is.close();

        fos.close();

      }   

      catch(Exception ex)

      {

        System.out.println(ex.toString());

        //System.exit(0);

      }

    }   

    // ============================================

    // slash2sep

    // ============================================

    static String slash2sep(String src)

    {

      int i;

      char[] chDst = new char[src.length()];

      String dst;

       

      for(i = 0; i < src.length(); i++)

      {

        if(src.charAt(i) == '/')

          chDst[i] = File.separatorChar;

        else

          chDst[i] = src.charAt(i);

      }

      dst = new String(chDst);

      return dst;

    }

     

}


Сохраняем и компилируем good
Форум » Minecraft » Сервера » Фикс распаковки client.zip
  • Страница 1 из 1
  • 1
Поиск:

Большинство материалов взято из открытых источников и предоставляется как есть. Если Вы считаете, что какой-либо материал нарушает Ваши права, немедленно свяжитесь с администрацией.
Не путайте нас с "MinecraftOnly". Они украли наше название, причём наше фирменное! Мы основаны 18.08.2011, а они 29.12.2011.

Copyright Only Minecraft © 2011-2025.
Счётчик посещений