diff --git a/build.gradle b/build.gradle index b0d08fb..374cba0 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ version = "${project.mod_version}-rev.${grgit.head().abbreviatedId}" group = project.maven_group repositories { - maven { url "https://maven.shedaniel.me/" } + maven { url "https://api.modrinth.com/maven" } maven { url "https://maven.terraformersmc.com/" } } @@ -22,7 +22,7 @@ dependencies { modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" modImplementation "com.terraformersmc:modmenu:${project.modmenu_version}" - modImplementation("me.shedaniel.cloth:cloth-config-fabric:${project.cloth_config_version}") {exclude(group: "net.fabricmc.fabric-api")} + modImplementation("maven.modrinth:midnightlib:${project.midnight_lib_version}") } processResources { diff --git a/gradle.properties b/gradle.properties index fcfc9f4..a3fa7ef 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,5 +14,5 @@ org.gradle.jvmargs=-Xmx4G # Dependencies # check this on https://modmuss50.me/fabric.html fabric_api_version=0.68.1+1.19.3 - cloth_config_version=9.0.94 + midnight_lib_version=1.1.0-fabric modmenu_version=5.0.2 diff --git a/src/main/java/io/github/stereo528/mainmenuchanger/client/MainMenuChangerClient.java b/src/main/java/io/github/stereo528/mainmenuchanger/client/MainMenuChangerClient.java index 1f83cb5..b3f3e20 100644 --- a/src/main/java/io/github/stereo528/mainmenuchanger/client/MainMenuChangerClient.java +++ b/src/main/java/io/github/stereo528/mainmenuchanger/client/MainMenuChangerClient.java @@ -1,5 +1,7 @@ package io.github.stereo528.mainmenuchanger.client; +import eu.midnightdust.lib.config.MidnightConfig; +import io.github.stereo528.mainmenuchanger.config.ModConfig; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; import net.fabricmc.fabric.api.client.screen.v1.Screens; @@ -12,16 +14,13 @@ import net.minecraft.resources.ResourceLocation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import me.shedaniel.autoconfig.AutoConfig; -import me.shedaniel.autoconfig.serializer.JanksonConfigSerializer; -import io.github.stereo528.mainmenuchanger.config.ModConfig; - import java.util.List; import java.util.Objects; public class MainMenuChangerClient implements ClientModInitializer { - public static ModConfig config; + + public static final String MODID = "mainmenuchanger"; public static final Logger LOGGER = LoggerFactory.getLogger("MainMenuChanger"); ResourceLocation latePhase = new ResourceLocation("mainmenuchanger", "late"); @@ -29,8 +28,7 @@ public class MainMenuChangerClient implements ClientModInitializer { @Override public void onInitializeClient() { - AutoConfig.register(ModConfig.class, JanksonConfigSerializer::new); - config = AutoConfig.getConfigHolder(ModConfig.class).getConfig(); + MidnightConfig.init(MODID, ModConfig.class); LOGGER.info("MainMenuChanger Loaded!"); ScreenEvents.AFTER_INIT.addPhaseOrdering(Event.DEFAULT_PHASE, latePhase); @@ -43,9 +41,9 @@ private static void mergeMultiplayerAndSingleplayer(Minecraft minecraft, Screen List widgetList = Screens.getButtons((Screen) (Object) screen); for (AbstractWidget button : widgetList) { - if (MainMenuChangerClient.config.mergeMultiAndSingle) { + if (ModConfig.mergeMultiAndSingle) { //bring buttons up so there isn't a weird gap, but only if realms be gone and sp & mp buttons are merged - if(MainMenuChangerClient.config.disableRealmsButtonAndNotifs) { + if(ModConfig.disableRealmsButtonAndNotifs) { if (Objects.equals(button.getMessage(), Component.translatable("menu.singleplayer"))) { button.setWidth(98); button.setY(button.getY() + space); diff --git a/src/main/java/io/github/stereo528/mainmenuchanger/config/ModConfig.java b/src/main/java/io/github/stereo528/mainmenuchanger/config/ModConfig.java index 717691a..ff7b00d 100644 --- a/src/main/java/io/github/stereo528/mainmenuchanger/config/ModConfig.java +++ b/src/main/java/io/github/stereo528/mainmenuchanger/config/ModConfig.java @@ -1,31 +1,21 @@ package io.github.stereo528.mainmenuchanger.config; -import me.shedaniel.autoconfig.ConfigData; -import me.shedaniel.autoconfig.annotation.Config; -import me.shedaniel.autoconfig.annotation.ConfigEntry; -import me.shedaniel.cloth.clothconfig.shadowed.blue.endless.jankson.Comment; +import eu.midnightdust.lib.config.MidnightConfig; -@Config(name = "mainmenuchanger") -public class ModConfig implements ConfigData { +public class ModConfig extends MidnightConfig { - public boolean smallerSplash = false; + @Entry public static boolean smallerSplash = false; - public boolean changeCopyrightToC = false; + @Entry public static boolean changeCopyrightToC = false; - @Comment("Changes the version text to .") - @ConfigEntry.Gui.Tooltip - public boolean shorterVersionText = false; + @Entry public static boolean shorterVersionText = false; - public boolean modCount = false; + @Entry public static boolean modCount = false; - public boolean disableRealmsButtonAndNotifs = false; + @Entry public static boolean disableRealmsButtonAndNotifs = false; - @Comment("Removes Language and Accessibility buttons from the title screen.") - @ConfigEntry.Gui.Tooltip - public boolean disableSideButtons = false; + @Entry public static boolean disableSideButtons = false; - @Comment("Make the Multiplayer and Singleplayer buttons be on the same line") - @ConfigEntry.Gui.Tooltip - public boolean mergeMultiAndSingle = false; + @Entry public static boolean mergeMultiAndSingle = false; } \ No newline at end of file diff --git a/src/main/java/io/github/stereo528/mainmenuchanger/config/ModMenuIntegration.java b/src/main/java/io/github/stereo528/mainmenuchanger/config/ModMenuIntegration.java index d421131..3cd8559 100644 --- a/src/main/java/io/github/stereo528/mainmenuchanger/config/ModMenuIntegration.java +++ b/src/main/java/io/github/stereo528/mainmenuchanger/config/ModMenuIntegration.java @@ -1,16 +1,18 @@ package io.github.stereo528.mainmenuchanger.config; +import eu.midnightdust.lib.config.MidnightConfig; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import com.terraformersmc.modmenu.api.ConfigScreenFactory; import com.terraformersmc.modmenu.api.ModMenuApi; -import me.shedaniel.autoconfig.AutoConfig; + +import static io.github.stereo528.mainmenuchanger.client.MainMenuChangerClient.MODID; @Environment(EnvType.CLIENT) public class ModMenuIntegration implements ModMenuApi { @Override public ConfigScreenFactory getModConfigScreenFactory() { - return screen -> AutoConfig.getConfigScreen(ModConfig.class, screen).get(); + return parent -> MidnightConfig.getScreen(parent, MODID); } } diff --git a/src/main/java/io/github/stereo528/mainmenuchanger/mixin/TitleScreenMixin.java b/src/main/java/io/github/stereo528/mainmenuchanger/mixin/TitleScreenMixin.java index 95eda47..ac4c804 100644 --- a/src/main/java/io/github/stereo528/mainmenuchanger/mixin/TitleScreenMixin.java +++ b/src/main/java/io/github/stereo528/mainmenuchanger/mixin/TitleScreenMixin.java @@ -1,12 +1,7 @@ package io.github.stereo528.mainmenuchanger.mixin; -import com.terraformersmc.modmenu.api.ModMenuApi; -import com.terraformersmc.modmenu.gui.ModsScreen; -import com.terraformersmc.modmenu.gui.widget.ModMenuButtonWidget; -import com.terraformersmc.modmenu.gui.widget.ModMenuTexturedButtonWidget; -import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents; +import io.github.stereo528.mainmenuchanger.config.ModConfig; import net.fabricmc.fabric.api.client.screen.v1.Screens; -import net.fabricmc.fabric.api.event.Event; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.SharedConstants; import net.minecraft.Util; @@ -16,7 +11,6 @@ import net.minecraft.client.gui.screens.TitleScreen; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import org.slf4j.Logger; import org.spongepowered.asm.mixin.Final; @@ -30,8 +24,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.invoke.arg.Args; -import io.github.stereo528.mainmenuchanger.client.MainMenuChangerClient; - import java.util.List; import java.util.Objects; @@ -49,7 +41,7 @@ protected TitleScreenMixin(Component component) { @Inject(method = "init", at = @At("HEAD")) protected void changeCopyright(CallbackInfo info) { - if (MainMenuChangerClient.config.changeCopyrightToC) { + if (ModConfig.changeCopyrightToC) { COPYRIGHT_TEXT = Component.literal("© Mojang AB"); } else { COPYRIGHT_TEXT = Component.literal("Copyright Mojang AB. Do not distribute!"); @@ -58,7 +50,7 @@ protected void changeCopyright(CallbackInfo info) { @Inject(method = "init", at = @At("HEAD")) protected void noRealmsNotifs(CallbackInfo info) { - if (MainMenuChangerClient.config.disableRealmsButtonAndNotifs) { + if (ModConfig.disableRealmsButtonAndNotifs) { assert this.minecraft != null; this.minecraft.options.realmsNotifications().set(false); } @@ -68,7 +60,7 @@ protected void noRealmsNotifs(CallbackInfo info) { public void scale(Args args) { float o = 1.8F - Mth.abs(Mth.sin((float) (Util.getMillis() % 1000L) / 1000.0F * 6.2831855F) * 0.1F); o = o * 100.0F / (float) (this.font.width(this.splash) + 32); - if (MainMenuChangerClient.config.smallerSplash) { + if (ModConfig.smallerSplash) { args.set(0, o / 2); args.set(1, o / 2); args.set(2, o / 2); @@ -82,13 +74,13 @@ public void scale(Args args) { @ModifyArg(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/TitleScreen;drawString(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/gui/Font;Ljava/lang/String;III)V"), index = 2) public String drawString(String par3) { String version = SharedConstants.getCurrentVersion().getName(); - if (MainMenuChangerClient.config.shorterVersionText) { + if (ModConfig.shorterVersionText) { if (this.minecraft.isDemo()) { version = version + "Demo"; } else { version = version + " " + this.minecraft.getVersionType(); } - if (MainMenuChangerClient.config.modCount) { + if (ModConfig.modCount) { version = I18n.get("text.mainmenuchanger.modcount", version, FabricLoader.getInstance().getAllMods().size()); } @@ -101,7 +93,7 @@ public String drawString(String par3) { version = version + ("release".equalsIgnoreCase(this.minecraft.getVersionType()) ? "" : "/" + this.minecraft.getVersionType()); } if (Minecraft.checkModStatus().shouldReportAsModified()) { - if (MainMenuChangerClient.config.modCount) { + if (ModConfig.modCount) { version = I18n.get("text.mainmenuchanger.modcount", version, FabricLoader.getInstance().getAllMods().size()); } else { version = version + I18n.get("menu.modded", new Object[0]); @@ -116,7 +108,7 @@ protected void removeButtons(CallbackInfo info) { final int space = 24; List widgetList = Screens.getButtons((Screen) (Object) this); for (AbstractWidget button : widgetList) { - if (MainMenuChangerClient.config.disableRealmsButtonAndNotifs) { + if (ModConfig.disableRealmsButtonAndNotifs) { if (Objects.equals(button.getMessage(), Component.translatable("menu.online"))) { button.visible = false; } @@ -135,7 +127,7 @@ protected void removeButtons(CallbackInfo info) { button.setY(button.getY() - space); } } - if (MainMenuChangerClient.config.disableSideButtons) { + if (ModConfig.disableSideButtons) { if (Objects.equals(button.getMessage(), Component.translatable("narrator.button.language"))) { button.visible = false; } diff --git a/src/main/resources/assets/mainmenuchanger/lang/en_us.json b/src/main/resources/assets/mainmenuchanger/lang/en_us.json index d1c0570..ea4e4e4 100644 --- a/src/main/resources/assets/mainmenuchanger/lang/en_us.json +++ b/src/main/resources/assets/mainmenuchanger/lang/en_us.json @@ -1,17 +1,14 @@ { "text.mainmenuchanger.modcount": "%d (%d mods)", - "text.autoconfig.mainmenuchanger.title": "Main Menu Changer config", - "text.autoconfig.mainmenuchanger.option.smallerSplash": "Smaller splash", - "text.autoconfig.mainmenuchanger.option.changeCopyrightToC": "Change copyright to ©", - "text.autoconfig.mainmenuchanger.option.shorterVersionText": "Shorter version text", - "text.autoconfig.mainmenuchanger.option.shorterVersionText.@Tooltip": "Changes the version text to .", - "text.autoconfig.mainmenuchanger.option.modCount": "Mod count", - "text.autoconfig.mainmenuchanger.option.disableRealmsButtonAndNotifs": "Disable Realms button and notifications", - "text.autoconfig.mainmenuchanger.option.disableSideButtons": "Disable side buttons", - "text.autoconfig.mainmenuchanger.option.disableSideButtons.@Tooltip": "Removes Language and Accessibility buttons from the title screen.", - "text.autoconfig.mainmenuchanger.option.mergeMultiAndSingle": "Merge Multiplayer & Singleplayer Buttons", - "text.autoconfig.mainmenuchanger.option.mergeMultiAndSingle.@Tooltip": "Make the Multiplayer and Singleplayer buttons be on the same line", + "mainmenuchanger.midnightconfig.title": "Main Menu Changer config", + "mainmenuchanger.midnightconfig.smallerSplash": "Smaller splash", + "mainmenuchanger.midnightconfig.changeCopyrightToC": "Change copyright to ©", + "mainmenuchanger.midnightconfig.shorterVersionText": "Shorter version text", + "mainmenuchanger.midnightconfig.modCount": "Mod count", + "mainmenuchanger.midnightconfig.disableRealmsButtonAndNotifs": "Disable Realms button and notifications", + "mainmenuchanger.midnightconfig.disableSideButtons": "Disable side buttons", + "mainmenuchanger.midnightconfig.mergeMultiAndSingle": "Merge Multiplayer & Singleplayer Buttons", "modmenu.summaryTranslation.mainmenuchanger": "Configurable mod that lets you change how the Main Menu is laid out.", "modmenu.descriptionTranslation.mainmenuchanger": "Configurable mod that lets you change how the Main Menu is laid out." diff --git a/src/main/resources/assets/mainmenuchanger/lang/ru_ru.json b/src/main/resources/assets/mainmenuchanger/lang/ru_ru.json deleted file mode 100644 index 4e75679..0000000 --- a/src/main/resources/assets/mainmenuchanger/lang/ru_ru.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "text.mainmenuchanger.modcount": "%d (%d модов)", - - "text.autoconfig.mainmenuchanger.title": "Настройки Main Menu Changer", - "text.autoconfig.mainmenuchanger.option.smallerSplash": "Уменьшить сплэш", - "text.autoconfig.mainmenuchanger.option.changeCopyrightToC": "Укоротить строку копирайта", - "text.autoconfig.mainmenuchanger.option.shorterVersionText": "Укоротить строку версии", - "text.autoconfig.mainmenuchanger.option.shorterVersionText.@Tooltip": "Меняет текст версии на <версия> <загрузчик модов>.", - "text.autoconfig.mainmenuchanger.option.modCount": "Счётчик модов", - "text.autoconfig.mainmenuchanger.option.disableRealmsButtonAndNotifs": "Отключить кнопку Realms и уведомления", - "text.autoconfig.mainmenuchanger.option.disableSideButtons": "Отключить боковые кнопки", - "text.autoconfig.mainmenuchanger.option.disableSideButtons.@Tooltip": "Убирает с главного меню кнопки языка и специальных возможностей.", - - "modmenu.summaryTranslation.mainmenuchanger": "Мод, который позволяет настроить элементы главного меню под себя.", - "modmenu.descriptionTranslation.mainmenuchanger": "Мод, который позволяет настроить элементы главного меню под себя." -} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index ed7e844..619ae39 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -26,7 +26,7 @@ ], "depends": { "minecraft": ">=1.19", - "cloth-config2": ">=7.0.65" + "midnightlib": ">=1.0.0-fabric" }, "recommends": { "modmenu": "*"