Проверка на обновление мода

Проверка на обновление мода

Так оно ж так и есть, на гисте там часть ссылки типа хеш суммы, так как, меняешь файл меняется и ссылка. Как ты и говорил намного удобнее этот файл создать просто в проекте.
 
Кстати нифига... Там можно часть ссылки удалить... Ту, что идёт в "/.../" посте слова "raw" и ссылка станет постоянной конкретно на файл.
А на счёт формата-то кто-нибудь знает? Я хочу в него ещё кой-чаво записать... Но ведь он читать его не будет (
...
Кстати, ещё вопрос для знающих: видел многие мод-версию записывают в таком вот формате: Angry-Pixel/The-Betweenlands
Откуда она потом берётся? У меня, почему-то это не фурычит. Так и пишется ${version} ...
 
Откуда она потом берётся? У меня, почему-то это не фурычит. Так и пишется ${version} ...
Ты про то откуда он берёт "version": "${version}"? Про них же в учебнике писали: Сборка мода - Minecraft Modding
(Если коротко то: Конструкции вида ${version} и ${mcversion}, которые при сборке автоматически заменятся на переменные, определенные в build.gradle)
 
Вот у меня на гите лежит ссылка
Java:
public class VersionChecker implements Runnable {

    private static boolean isLatestVersion = false;
    private static String latestVersion = "";
    private String newVersionURL = "";
    private List<String> changes = new ArrayList<>();

    @Override
    public void run() {
        try(InputStream in = new URL("https://raw.githubusercontent.com/ThunderModder/bionisation3/master/update1.12.2.txt").openStream()) {
            String [] version = IOUtils.readLines(in).get(0).split("_");
            latestVersion = version[0];
            newVersionURL = version[1];
            for (int i = 2; i < version.length; i++) {
                changes.add(version[i]);
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        isLatestVersion = Information.VERSION.equals(latestVersion);
    }

    public boolean isLatestVersion() {
        return isLatestVersion;
    }

    public String getLatestVersion() {
        return latestVersion;
    }

    public String getNewVersionURL() {
        return newVersionURL;
    }

    public List<String> getChanges() {
        return changes;
    }
}
Код:
public static VersionChecker checker;
public static boolean wasWarnedNewVersion = false;
Код:
if(Config.canShowUpdates) {
       Bionisation.checker = new VersionChecker();
    Thread versionCheckThread = new Thread(Bionisation.checker, "Version Check Thread");
    versionCheckThread.start();
}
Код:
 @SubscribeEvent
    public void onUpdateEvent(TickEvent.PlayerTickEvent event) {
        if (Config.canShowUpdates && !Bionisation.wasWarnedNewVersion && event.player.world.isRemote && !Bionisation.checker.isLatestVersion()) {
            if(Bionisation.checker.getLatestVersion().equals("") || Bionisation.checker.getNewVersionURL().equals("") || Bionisation.checker.getChanges().equals("")) {
                event.player.sendMessage(new TextComponentString(I18n.format("checker.message.cant")));
                Bionisation.wasWarnedNewVersion = true;
            }
            else {
                event.player.sendMessage(ForgeHooks.newChatWithLinks(TextFormatting.YELLOW + I18n.format("checker.message.version") + " " + TextFormatting.AQUA + Bionisation.checker.getLatestVersion() + " " + TextFormatting.YELLOW + I18n.format("checker.message.av") + TextFormatting.BLUE + " " +  Bionisation.checker.getNewVersionURL()));
                event.player.sendMessage(new TextComponentString(""));
                event.player.sendMessage(new TextComponentString(TextFormatting.YELLOW + I18n.format("checker.message.changes")));
                List<String> info = Bionisation.checker.getChanges();
                for (String s : info) {
                    event.player.sendMessage(new TextComponentString(TextFormatting.GRAY + s));
                }
                Bionisation.wasWarnedNewVersion = true;
            }
        }

    }
Идея следующая - разделяю строку по разделителю "_" и выдаю строки игроку. А ты как угодно иначе можешь придумать)
 
И он тупо каждый раз выводит сообщение в чат?
А не знаешь, как сделать так же как и в фордже? То есть мигающий зелёный значок на моде? Может есть какой-нибудь эвент проверки модверсии? Можно было бы свою прописать )
 
Сам искал такое, но не нашел) Потом подумал что это не все и так замечают, а тут при заходе тебе сразу пишет что как и где скачать.
 
Последнее редактирование:
Назад
Сверху