Skip to content

Commit

Permalink
Fixed a problem with ModMenu registration
Browse files Browse the repository at this point in the history
  • Loading branch information
MehradN committed Jul 2, 2023
1 parent 9745d9b commit 191499e
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 45 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ parchment_version=1.20.1:2023.06.26
loader_version=0.14.21

# Mod Properties
mod_version=2.0.0
mod_version=2.1.0
maven_group=ir.mehradn
archives_base_name=mehrad-config

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package ir.mehradn.mehradconfig.entrypoint;

import ir.mehradn.mehradconfig.gui.ConfigScreenBuilder;
import java.util.HashMap;
import java.util.Map;

/**
* This class is used for registering your config screen builders for ModMenu.
*
* @see #register
*/
public class ModMenuConfigScreen {
static final Map<String, ConfigScreenBuilder> modMenuScreenBuilders = new HashMap<>();

/**
* Registers a config screen builder to build screens for ModMenu. The screen will be created by {@link ConfigScreenBuilder#buildAndLoad}.
* This method by itself won't register your config, and you need to call {@link ModMenuConfig#register} before this in the main entrypoint of
* your mod.
*
* @param modId the mod id of your mod
* @param configScreenBuilder the config screen builder to build the screen with
*/
public static void register(String modId, ConfigScreenBuilder configScreenBuilder) {
modMenuScreenBuilders.put(modId, configScreenBuilder);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,27 @@

import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi;
import ir.mehradn.mehradconfig.MehradConfig;
import ir.mehradn.mehradconfig.gui.ConfigScreenBuilder;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Supplier;

@Environment(EnvType.CLIENT)
public class ModMenuEntrypoint implements ModMenuApi {
private static final ConfigScreenBuilder DEFAULT = new ConfigScreenBuilder().setScreenType(ConfigScreenBuilder.DefaultScreens.COMPACT);

@Override
public Map<String, ConfigScreenFactory<?>> getProvidedConfigScreenFactories() {
Map<String, ConfigScreenFactory<?>> factories = new HashMap<>();
for (Map.Entry<String, ModMenuSupport.ConfigScreenLoader> entry : ModMenuSupport.screenBuilders.entrySet())
factories.put(entry.getKey(), (parent) -> entry.getValue().build(parent));
for (Map.Entry<String, Supplier<MehradConfig>> entry : ModMenuConfig.modMenuConfigs.entrySet()) {
String modId = entry.getKey();
Supplier<MehradConfig> configConstructor = entry.getValue();
ConfigScreenBuilder configScreenBuilder = ModMenuConfigScreen.modMenuScreenBuilders.getOrDefault(modId, DEFAULT);
factories.put(entry.getKey(), (parent) -> configScreenBuilder.buildAndLoad(configConstructor, parent));
}
return factories;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package ir.mehradn.mehradconfig.entrypoint;

import ir.mehradn.mehradconfig.MehradConfig;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Supplier;

/**
* This class is used for registering your configs for ModMenu.
*
* @see #register
*/
public final class ModMenuConfig {
static final Map<String, Supplier<MehradConfig>> modMenuConfigs = new HashMap<>();

/**
* Registers a config constructor for ModMenu. The screen will by default use the compact default screen type.
* Checkout {@code ModMenuConfigScreen} for customizing the config screen.
*
* @param modId the mod id of your mod
* @param configConstructor a constructor for the type of the config to load, modify and save
*/
public static void register(String modId, Supplier<MehradConfig> configConstructor) {
modMenuConfigs.put(modId, configConstructor);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package ir.mehradn.mehradconfigtest;

import ir.mehradn.mehradconfig.entrypoint.ModMenuSupport;
import ir.mehradn.mehradconfig.entrypoint.ModMenuConfig;
import ir.mehradn.mehradconfig.entrypoint.ModMenuConfigScreen;
import ir.mehradn.mehradconfig.gui.ConfigScreenBuilder;
import ir.mehradn.mehradconfigtest.config.TestConfig;
import net.fabricmc.api.ModInitializer;
Expand All @@ -25,6 +26,7 @@ public void onInitialize() {
//.setOnSave((minecraft, thisScreen, parentScreen) -> { LOGGER.info("SAVED!"); minecraft.setScreen(parentScreen); })
//.setOnCancel((minecraft, thisScreen, parentScreen) -> { LOGGER.info("CANCELED!"); minecraft.setScreen(parentScreen); })
;
ModMenuSupport.register(MOD_ID, TestConfig::new, builder);
ModMenuConfig.register(MOD_ID, TestConfig::new);
ModMenuConfigScreen.register(MOD_ID, builder);
}
}

0 comments on commit 191499e

Please sign in to comment.