diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 2d96be383a..0ea8f34a89 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -168,7 +168,6 @@ mod.requiresversion = Requires game version: [red]{0} mod.errors = Errors have occurred loading content. mod.noerrorplay = [red]You have mods with errors.[] Either disable the affected mods or fix the errors before playing. -mod.nowdisabled = [red]Mod '{0}' is missing dependencies:[accent] {1}\n[lightgray]These mods need to be downloaded first.\nThis mod will be automatically disabled. mod.enable = Enable mod.requiresrestart = The game will now close to apply the mod changes. mod.reloadrequired = [red]Restart Required @@ -184,6 +183,16 @@ mod.preview.missing = Before publishing this mod in the workshop, you must add a mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. mod.scripts.disable = Your device does not support mods with scripts. You must disable these mods to play the game. +mod.dependencies.error = [scarlet]Mods are missing dependencies +mod.dependencies.soft = (optional) +mod.dependencies.download = Import +mod.dependencies.downloadreq = Import Required +mod.dependencies.downloadall = Import All +mod.dependencies.status = Import Results +mod.dependencies.success = Successfully downloaded: +mod.dependencies.failure = Failed to download: +mod.dependencies.imported = This mod requires dependencies. Download? + about.button = About name = Name: noname = Pick a[accent] player name[] first. diff --git a/core/assets/bundles/bundle_be.properties b/core/assets/bundles/bundle_be.properties index e00d04b2f9..530f1f32d7 100644 --- a/core/assets/bundles/bundle_be.properties +++ b/core/assets/bundles/bundle_be.properties @@ -161,7 +161,6 @@ mod.incompletedependencies.details = Гэтая мадыфікацыя не мо mod.requiresversion = Патрабуецца версія гульні: [red]{0} mod.errors = Памылкі былі выкліканыя загружаным змесцівам. mod.noerrorplay = [scarlet]У Вас ёсць мадыфікацыі з памылкамі.[] Выключыце праблемныя мадыфікацыі або выпраўце памылкі перад гульнёй. -mod.nowdisabled = [scarlet]Мадыфікацыі '{0}' патрабуюцца бацькоўскія мадыфікацыі:[accent] {1}\n[lightgray]Спачатку трэба загрузіць іх.\nГэтая мадыфікацыя будзе аўтаматычна адключаная. mod.enable = Укл. mod.requiresrestart = Цяпер гульня зачыніцца, каб прымяніць змены ў мадыфікацыях. mod.reloadrequired = [scarlet]Неабходны перазапуск diff --git a/core/assets/bundles/bundle_bg.properties b/core/assets/bundles/bundle_bg.properties index ec27fb18a1..1f33c1f2aa 100644 --- a/core/assets/bundles/bundle_bg.properties +++ b/core/assets/bundles/bundle_bg.properties @@ -164,7 +164,6 @@ mod.incompletedependencies.details = Тази модификация не мож mod.requiresversion = Нужна е версия на играта: [red]{0} mod.errors = Възникнаха грешки при зареждане на съдържанието. mod.noerrorplay = [scarlet]Има грешки в някои от модовете, които използвате.[] Трябва да деактивирате тези модове или да поправите грешките преди да играете. -mod.nowdisabled = [scarlet]Липсват зависимости за мод '{0}':[accent] {1}\n[lightgray]Мод {0} ще бъде деактивиран докато не ги изтеглите. mod.enable = Активирай mod.requiresrestart = Играта ще се затвори за да приложи промените в модовете. mod.reloadrequired = [scarlet]Необходимо е рестартиране diff --git a/core/assets/bundles/bundle_ca.properties b/core/assets/bundles/bundle_ca.properties index 1b873694d7..4896daa386 100644 --- a/core/assets/bundles/bundle_ca.properties +++ b/core/assets/bundles/bundle_ca.properties @@ -164,7 +164,6 @@ mod.incompletedependencies.details = Aquest mod no es pot carregar perquè té u mod.requiresversion = Cal la versió [red]{0}[] del joc. mod.errors = S’han produït errors quan es carregava el contingut. mod.noerrorplay = [scarlet]S’executen mods amb errors.[] Desactiveu els mods afectats o arregleu les errades abans de jugar. -mod.nowdisabled = [scarlet]Falten dependències del mod «{0}»s:[accent] {1}\n[lightgray]S’han de carregar els mods que fan falta.\nAquest mod es desactivarà automàticament. mod.enable = Activa mod.requiresrestart = El programa es tancarà per a aplicar els canvis. mod.reloadrequired = [scarlet]Cal reiniciar diff --git a/core/assets/bundles/bundle_cs.properties b/core/assets/bundles/bundle_cs.properties index 9b4f532c2d..0851534ca2 100644 --- a/core/assets/bundles/bundle_cs.properties +++ b/core/assets/bundles/bundle_cs.properties @@ -164,7 +164,6 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva mod.requiresversion = Vyžaduje verzi hry: [red]{0} mod.errors = Při načítání obsahu hry se vyskytly problémy. mod.noerrorplay = [scarlet]Máš modifikace s chybami.[] Buď zakaž dotčené modifikace, nebo oprav chyby před tím, než začneš hrát. -mod.nowdisabled = [scarlet]Modifikaci '{0}' chybí tyto závislosti: [accent]{1}\n[lightgray]Tyto modifikace je třeba nejprve stáhnout.\nTato modifikace bude nyní automaticky zakázána. mod.enable = Povolit mod.requiresrestart = Hra bude ukončena, aby bylo možné nasadit modifikace. mod.reloadrequired = [scarlet]Je vyžadováno znovuspuštění hry. diff --git a/core/assets/bundles/bundle_da.properties b/core/assets/bundles/bundle_da.properties index 2aa8e2ee58..843a16a849 100644 --- a/core/assets/bundles/bundle_da.properties +++ b/core/assets/bundles/bundle_da.properties @@ -161,7 +161,6 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva mod.requiresversion = Requires game version: [red]{0} mod.errors = Fejl ved afhentning af indhold. mod.noerrorplay = [scarlet]Du har mods med fejl.[] Deaktiver det eller løs fejl før du starter spillet. -mod.nowdisabled = [scarlet]Mod '{0}' mangler afhængigheder:[accent] {1}\n[lightgray]Disse mods skal hentes først.\nDenne mod vil blive deaktiveret automatisk. mod.enable = Aktiver mod.requiresrestart = Spillet vil nu lukke for at tilføje mod ændringerne mod.reloadrequired = [scarlet]Genindlæsning påkrævet diff --git a/core/assets/bundles/bundle_de.properties b/core/assets/bundles/bundle_de.properties index 48404d7877..6c013bcb70 100644 --- a/core/assets/bundles/bundle_de.properties +++ b/core/assets/bundles/bundle_de.properties @@ -167,7 +167,6 @@ mod.requiresversion = Benötigt Spielversion: [red]{0} mod.errors = Beim Laden von Inhalt sind Fehler aufgetreten. mod.noerrorplay = [red]Du hast Mods mit Fehlern.[] Deaktiviere die Mods oder behebe die Fehler, bevor du spielst. -mod.nowdisabled = [red]Mod '{0}' fehlen Abhängigkeiten:[accent] {1}\n[lightgray]Diese Mods müssen erst installiert werden.\nDieser Mod wird automatisch deaktiviert. mod.enable = Aktivieren mod.requiresrestart = Das Spiel wird jetzt beendet, um die Mod-Änderungen anzuwenden. mod.reloadrequired = [red]Neuladen benötigt diff --git a/core/assets/bundles/bundle_es.properties b/core/assets/bundles/bundle_es.properties index e98b8cc044..1914c4481a 100644 --- a/core/assets/bundles/bundle_es.properties +++ b/core/assets/bundles/bundle_es.properties @@ -164,7 +164,6 @@ mod.incompletedependencies.details = Este mod no se puede cargar debido a depend mod.requiresversion = Requiere la versión del juego: [red]{0} mod.errors = Ha ocurrido un fallo al cargar el contenido. mod.noerrorplay = [scarlet]Se están ejecutando algunos mods con fallos.[]Debes deshabilitarlos o arreglar los errores antes de jugar. -mod.nowdisabled = [scarlet]El mod '{0}' necesita ejecutarse junto a otros mods de los que depende:[accent] {1}\n[lightgray]Es necesario descargar primero estos mods.\nEste mod se desactivará automaticamente. mod.enable = Activar mod.requiresrestart = El juego se cerrará para aplicar los cambios del mod. mod.reloadrequired = [scarlet]Es necesario reiniciar diff --git a/core/assets/bundles/bundle_et.properties b/core/assets/bundles/bundle_et.properties index ef497b9e40..fb88c9c4be 100644 --- a/core/assets/bundles/bundle_et.properties +++ b/core/assets/bundles/bundle_et.properties @@ -164,7 +164,6 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva mod.requiresversion = Requires game version: [red]{0} mod.errors = Errors have occurred loading content. mod.noerrorplay = [scarlet]You have mods with errors.[] Either disable the affected mods or fix the errors before playing. -mod.nowdisabled = [scarlet]Mod '{0}' is missing dependencies:[accent] {1}\n[lightgray]These mods need to be downloaded first.\nThis mod will be automatically disabled. mod.enable = Enable mod.requiresrestart = The game will now close to apply the mod changes. mod.reloadrequired = [scarlet]Reload Required diff --git a/core/assets/bundles/bundle_eu.properties b/core/assets/bundles/bundle_eu.properties index 63c3bf9c0d..3437c6f79a 100644 --- a/core/assets/bundles/bundle_eu.properties +++ b/core/assets/bundles/bundle_eu.properties @@ -161,7 +161,6 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva mod.requiresversion = Requires game version: [red]{0} mod.errors = Erroreak gertatu dira edukia kargatzean. mod.noerrorplay = [scarlet]Erroreak dituzten mod-ak dituzu.[] Desgaitu kaltetutako mod-ak edo konpondu erroreak jolastu aurretik. -mod.nowdisabled = [scarlet]'{0}' mod-ak menpekotasunak ditu faltan:[accent] {1}\n[lightgray]Aurretik beste mod hauek deskargatu behar dira.\nMod hau automatikoki desgaituko da. mod.enable = Gaitu mod.requiresrestart = Jolasa itxi egingo da mod-aren aldaketak aplikatzeko. mod.reloadrequired = [scarlet]Birkargatu behar da diff --git a/core/assets/bundles/bundle_fi.properties b/core/assets/bundles/bundle_fi.properties index 1d03cb860d..5ea1210cbd 100644 --- a/core/assets/bundles/bundle_fi.properties +++ b/core/assets/bundles/bundle_fi.properties @@ -161,7 +161,6 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva mod.requiresversion = Requires game version: [red]{0} mod.errors = Virheitä on tapahtunut pelin ladatessa. mod.noerrorplay = [scarlet]Sinulla on virheellisiä modeja.[] Joko poista ne käytöstä tai korjaa virheet. -mod.nowdisabled = [scarlet]Lisäosa '{0}' tarvitsee muita lisäosia toimiakseen:[accent] {1}\n[lightgray]Nämä lisäosat täytyy asentaa ensin.\nTämä lisäosa poistetaan automaattisesti käytöstä. mod.enable = Käytä mod.requiresrestart = Peli suljetaan jotta muutokset voisivat toteutua. mod.reloadrequired = [scarlet]Vaatii Uudelleenkäynnistystä diff --git a/core/assets/bundles/bundle_fil.properties b/core/assets/bundles/bundle_fil.properties index 568c3ac56e..d90da6300d 100644 --- a/core/assets/bundles/bundle_fil.properties +++ b/core/assets/bundles/bundle_fil.properties @@ -163,7 +163,6 @@ mod.requiresversion = Nangangailangan ng bersyon ng laro: [red]{0} mod.errors = May mga error na naitala habang ni-lo-load ang nilalaman. mod.noerrorplay = [scarlet]May mga mod kang may error.[] Maaaring 'wag munang paganahin ang mga apektadong mod o 'di kaya'y ayusin ang mga error bago maglaro. -mod.nowdisabled = [scarlet]Ang mod na '{0}' ay ma kulang na mga dependency:[accent] {1}\n[lightgray]Ang mga ito'y kinakailangang i-download muna.\nAng mod na'to ay kusang 'di papaganahin. mod.enable = Paganahin mod.requiresrestart = Ang laro'y magsasara upang mai-apply ang mga pagbabago sa mod. mod.reloadrequired = [scarlet]Kinakalingang I-restart diff --git a/core/assets/bundles/bundle_fr.properties b/core/assets/bundles/bundle_fr.properties index b44f39f086..b9956259ca 100644 --- a/core/assets/bundles/bundle_fr.properties +++ b/core/assets/bundles/bundle_fr.properties @@ -168,7 +168,6 @@ mod.requiresversion = Requiert la version: [red]{0} mod.errors = Des erreurs se sont produites lors du chargement du contenu. mod.noerrorplay = [scarlet]Vous avez des mods avec des erreurs.[] Désactivez les mods concernés ou corrigez les erreurs avant de jouer. -mod.nowdisabled = [scarlet]Le mod '{0}' a des dépendances manquantes: [accent]{1}\n[lightgray]Ces mods doivent d'abord être téléchargés.\nCe mod sera automatiquement désactivé. mod.enable = Activer mod.requiresrestart = Le jeu va maintenant se fermer pour appliquer les modifications du mod. mod.reloadrequired = [scarlet]Redémarrage requis diff --git a/core/assets/bundles/bundle_hu.properties b/core/assets/bundles/bundle_hu.properties index cbdd193e6a..469876abe3 100644 --- a/core/assets/bundles/bundle_hu.properties +++ b/core/assets/bundles/bundle_hu.properties @@ -168,7 +168,6 @@ mod.requiresversion = Szükséges játékverzió: [red]{0}[] mod.errors = Hiba történt a tartalom betöltése közben. mod.noerrorplay = [red]Hibákkal rendelkező modjaid vannak.[] Kapcsold ki, vagy javítsd ki őket a játék elindítása előtt. -mod.nowdisabled = [red]A(z) „{0}” modnak nincs megfelelő függősége:[accent] {1}\n[lightgray]Ezeket előbb le kell tölteni.\nEz a mod automatikusan ki lesz kapcsolva. mod.enable = Engedélyezés mod.requiresrestart = A játék most kilép, hogy a módosítások érvénybe lépjenek a következő indításkor. mod.reloadrequired = [red]Újraindítás szükséges diff --git a/core/assets/bundles/bundle_id_ID.properties b/core/assets/bundles/bundle_id_ID.properties index ce0071241a..89e18348e3 100644 --- a/core/assets/bundles/bundle_id_ID.properties +++ b/core/assets/bundles/bundle_id_ID.properties @@ -168,7 +168,6 @@ mod.requiresversion = Membutuhkan versi game: [red]{0} mod.errors = Terjadi kesalahan saat memuat konten. mod.noerrorplay = [scarlet]Anda memiliki mod dengan suatu kesalahan.[] Nonaktifkan mod yang bersangkutan atau perbaiki kesalahan tersebut sebelum bermain. -mod.nowdisabled = [scarlet]Mod '{0}' tidak memiliki dependensi:[accent] {1}\n[lightgray]Mod ini harus diunduh terlebih dahulu.\nMod ini akan dinonaktifkan secara otomatis. mod.enable = Aktifkan mod.requiresrestart = Game akan ditutup untuk mengaktifkan perubahan mod. mod.reloadrequired = [scarlet]Mulai Ulang Dibutuhkan diff --git a/core/assets/bundles/bundle_it.properties b/core/assets/bundles/bundle_it.properties index 1fa61a6179..c703a3ae57 100644 --- a/core/assets/bundles/bundle_it.properties +++ b/core/assets/bundles/bundle_it.properties @@ -162,7 +162,6 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva mod.requiresversion = Requires game version: [red]{0} mod.errors = Si sono verificati degli errori durante il caricamento del contenuto. mod.noerrorplay = [scarlet]Sono presenti delle mod con errori.[] Puoi disabilitare le mod affette oppure sistemarle prima di giocare. -mod.nowdisabled = [scarlet]Alla mod '{0}' mancano delle dipendenze:[accent] {1}\n[lightgray]Queste mod devono essere scaricate prima.\nQuesta mod verrà disabilitata automaticamente. mod.enable = Abilita mod.requiresrestart = Il gioco verrà chiuso per applicare i cambiamenti. mod.reloadrequired = [scarlet]Riavvio necessario diff --git a/core/assets/bundles/bundle_ja.properties b/core/assets/bundles/bundle_ja.properties index 316fe51292..dbf252b211 100644 --- a/core/assets/bundles/bundle_ja.properties +++ b/core/assets/bundles/bundle_ja.properties @@ -164,7 +164,6 @@ mod.incompletedependencies.details = 依存関係が無効または欠損して mod.requiresversion = ゲームのバージョンが必要です: [red]{0} mod.errors = コンテンツの読み込み中にエラーが発生しました。 mod.noerrorplay = [scarlet]以下のModにエラーがあります。[] Modを無効化するか、エラーを修正してください。 -mod.nowdisabled = [scarlet]{0} 依存関係がありません。:[accent] {1}\n[lightgray]これらのModをダウンロードし有効化する必要があります。\nなお、このModは自動的に無効化されます。 mod.enable = 有効化 mod.requiresrestart = このModをインストールするためにはゲームの再起動が必要です。 mod.reloadrequired = [scarlet]Modを有効にするには、この画面を開き直してください。 diff --git a/core/assets/bundles/bundle_ko.properties b/core/assets/bundles/bundle_ko.properties index d008c03c46..9a91ab9a95 100644 --- a/core/assets/bundles/bundle_ko.properties +++ b/core/assets/bundles/bundle_ko.properties @@ -168,7 +168,6 @@ mod.requiresversion = 필요한 게임 버전: [red]{0} mod.errors = 콘텐츠를 불러오는 중에 오류가 발생함 mod.noerrorplay = [scarlet]오류가 있는 모드가 있습니다.[] 영향을 받는 모드를 비활성화하거나 플레이하기 전에 오류를 수정하세요. -mod.nowdisabled = [scarlet]모드 '{0}'에 필요한 종속성이 없습니다:[accent] {1}\n[lightgray]이 모드를 먼저 내려받아야 합니다.\n이 모드는 자동으로 비활성화됩니다. mod.enable = 활성화 mod.requiresrestart = 모드 변경 사항을 적용하기 위해 게임을 종료합니다. mod.reloadrequired = [scarlet]재시작 필요 diff --git a/core/assets/bundles/bundle_lt.properties b/core/assets/bundles/bundle_lt.properties index 1597ce1da0..0a75c22331 100644 --- a/core/assets/bundles/bundle_lt.properties +++ b/core/assets/bundles/bundle_lt.properties @@ -161,7 +161,6 @@ mod.incompletedependencies.details = Šios modifikacijos negalima užkrauti dėl mod.requiresversion = Reikia žaidimo versijos: [red]{0} mod.errors = Įvyko klaida kraunant turinį. mod.noerrorplay = [scarlet]Turite modifikacijas su klaidomis.[] Išjunkite modifikacijas su klaidomis arba patasykite jas prieš žaidžiant. -mod.nowdisabled = [scarlet]Modifikacijai '{0}' trūksta priklausomybių:[accent] {1}\n[lightgray] Šios modifikacijos turi būti atsisiųstos.\nŠi modifikacija bus automatiškai išjungta. mod.enable = Įjungti mod.requiresrestart = Žaidimas dabar išsijungs modifikacijų perkrovimui. mod.reloadrequired = [scarlet]Privalomas perkrovimas diff --git a/core/assets/bundles/bundle_nl.properties b/core/assets/bundles/bundle_nl.properties index 945cfd1642..995b20d07b 100644 --- a/core/assets/bundles/bundle_nl.properties +++ b/core/assets/bundles/bundle_nl.properties @@ -168,7 +168,6 @@ mod.requiresversion = Vereist spelversie: [red]{0} mod.errors = Er hebben zich fouten voordaan tijdens het laden van de inhoud. mod.noerrorplay = [red]Je mods bevatten fouten.[] Zet de mods uit of los de problemen op voordat je verder gaat met spelen. -mod.nowdisabled = [red]Mod '{0}' mist een aantal benodigdheden:[accent] {1}\n[lightgray]Deze moet je eerst zelf downloaden.\nDeze mod is nu voor je uitgezet. mod.enable = Activeer mod.requiresrestart = Het spel zal nu afsluiten om de veranderingen aan de mods door te voeren. mod.reloadrequired = [scarlet]Herstart Vereist diff --git a/core/assets/bundles/bundle_nl_BE.properties b/core/assets/bundles/bundle_nl_BE.properties index e40a91b474..eaec8807ec 100644 --- a/core/assets/bundles/bundle_nl_BE.properties +++ b/core/assets/bundles/bundle_nl_BE.properties @@ -161,7 +161,6 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva mod.requiresversion = Requires game version: [red]{0} mod.errors = Errors have occurred loading content. mod.noerrorplay = [scarlet]You have mods with errors.[] Either disable the affected mods or fix the errors before playing. -mod.nowdisabled = [scarlet]De volgende vereisten ontbreken voor mod '{0}':[accent] {1}\n[lightgray]Deze mods moeten eerst gedownload worden.\nDeze mod wordt automatisch uitgeschakeld. mod.enable = Schakel in mod.requiresrestart = The game will now close to apply the mod changes. mod.reloadrequired = [scarlet]Herladen Vereist diff --git a/core/assets/bundles/bundle_pl.properties b/core/assets/bundles/bundle_pl.properties index a44ebe7d35..713c942677 100644 --- a/core/assets/bundles/bundle_pl.properties +++ b/core/assets/bundles/bundle_pl.properties @@ -164,7 +164,6 @@ mod.incompletedependencies.details = Moda nie da się załadować z powodu niepo mod.requiresversion = Wymagana wersja gry: [red]{0} mod.errors = Wystąpił błąd podczas ładowania treści. mod.noerrorplay = [scarlet]Twoje mody zawierają błędy.[] Wyłącz je lub napraw błędy przed rozpoczęciem gry. -mod.nowdisabled = [scarlet]Brakuje zależności dla moda '{0}':[accent] {1}\n[lightgray]Najpierw trzeba ściągnąć te mody.\nMod zostanie automatycznie wyłączony. mod.enable = Włącz mod.requiresrestart = Gra zostanie wyłączona aby wprowadzić zmiany w modzie. mod.reloadrequired = [scarlet]Wymagany restart diff --git a/core/assets/bundles/bundle_pt_BR.properties b/core/assets/bundles/bundle_pt_BR.properties index debb1915c9..f9254afcc3 100644 --- a/core/assets/bundles/bundle_pt_BR.properties +++ b/core/assets/bundles/bundle_pt_BR.properties @@ -168,7 +168,6 @@ mod.requiresversion = Requer a versão do jogo: [red]{0} mod.errors = Ocorreram erros ao carregar o conteúdo. mod.noerrorplay = [scarlet]Você tem mods com erros.[] Desative os mods afetados ou conserte os erros antes de jogar. -mod.nowdisabled = [scarlet]O Mod '{0}' está com dependências ausentes:[accent] {1}\n[lightgray]Esses Mods precisam ser baixados primeiro.\nEsse Mod será desativado automaticamente. mod.enable = Ativar mod.requiresrestart = O jogo irá fechar para aplicar as mudanças do mod. mod.reloadrequired = [scarlet]Recarregamento Necessário diff --git a/core/assets/bundles/bundle_pt_PT.properties b/core/assets/bundles/bundle_pt_PT.properties index 7119604a38..c623c3eef0 100644 --- a/core/assets/bundles/bundle_pt_PT.properties +++ b/core/assets/bundles/bundle_pt_PT.properties @@ -163,7 +163,6 @@ mod.incompletedependencies.details = Este mod não pôde ser carregado devido a mod.requiresversion = Requer a versão do jogo: [red]{0} mod.errors = Ocorreram erros ao carregar o conteúdo. mod.noerrorplay = [scarlet]Tens mods com erros.[] Desativa os mods afetados ou corrije os erros antes de jogar. -mod.nowdisabled = [scarlet]Mod '{0}' tem dependências em falta:[accent] {1}\n[lightgray]Estes mods precisam de ser baixados primeiro. Este mod será automaticamente desativado mod.enable = Ativar mod.requiresrestart = O jogo irá fechar para aplicar as alterações do mod. mod.reloadrequired = [scarlet]É necessario recarregar diff --git a/core/assets/bundles/bundle_ro.properties b/core/assets/bundles/bundle_ro.properties index 971bf0c019..63bbc1f2c3 100644 --- a/core/assets/bundles/bundle_ro.properties +++ b/core/assets/bundles/bundle_ro.properties @@ -164,7 +164,6 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva mod.requiresversion = Requires game version: [red]{0} mod.errors = Au apărut erori la încărcarea conținutului. mod.noerrorplay = [scarlet]Modurile tale au erori.[] Dezactivează modurile afectate sau repară erorile înainte să joci. -mod.nowdisabled = [scarlet]Modul '{0}' are dependențe lipsă:[accent] {1}\n[lightgray]Mai întâi trebuie să descarci aceste moduri.\nAcest mod va fi dezactivat automat. mod.enable = Activează mod.requiresrestart = Jocul se va închide acum pt a aplica modificările modurilor. mod.reloadrequired = [scarlet]E Nevoie de o Repornire diff --git a/core/assets/bundles/bundle_ru.properties b/core/assets/bundles/bundle_ru.properties index 858259d648..5c6b2a86a4 100644 --- a/core/assets/bundles/bundle_ru.properties +++ b/core/assets/bundles/bundle_ru.properties @@ -165,7 +165,6 @@ mod.incompletedependencies.details = Этот мод не может быть з mod.requiresversion = Требуется версия игры: [red]{0} mod.errors = Ошибки были вызваны загружаемым содержимым. mod.noerrorplay = [scarlet]У Вас есть модификации с ошибками.[] Выключите проблемные модификации или исправьте ошибки перед игрой. -mod.nowdisabled = [scarlet]Модификации '{0}' требуются родительские модификации:[accent] {1}\n[lightgray]Сначала нужно загрузить их.\nЭта модификация будет автоматически отключена. mod.enable = Вкл. mod.requiresrestart = Теперь игра закроется, чтобы применить изменения в модификациях. mod.reloadrequired = [scarlet]Необходим перезапуск diff --git a/core/assets/bundles/bundle_sr.properties b/core/assets/bundles/bundle_sr.properties index f2ccdfae14..2aa5f02ee2 100644 --- a/core/assets/bundles/bundle_sr.properties +++ b/core/assets/bundles/bundle_sr.properties @@ -164,7 +164,6 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva mod.requiresversion = Requires game version: [red]{0} mod.errors = Greške su nastale tokom učitavanja sadržaja. mod.noerrorplay = [scarlet]Imate modove sa greškama.[] Onemogućite te modove, ili ispravite greške. -mod.nowdisabled = [scarlet]Mod '{0}'nema potrebne zavisne modove:[accent] {1}\n[lightgray]Ove modove treba instalirati prvo.\nMod se automatski onemogućava. mod.enable = Omogući mod.requiresrestart = Igra će se zatvoriti da ažurira modove. mod.reloadrequired = [scarlet]Ponovno pokretanje potrebno diff --git a/core/assets/bundles/bundle_sv.properties b/core/assets/bundles/bundle_sv.properties index 8e49899104..c80fa7fbbd 100644 --- a/core/assets/bundles/bundle_sv.properties +++ b/core/assets/bundles/bundle_sv.properties @@ -161,7 +161,6 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva mod.requiresversion = Requires game version: [red]{0} mod.errors = Fel har inträffat under laddning av innehåll. mod.noerrorplay = [scarlet]Du har moddar med fel.[] Stäng antingen av de drabbade moddarna eller fixa felen innan du spelar. -mod.nowdisabled = [scarlet]Mod '{0}' saknar beroenden:[accent] {1}\n[lightgray]Dessa mods måste laddas ned först.\nDetta mod kommer att inaktiveras automatiskt. mod.enable = Aktivera mod.requiresrestart = Spelet kommer nu att stängas av för att tillämpa mod ändringarna. mod.reloadrequired = [scarlet]Omstart krävs diff --git a/core/assets/bundles/bundle_th.properties b/core/assets/bundles/bundle_th.properties index f3f3cf549d..43c1dc9c31 100644 --- a/core/assets/bundles/bundle_th.properties +++ b/core/assets/bundles/bundle_th.properties @@ -164,7 +164,6 @@ mod.incompletedependencies.details = ม็อดนี้ไม่สามา mod.requiresversion = ต้องการเวอร์ชั่นเกม: [red]{0} mod.errors = มีข้อผิดพลาดเกิดขึ้นระหว่างโหลดเนื้อหา mod.noerrorplay = [scarlet]คุณมีม็อดที่มีข้อผิดพลาด[] กรุณาปิดม็อดนั้นๆ หรือแก้ไขข้อผิดพลาดก่อนที่จะเล่น -mod.nowdisabled = [scarlet]ม็อด '{0}' ขาดม็อดพื่งพา:[accent] {1}\n[lightgray]จำเป็นต้องโหลดม็อดพวกนี้ก่อน\nม็อดนี้จะถูกปิดใช้งานโดยอัตโนมัติ mod.enable = เปิดใช้งาน mod.requiresrestart = เกมจะปิดตัวลงเพื่อติดตั้งม็อด mod.reloadrequired = [scarlet]จำเป็นต้องรีโหลด diff --git a/core/assets/bundles/bundle_tk.properties b/core/assets/bundles/bundle_tk.properties index db585ea46b..10d3dee30f 100644 --- a/core/assets/bundles/bundle_tk.properties +++ b/core/assets/bundles/bundle_tk.properties @@ -161,7 +161,6 @@ mod.incompletedependencies.details = This mod is unable to be loaded due to inva mod.requiresversion = Requires game version: [red]{0} mod.errors = Errors have occurred loading content. mod.noerrorplay = [scarlet]You have mods with errors.[] Either disable the affected mods or fix the errors before playing. -mod.nowdisabled = [scarlet]Mod '{0}' is missing dependencies:[accent] {1}\n[lightgray]These mods need to be downloaded first.\nThis mod will be automatically disabled. mod.enable = Enable mod.requiresrestart = The game will now close to apply the mod changes. mod.reloadrequired = [scarlet]Reload Required diff --git a/core/assets/bundles/bundle_tr.properties b/core/assets/bundles/bundle_tr.properties index 72bb544cb4..1d1e38db35 100644 --- a/core/assets/bundles/bundle_tr.properties +++ b/core/assets/bundles/bundle_tr.properties @@ -164,7 +164,6 @@ mod.incompletedependencies.details = Eksik veya yanlış bağlılıklardan dolay mod.requiresversion = Şu oyun sürümü gerekiyor: [red]{0} mod.errors = İçerik yüklenirken bir hata oluştu. mod.noerrorplay = [scarlet]Hatalı modlarınız var.[] Oynamadan önce bu modları devre dışı bırakın veya dosyadaki hataları düzeltin. -mod.nowdisabled = [scarlet]'{0}' modunun çalışması için gerekli olan modlardan bazıları bulunamadı:[accent] {1}\n[lightgray]Önce bu modların indirilmesi gerekmektedir.\nBu mod otomatik olarak devre dışı bırakılacaktır. mod.enable = Etkinleştir mod.requiresrestart = Oyun mod değişikliklerini uygulamak için kapatılacak. mod.reloadrequired = [scarlet]Yeniden Yükleme Gerekli diff --git a/core/assets/bundles/bundle_uk_UA.properties b/core/assets/bundles/bundle_uk_UA.properties index c121f0a783..902edf0ce9 100644 --- a/core/assets/bundles/bundle_uk_UA.properties +++ b/core/assets/bundles/bundle_uk_UA.properties @@ -166,7 +166,6 @@ mod.incompletedependencies.details = Цей мод неможливо заван mod.requiresversion = Необхідна версія гри: [red]{0} mod.errors = Виникли помилки під час завантаження змісту. mod.noerrorplay = [red]Ви маєте модифікації з помилками.[] Або вимкніть проблемні модифікації, або виправте їх. -mod.nowdisabled = [red]Модифікації «{0}» не вистачає залежних модифікацій:[accent] {1}\n[lightgray]Ці модифікації потрібно завантажити спочатку.\nЦя модифікація буде автоматично вимкнена. mod.enable = Увімкнути mod.requiresrestart = А тепер гра закриється, щоби застосувати зміни модифікацій. mod.reloadrequired = [red]Потрібно перезавантаження diff --git a/core/assets/bundles/bundle_vi.properties b/core/assets/bundles/bundle_vi.properties index d8ee8eb681..91ab2e85a3 100644 --- a/core/assets/bundles/bundle_vi.properties +++ b/core/assets/bundles/bundle_vi.properties @@ -168,7 +168,6 @@ mod.requiresversion = Yêu cầu phiên bản trò chơi: [red]{0} mod.errors = Đã xảy ra lỗi khi tải nội dung. mod.noerrorplay = [red]Bạn có mod bị lỗi.[] Tắt các mod bị ảnh hưởng hoặc sửa các lỗi trước khi chơi. -mod.nowdisabled = [red]Mod '{0}' thiếu phụ thuộc:[accent] {1}\n[lightgray]Bạn cần tải các mod này xuống trước.\nBản mod này sẽ tự động tắt. mod.enable = Bật mod.requiresrestart = Trò chơi sẽ đóng để áp dụng các thay đổi của mod. mod.reloadrequired = [scarlet]Yêu cầu khởi động lại diff --git a/core/assets/bundles/bundle_zh_CN.properties b/core/assets/bundles/bundle_zh_CN.properties index 2dea70d698..362c1781cf 100644 --- a/core/assets/bundles/bundle_zh_CN.properties +++ b/core/assets/bundles/bundle_zh_CN.properties @@ -167,7 +167,6 @@ mod.requiresversion = 需要游戏版本: [red]{0} mod.errors = 读取内容时发生错误。 mod.noerrorplay = [scarlet]您的模组发生了错误。 []禁用相关模组或修复错误后才能进入游戏。 -mod.nowdisabled = [scarlet]“{0}”模组缺少依赖的其他模组:[accent]{1}\n[lightgray]需要先下载上述模组。 \n此模组现在将被自动禁用。 mod.enable = 启用 mod.requiresrestart = 游戏将退出以应用模组修改。 mod.reloadrequired = [scarlet]需要重启 diff --git a/core/assets/bundles/bundle_zh_TW.properties b/core/assets/bundles/bundle_zh_TW.properties index 316460d853..866445b275 100644 --- a/core/assets/bundles/bundle_zh_TW.properties +++ b/core/assets/bundles/bundle_zh_TW.properties @@ -165,7 +165,6 @@ mod.incompletedependencies.details = 由於無效或缺失的依賴項,此模 mod.requiresversion = 需要遊戲版本:[red]{0} mod.errors = 載入內容時發生錯誤 mod.noerrorplay = [scarlet]您使用了有問題的模組。[] 遊戲前請先停用相關模組或修正問題。 -mod.nowdisabled = [scarlet]「{0}」模組缺少依賴關係:[accent] {1}\n[lightgray]必須先下載這些模組。\n此模組將被自動停用。 mod.enable = 啟用 mod.requiresrestart = 遊戲將立即關閉以套用模組變更。 mod.reloadrequired = [scarlet]需要重新載入 diff --git a/core/src/mindustry/mod/ModListing.java b/core/src/mindustry/mod/ModListing.java index e4dfbeccc6..ccdb88b717 100644 --- a/core/src/mindustry/mod/ModListing.java +++ b/core/src/mindustry/mod/ModListing.java @@ -2,7 +2,7 @@ package mindustry.mod; /** Mod listing as a data class. */ public class ModListing{ - public String repo, name, subtitle, author, lastUpdated, description, minGameVersion; + public String repo, name, internalName, subtitle, author, lastUpdated, description, minGameVersion; public boolean hasScripts, hasJava; public String[] contentTypes = {}; public int stars; @@ -12,6 +12,7 @@ public class ModListing{ return "ModListing{" + "repo='" + repo + '\'' + ", name='" + name + '\'' + + ", internalName='" + internalName + '\'' + ", author='" + author + '\'' + ", lastUpdated='" + lastUpdated + '\'' + ", description='" + description + '\'' + diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index e114511658..c8df0509a1 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -50,6 +50,7 @@ public class Mods implements Loadable{ private ModClassLoader mainLoader = new ModClassLoader(getClass().getClassLoader()); Seq mods = new Seq<>(); + private Seq newImports = new Seq<>(); private ObjectMap, ModMeta> metas = new ObjectMap<>(); private boolean requiresReload; @@ -117,6 +118,7 @@ public class Mods implements Loadable{ var loaded = loadMod(dest, true, true); mods.add(loaded); + newImports.add(loaded); //invalidate ordered mods cache lastOrderedMods = null; requiresReload = true; @@ -428,6 +430,7 @@ public class Mods implements Loadable{ return; } mods.remove(mod); + newImports.remove(mod); mod.dispose(); if(mod.state != ModState.disabled){ requiresReload = true; @@ -533,13 +536,20 @@ public class Mods implements Loadable{ private void updateDependencies(LoadedMod mod){ mod.dependencies.clear(); mod.missingDependencies.clear(); + mod.missingSoftDependencies.clear(); mod.dependencies = mod.meta.dependencies.map(this::locateMod); + mod.softDependencies = mod.meta.softDependencies.map(this::locateMod); for(int i = 0; i < mod.dependencies.size; i++){ if(mod.dependencies.get(i) == null){ mod.missingDependencies.add(mod.meta.dependencies.get(i)); } } + for(int i = 0; i < mod.softDependencies.size; i++){ + if(mod.softDependencies.get(i) == null){ + mod.missingSoftDependencies.add(mod.meta.softDependencies.get(i)); + } + } } /** @return mods ordered in the correct way needed for dependencies. */ @@ -611,14 +621,13 @@ public class Mods implements Loadable{ if(mods.contains(LoadedMod::hasContentErrors)){ ui.loadfrag.hide(); new Dialog(""){{ - setFillParent(true); cont.margin(15); cont.add("@error.title"); cont.row(); cont.image().width(300f).pad(2).colspan(2).height(4f).color(Color.scarlet); cont.row(); - cont.add("@mod.errors").wrap().growX().center().get().setAlignment(Align.center); + cont.add("@mod.errors").wrap().growX().center().labelAlign(Align.center); cont.row(); cont.pane(p -> { mods.each(m -> m.enabled() && m.hasContentErrors(), m -> { @@ -649,6 +658,140 @@ public class Mods implements Loadable{ cont.button("@ok", this::hide).size(300, 50); }}.show(); } + + //show list of missing dependencies + Seq toCheck = mods.select(mod -> mod.shouldBeEnabled() && mod.hasUnmetDependencies()); + if(!toCheck.isEmpty()){ + ui.loadfrag.hide(); + checkDependencies(toCheck, false); + } + } + + /** Assume mods in toCheck are missing dependencies. */ + private void checkDependencies(Seq toCheck, boolean soft){ + new Dialog(""){{ + setFillParent(true); + cont.margin(15); + int span = soft ? 3 : 2; + cont.add("@mod.dependencies.error").colspan(span); + cont.row(); + cont.image().width(300f).colspan(span).pad(2).height(4f).color(Color.scarlet); + cont.row(); + cont.pane(p -> { + toCheck.each(mod -> { + p.add(mod.meta.displayName).wrap().growX().left().labelAlign(Align.left); + p.row(); + p.table(d -> { + mod.missingDependencies.each(dep -> { + d.add(dep).wrap().growX().left().labelAlign(Align.left); + d.row(); + }); + if(soft){ + mod.missingSoftDependencies.each(dep -> { + d.add(dep + " " + Core.bundle.get("mod.dependencies.soft")).wrap().growX().left().labelAlign(Align.left); + d.row(); + }); + } + }).growX().padBottom(8f).padLeft(12f); + p.row(); + }); + }).fillX().colspan(span); + + cont.row(); + + cont.button("@cancel", this::hide).size(150, 50); + cont.button(soft ? "@mod.dependencies.downloadreq" : "@mod.dependencies.download", () -> { + hide(); + Seq toImport = new Seq<>(); + toCheck.each(mod -> mod.missingDependencies.each(toImport::addUnique)); + downloadDependencies(toImport); + }).size(150, 50); + if(soft){ + cont.button("@mod.dependencies.downloadall", () -> { + hide(); + Seq toImport = new Seq<>(); + toCheck.each(mod -> mod.missingDependencies.each(toImport::addUnique)); + toCheck.each(mod -> mod.missingSoftDependencies.each(toImport::addUnique)); + downloadDependencies(toImport); + }).size(150, 50); + } + }}.show(); + } + + private void downloadDependencies(Seq toImport){ + Seq remaining = toImport.copy(); + ui.mods.importDependencies(remaining, () -> { + toImport.removeAll(remaining); + if(toImport.any()) requiresReload = true; + displayDependencyImportStatus(remaining, toImport); + }); + } + + private void displayDependencyImportStatus(Seq failed, Seq success){ + new Dialog(""){{ + setFillParent(true); + cont.margin(15); + + cont.add("@mod.dependencies.status").center(); + cont.row(); + cont.image().width(300f).pad(2).height(4f).color(Color.lightGray); + cont.row(); + + cont.pane(p -> { + if(success.any()){ + p.add("@mod.dependencies.success").wrap().fillX().left().labelAlign(Align.left); + p.row(); + p.table(t -> { + success.each(d -> { + t.add(d).wrap().growX().left().labelAlign(Align.left); + t.row(); + }); + }).growX().padBottom(8f).padLeft(12f); + p.row(); + } + + if(failed.any()){ + p.add("@mod.dependencies.failure").wrap().fillX().left().labelAlign(Align.left); + p.row(); + p.table(t -> { + failed.each(d -> { + t.add(d).wrap().growX().left().labelAlign(Align.left); + t.row(); + }); + }).growX().padBottom(8f).padLeft(12f); + } + }).fillX(); + cont.row(); + + if(success.any()){ + cont.image().width(300f).pad(2).height(4f).color(Color.lightGray); + cont.row(); + cont.add("@mods.reloadexit").center(); + cont.row(); + + hidden(() -> { + Log.info("Exiting to reload mods after dependency auto-import."); + Core.app.exit(); + }); + } + + cont.button("@ok", this::hide).size(300, 50); + closeOnBack(); + }}.show(); + } + + public void reload(){ + newImports.each(this::updateDependencies); + newImports.remove(m -> m.missingDependencies.isEmpty() && m.softDependencies.isEmpty()); + + if(newImports.any()){ + checkDependencies(newImports, newImports.contains(m -> m.softDependencies.any())); + }else{ + ui.showInfoOnHidden("@mods.reloadexit", () -> { + Log.info("Exiting to reload mods."); + Core.app.exit(); + }); + } } public boolean hasContentErrors(){ @@ -1074,8 +1217,12 @@ public class Mods implements Loadable{ public final ModMeta meta; /** This mod's dependencies as already-loaded mods. */ public Seq dependencies = new Seq<>(); - /** All missing dependencies of this mod as strings. */ + /** This mod's soft dependencies as already-loaded mods. */ + public Seq softDependencies = new Seq<>(); + /** All missing required dependencies of this mod as strings. */ public Seq missingDependencies = new Seq<>(); + /** All missing soft dependencies of this mod as strings. */ + public Seq missingSoftDependencies = new Seq<>(); /** Content with initialization code. */ public ObjectSet erroredContent = new ObjectSet<>(); /** Current state of this mod. */ diff --git a/core/src/mindustry/ui/dialogs/ModsDialog.java b/core/src/mindustry/ui/dialogs/ModsDialog.java index aa9593beaa..449ae17dac 100644 --- a/core/src/mindustry/ui/dialogs/ModsDialog.java +++ b/core/src/mindustry/ui/dialogs/ModsDialog.java @@ -94,7 +94,7 @@ public class ModsDialog extends BaseDialog{ hidden(() -> { if(mods.requiresReload()){ - reload(); + mods.reload(); } }); @@ -378,13 +378,6 @@ public class ModsDialog extends BaseDialog{ return null; } - private void reload(){ - ui.showInfoOnHidden("@mods.reloadexit", () -> { - Log.info("Exiting to reload mods."); - Core.app.exit(); - }); - } - private void showMod(LoadedMod mod){ BaseDialog dialog = new BaseDialog(mod.meta.displayName); @@ -696,6 +689,16 @@ public class ModsDialog extends BaseDialog{ } } + public void importDependencies(Seq dependencies, Runnable done){ + getModList(listings -> { + listings.each(l -> dependencies.contains(l.internalName), l -> { + dependencies.remove(l.internalName); + githubImportMod(l.repo, l.hasJava); + }); + done.run(); + }); + } + private void githubImportJavaMod(String repo, @Nullable String release){ //grab latest release Http.get(ghApi + "/repos/" + repo + "/releases/" + (release == null ? "latest" : release), res -> {