diff --git a/README.md b/README.md index ab35ff95e..1ea02c05b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Mod Menu -![Screenshot of the Mods screen, showing a list of a few mods on the left side below a search bar and filters button, where Mod Menu is selected. On the right side of the screen, it shows more details about the mod, such as authors, a description, links, credits, and a button to configure the mod.](https://cdn.modrinth.com/data/mOgUt4GM/images/1b837be3f93c3e99e0ab70600698bd9f37723cec.png) +![Screenshot of the Mods screen, showing a list of a few mods on the left side below a search bar and filters button, where Mod Menu is selected. On the right side of the screen, it shows more details about the mod, such as authors, a description, links, credits, and a button to configure the mod.](res/screenshot1.jpg) Mod Menu lets you view the mods you have installed and, if supported by the mod, enables quick and easy access to the mod's config screens. diff --git a/res/screenshot1.jpg b/res/screenshot1.jpg new file mode 100644 index 000000000..b23820fa1 Binary files /dev/null and b/res/screenshot1.jpg differ diff --git a/src/main/java/com/terraformersmc/modmenu/ModMenu.java b/src/main/java/com/terraformersmc/modmenu/ModMenu.java index 46df1cbfc..0821c92e2 100644 --- a/src/main/java/com/terraformersmc/modmenu/ModMenu.java +++ b/src/main/java/com/terraformersmc/modmenu/ModMenu.java @@ -25,6 +25,7 @@ import net.minecraft.client.resource.language.I18n; import net.minecraft.text.MutableText; import net.minecraft.text.Text; +import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -59,21 +60,31 @@ public class ModMenu implements ClientModInitializer { public static final boolean DEV_ENVIRONMENT = FabricLoader.getInstance().isDevelopmentEnvironment(); public static final boolean TEXT_PLACEHOLDER_COMPAT = FabricLoader.getInstance().isModLoaded("placeholder-api"); - public static Screen getConfigScreen(String modid, Screen menuScreen) { + public static boolean hasConfigScreen(String modId) { + return getConfigScreenFactory(modId) != null; + } + + public static @Nullable Screen getConfigScreen(String modId, Screen parent) { + ConfigScreenFactory factory = getConfigScreenFactory(modId); + if (factory != null) { + return factory.create(parent); + } + return null; + } + + private static @Nullable ConfigScreenFactory getConfigScreenFactory(String modId) { + if (ModMenuConfig.HIDDEN_CONFIGS.getValue().contains(modId)) { + return null; + } + for (ModMenuApi api : apiImplementations) { var factoryProviders = api.getProvidedConfigScreenFactories(); if (!factoryProviders.isEmpty()) { factoryProviders.forEach(configScreenFactories::putIfAbsent); } } - if (ModMenuConfig.HIDDEN_CONFIGS.getValue().contains(modid)) { - return null; - } - ConfigScreenFactory factory = configScreenFactories.get(modid); - if (factory != null) { - return factory.create(menuScreen); - } - return null; + + return configScreenFactories.get(modId); } @Override @@ -127,21 +138,46 @@ public void onInitializeClient() { Map dummyParents = new HashMap<>(); // Initialize parent map + HashSet modParentSet = new HashSet<>(); for (Mod mod : MODS.values()) { String parentId = mod.getParent(); - if (parentId != null) { - Mod parent = MODS.getOrDefault(parentId, dummyParents.get(parentId)); + if (parentId == null) { + ROOT_MODS.put(mod.getId(), mod); + continue; + } + + Mod parent; + modParentSet.clear(); + while (true) { + parent = MODS.getOrDefault(parentId, dummyParents.get(parentId)); if (parent == null) { if (mod instanceof FabricMod) { parent = new FabricDummyParentMod((FabricMod) mod, parentId); dummyParents.put(parentId, parent); } } - PARENT_MAP.put(parent, mod); - } else { + + parentId = parent != null ? parent.getParent() : null; + if (parentId == null) { + // It will most likely end here in the first iteration + break; + } + + if (modParentSet.contains(parentId)) { + LOGGER.warn("Mods contain each other as parents: {}", modParentSet); + parent = null; + break; + } + modParentSet.add(parentId); + } + + if (parent == null) { ROOT_MODS.put(mod.getId(), mod); + continue; } + PARENT_MAP.put(parent, mod); } + MODS.putAll(dummyParents); ModMenuEventHandler.register(); } diff --git a/src/main/java/com/terraformersmc/modmenu/gui/ModsScreen.java b/src/main/java/com/terraformersmc/modmenu/gui/ModsScreen.java index e66a7bf67..7d6a20d6e 100644 --- a/src/main/java/com/terraformersmc/modmenu/gui/ModsScreen.java +++ b/src/main/java/com/terraformersmc/modmenu/gui/ModsScreen.java @@ -103,26 +103,6 @@ public boolean mouseScrolled(double mouseX, double mouseY, double horizontalAmou @Override protected void init() { - for (Mod mod : ModMenu.MODS.values()) { - String id = mod.getId(); - if (!modHasConfigScreen.containsKey(id)) { - try { - Screen configScreen = ModMenu.getConfigScreen(id, this); - modHasConfigScreen.put(id, configScreen != null); - } catch (java.lang.NoClassDefFoundError e) { - LOGGER.warn( - "The '" + id + "' mod config screen is not available because " + e.getLocalizedMessage() + - " is missing."); - modScreenErrors.put(id, e); - modHasConfigScreen.put(id, false); - } catch (Throwable e) { - LOGGER.error("Error from mod '" + id + "'", e); - modScreenErrors.put(id, e); - modHasConfigScreen.put(id, false); - } - } - } - int paneY = ModMenuConfig.CONFIG_MODE.getValue() ? 48 : 48 + 19; this.paneWidth = this.width / 2 - 8; this.rightPaneX = this.width - this.paneWidth; @@ -204,9 +184,8 @@ protected void init() { if (!ModMenuConfig.HIDE_CONFIG_BUTTONS.getValue()) { this.configureButton = LegacyTexturedButtonWidget.legacyTexturedBuilder(ScreenTexts.EMPTY, button -> { final String id = Objects.requireNonNull(selected).getMod().getId(); - if (modHasConfigScreen.get(id)) { - Screen configScreen = ModMenu.getConfigScreen(id, this); - client.setScreen(configScreen); + if (getModHasConfigScreen(id)) { + this.safelyOpenConfigScreen(id); } else { button.active = false; } @@ -541,9 +520,9 @@ public void updateSelectedEntry(ModListEntry entry) { if (this.configureButton != null) { - this.configureButton.active = modHasConfigScreen.get(modId); + this.configureButton.active = getModHasConfigScreen(modId); this.configureButton.visible = - selected != null && modHasConfigScreen.get(modId) || modScreenErrors.containsKey(modId); + selected != null && getModHasConfigScreen(modId) || modScreenErrors.containsKey(modId); if (modScreenErrors.containsKey(modId)) { Throwable e = modScreenErrors.get(modId); @@ -601,7 +580,7 @@ public void filesDragged(List paths) { Path modsDirectory = FabricLoader.getInstance().getGameDir().resolve("mods"); // Filter out none mods - List mods = paths.stream().filter(ModsScreen::isFabricMod).collect(Collectors.toList()); + List mods = paths.stream().filter(ModsScreen::isValidMod).collect(Collectors.toList()); if (mods.isEmpty()) { return; @@ -631,7 +610,7 @@ public void filesDragged(List paths) { SystemToast.add(client.getToastManager(), SystemToast.Type.PERIODIC_NOTIFICATION, ModMenuScreenTexts.DROP_SUCCESSFUL_LINE_1, - ModMenuScreenTexts.DROP_SUCCESSFUL_LINE_1 + ModMenuScreenTexts.DROP_SUCCESSFUL_LINE_2 ); } } @@ -639,15 +618,43 @@ public void filesDragged(List paths) { }, ModMenuScreenTexts.DROP_CONFIRM, Text.literal(modList))); } - private static boolean isFabricMod(Path mod) { + private static boolean isValidMod(Path mod) { try (JarFile jarFile = new JarFile(mod.toFile())) { - return jarFile.getEntry("fabric.mod.json") != null; + var isFabricMod = jarFile.getEntry("fabric.mod.json") != null; + + if (!ModMenu.RUNNING_QUILT) { + return isFabricMod; + } else { + return isFabricMod || jarFile.getEntry("quilt.mod.json") != null; + } } catch (IOException e) { return false; } } - public Map getModHasConfigScreen() { - return this.modHasConfigScreen; + public boolean getModHasConfigScreen(String modId) { + if (this.modScreenErrors.containsKey(modId)) { + return false; + } else { + return this.modHasConfigScreen.computeIfAbsent(modId, ModMenu::hasConfigScreen); + } + } + + public void safelyOpenConfigScreen(String modId) { + try { + Screen screen = ModMenu.getConfigScreen(modId, this); + + if (screen != null) { + this.client.setScreen(screen); + } + } catch (java.lang.NoClassDefFoundError e) { + LOGGER.warn( + "The '" + modId + "' mod config screen is not available because " + e.getLocalizedMessage() + + " is missing."); + modScreenErrors.put(modId, e); + } catch (Throwable e) { + LOGGER.error("Error from mod '" + modId + "'", e); + modScreenErrors.put(modId, e); + } } } diff --git a/src/main/java/com/terraformersmc/modmenu/gui/widget/ModListWidget.java b/src/main/java/com/terraformersmc/modmenu/gui/widget/ModListWidget.java index eeb7cfc21..aac334e98 100644 --- a/src/main/java/com/terraformersmc/modmenu/gui/widget/ModListWidget.java +++ b/src/main/java/com/terraformersmc/modmenu/gui/widget/ModListWidget.java @@ -137,11 +137,7 @@ private void filter(String searchTerm, boolean refresh, boolean search) { addedMods.clear(); Collection mods = ModMenu.MODS.values().stream().filter(mod -> { if (ModMenuConfig.CONFIG_MODE.getValue()) { - Map modHasConfigScreen = parent.getModHasConfigScreen(); - var hasConfig = modHasConfigScreen.get(mod.getId()); - if (!hasConfig) { - return false; - } + return !parent.getModHasConfigScreen(mod.getId()); } return !mod.isHidden(); diff --git a/src/main/java/com/terraformersmc/modmenu/gui/widget/entries/ModListEntry.java b/src/main/java/com/terraformersmc/modmenu/gui/widget/entries/ModListEntry.java index 2dfaffbe4..612649cea 100644 --- a/src/main/java/com/terraformersmc/modmenu/gui/widget/entries/ModListEntry.java +++ b/src/main/java/com/terraformersmc/modmenu/gui/widget/entries/ModListEntry.java @@ -125,8 +125,7 @@ public void render( } if (!(this instanceof ParentEntry) && ModMenuConfig.QUICK_CONFIGURE.getValue() && (this.list.getParent() - .getModHasConfigScreen() - .get(modId) || this.list.getParent().modScreenErrors.containsKey(modId))) { + .getModHasConfigScreen(modId) || this.list.getParent().modScreenErrors.containsKey(modId))) { final int textureSize = ModMenuConfig.COMPACT_LIST.getValue() ? (int) (256 / (FULL_ICON_SIZE / (double) COMPACT_ICON_SIZE)) : 256; @@ -168,9 +167,7 @@ public void render( @Override public boolean mouseClicked(double mouseX, double mouseY, int delta) { list.select(this); - if (ModMenuConfig.QUICK_CONFIGURE.getValue() && this.list.getParent() - .getModHasConfigScreen() - .get(this.mod.getId())) { + if (ModMenuConfig.QUICK_CONFIGURE.getValue() && this.list.getParent().getModHasConfigScreen(this.mod.getId())) { int iconSize = ModMenuConfig.COMPACT_LIST.getValue() ? COMPACT_ICON_SIZE : FULL_ICON_SIZE; if (mouseX - list.getRowLeft() <= iconSize) { this.openConfig(); @@ -183,7 +180,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int delta) { } public void openConfig() { - MinecraftClient.getInstance().setScreen(ModMenu.getConfigScreen(mod.getId(), list.getParent())); + this.list.getParent().safelyOpenConfigScreen(mod.getId()); } public Mod getMod() { diff --git a/src/main/java/com/terraformersmc/modmenu/util/mod/ModSearch.java b/src/main/java/com/terraformersmc/modmenu/util/mod/ModSearch.java index 91612888b..cd771e71c 100644 --- a/src/main/java/com/terraformersmc/modmenu/util/mod/ModSearch.java +++ b/src/main/java/com/terraformersmc/modmenu/util/mod/ModSearch.java @@ -68,8 +68,7 @@ private static int passesFilters(ModsScreen screen, Mod mod, String query) { || deprecated.contains(query) && mod.getBadges() .contains(Mod.Badge.DEPRECATED) // Search for deprecated mods || clientside.contains(query) && mod.getBadges().contains(Mod.Badge.CLIENT) // Search for clientside mods - || configurable.contains(query) && screen.getModHasConfigScreen() - .get(modId) // Search for mods that can be configured + || configurable.contains(query) && screen.getModHasConfigScreen(modId) // Search for mods that can be configured || hasUpdate.contains(query) && mod.hasUpdate() // Search for mods that have updates ) { return 1; diff --git a/src/main/resources/assets/modmenu/fabric.png b/src/main/resources/assets/modmenu/fabric.png index 2931efbf6..3e2241bb9 100644 Binary files a/src/main/resources/assets/modmenu/fabric.png and b/src/main/resources/assets/modmenu/fabric.png differ diff --git a/src/main/resources/assets/modmenu/icon.png b/src/main/resources/assets/modmenu/icon.png index 225bf945d..a8b9b9d06 100644 Binary files a/src/main/resources/assets/modmenu/icon.png and b/src/main/resources/assets/modmenu/icon.png differ diff --git a/src/main/resources/assets/modmenu/java_icon.png b/src/main/resources/assets/modmenu/java_icon.png index 9b68a17d7..9d40b5311 100644 Binary files a/src/main/resources/assets/modmenu/java_icon.png and b/src/main/resources/assets/modmenu/java_icon.png differ diff --git a/src/main/resources/assets/modmenu/lang/be_by.json b/src/main/resources/assets/modmenu/lang/be_by.json index 16e925c5e..cf9a088cc 100644 --- a/src/main/resources/assets/modmenu/lang/be_by.json +++ b/src/main/resources/assets/modmenu/lang/be_by.json @@ -167,7 +167,7 @@ "option.modmenu.update_checker.false": "Адключана", "option.modmenu.button_update_badge": "Індыкатар абнаўленняў", "option.modmenu.button_update_badge.true": "Паказаны", - "option.modmenu.button_update_badge.false": "Схаваны" + "option.modmenu.button_update_badge.false": "Схаваны", "option.modmenu.quick_configure": "Хуткія налады", "option.modmenu.quick_configure.true": "Уключана", "option.modmenu.quick_configure.false": "Адключана", diff --git a/src/main/resources/assets/modmenu/lang/ja_jp.json b/src/main/resources/assets/modmenu/lang/ja_jp.json index 84fe7e5eb..3104cf099 100644 --- a/src/main/resources/assets/modmenu/lang/ja_jp.json +++ b/src/main/resources/assets/modmenu/lang/ja_jp.json @@ -3,56 +3,64 @@ "key.modmenu.open_menu": "Mod Menuを開く", "modmenu.title": "Mods", "modmenu.nameTranslation.modmenu": "Mod Menu", - "modmenu.descriptionTranslation.modmenu": "インストールしたModをMod menuのリストに追加します", - "modmenu.loaded": "(%s個 読込済み)", + "modmenu.descriptionTranslation.modmenu": "インストール済みのMod一覧を表示する Modメニューを追加します。", + "modmenu.loaded": "(%s 導入済み)", "modmenu.loaded.short": "(%s)", - "modmenu.loaded.69.secret": "(%s がロードされました...すばらしい)", - "modmenu.loaded.420.secret": "(%s がロードされました...炎上する)", - "modmenu.mods.n": " (%s Mod)", + "modmenu.loaded.69.secret": "(%s 導入済み...nice)", + "modmenu.loaded.420.secret": "(%s 導入済み...blaze it)", + "modmenu.mods.n": " (%s Mods)", "modmenu.mods.1": " (%s Mod)", - "modmenu.mods.69.secret": " (%s Mods...すばらしい)", - "modmenu.mods.420.secret": " (%s Mods...炎上する)", + "modmenu.mods.69.secret": " (%s Mods...nice)", + "modmenu.mods.420.secret": " (%s Mods...blaze it)", "modmenu.search": "Modを検索", - "modmenu.searchTerms.library": "APIライブラリ", + "modmenu.searchTerms.library": "api library ライブラリ 前提 前提mod", "modmenu.searchTerms.patchwork": "patchwork forge fml", - "modmenu.searchTerms.modpack": "modpackパック", - "modmenu.searchTerms.deprecated": "廃止予定の古い", - "modmenu.searchTerms.clientside": "クライアント側のゲーム用", - "modmenu.searchTerms.configurable": "構成 構成 構成 構成可能 オプション", + "modmenu.searchTerms.modpack": "modpack pack modパック モッドパック", + "modmenu.searchTerms.deprecated": "deprecated outdated old 非推奨 廃止", + "modmenu.searchTerms.clientside": "client clientside クライアント", + "modmenu.searchTerms.configurable": "config option setting 構成 設定 コンフィグ オプション", + "modmenu.searchTerms.hasUpdate": "update version アップデート アプデ 更新", "modmenu.toggleFilterOptions": "フィルター設定の切り替え", - "modmenu.showingMods.n": "%s個のmodを表示中", - "modmenu.showingMods.1": "%s個のmodを表示中", - "modmenu.showingLibraries.n": "%s個の前提modを表示中", - "modmenu.showingLibraries.1": "%s個の前提modを表示中", - "modmenu.showingModsLibraries.n.n": "%s個のmodと%sの前提modを表示中", - "modmenu.showingModsLibraries.n.1": "%s個のmodと%sの前提modを表示中", - "modmenu.showingModsLibraries.1.n": "%s個のmodと%sの前提modを表示中", - "modmenu.showingModsLibraries.1.1": "%s個のmodと%sの前提modを表示中", - "modmenu.badge.library": "前提mod", + "modmenu.showingMods.n": "%s個のModを表示中", + "modmenu.showingMods.1": "%s個のModを表示中", + "modmenu.showingLibraries.n": "%s個の前提Modを表示中", + "modmenu.showingLibraries.1": "%s個の前提Modを表示中", + "modmenu.showingModsLibraries.n.n": "%s個のModと%s個の前提Modを表示中", + "modmenu.showingModsLibraries.n.1": "%s個のModと%s個の前提Modを表示中", + "modmenu.showingModsLibraries.1.n": "%s個のModと%s個の前提Modを表示中", + "modmenu.showingModsLibraries.1.1": "%s個のModと%s個の前提Modを表示中", + "modmenu.badge.library": "前提Mod", "modmenu.badge.clientsideOnly": "クライアント", "modmenu.badge.deprecated": "非推奨", "modmenu.badge.forge": "Forge", - "modmenu.badge.modpack": "モジュールパッケージ", + "modmenu.badge.modpack": "Modパック", "modmenu.badge.minecraft": "Minecraft", - "modmenu.dropInfo.line1": "ファイルをドラッグ&ドロップ", - "modmenu.dropInfo.line2": "MODを追加するにはファイルをドラッグ&ドロップしてください", - "modmenu.dropConfirm": "Modディレクトリに以下のModをコピーしますか?", + "modmenu.dropInfo.line1": "ファイルをここにドラッグ&ドロップすると", + "modmenu.dropInfo.line2": "Modを追加できます", + "modmenu.dropConfirm": "このModをmodsフォルダーにコピーしますか?", "modmenu.dropSuccessful.line1": "正常にModをコピーしました", - "modmenu.dropSuccessful.line2": "再起動してModを読み込む", + "modmenu.dropSuccessful.line2": "再起動するとModを適用できます", "modmenu.modIdToolTip": "Mod ID: %s", - "modmenu.authorPrefix": "制作: %s", + "modmenu.authorPrefix": "制作:%s", "modmenu.config": "設定の編集", "modmenu.configure": "設定…", - "modmenu.configure.error": "Failed to load config screen for '%s'\nReport to '%s', not Mod Menu", + "modmenu.configure.error": "'%s' の設定画面の読み込みに失敗しました。\n'%s' の制作者にお問い合わせください。", "modmenu.website": "ウェブサイト", - "modmenu.issues": "問題", - "modmenu.credits": "クレジット:", + "modmenu.issues": "問題を報告", + "modmenu.credits": "クレジット:", + "modmenu.credits.role.author": "制作者", + "modmenu.credits.role.contributor": "貢献者", + "modmenu.credits.role.illustrator": "イラストレーター", + "modmenu.credits.role.maintainer": "メンテナー", + "modmenu.credits.role.owner": "オーナー", + "modmenu.credits.role.playtester": "プレイテスター", + "modmenu.credits.role.translator": "翻訳者", "modmenu.viewCredits": "クレジット表示", - "modmenu.license": "ライセンス:", - "modmenu.links": "リンク:", - "modmenu.source": "ソース", - "modmenu.hasUpdate": "An update is available:", - "modmenu.childHasUpdate": "A child of this mod has an update available.", + "modmenu.license": "ライセンス:", + "modmenu.links": "リンク:", + "modmenu.source": "ソースコード", + "modmenu.hasUpdate": "新しいバージョンが利用可能:", + "modmenu.childHasUpdate": "子Modのアップデートがあります。", "modmenu.updateText": "v%s on %s", "modmenu.buymeacoffee": "コーヒー代を寄付する", "modmenu.coindrop": "Coindrop", @@ -78,25 +86,28 @@ "modmenu.modsFolder": "modsフォルダーを開く", "modmenu.configsFolder": "configフォルダーを開く", "modmenu.nameTranslation.minecraft": "Minecraft", - "modmenu.descriptionTranslation.minecraft": "The base game.", + "modmenu.descriptionTranslation.minecraft": "ゲームのベース", "modmenu.nameTranslation.java": "Java", - "modmenu.descriptionTranslation.java": "The Java runtime environment.", - "modmenu.javaDistributionName": "Running: %s", + "modmenu.descriptionTranslation.java": "Java実行環境", + "modmenu.javaDistributionName": "実行中:%s", "modmenu.options": "Mod Menuのオプション", + "modmenu.downloadLink": "Download", + "modmenu.experimental": "(更新チェッカーは実験的機能です!)", + "modmenu.install_version": "バージョン %s をインストール", "option.modmenu.sorting": "表示順", "option.modmenu.sorting.ascending": "昇順", "option.modmenu.sorting.descending": "降順", - "option.modmenu.show_libraries": "前提mod", - "option.modmenu.show_libraries.true": "表示", - "option.modmenu.show_libraries.false": "非表示", - "option.modmenu.hide_config_buttons": "構成ボタン", + "option.modmenu.show_libraries": "前提Modを表示", + "option.modmenu.show_libraries.true": "オン", + "option.modmenu.show_libraries.false": "オフ", + "option.modmenu.hide_config_buttons": "Mod設定ボタン", "option.modmenu.hide_config_buttons.true": "非表示", "option.modmenu.hide_config_buttons.false": "表示", - "option.modmenu.hide_badges": "Modバッジ", + "option.modmenu.hide_badges": "Modタグ", "option.modmenu.hide_badges.true": "非表示", "option.modmenu.hide_badges.false": "表示", - "option.modmenu.compact_list": "リスト", - "option.modmenu.compact_list.true": "最適化", + "option.modmenu.compact_list": "表示サイズ", + "option.modmenu.compact_list.true": "コンパクト", "option.modmenu.compact_list.false": "標準", "option.modmenu.hide_mod_links": "Modリンク", "option.modmenu.hide_mod_links.true": "非表示", @@ -107,41 +118,52 @@ "option.modmenu.hide_mod_license": "Modライセンス", "option.modmenu.hide_mod_license.true": "非表示", "option.modmenu.hide_mod_license.false": "表示", - "option.modmenu.count_children": "子Mod", - "option.modmenu.count_children.true": "カウント済み", - "option.modmenu.count_children.false": "未カウント", - "option.modmenu.count_libraries": "前提mod", - "option.modmenu.count_libraries.true": "カウント済み", - "option.modmenu.count_libraries.false": "未カウント", - "option.modmenu.count_hidden_mods": "非表示Mod", - "option.modmenu.count_hidden_mods.true": "カウント済み", - "option.modmenu.count_hidden_mods.false": "未カウント", - "option.modmenu.mod_count_location": "Modカウント", - "option.modmenu.mod_count_location.title_screen": "タイトルコーナー", - "option.modmenu.mod_count_location.mods_button": "Modボタン", + "option.modmenu.count_children": "子Modをカウント", + "option.modmenu.count_children.true": "オン", + "option.modmenu.count_children.false": "オフ", + "option.modmenu.count_libraries": "前提Modをカウント", + "option.modmenu.count_libraries.true": "オン", + "option.modmenu.count_libraries.false": "オフ", + "option.modmenu.count_hidden_mods": "非表示Modをカウント", + "option.modmenu.count_hidden_mods.true": "オン", + "option.modmenu.count_hidden_mods.false": "オフ", + "option.modmenu.mod_count_location": "Modカウントの位置", + "option.modmenu.mod_count_location.title_screen": "タイトル画面端", + "option.modmenu.mod_count_location.mods_button": "Modsボタン", "option.modmenu.mod_count_location.title_screen_and_mods_button": "両方", - "option.modmenu.mod_count_location.none": "その他", + "option.modmenu.mod_count_location.none": "なし", "option.modmenu.easter_eggs": "イースターエッグ", - "option.modmenu.easter_eggs.true": "有効", - "option.modmenu.easter_eggs.false": "無効", - "option.modmenu.mods_button_style": "Modボタン", + "option.modmenu.easter_eggs.true": "オン", + "option.modmenu.easter_eggs.false": "オフ", + "option.modmenu.mods_button_style": "Modsボタンの位置", "option.modmenu.mods_button_style.classic": "Realmsの下", - "option.modmenu.mods_button_style.replace_realms": "Realmsを置き換える", - "option.modmenu.mods_button_style.shrink": "隣接", + "option.modmenu.mods_button_style.replace_realms": "Realmsを置換", + "option.modmenu.mods_button_style.shrink": "Realmsの横", "option.modmenu.mods_button_style.icon": "アイコン", - "option.modmenu.random_java_colors": "Java Color", - "option.modmenu.random_java_colors.true": "Vendor", - "option.modmenu.random_java_colors.false": "Always Red", - "option.modmenu.translate_names": "Names", - "option.modmenu.translate_names.true": "Localized", - "option.modmenu.translate_names.false": "Not Localized", - "option.modmenu.translate_descriptions": "Descriptions", - "option.modmenu.translate_descriptions.true": "Localized", - "option.modmenu.translate_descriptions.false": "Not Localized", - "option.modmenu.update_checker": "Update Checker", - "option.modmenu.update_checker.true": "有効", - "option.modmenu.update_checker.false": "無効", - "option.modmenu.button_update_badge": "Update Indicator", + "option.modmenu.random_java_colors": "Javaの色", + "option.modmenu.random_java_colors.true": "ベンダーごと", + "option.modmenu.random_java_colors.false": "常に赤", + "option.modmenu.translate_names": "Mod名の翻訳", + "option.modmenu.translate_names.true": "オン", + "option.modmenu.translate_names.false": "オフ", + "option.modmenu.translate_descriptions": "Mod概要の翻訳", + "option.modmenu.translate_descriptions.true": "オン", + "option.modmenu.translate_descriptions.false": "オフ", + "option.modmenu.update_checker": "更新チェッカー", + "option.modmenu.update_checker.true": "オン", + "option.modmenu.update_checker.false": "オフ", + "option.modmenu.button_update_badge": "更新通知バッジ", "option.modmenu.button_update_badge.true": "表示", - "option.modmenu.button_update_badge.false": "非表示" + "option.modmenu.button_update_badge.false": "非表示", + "option.modmenu.game_menu_button_style": "ゲーム内Modsボタンの位置", + "option.modmenu.game_menu_button_style.icon": "アイコン", + "option.modmenu.game_menu_button_style.below_bugs": "\"バグを報告する\"の下", + "option.modmenu.game_menu_button_style.replace_bugs": "\"バグを報告する\"を置換", + "option.modmenu.quick_configure": "クイック設定ボタン", + "option.modmenu.quick_configure.false": "オフ", + "option.modmenu.quick_configure.true": "オン", + "option.modmenu.update_channel": "更新追跡レベル", + "option.modmenu.update_channel.alpha": "すべて", + "option.modmenu.update_channel.beta": "ベータ版", + "option.modmenu.update_channel.release": "安定版" } diff --git a/src/main/resources/assets/modmenu/lang/ko_kr.json b/src/main/resources/assets/modmenu/lang/ko_kr.json index 37e054cc2..b1fcea5e5 100644 --- a/src/main/resources/assets/modmenu/lang/ko_kr.json +++ b/src/main/resources/assets/modmenu/lang/ko_kr.json @@ -4,6 +4,7 @@ "modmenu.title": "모드", "modmenu.nameTranslation.modmenu": "Mod Menu", "modmenu.descriptionTranslation.modmenu": "설치된 모드 목록을 볼 수 있는 모드 메뉴를 추가합니다.", + "modmenu.loaded": "(%s개 로드됨)", "modmenu.loaded.short": "(%s)", "modmenu.loaded.69.secret": "(%s개 로드됨...nice)", @@ -12,6 +13,7 @@ "modmenu.mods.1": " (모드 %s개)", "modmenu.mods.69.secret": " (모드 %s개...nice)", "modmenu.mods.420.secret": " (%s개 모드...활활 타오른다)", + "modmenu.search": "모드 검색", "modmenu.searchTerms.library": "API 라이브러리", "modmenu.searchTerms.patchwork": "Patchwork Forge FML", @@ -19,6 +21,8 @@ "modmenu.searchTerms.deprecated": "곧 사라짐 오래됨 오래됨", "modmenu.searchTerms.clientside": "클라이언트용 게임용", "modmenu.searchTerms.configurable": "구성 구성 구성 구성 옵션", + "modmenu.searchTerms.hasUpdate": "업데이트", + "modmenu.toggleFilterOptions": "필터 옵션 전환", "modmenu.showingMods.n": "모드 %s개 표시", "modmenu.showingMods.1": "모드 %s개 표시", @@ -28,32 +32,40 @@ "modmenu.showingModsLibraries.n.1": "모드 %s개와 라이브러리 %s개 표시", "modmenu.showingModsLibraries.1.n": "모드 %s개와 라이브러리 %s개 표시", "modmenu.showingModsLibraries.1.1": "모드 %s개와 라이브러리 %s개 표시", + "modmenu.badge.library": "라이브러리", "modmenu.badge.clientsideOnly": "클라이언트", - "modmenu.badge.deprecated": "구식", + "modmenu.badge.deprecated": "지원 종료", "modmenu.badge.forge": "Forge", "modmenu.badge.modpack": "모드팩", "modmenu.badge.minecraft": "Minecraft", + "modmenu.dropInfo.line1": "모드를 추가하려면", "modmenu.dropInfo.line2": "이 창에 파일을 끌어다 놓으세요", "modmenu.dropConfirm": "다음 모드를 mods 폴더에 복사하시겠습니까?", "modmenu.dropSuccessful.line1": "모드 복사 완료", "modmenu.dropSuccessful.line2": "모드를 적용하려면 게임을 다시 시작하세요", + "modmenu.modIdToolTip": "모드 ID: %s", "modmenu.authorPrefix": "%s 제작", "modmenu.config": "설정 편집", "modmenu.configure": "설정...", - "modmenu.configure.error": "Failed to load config screen for '%s'\nReport to '%s', not Mod Menu", + "modmenu.configure.error": "'%s' 모드의 설정창을 불러오는데 실패했습니다.\n Mod Menu가 아닌 '%s'에게 문제를 제보해주세요", "modmenu.website": "웹사이트", "modmenu.issues": "문제", + "modmenu.credits": "크레딧:", "modmenu.viewCredits": "크레딧 보기", "modmenu.license": "라이센스:", "modmenu.links": "링크:", "modmenu.source": "소스", - "modmenu.hasUpdate": "An update is available:", - "modmenu.childHasUpdate": "A child of this mod has an update available.", + "modmenu.hasUpdate": "업데이트가 있습니다:", + "modmenu.experimental": "(Mod Menu의 업데이트 확인기능은 실험적 기능입니다!)", + "modmenu.childHasUpdate": "이 모드의 하위 항목에 사용 가능한 업데이트가 있습니다.", "modmenu.updateText": "v%s on %s", + "modmenu.install_version": "Install version %s", + "modmenu.downloadLink": "다운로드", + "modmenu.buymeacoffee": "커피 사주기", "modmenu.coindrop": "Coindrop", "modmenu.crowdin": "Crowdin", @@ -72,63 +84,78 @@ "modmenu.paypal": "PayPal", "modmenu.reddit": "Reddit", "modmenu.twitch": "Twitch", - "modmenu.twitter": "Twitter", + "modmenu.twitter": "X (Twitter)", "modmenu.wiki": "위키", "modmenu.youtube": "YouTube", + + "modmenu.credits.role.author": "개발자", + "modmenu.credits.role.contributor": "컨트리뷰터", + "modmenu.credits.role.translator": "번역자", + "modmenu.credits.role.maintainer": "유지관리자", + "modmenu.credits.role.playtester": "테스터", + "modmenu.credits.role.illustrator": "일러스트레이터", + "modmenu.credits.role.owner": "소유자", + "modmenu.modsFolder": "모드 폴더 열기", "modmenu.configsFolder": "설정 폴더 열기", + "modmenu.nameTranslation.minecraft": "Minecraft", "modmenu.descriptionTranslation.minecraft": "베이스 게임", "modmenu.nameTranslation.java": "자바", "modmenu.descriptionTranslation.java": "자바 런타임 환경", "modmenu.javaDistributionName": "실행: %s", + "modmenu.options": "모드 메뉴 옵션", - "option.modmenu.sorting": "정렬: %s", + "option.modmenu.sorting": "정렬", "option.modmenu.sorting.ascending": "A-Z", "option.modmenu.sorting.descending": "Z-A", - "option.modmenu.show_libraries": "라이브러리: %s", + "option.modmenu.show_libraries": "라이브러리", "option.modmenu.show_libraries.true": "표시", "option.modmenu.show_libraries.false": "숨김", - "option.modmenu.hide_config_buttons": "설정 버튼: %s", + "option.modmenu.hide_config_buttons": "설정 버튼", "option.modmenu.hide_config_buttons.true": "숨김", "option.modmenu.hide_config_buttons.false": "표시", - "option.modmenu.hide_badges": "모드 배지: %s", + "option.modmenu.hide_badges": "모드 배지", "option.modmenu.hide_badges.true": "숨김", "option.modmenu.hide_badges.false": "표시", - "option.modmenu.compact_list": "목록: %s", + "option.modmenu.compact_list": "목록", "option.modmenu.compact_list.true": "소형", "option.modmenu.compact_list.false": "표준", - "option.modmenu.hide_mod_links": "모드 링크: %s", + "option.modmenu.hide_mod_links": "모드 링크", "option.modmenu.hide_mod_links.true": "숨김", "option.modmenu.hide_mod_links.false": "표시", - "option.modmenu.hide_mod_credits": "모드 크레딧: %s", + "option.modmenu.hide_mod_credits": "모드 크레딧", "option.modmenu.hide_mod_credits.true": "숨김", "option.modmenu.hide_mod_credits.false": "표시", - "option.modmenu.hide_mod_license": "모드 라이센스: %s", + "option.modmenu.hide_mod_license": "모드 라이센스", "option.modmenu.hide_mod_license.true": "숨김", "option.modmenu.hide_mod_license.false": "표시", - "option.modmenu.count_children": "하위 모드: %s", + "option.modmenu.count_children": "하위 모드", "option.modmenu.count_children.true": "셈", "option.modmenu.count_children.false": "세지 않음", - "option.modmenu.count_libraries": "라이브러리: %s", + "option.modmenu.count_libraries": "라이브러리", "option.modmenu.count_libraries.true": "셈", "option.modmenu.count_libraries.false": "세지 않음", - "option.modmenu.count_hidden_mods": "숨긴 모드: %s", + "option.modmenu.count_hidden_mods": "숨긴 모드", "option.modmenu.count_hidden_mods.true": "셈", "option.modmenu.count_hidden_mods.false": "세지 않음", - "option.modmenu.mod_count_location": "모드 수: %s", + "option.modmenu.mod_count_location": "모드 수", "option.modmenu.mod_count_location.title_screen": "타이틀 화면 구석", - "option.modmenu.mod_count_location.mods_button": "모드 버튼: %s", + "option.modmenu.mod_count_location.mods_button": "모드 버튼", "option.modmenu.mod_count_location.title_screen_and_mods_button": "둘 다", "option.modmenu.mod_count_location.none": "둘 다 안함", - "option.modmenu.easter_eggs": "이스터 에그: %s", + "option.modmenu.easter_eggs": "이스터 에그", "option.modmenu.easter_eggs.true": "활성화", "option.modmenu.easter_eggs.false": "비활성화", - "option.modmenu.mods_button_style": "모드 버튼: %s", + "option.modmenu.mods_button_style": "모드 버튼 위치", "option.modmenu.mods_button_style.classic": "Realms 아래", "option.modmenu.mods_button_style.replace_realms": "Realms 대체", "option.modmenu.mods_button_style.shrink": "Realms 옆", "option.modmenu.mods_button_style.icon": "아이콘", + "option.modmenu.game_menu_button_style": "게임 메뉴", + "option.modmenu.game_menu_button_style.below_bugs": "Bugs 아래", + "option.modmenu.game_menu_button_style.replace_bugs": "Bugs 대체", + "option.modmenu.game_menu_button_style.icon": "아이콘", "option.modmenu.random_java_colors": "자바 색깔", "option.modmenu.random_java_colors.true": "공급업체", "option.modmenu.random_java_colors.false": "항상 빨갛게", @@ -138,10 +165,17 @@ "option.modmenu.translate_descriptions": "설명", "option.modmenu.translate_descriptions.true": "변역됨", "option.modmenu.translate_descriptions.false": "번역 안됨", - "option.modmenu.update_checker": "Update Checker", + "option.modmenu.update_checker": "업데이트 확인 기능", "option.modmenu.update_checker.true": "활성화", "option.modmenu.update_checker.false": "비활성화", - "option.modmenu.button_update_badge": "Update Indicator", + "option.modmenu.button_update_badge": "업데이트 알림", "option.modmenu.button_update_badge.true": "표시", - "option.modmenu.button_update_badge.false": "숨김" -} + "option.modmenu.button_update_badge.false": "숨김", + "option.modmenu.quick_configure": "빠른 설정창", + "option.modmenu.quick_configure.true": "활성화", + "option.modmenu.quick_configure.false": "비활성화", + "option.modmenu.update_channel": "업데이트 버전", + "option.modmenu.update_channel.alpha": "전체", + "option.modmenu.update_channel.beta": "정식 & 베타 버전", + "option.modmenu.update_channel.release": "정식 버전" +} \ No newline at end of file diff --git a/src/main/resources/assets/modmenu/lang/pl_pl.json b/src/main/resources/assets/modmenu/lang/pl_pl.json index 4213e1f36..e56fe9345 100644 --- a/src/main/resources/assets/modmenu/lang/pl_pl.json +++ b/src/main/resources/assets/modmenu/lang/pl_pl.json @@ -1,24 +1,24 @@ { - "category.modmenu.name": "Menu Modów", + "category.modmenu.name": "Menu modów", "key.modmenu.open_menu": "Otwórz menu modów", "modmenu.title": "Mody", - "modmenu.nameTranslation.modmenu": "Menu Modów", + "modmenu.nameTranslation.modmenu": "Mod Menu", "modmenu.descriptionTranslation.modmenu": "Dodaje menu modów umożliwiające wyświetlenie listy z zainstalowanymi modami.", "modmenu.loaded": "(%s załadowanych)", "modmenu.loaded.short": "(%s)", "modmenu.loaded.69.secret": "(%s załadowanych... nieźle)", - "modmenu.loaded.420.secret": "(%s załadowane... jesteś tego pewien?)", + "modmenu.loaded.420.secret": "(%s załadowanych... jedziesz na zielonym?)", "modmenu.mods.n": " (%s Modów)", "modmenu.mods.1": " (%s Mod)", "modmenu.mods.69.secret": " (%s modów...nieźle)", - "modmenu.mods.420.secret": " (%s modów... jesteś tego pewien?)", + "modmenu.mods.420.secret": " (%s modów... jedziesz na zielonym?)", "modmenu.search": "Szukaj modów", - "modmenu.searchTerms.library": "api biblioteka", + "modmenu.searchTerms.library": "api biblioteka biblioteki library", "modmenu.searchTerms.patchwork": "patchwork forge fml", "modmenu.searchTerms.modpack": "modpack paczka", - "modmenu.searchTerms.deprecated": "przestarzały nieaktualny stary", + "modmenu.searchTerms.deprecated": "przestarzały przestarzałe nieaktualny nieaktualne stary stare old", "modmenu.searchTerms.clientside": "klient klienta clientside", "modmenu.searchTerms.configurable": "konfiguracja konfiguracje konfigurowalny ustawienia config", "modmenu.searchTerms.hasUpdate": "aktualizacja aktualizacje wersja updates", @@ -50,11 +50,11 @@ "modmenu.authorPrefix": "Stworzone przez %s", "modmenu.config": "Edytuj konfigurację", "modmenu.configure": "Skonfiguruj...", - "modmenu.configure.error": "Nie udało się załadować ekranu konfiguracyjnego dla '%s'\nZgłoś do '%s', a nie Menu Modów", + "modmenu.configure.error": "Nie udało się załadować ekranu konfiguracyjnego dla '%s'\nZgłoś to do '%s', a nie do Mod Menu", "modmenu.website": "Strona", "modmenu.issues": "Błędy", - "modmenu.credits": "Autorzy:", + "modmenu.credits": "Twórcy:", "modmenu.viewCredits": "Pokaż napisy końcowe", "modmenu.license": "Licencja:", "modmenu.links": "Linki:", @@ -63,9 +63,10 @@ "modmenu.experimental": "(Funkcja sprawdzania aktualizacji jest eksperymentalna!)", "modmenu.childHasUpdate": "Mod potomny tego modu ma dostępną aktualizację.", "modmenu.updateText": "v%s na %s", + "modmenu.install_version": "Zainstaluj wersję %s", "modmenu.downloadLink": "Pobierz", - "modmenu.buymeacoffee": "Kup Autorowi Kawę", + "modmenu.buymeacoffee": "Kup autorowi kawę", "modmenu.coindrop": "Coindrop", "modmenu.crowdin": "Crowdin", "modmenu.curseforge": "CurseForge", @@ -114,7 +115,7 @@ "option.modmenu.hide_config_buttons": "Przyciski konfiguracji", "option.modmenu.hide_config_buttons.true": "Ukrywaj", "option.modmenu.hide_config_buttons.false": "Pokazuj", - "option.modmenu.hide_badges": "Odznaki modów", + "option.modmenu.hide_badges": "Oznaczenia modów", "option.modmenu.hide_badges.true": "Ukrywaj", "option.modmenu.hide_badges.false": "Pokazuj", "option.modmenu.compact_list": "Lista", @@ -152,6 +153,8 @@ "option.modmenu.mods_button_style.shrink": "Obok Realms", "option.modmenu.mods_button_style.icon": "Ikonka", "option.modmenu.game_menu_button_style": "W menu gry", + "option.modmenu.game_menu_button_style.insert": "Wstaw", + "option.modmenu.game_menu_button_style.replace": "Zastąp", "option.modmenu.game_menu_button_style.icon": "Ikonka", "option.modmenu.random_java_colors": "Kolor Javy", "option.modmenu.random_java_colors.true": "Dostawca", @@ -173,6 +176,6 @@ "option.modmenu.quick_configure.false": "Wyłączona", "option.modmenu.update_channel": "Kanał aktualizacji", "option.modmenu.update_channel.alpha": "Wszystkie", - "option.modmenu.update_channel.beta": "Wydania i bety", + "option.modmenu.update_channel.beta": "Wydania i wersje testowe", "option.modmenu.update_channel.release": "Wydania" } diff --git a/src/main/resources/assets/modmenu/minecraft_icon.png b/src/main/resources/assets/modmenu/minecraft_icon.png index 76e573b42..cb4fae49c 100644 Binary files a/src/main/resources/assets/modmenu/minecraft_icon.png and b/src/main/resources/assets/modmenu/minecraft_icon.png differ diff --git a/src/main/resources/assets/modmenu/textures/gui/configure_button.png b/src/main/resources/assets/modmenu/textures/gui/configure_button.png index 3ddea4afb..005116f43 100644 Binary files a/src/main/resources/assets/modmenu/textures/gui/configure_button.png and b/src/main/resources/assets/modmenu/textures/gui/configure_button.png differ diff --git a/src/main/resources/assets/modmenu/textures/gui/filters_button.png b/src/main/resources/assets/modmenu/textures/gui/filters_button.png index ecf5d8bd7..36d598272 100644 Binary files a/src/main/resources/assets/modmenu/textures/gui/filters_button.png and b/src/main/resources/assets/modmenu/textures/gui/filters_button.png differ diff --git a/src/main/resources/assets/modmenu/textures/gui/mod_configuration.png b/src/main/resources/assets/modmenu/textures/gui/mod_configuration.png index 2594701d6..66c812487 100644 Binary files a/src/main/resources/assets/modmenu/textures/gui/mod_configuration.png and b/src/main/resources/assets/modmenu/textures/gui/mod_configuration.png differ diff --git a/src/main/resources/assets/modmenu/textures/gui/mods_button.png b/src/main/resources/assets/modmenu/textures/gui/mods_button.png index fcda8de80..331c0a2a7 100644 Binary files a/src/main/resources/assets/modmenu/textures/gui/mods_button.png and b/src/main/resources/assets/modmenu/textures/gui/mods_button.png differ diff --git a/src/main/resources/assets/modmenu/textures/gui/mods_button_alt.png b/src/main/resources/assets/modmenu/textures/gui/mods_button_alt.png index 3ebfcc466..e9d209d24 100644 Binary files a/src/main/resources/assets/modmenu/textures/gui/mods_button_alt.png and b/src/main/resources/assets/modmenu/textures/gui/mods_button_alt.png differ diff --git a/src/main/resources/assets/modmenu/textures/gui/mods_button_alt3.png b/src/main/resources/assets/modmenu/textures/gui/mods_button_alt3.png index 7dfe5085a..7197c9597 100644 Binary files a/src/main/resources/assets/modmenu/textures/gui/mods_button_alt3.png and b/src/main/resources/assets/modmenu/textures/gui/mods_button_alt3.png differ diff --git a/src/main/resources/assets/modmenu/textures/gui/parent_mod.png b/src/main/resources/assets/modmenu/textures/gui/parent_mod.png index 76225ea4f..2e3002510 100644 Binary files a/src/main/resources/assets/modmenu/textures/gui/parent_mod.png and b/src/main/resources/assets/modmenu/textures/gui/parent_mod.png differ diff --git a/src/main/resources/assets/modmenu/unknown_icon.png b/src/main/resources/assets/modmenu/unknown_icon.png index 9006e6cdb..c86061e03 100644 Binary files a/src/main/resources/assets/modmenu/unknown_icon.png and b/src/main/resources/assets/modmenu/unknown_icon.png differ diff --git a/src/main/resources/assets/modmenu/unknown_parent.png b/src/main/resources/assets/modmenu/unknown_parent.png index c54184ee8..c959b4dce 100644 Binary files a/src/main/resources/assets/modmenu/unknown_parent.png and b/src/main/resources/assets/modmenu/unknown_parent.png differ diff --git a/src/main/resources/high_contrast/assets/modmenu/textures/gui/configure_button.png b/src/main/resources/high_contrast/assets/modmenu/textures/gui/configure_button.png index 77ee90d91..d364f8ef7 100644 Binary files a/src/main/resources/high_contrast/assets/modmenu/textures/gui/configure_button.png and b/src/main/resources/high_contrast/assets/modmenu/textures/gui/configure_button.png differ diff --git a/src/main/resources/high_contrast/assets/modmenu/textures/gui/filters_button.png b/src/main/resources/high_contrast/assets/modmenu/textures/gui/filters_button.png index 59f5b72e8..2a06d1d22 100644 Binary files a/src/main/resources/high_contrast/assets/modmenu/textures/gui/filters_button.png and b/src/main/resources/high_contrast/assets/modmenu/textures/gui/filters_button.png differ diff --git a/src/main/resources/high_contrast/assets/modmenu/textures/gui/mods_button.png b/src/main/resources/high_contrast/assets/modmenu/textures/gui/mods_button.png index 5a21d222e..2bab76b6b 100644 Binary files a/src/main/resources/high_contrast/assets/modmenu/textures/gui/mods_button.png and b/src/main/resources/high_contrast/assets/modmenu/textures/gui/mods_button.png differ diff --git a/src/main/resources/programmer_art/assets/modmenu/textures/gui/configure_button.png b/src/main/resources/programmer_art/assets/modmenu/textures/gui/configure_button.png index e84c234a4..5ae511a5c 100644 Binary files a/src/main/resources/programmer_art/assets/modmenu/textures/gui/configure_button.png and b/src/main/resources/programmer_art/assets/modmenu/textures/gui/configure_button.png differ diff --git a/src/main/resources/programmer_art/assets/modmenu/textures/gui/filters_button.png b/src/main/resources/programmer_art/assets/modmenu/textures/gui/filters_button.png index 9d8be05b1..440d1e5e8 100644 Binary files a/src/main/resources/programmer_art/assets/modmenu/textures/gui/filters_button.png and b/src/main/resources/programmer_art/assets/modmenu/textures/gui/filters_button.png differ diff --git a/src/main/resources/programmer_art/assets/modmenu/textures/gui/mods_button.png b/src/main/resources/programmer_art/assets/modmenu/textures/gui/mods_button.png index d9fc0fa3d..ee27e87a6 100644 Binary files a/src/main/resources/programmer_art/assets/modmenu/textures/gui/mods_button.png and b/src/main/resources/programmer_art/assets/modmenu/textures/gui/mods_button.png differ diff --git a/src/main/resources/programmer_art/assets/modmenu/textures/gui/parent_mod.png b/src/main/resources/programmer_art/assets/modmenu/textures/gui/parent_mod.png index 76225ea4f..2e3002510 100644 Binary files a/src/main/resources/programmer_art/assets/modmenu/textures/gui/parent_mod.png and b/src/main/resources/programmer_art/assets/modmenu/textures/gui/parent_mod.png differ