1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Туториал Фикс неправильного отображения загрузки в лаунчере Империя от XeroXP

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем tityoff, 12 мар 2014.

  1. Автор темы
    tityoff

    tityoff Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    tityoff
    До фикса :

    Проценты уходят в минус, полоса загрузки уходит влево , расчет не верен.


    После фикса :


    GameUpdater.java -http://yadi.sk/d/FAEs0MiXKRSsw
    Launcher.java - http://yadi.sk/d/sfGHDTg7KRSsy
    Кинуть с заменой в NetBeansProjects/ИМЯ ПРОЕКТА/src/net/minecraft/




    или править вручную
    Код:
    Launcher.java(заменить строку примерно на 218 строке)
    ======================================================================
    
    g.drawString((new StringBuilder()).append(gameUpdater.currentSizeDownload / (gameUpdater.totalSizeDownload / 100)).append("%").toString(), 50 + (gameUpdater.percentage * (w - 128)) / 100, h - 88);
    
    ======================================================================
    
    
    
    
    
    
    
    
    
    
    
    
    GameUpdater.java: (заменить функцию примерно на 413 строке)
    ======================================================================
    
      protected void downloadJars(String path)
        throws Exception
      {
        File versionFile = new File(path, "md5s");
        Properties md5s = new Properties();
        if (versionFile.exists()) {
          try {
            FileInputStream fis = new FileInputStream(versionFile);
            md5s.load(fis);
            fis.close();
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
        state = 4;
    
        int[] fileSizes = new int[urlList.length];
        boolean[] skip = new boolean[urlList.length];
    
        for (int i = 0; i < urlList.length; i++) {
          URLConnection urlconnection = urlList[i].openConnection();
          urlconnection.setDefaultUseCaches(false);
          skip[i] = false;
          if ((urlconnection instanceof HttpURLConnection)) {
            ((HttpURLConnection)urlconnection).setRequestMethod("HEAD");
    
            int code = ((HttpURLConnection)urlconnection).getResponseCode();
            if (code / 100 == 3) {
              skip[i] = true;
            }
          }
          fileSizes[i] = urlconnection.getContentLength();
          totalSizeDownload += fileSizes[i];
        }
    
        int initialPercentage = this.percentage = 10;
    
        byte[] buffer = new byte[65536];
        for (int i = 0; i < urlList.length; i++) {
          if (skip[i] != false) {
            percentage = (initialPercentage + fileSizes[i] * 45 / totalSizeDownload);
    
    
          }
            boolean downloadFile = true;
    
            while (downloadFile) {
              downloadFile = false;
    
              URLConnection urlconnection = urlList[i].openConnection();
    
              String etag = "";
    
              if ((urlconnection instanceof HttpURLConnection)) {
                urlconnection.setRequestProperty("Cache-Control", "no-cache");
    
                urlconnection.connect();
    
                etag = urlconnection.getHeaderField("ETag");
              }
    
              String currentFile = getFileName(urlList[i]);
              InputStream inputstream = getJarInputStream(currentFile, urlconnection); 
              FileOutputStream fos = new FileOutputStream(path + currentFile);
    
              long downloadStartTime = System.currentTimeMillis();
              int downloadedAmount = 0;
              int fileSize = 0;
              String downloadSpeedMessage = "";
    
              MessageDigest m = MessageDigest.getInstance("MD5");
              int bufferSize;
              while ((bufferSize = inputstream.read(buffer, 0, buffer.length)) != -1)
              {
                fos.write(buffer, 0, bufferSize);
    
                m.update(buffer, 0, bufferSize);
                currentSizeDownload += bufferSize;
                fileSize += bufferSize;
                percentage = currentSizeDownload / (totalSizeDownload / 100);
                //subtaskMessage = ("Загрузка: " + currentFile + " " + currentSizeDownload * 100 / totalSizeDownload + "%");
      
      
                //subtaskMessage = (new StringBuilder()).append("Загружено:  ").append(currentSizeDownload / (totalSizeDownload / 100)).append(" % ").toString();
      
                subtaskMessage = (new StringBuilder()).append("Загружено:  ").append(currentSizeDownload/1000000).append(" Mb ").toString();
      
                progressStatus = (currentSizeDownload * 100 / totalSizeDownload + "%");
    
                downloadedAmount += bufferSize;
                long timeLapse = System.currentTimeMillis() - downloadStartTime;
    
                if (timeLapse >= 1000L) {
                  float downloadSpeed = downloadedAmount / (float)timeLapse;
        
                  downloadSpeed = (int)(downloadSpeed * 100.0F) / 100.0F;
        
        
        
        
                  downloadSpeedMessage = (new StringBuilder()).append("Скорость:  ").append(downloadSpeed).append(" KB/sec ").append(" ").append(" Всего:  ").append(totalSizeDownload / 0xf4240).append("Mb").toString();
        
                  downloadedAmount = 0;
                  downloadStartTime += 1000L;
                }
    
                subtaskMessage += downloadSpeedMessage;
              }
    
              inputstream.close();
              fos.close();
              }
    
              }
    
    
    
        }
    ======================================================================
     
    Последнее редактирование: 13 мар 2014
    ПриветОтЛайки и DoG743 нравится это.
  2. dirt34

    dirt34 Старожил Пользователь

    Баллы:
    143
    Skype:
    alucid2
    Имя в Minecraft:
    dirt34
    в файле GameUpdater.java после вставки пишет ошибку в NetBeans
     
  3. Автор темы
    tityoff

    tityoff Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    tityoff
    все поправил код
     
  4. WCRAFT

    WCRAFT Старожил Пользователь

    Баллы:
    173
    Skype:
    worldplaytv
    Имя в Minecraft:
    World
    А в чём была суть неправильного отображения, может ты нам проекты сломать хочешь?
     
  5. dirt34

    dirt34 Старожил Пользователь

    Баллы:
    143
    Skype:
    alucid2
    Имя в Minecraft:
    dirt34
    Отображение реально было кривым.
     
  6. Автор темы
    tityoff

    tityoff Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    tityoff
    Выложил видео до фикса
    Смотри первое видео если это не криво то я хз.И если что резервные копии никто не запрещал
     
  7. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Это убожество еще кто то фиксит? Если уж беретесь то чините весь быдлокод.
    1) Полное переписывание проверки клиента до проверки всей папки bin и mods.
    2) Полное переписывание мультисерверности и мониторинга, only конфиг.
    3) Избавление от необходимости юзать lzma архивы.
    4) И многое другое.
    А пока что это одна большая быдлокодная клоака для читеров и тупых админов которые любать задрачиватся с овер90 бесполезных настроек.
    Хотя бы допишите проверку либ, чтоб в них читы не сували.

    Опять же дело ваше, можете юзать этот говнокод и радоваться своей крутизне.
     
    Последнее редактирование: 14 мар 2014
    eleon нравится это.
  8. dirt34

    dirt34 Старожил Пользователь

    Баллы:
    143
    Skype:
    alucid2
    Имя в Minecraft:
    dirt34
    пожалуй ты прав.
     
    eleon нравится это.
  9. rescr1pt

    rescr1pt Старожил Пользователь

    Баллы:
    103
    Ох, баг с изображением процентов связан с тем что int имеет диапазон (у long он в разы больше) в формуле подсчёта процентов идёт умножение общего кол-ва байтов на 45 ,собственно у многих там 100000 байт ,а то и больше. При умножении и происходит приувеличение диапазона и он начинает идти по кругу, т.е. начиная с минуса, выход это не теребить 2 класса, а включить 5 класс математики и сделать формулу только с делением
     
  10. Neef

    Neef Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    Neef
    фикс не пашет, ошибку выдаёт:confused:
     

Поделиться этой страницей