Skip to content

Commit

Permalink
port to midnightlib
Browse files Browse the repository at this point in the history
its much less bloated and easier to work with than cloth config
  • Loading branch information
Stereo528 committed Dec 11, 2022
1 parent b65177e commit 8f9f3ff
Show file tree
Hide file tree
Showing 9 changed files with 41 additions and 78 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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/" }
}

Expand All @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -12,25 +14,21 @@
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");


@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);
Expand All @@ -43,9 +41,9 @@ private static void mergeMultiplayerAndSingleplayer(Minecraft minecraft, Screen
List<AbstractWidget> 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);
Expand Down
Original file line number Diff line number Diff line change
@@ -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 <version> <modloader>.")
@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;
}
Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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;
Expand All @@ -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;

Expand All @@ -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!");
Expand All @@ -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);
}
Expand All @@ -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);
Expand All @@ -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());
}

Expand All @@ -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]);
Expand All @@ -116,7 +108,7 @@ protected void removeButtons(CallbackInfo info) {
final int space = 24;
List<AbstractWidget> 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;
}
Expand All @@ -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;
}
Expand Down
19 changes: 8 additions & 11 deletions src/main/resources/assets/mainmenuchanger/lang/en_us.json
Original file line number Diff line number Diff line change
@@ -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 <version> <modloader>.",
"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."
Expand Down
16 changes: 0 additions & 16 deletions src/main/resources/assets/mainmenuchanger/lang/ru_ru.json

This file was deleted.

2 changes: 1 addition & 1 deletion src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
],
"depends": {
"minecraft": ">=1.19",
"cloth-config2": ">=7.0.65"
"midnightlib": ">=1.0.0-fabric"
},
"recommends": {
"modmenu": "*"
Expand Down

0 comments on commit 8f9f3ff

Please sign in to comment.