- Версия(и) Minecraft
- 1.16-1.1х
Долго тянуть не буду, начну сразу с главного.
Нам нужен любой репозиторий, с json'ом обновлений(Открытый, обязательно!!!), в моем случае ModUpdateRepo/ex.json at main · AlgorithmLX-Team/ModUpdateRepo .
Теперь нажимаем на такую кнопочку
, и копируем ссылку.
Дальше переходим в mods.toml, и добавляем строчку
Выглядеть он должен примерно так:
Всё! теперь в списке модов(в игре), при нажатии на наш мод(если есть обновление), майнкрафт будет пытаться перекинуть на страницу мода.
А как же сделать так, чтобы при появлении обновления, отправлялось сообщение в чат? Всё достаточно просто.
нужно всего 2 класса(ClientSetup и EventHandler(сам проверщик обновлений))
Q: А если мне надо, чтобы была возможность отключения автообновления?
A: Хорошо, давайте исправим это!
У каждого есть конфиг мода, поэтому я не буду говорить, как настраивать его.
Теперь просто регистрируем ClientSetup в главном классе, строчкой
Добавляем перевод.Это легко сделать, ибо мы уже сделали текст в TranslateTextComponent, поэтому перевод сообщения в lang_lang.json будет примерно таким:
Это всё! Всем удачи и пока!
Нам нужен любой репозиторий, с json'ом обновлений(Открытый, обязательно!!!), в моем случае ModUpdateRepo/ex.json at main · AlgorithmLX-Team/ModUpdateRepo .
Теперь нажимаем на такую кнопочку
Дальше переходим в mods.toml, и добавляем строчку
updateJSONURL = "Наш репозиторий"
Выглядеть он должен примерно так:
mods.toml:
modLoader = "javafml"
loaderVersion = "[36,)"
license = "license"
[[mods]]
modId = "examplemod"
version = "${file.jarVersion}"
displayName = "ExampleMod"
updateJSONURL = "https://raw.githubusercontent.com/AlgorithmLX-Team/ModUpdateRepo/main/example/ex.json"
authors = "You"
description = '''
Description
'''
[[dependencies.examplemod]]
modId = "forge"
mandatory = true
versionRange = "[37,)"
ordering = "NONE"
side = "BOTH"
[[dependencies.examplemod]]
modId = "minecraft"
mandatory = true
versionRange = "[1.17.1, 1.18)"
ordering = "NONE"
side = "BOTH"
А как же сделать так, чтобы при появлении обновления, отправлялось сообщение в чат? Всё достаточно просто.
нужно всего 2 класса(ClientSetup и EventHandler(сам проверщик обновлений))
EventHandler:
public class EventHandler {
public static final EventHandler INSTANCE = new EventHandler();
@SubscribeEvent
public void handlePlayerLoggedInEvent(LoggedInEvent event) {
CheckResult versionRAW = VersionChecker.getResult(ModList.get().getModFileById(DimOre.ModId).getMods().get(0));
Status result = versionRAW.status;
if (!(result.equals(Status.UP_TO_DATE) || result.equals(Status.PENDING) || result.equals(Status.AHEAD))) {
event.getPlayer().displayClientMessage(new TranslationTextComponent("update." + ExampleMod.ModId + ".update_message", versionRAW.target), false);
event.getPlayer().displayClientMessage(new TranslationTextComponent("update." + ExampleMod.ModId + ".changelog"), false);
String changes = versionRAW.changes.get(versionRAW.target);
if (changes != null) {
String[] changesFormat = changes.split("\n");
for (String change : changesFormat) {
event.getPlayer().displayClientMessage(new TranslationTextComponent("update." + ExampleMod.ModId + ".change", change), false);
}
if (versionRAW.changes.size() > 1) {
event.getPlayer().displayClientMessage(new TranslationTextComponent("update." + ExampleMod.ModId + ".update_message2"), false);
}
}
}
if (result.equals(Status.AHEAD)) {
event.getPlayer().displayClientMessage(new TranslationTextComponent("update." + ExampleMod.ModId + ".not_released"), false);
}
}
}
ClientSetup:
public class ClientSetup {
public ClientSetup() {
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::init);
}
public void init(FMLClientSetupEvent event) {
MinecraftForge.EVENT_BUS.register(EventHandler.INSTANCE);
}
}
Q: А если мне надо, чтобы была возможность отключения автообновления?
A: Хорошо, давайте исправим это!
У каждого есть конфиг мода, поэтому я не буду говорить, как настраивать его.
EventHandler:
public class EventHandler {
public static final EventHandler INSTANCE = new EventHandler();
@SubscribeEvent
public void handlePlayerLoggedInEvent(LoggedInEvent event) {
CheckResult versionRAW = VersionChecker.getResult(ModList.get().getModFileById(DimOre.ModId).getMods().get(0));
Status result = versionRAW.status;
if (MyConfig.ENABLE_AUTOUPDATE.get()) {
if (!(result.equals(Status.UP_TO_DATE) || result.equals(Status.PENDING) || result.equals(Status.AHEAD))) {
event.getPlayer().displayClientMessage(new TranslationTextComponent("update." + ExampleMod.ModId + ".update_message", versionRAW.target), false);
event.getPlayer().displayClientMessage(new TranslationTextComponent("update." + ExampleMod.ModId + ".changelog"), false);
String changes = versionRAW.changes.get(versionRAW.target);
if (changes != null) {
String[] changesFormat = changes.split("\n");
for (String change : changesFormat) {
event.getPlayer().displayClientMessage(new TranslationTextComponent("update." + ExampleMod.ModId + ".change", change), false);
}
if (versionRAW.changes.size() > 1) {
event.getPlayer().displayClientMessage(new TranslationTextComponent("update." + ExampleMod.ModId + ".update_message2"), false);
}
}
}
if (result.equals(Status.AHEAD)) {
event.getPlayer().displayClientMessage(new TranslationTextComponent("update." + ExampleMod.ModId + ".not_released"), false);
}
}
}
}
Теперь просто регистрируем ClientSetup в главном классе, строчкой
DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> ClientSetup::new);
Добавляем перевод.Это легко сделать, ибо мы уже сделали текст в TranslateTextComponent, поэтому перевод сообщения в lang_lang.json будет примерно таким:
JSON:
{
"update.examplemod.update_message": "§9[ExampleMod] §fНовая версия уже доступна для обновления (%s), Пожалуйста, обновитесь!",
"update.examplemod.changelog": "§eСписок изменений: ",
"update.examplemod.change": "- %s",
"update.examplemod.update_message2": "Более...",
"update.examplemod.not_released": "§9[ExampleMod] §fВерсия не была выпущена"
}
Это всё! Всем удачи и пока!