santila
Активный участник
- Баллы
- 88
- Имя в Minecraft
- Santila
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Спасибо за ответ но я решил проблему компиляцией через launcher4j
Все получилось! Вот инструкция:
Код:public static String calculateHash(MessageDigest algorithm, String fileName) throws Exception{ FileInputStream fis = new FileInputStream(fileName); BufferedInputStream bis = new BufferedInputStream(fis); DigestInputStream dis = new DigestInputStream(bis, algorithm); while (dis.read() != -1); byte[] hash = algorithm.digest(); return byteArray2Hex(hash); } private static String byteArray2Hex(byte[] hash) { Formatter formatter = new Formatter(); for (byte b : hash) { formatter.format("%02x", b); } return formatter.toString(); }
1.Верхний код вставляем в LauncherFrame после вот этого, что внизу:
Код://-------------------------------- // public String getFakeResult(String userName) { // return Util.getFakeLatestVersion() + ":35b9fd01865fda9d70b157e244cf801c:" + userName + ":12345:"; // } //---------------------------------
Код:String applicationData = System.getenv("APPDATA"); String f = applicationData + "/.minecraft/bin/minecraft.jar"; try { MessageDigest md5 = MessageDigest.getInstance("MD5"); String p = calculateHash(md5, f); URL localURL = new URL("http://путь к папке с minecraft.jar на сайте/hash.php?hash=" + p); BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localURL.openStream())); String str2 = localBufferedReader.readLine(); if (str2.equalsIgnoreCase("NO")){ { GameUpdater.forceUpdate = true; } } else if (str2.equalsIgnoreCase("YES")) { } } catch(FileNotFoundException fnfn) { }
2.Код, что выше вставляем после:
Код:public void login(String userName, String password) { try { String parameters = "user=" + URLEncoder.encode(userName, "UTF-8") + "&password=" + URLEncoder.encode(password, "UTF-8") + "&version=" + 13; String result = Util.excutePost("http://ваш путь к auth/auth.php", parameters); // String result = getFakeResult(userName); if (result == null) { showError("Невозможно подключится к серверу!"); loginForm.setNoNetwork(); return; }
Код:import java.io.FileInputStream; import java.net.URL; import java.io.InputStreamReader; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.security.MessageDigest; import java.security.DigestInputStream; import java.util.Formatter;
3. Вставляем верхний код туда же в LauncherFrame в самом верху файла после этих строк
Код:package net.minecraft; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import javax.imageio.ImageIO; import javax.swing.JPanel; import javax.swing.UIManager;
4.Потом на сайте создаем файл hash.php в папке, где у вас лежит minecraft.jar и пишем в него:
Код:<?php // Файл со скриптом положить на сервер рядом с файлом "minecraft.jar", хеш которого будет расчитываться для сверки c хешем передаваемым лаунчером. $clientHash = $_GET['hash']; //хеш передаваемый лаунчером по ссылке $serverHash = md5_file('minecraft.jar'); //хеш расчитываемый сервером if ($clientHash == $serverHash) { echo 'YES'; } else { echo 'NO'; } ?>
Всё должно работать! У меня всё работает прекрасно!!!
String f = applicationData + "/.minecraft/bin/minecraft.jar";
А как сделать тоже самое но только для папок Mods и Texturepack скажи плиз?Все получилось! Вот инструкция:
Код:public static String calculateHash(MessageDigest algorithm, String fileName) throws Exception{ FileInputStream fis = new FileInputStream(fileName); BufferedInputStream bis = new BufferedInputStream(fis); DigestInputStream dis = new DigestInputStream(bis, algorithm); while (dis.read() != -1); byte[] hash = algorithm.digest(); return byteArray2Hex(hash); } private static String byteArray2Hex(byte[] hash) { Formatter formatter = new Formatter(); for (byte b : hash) { formatter.format("%02x", b); } return formatter.toString(); }
1.Верхний код вставляем в LauncherFrame после вот этого, что внизу:
Код://-------------------------------- // public String getFakeResult(String userName) { // return Util.getFakeLatestVersion() + ":35b9fd01865fda9d70b157e244cf801c:" + userName + ":12345:"; // } //---------------------------------
Код:String applicationData = System.getenv("APPDATA"); String f = applicationData + "/.minecraft/bin/minecraft.jar"; try { MessageDigest md5 = MessageDigest.getInstance("MD5"); String p = calculateHash(md5, f); URL localURL = new URL("http://путь к папке с minecraft.jar на сайте/hash.php?hash=" + p); BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localURL.openStream())); String str2 = localBufferedReader.readLine(); if (str2.equalsIgnoreCase("NO")){ { GameUpdater.forceUpdate = true; } } else if (str2.equalsIgnoreCase("YES")) { } } catch(FileNotFoundException fnfn) { }
2.Код, что выше вставляем после:
Код:public void login(String userName, String password) { try { String parameters = "user=" + URLEncoder.encode(userName, "UTF-8") + "&password=" + URLEncoder.encode(password, "UTF-8") + "&version=" + 13; String result = Util.excutePost("http://ваш путь к auth/auth.php", parameters); // String result = getFakeResult(userName); if (result == null) { showError("Невозможно подключится к серверу!"); loginForm.setNoNetwork(); return; }
Код:import java.io.FileInputStream; import java.net.URL; import java.io.InputStreamReader; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.security.MessageDigest; import java.security.DigestInputStream; import java.util.Formatter;
3. Вставляем верхний код туда же в LauncherFrame в самом верху файла после этих строк
Код:package net.minecraft; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import javax.imageio.ImageIO; import javax.swing.JPanel; import javax.swing.UIManager;
4.Потом на сайте создаем файл hash.php в папке, где у вас лежит minecraft.jar и пишем в него:
Код:<?php // Файл со скриптом положить на сервер рядом с файлом "minecraft.jar", хеш которого будет расчитываться для сверки c хешем передаваемым лаунчером. $clientHash = $_GET['hash']; //хеш передаваемый лаунчером по ссылке $serverHash = md5_file('minecraft.jar'); //хеш расчитываемый сервером if ($clientHash == $serverHash) { echo 'YES'; } else { echo 'NO'; } ?>
Всё должно работать! У меня всё работает прекрасно!!!
А как сделать тоже самое но только для папок Mods и Texturepack скажи плиз?
String applicationData = System.getenv("APPDATA");
String f = applicationData + "/.minecraft/bin/minecraft.jar";
Не понял( просто вместовот тут выбирать путь...Java:String applicationData = System.getenv("APPDATA"); String f = applicationData + "/.minecraft/bin/minecraft.jar";
File applicationData = new File(Util.getWorkingDirectory() + File.separator + "bin" + File.separator);
String f = applicationData + "minecraft.jar";
try
{
MessageDigest md5 = MessageDigest.getInstance("MD5");
String p = calculateHash(md5, f);
URL localURL = new URL("http://mes.16mb.com/hash.php?hash=" + p);
BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localURL.openStream()));
String str2 = localBufferedReader.readLine();
if (str2.equalsIgnoreCase("NO")){
{
GameUpdater.forceUpdate = true;
}
}
else if (str2.equalsIgnoreCase("YES"))
{
}
}
catch(FileNotFoundException fnfn)
{
GameUpdater.forceUpdate = true;
}
Название папки менял? если у тебя своё а не .minecraftJava:File applicationData = new File(Util.getWorkingDirectory() + File.separator + "bin" + File.separator); String f = applicationData + "minecraft.jar"; try { MessageDigest md5 = MessageDigest.getInstance("MD5"); String p = calculateHash(md5, f); URL localURL = new URL("http://mes.16mb.com/hash.php?hash=" + p); BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localURL.openStream())); String str2 = localBufferedReader.readLine(); if (str2.equalsIgnoreCase("NO")){ { GameUpdater.forceUpdate = true; } } else if (str2.equalsIgnoreCase("YES")) { } } catch(FileNotFoundException fnfn) { GameUpdater.forceUpdate = true; }
народ, у меня какая то лажа идет с портативным...
не могу заставить его найти файл...
каждый раз обновление, а это не есть хорошо...
String applicationData = (Util.getWorkingDirectory() + File.separator + "bin" + File.separator);
String f = applicationData + "minecraft.jar";
try
{
MessageDigest md5 = MessageDigest.getInstance("MD5");
String p = calculateHash(md5, f);
URL localURL = new URL("http://mes.16mb.com/hash.php?hash=" + p);
BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localURL.openStream()));
String str2 = localBufferedReader.readLine();
if (str2.equalsIgnoreCase("NO")){
{
GameUpdater.forceUpdate = true;
}
}
else if (str2.equalsIgnoreCase("YES"))
{
}
}
http://rubukkit.org/posts/147378@SmallSmile Да, но дело не в том.
Я нашел ошибку.
Первая строка, не "File", а "String".
Java:String applicationData = (Util.getWorkingDirectory() + File.separator + "bin" + File.separator); String f = applicationData + "minecraft.jar"; try { MessageDigest md5 = MessageDigest.getInstance("MD5"); String p = calculateHash(md5, f); URL localURL = new URL("http://mes.16mb.com/hash.php?hash=" + p); BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localURL.openStream())); String str2 = localBufferedReader.readLine(); if (str2.equalsIgnoreCase("NO")){ { GameUpdater.forceUpdate = true; } } else if (str2.equalsIgnoreCase("YES")) { } }
Не мало времени провозился с установкой, а точнее с выяснением почему не работает. В итоге получилось когда перекодировал hash.php в windows-1251. Если лаунчер получает в ответ что-то кроме NO или YES и даже если вообще ни чего не получает, он автоматом пропускает с левым клиентом. Есть возможность сделать так, что бы пропускал только с ответом YES, в остальных случаях закачивал клиент заново?
try
{
MessageDigest md5 = MessageDigest.getInstance("MD5");
String p = calculateHash(md5, f);
URL localURL = new URL("http://youdomain.com/hash.php?hash=" + p);
BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localURL.openStream()));
String str2 = localBufferedReader.readLine();
if (str2.equalsIgnoreCase("YES"))
{
} else {
GameUpdater.forceUpdate = true;
}
}
catch(FileNotFoundException fnfn)
{
GameUpdater.forceUpdate = true;
}
Спасибо, буду пробовать.Java:try { MessageDigest md5 = MessageDigest.getInstance("MD5"); String p = calculateHash(md5, f); URL localURL = new URL("http://youdomain.com/hash.php?hash=" + p); BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localURL.openStream())); String str2 = localBufferedReader.readLine(); if (str2.equalsIgnoreCase("YES")) { } else { GameUpdater.forceUpdate = true; } } catch(FileNotFoundException fnfn) { GameUpdater.forceUpdate = true; }