From 6fa82fcc7ab7758279fdcb2b7e00b247a9a2627d Mon Sep 17 00:00:00 2001 From: Foxy Date: Sun, 29 Sep 2024 11:40:19 +0200 Subject: [PATCH] moved modmenuConfig to main --- .../moreculling/config/ModMenuConfig.java | 12 +- .../platform/services/IPlatformHelper.java | 3 +- .../moreculling/config/ModMenuCompat.java | 11 + .../moreculling/config/ModMenuConfig.java | 320 ------------------ .../platform/FabricPlatformHelper.java | 9 +- fabric/src/main/resources/fabric.mod.json | 2 +- .../fxco/moreculling/MoreCullingNeoforge.java | 2 +- .../platform/NeoForgePlatformHelper.java | 9 +- 8 files changed, 36 insertions(+), 332 deletions(-) rename {neoforge => common}/src/main/java/ca/fxco/moreculling/config/ModMenuConfig.java (97%) create mode 100644 fabric/src/main/java/ca/fxco/moreculling/config/ModMenuCompat.java delete mode 100644 fabric/src/main/java/ca/fxco/moreculling/config/ModMenuConfig.java diff --git a/neoforge/src/main/java/ca/fxco/moreculling/config/ModMenuConfig.java b/common/src/main/java/ca/fxco/moreculling/config/ModMenuConfig.java similarity index 97% rename from neoforge/src/main/java/ca/fxco/moreculling/config/ModMenuConfig.java rename to common/src/main/java/ca/fxco/moreculling/config/ModMenuConfig.java index dd7154b..1178fcb 100644 --- a/neoforge/src/main/java/ca/fxco/moreculling/config/ModMenuConfig.java +++ b/common/src/main/java/ca/fxco/moreculling/config/ModMenuConfig.java @@ -9,6 +9,7 @@ import ca.fxco.moreculling.api.config.defaults.ConfigIntOption; import ca.fxco.moreculling.config.cloth.*; import ca.fxco.moreculling.config.option.LeavesCullingMode; +import ca.fxco.moreculling.platform.Services; import it.unimi.dsi.fastutil.objects.Object2BooleanMap; import me.shedaniel.autoconfig.AutoConfig; import me.shedaniel.clothconfig2.api.ConfigBuilder; @@ -17,8 +18,6 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.chat.Component; -import net.neoforged.fml.ModContainer; -import net.neoforged.fml.ModList; import java.util.ArrayList; import java.util.List; @@ -28,7 +27,7 @@ public class ModMenuConfig { //TODO: Convert all settings to ConfigOption using the MoreCulling config API if those settings can be converted - public static Screen createConfigScreen(ModContainer container, Screen parent) { + public static Screen createConfigScreen(Screen parent) { ConfigBuilder builder = MoreCullingClothConfigBuilder.create().setParentScreen(parent); builder.setSavingRunnable(() -> AutoConfig.getConfigHolder(MoreCullingConfig.class).save()); ConfigCategory generalCategory = builder.getOrCreateCategory(Component.translatable("moreculling.config.category.general")); @@ -48,8 +47,7 @@ public static Screen createConfigScreen(ModContainer container, Screen parent) { if (modId.equals("minecraft")) { continue; } - ModContainer con = ModList.get().getModContainerById(modId).orElse(null); - DynamicBooleanListEntry aMod = new DynamicBooleanBuilder(con == null ? modId : con.getModInfo().getDisplayName()) + DynamicBooleanListEntry aMod = new DynamicBooleanBuilder(Services.PLATFORM.getModName(modId)) .setValue(entry.getBooleanValue()) .setDefaultValue(MoreCulling.CONFIG.useOnModdedBlocksByDefault) .setTooltip(Component.literal(modId)) @@ -292,13 +290,13 @@ public static void generateConfigCategories(ConfigBuilder builder, ConfigCategor }); if (option instanceof ConfigModLimit configModLimit) { optionBuilder.setModLimited( - ModList.get().isLoaded(configModLimit.getLimitedModId()), + Services.PLATFORM.isModLoaded(configModLimit.getLimitedModId()), Component.translatable(configModLimit.getTranslationKey()) ); } if (option instanceof ConfigModIncompatibility configModIncompatibility) { optionBuilder.setModIncompatibility( - ModList.get().isLoaded(configModIncompatibility.getIncompatibleModId()), + Services.PLATFORM.isModLoaded(configModIncompatibility.getIncompatibleModId()), configModIncompatibility.getMessage() ); } diff --git a/common/src/main/java/ca/fxco/moreculling/platform/services/IPlatformHelper.java b/common/src/main/java/ca/fxco/moreculling/platform/services/IPlatformHelper.java index cf472a1..acb7194 100644 --- a/common/src/main/java/ca/fxco/moreculling/platform/services/IPlatformHelper.java +++ b/common/src/main/java/ca/fxco/moreculling/platform/services/IPlatformHelper.java @@ -30,7 +30,8 @@ public interface IPlatformHelper { * @return The name of the environment type. */ default String getEnvironmentName() { - return isDevelopmentEnvironment() ? "development" : "production"; } + + String getModName(String modId); } \ No newline at end of file diff --git a/fabric/src/main/java/ca/fxco/moreculling/config/ModMenuCompat.java b/fabric/src/main/java/ca/fxco/moreculling/config/ModMenuCompat.java new file mode 100644 index 0000000..8fc3e16 --- /dev/null +++ b/fabric/src/main/java/ca/fxco/moreculling/config/ModMenuCompat.java @@ -0,0 +1,11 @@ +package ca.fxco.moreculling.config; + +import com.terraformersmc.modmenu.api.ConfigScreenFactory; +import com.terraformersmc.modmenu.api.ModMenuApi; + +public class ModMenuCompat implements ModMenuApi { + @Override + public ConfigScreenFactory getModConfigScreenFactory() { + return ModMenuConfig::createConfigScreen; + } +} diff --git a/fabric/src/main/java/ca/fxco/moreculling/config/ModMenuConfig.java b/fabric/src/main/java/ca/fxco/moreculling/config/ModMenuConfig.java deleted file mode 100644 index 8826fc8..0000000 --- a/fabric/src/main/java/ca/fxco/moreculling/config/ModMenuConfig.java +++ /dev/null @@ -1,320 +0,0 @@ -package ca.fxco.moreculling.config; - -import ca.fxco.moreculling.MoreCulling; -import ca.fxco.moreculling.api.block.MoreBlockCulling; -import ca.fxco.moreculling.api.config.*; -import ca.fxco.moreculling.api.config.defaults.ConfigBooleanOption; -import ca.fxco.moreculling.api.config.defaults.ConfigEnumOption; -import ca.fxco.moreculling.api.config.defaults.ConfigFloatOption; -import ca.fxco.moreculling.api.config.defaults.ConfigIntOption; -import ca.fxco.moreculling.config.cloth.*; -import ca.fxco.moreculling.config.option.LeavesCullingMode; -import com.terraformersmc.modmenu.api.ConfigScreenFactory; -import com.terraformersmc.modmenu.api.ModMenuApi; -import it.unimi.dsi.fastutil.objects.Object2BooleanMap; -import me.shedaniel.autoconfig.AutoConfig; -import me.shedaniel.clothconfig2.api.ConfigBuilder; -import me.shedaniel.clothconfig2.api.ConfigCategory; -import net.fabricmc.loader.api.FabricLoader; -import net.fabricmc.loader.api.ModContainer; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.network.chat.Component; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -public class ModMenuConfig implements ModMenuApi { - - //TODO: Convert all settings to ConfigOption using the MoreCulling config API if those settings can be converted - - private static Screen createConfigScreen(Screen parent) { - ConfigBuilder builder = MoreCullingClothConfigBuilder.create().setParentScreen(parent); - builder.setSavingRunnable(() -> AutoConfig.getConfigHolder(MoreCullingConfig.class).save()); - ConfigCategory generalCategory = builder.getOrCreateCategory(Component.translatable("moreculling.config.category.general")); - ConfigCategory compatCategory = builder.getOrCreateCategory(Component.translatable("moreculling.config.category.compat")); - - // Modded Blocks - List modsOption = new ArrayList<>(); - DynamicBooleanListEntry useOnModdedBlocks = new DynamicBooleanBuilder("moreculling.config.option.useOnModdedBlocks") - .setValue(MoreCulling.CONFIG.useOnModdedBlocksByDefault) - .setDefaultValue(true) - .setTooltip(Component.translatable("moreculling.config.option.useOnModdedBlocks.tooltip")) - .setSaveConsumer(newValue -> MoreCulling.CONFIG.useOnModdedBlocksByDefault = newValue) - .requireRestart() //TODO: Just need to reset the gui - .build(); - for (Object2BooleanMap.Entry entry : MoreCulling.CONFIG.modCompatibility.object2BooleanEntrySet()) { - String modId = entry.getKey(); - if (modId.equals("minecraft")) { - continue; - } - ModContainer con = FabricLoader.getInstance().getModContainer(modId).orElse(null); - DynamicBooleanListEntry aMod = new DynamicBooleanBuilder(con == null ? modId : con.getMetadata().getName()) - .setValue(entry.getBooleanValue()) - .setDefaultValue(MoreCulling.CONFIG.useOnModdedBlocksByDefault) - .setTooltip(Component.literal(modId)) - .setSaveConsumer(v -> { - MoreCulling.CONFIG.modCompatibility.put(modId, v.booleanValue()); - BuiltInRegistries.BLOCK.forEach(block -> { - if (v != ((MoreBlockCulling) block).moreculling$canCull() && BuiltInRegistries.BLOCK.getKey(block).getNamespace().equals(modId)) { - ((MoreBlockCulling) block).moreculling$setCanCull(v); - } - }); - }) - .build(); - modsOption.add(aMod); - } - - // Cloud Culling - generalCategory.addEntry(new DynamicBooleanBuilder("moreculling.config.option.cloudCulling") - .setValue(MoreCulling.CONFIG.cloudCulling) - .setDefaultValue(true) - .setTooltip(Component.translatable("moreculling.config.option.cloudCulling.tooltip")) - .setSaveConsumer(newValue -> { - MoreCulling.CONFIG.cloudCulling = newValue; - Minecraft mc = Minecraft.getInstance(); - if (mc != null && mc.levelRenderer != null) { - mc.levelRenderer.allChanged(); - } - }) - .build()); - - // Sign Text Culling - generalCategory.addEntry(new DynamicBooleanBuilder("moreculling.config.option.signTextCulling") - .setValue(MoreCulling.CONFIG.signTextCulling) - .setDefaultValue(true) - .setTooltip(Component.translatable("moreculling.config.option.signTextCulling.tooltip")) - .setSaveConsumer(newValue -> MoreCulling.CONFIG.signTextCulling = newValue) - .build()); - - // Rain/Snow Culling - generalCategory.addEntry(new DynamicBooleanBuilder("moreculling.config.option.rainCulling") - .setValue(MoreCulling.CONFIG.rainCulling) - .setDefaultValue(true) - .setTooltip(Component.translatable("moreculling.config.option.rainCulling.tooltip")) - .setSaveConsumer(newValue -> MoreCulling.CONFIG.rainCulling = newValue) - .build()); - - // Beacon Beam Culling - generalCategory.addEntry(new DynamicBooleanBuilder("moreculling.config.option.beaconBeamCulling") - .setValue(MoreCulling.CONFIG.beaconBeamCulling) - .setDefaultValue(true) - .setTooltip(Component.translatable("moreculling.config.option.beaconBeamCulling.tooltip")) - .setSaveConsumer(newValue -> MoreCulling.CONFIG.beaconBeamCulling = newValue) - .build()); - - // Leaves Culling - DynamicIntSliderEntry leavesCullingAmount = new DynamicIntSliderBuilder("moreculling.config.option.leavesCullingAmount", 1, 4) - .setValue(MoreCulling.CONFIG.leavesCullingAmount) - .setDefaultValue(2) - .setTooltip(Component.translatable("moreculling.config.option.leavesCullingAmount.tooltip")) - .setSaveConsumer(newValue -> { - MoreCulling.CONFIG.leavesCullingAmount = newValue; - Minecraft mc = Minecraft.getInstance(); - if (mc != null && mc.levelRenderer != null) { - mc.levelRenderer.allChanged(); - } - }) - .build(); - DynamicEnumEntry leavesCullingMode = new DynamicEnumBuilder<>("moreculling.config.option.leavesCulling", LeavesCullingMode.class) - .setValue(MoreCulling.CONFIG.leavesCullingMode) - .setDefaultValue(LeavesCullingMode.DEFAULT) - .setTooltip(Component.translatable("moreculling.config.option.leavesCulling.tooltip")) - .setSaveConsumer(newValue -> { - MoreCulling.CONFIG.leavesCullingMode = newValue; - Minecraft mc = Minecraft.getInstance(); - if (mc != null && mc.levelRenderer != null) { - mc.levelRenderer.allChanged(); - } - }) - .setChangeConsumer((instance, value) -> { - leavesCullingAmount.setEnabledState(instance.isEnabled() && value.hasAmount()); - if (MoreCulling.CONFIG.includeMangroveRoots && value == LeavesCullingMode.STATE) { - instance.setValue(LeavesCullingMode.CHECK); - } - }) - .build(); - DynamicBooleanListEntry includeMangroveRoots = new DynamicBooleanBuilder("moreculling.config.option.includeMangroveRoots") - .setValue(MoreCulling.CONFIG.includeMangroveRoots) - .setDefaultValue(false) - .setTooltip(Component.translatable("moreculling.config.option.includeMangroveRoots.tooltip")) - .setSaveConsumer(newValue -> { - MoreCulling.CONFIG.includeMangroveRoots = newValue; - Minecraft mc = Minecraft.getInstance(); - if (mc != null && mc.levelRenderer != null) { - mc.levelRenderer.allChanged(); - } - }) - .setChangeConsumer((instance, value) -> { - if (value && leavesCullingMode.getValue() == LeavesCullingMode.STATE) { - leavesCullingMode.setValue(LeavesCullingMode.CHECK); - } - }) - .build(); - - // End Gateway Culling - DynamicBooleanListEntry endGatewayCulling = new DynamicBooleanBuilder("moreculling.config.option.endGatewayCulling") - .setValue(MoreCulling.CONFIG.endGatewayCulling) - .setDefaultValue(false) - .setTooltip(Component.translatable("moreculling.config.option.endGatewayCulling.tooltip")) - .setSaveConsumer(newValue -> { - MoreCulling.CONFIG.endGatewayCulling = newValue; - Minecraft mc = Minecraft.getInstance(); - if (mc != null && mc.levelRenderer != null) { - mc.levelRenderer.allChanged(); - } - }) - .build(); - - // BlockStates - generalCategory.addEntry(new DynamicBooleanBuilder("moreculling.config.option.blockStateCulling") - .setValue(MoreCulling.CONFIG.useBlockStateCulling) - .setDefaultValue(true) - .setTooltip(Component.translatable("moreculling.config.option.blockStateCulling.tooltip")) - .setSaveConsumer(newValue -> { - MoreCulling.CONFIG.useBlockStateCulling = newValue; - Minecraft mc = Minecraft.getInstance(); - if (mc != null && mc.levelRenderer != null) { - mc.levelRenderer.allChanged(); - } - }) - .setChangeConsumer((instance, value) -> { - leavesCullingMode.setEnabledState(value); - includeMangroveRoots.setEnabledState(value); - useOnModdedBlocks.setEnabledState(value); - for (DynamicBooleanListEntry entry : modsOption) { - entry.setEnabledState(value); - } - }) - .build()); - - // Item Frames - DynamicBooleanListEntry itemFrameMapCulling = new DynamicBooleanBuilder("moreculling.config.option.itemFrameMapCulling") - .setValue(MoreCulling.CONFIG.itemFrameMapCulling) - .setDefaultValue(true) - .setTooltip(Component.translatable("moreculling.config.option.itemFrameMapCulling.tooltip")) - .setSaveConsumer(newValue -> MoreCulling.CONFIG.itemFrameMapCulling = newValue) - .build(); - DynamicIntSliderEntry itemFrameLODRange = new DynamicIntSliderBuilder("moreculling.config.option.itemFrameLODRange", 16, 256) // Between 16 & 256 blocks - 1 & 16 chunks - .setValue(MoreCulling.CONFIG.itemFrameLODRange) - .setDefaultValue(128) - .setTooltip(Component.translatable("moreculling.config.option.itemFrameLODRange.tooltip")) - .setSaveConsumer(newValue -> MoreCulling.CONFIG.itemFrameLODRange = newValue) - .build(); - DynamicBooleanListEntry itemFrameLOD = new DynamicBooleanBuilder("moreculling.config.option.itemFrameLOD") - .setValue(MoreCulling.CONFIG.useItemFrameLOD) - .setDefaultValue(true) - .setTooltip(Component.translatable("moreculling.config.option.itemFrameLOD.tooltip")) - .setSaveConsumer(newValue -> MoreCulling.CONFIG.useItemFrameLOD = newValue) - .setChangeConsumer((instance, value) -> itemFrameLODRange.setEnabledState(value)) - .build(); - DynamicFloatSliderEntry itemFrame3FaceCullingRange = new DynamicFloatSliderBuilder("moreculling.config.option.itemFrame3FaceCullingRange", 2F, 16F, 0.2F) // Between 0 & 16 blocks - .setValue(MoreCulling.CONFIG.itemFrame3FaceCullingRange) - .setDefaultValue(4F) - .setTooltip(Component.translatable("moreculling.config.option.itemFrame3FaceCullingRange.tooltip")) - .setSaveConsumer(newValue -> MoreCulling.CONFIG.itemFrame3FaceCullingRange = newValue) - .build(); - DynamicBooleanListEntry itemFrame3FaceCulling = new DynamicBooleanBuilder("moreculling.config.option.itemFrame3FaceCulling") - .setValue(MoreCulling.CONFIG.useItemFrame3FaceCulling) - .setDefaultValue(true) - .setTooltip(Component.translatable("moreculling.config.option.itemFrame3FaceCulling.tooltip")) - .setSaveConsumer(newValue -> MoreCulling.CONFIG.useItemFrame3FaceCulling = newValue) - .setChangeConsumer((instance, value) -> itemFrame3FaceCullingRange.setEnabledState(value)) - .build(); - generalCategory.addEntry(new DynamicBooleanBuilder("moreculling.config.option.customItemFrameRenderer") - .setValue(MoreCulling.CONFIG.useCustomItemFrameRenderer) - .setDefaultValue(true) - .setTooltip(Component.translatable("moreculling.config.option.customItemFrameRenderer.tooltip")) - .setSaveConsumer(newValue -> MoreCulling.CONFIG.useCustomItemFrameRenderer = newValue) - .setChangeConsumer((instance, value) -> { - itemFrameLOD.setEnabledState(value); - itemFrame3FaceCulling.setEnabledState(value); - itemFrameMapCulling.setEnabledState(value); - }) - .build()); - generalCategory.addEntry(itemFrameMapCulling); - generalCategory.addEntry(itemFrameLOD); - generalCategory.addEntry(itemFrameLODRange); - generalCategory.addEntry(itemFrame3FaceCulling); - generalCategory.addEntry(itemFrame3FaceCullingRange); - - generalCategory.addEntry(leavesCullingMode); - generalCategory.addEntry(leavesCullingAmount); - generalCategory.addEntry(includeMangroveRoots); - - generalCategory.addEntry(endGatewayCulling); - leavesCullingAmount.setEnabledState(leavesCullingMode.isEnabled() && MoreCulling.CONFIG.leavesCullingMode == LeavesCullingMode.DEPTH); - - compatCategory.addEntry(useOnModdedBlocks); - for (DynamicBooleanListEntry entry : modsOption) { - compatCategory.addEntry(entry); - } - - // Generates all categories created through the API - generateConfigCategories(builder, generalCategory); - - return builder.build(); - } - - @Override - public ConfigScreenFactory getModConfigScreenFactory() { - return ModMenuConfig::createConfigScreen; - } - - //TODO: Add more Sodium option to the ModMenu options - @SuppressWarnings("unchecked") - public static void generateConfigCategories(ConfigBuilder builder, ConfigCategory generalCategory) { - Map>> groupedOptions = ConfigAdditions.getOptions(); - for (String group : groupedOptions.keySet()) { - ConfigCategory category; - if (ConfigAdditions.isGroupSeparate(group)) { - category = builder.getOrCreateCategory(Component.translatable("moreculling.config.category." + group)); - } else { - category = generalCategory; - } - for (ConfigOption option : groupedOptions.get(group)) { - AbstractDynamicBuilder optionBuilder; - if (option instanceof ConfigBooleanOption) { - optionBuilder = new DynamicBooleanBuilder(option.getTranslationKey()); - } else if (option instanceof ConfigFloatOption floatOption) { - optionBuilder = new DynamicFloatSliderBuilder(option.getTranslationKey(), floatOption.getMin(), floatOption.getMax(), floatOption.getInterval()); - } else if (option instanceof ConfigIntOption intOption) { - optionBuilder = new DynamicIntSliderBuilder(option.getTranslationKey(), intOption.getMin(), intOption.getMax()); - } else if (option instanceof ConfigEnumOption enumOption) { - optionBuilder = new DynamicEnumBuilder<>(option.getTranslationKey(), enumOption.getTypeClass()); - } else { - optionBuilder = null; - } - if (optionBuilder != null) { - optionBuilder.setTooltip(Component.translatable(option.getTranslationKey() + ".tooltip")) - .setValue(option.getGetter().get()) - .setDefaultValue(option.getDefaultValue()) - .setSaveConsumer(newValue -> option.getSetter().accept(newValue)) - .setChangeConsumer((instance, value) -> { - if (option.getChanged() != null) { - option.getChanged().accept(value); - } - }); - if (option instanceof ConfigModLimit configModLimit) { - optionBuilder.setModLimited( - FabricLoader.getInstance().isModLoaded(configModLimit.getLimitedModId()), - Component.translatable(configModLimit.getTranslationKey()) - ); - } - if (option instanceof ConfigModIncompatibility configModIncompatibility) { - optionBuilder.setModIncompatibility( - FabricLoader.getInstance().isModLoaded(configModIncompatibility.getIncompatibleModId()), - configModIncompatibility.getMessage() - ); - } - if (option.getFlag() == ConfigOptionFlag.REQUIRES_GAME_RESTART) { - optionBuilder.requireRestart(); - } - category.addEntry(optionBuilder.build()); - } - } - } - } -} diff --git a/fabric/src/main/java/ca/fxco/moreculling/platform/FabricPlatformHelper.java b/fabric/src/main/java/ca/fxco/moreculling/platform/FabricPlatformHelper.java index b97b35d..9a73855 100644 --- a/fabric/src/main/java/ca/fxco/moreculling/platform/FabricPlatformHelper.java +++ b/fabric/src/main/java/ca/fxco/moreculling/platform/FabricPlatformHelper.java @@ -2,6 +2,7 @@ import ca.fxco.moreculling.platform.services.IPlatformHelper; import net.fabricmc.loader.api.FabricLoader; +import net.fabricmc.loader.api.ModContainer; public class FabricPlatformHelper implements IPlatformHelper { @@ -18,7 +19,13 @@ public boolean isModLoaded(String modId) { @Override public boolean isDevelopmentEnvironment() { - return FabricLoader.getInstance().isDevelopmentEnvironment(); } + + @Override + public String getModName(String modId) { + ModContainer container = FabricLoader.getInstance().getModContainer(modId).orElse(null); + + return container == null ? modId : container.getMetadata().getName(); + } } diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index ad483eb..03d59cc 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -20,7 +20,7 @@ "ca.fxco.moreculling.MoreCullingFabric" ], "modmenu": [ - "ca.fxco.moreculling.config.ModMenuConfig" + "ca.fxco.moreculling.config.ModMenuCompat" ] }, "mixins": [ diff --git a/neoforge/src/main/java/ca/fxco/moreculling/MoreCullingNeoforge.java b/neoforge/src/main/java/ca/fxco/moreculling/MoreCullingNeoforge.java index 856ea46..4a696c5 100644 --- a/neoforge/src/main/java/ca/fxco/moreculling/MoreCullingNeoforge.java +++ b/neoforge/src/main/java/ca/fxco/moreculling/MoreCullingNeoforge.java @@ -10,6 +10,6 @@ public class MoreCullingNeoforge { public MoreCullingNeoforge(ModContainer container) { MoreCulling.init(); - container.registerExtensionPoint(IConfigScreenFactory.class, ModMenuConfig::createConfigScreen); + container.registerExtensionPoint(IConfigScreenFactory.class, (con, screen) -> ModMenuConfig.createConfigScreen(screen)); } } diff --git a/neoforge/src/main/java/ca/fxco/moreculling/platform/NeoForgePlatformHelper.java b/neoforge/src/main/java/ca/fxco/moreculling/platform/NeoForgePlatformHelper.java index be90dd4..7f640f6 100644 --- a/neoforge/src/main/java/ca/fxco/moreculling/platform/NeoForgePlatformHelper.java +++ b/neoforge/src/main/java/ca/fxco/moreculling/platform/NeoForgePlatformHelper.java @@ -1,6 +1,7 @@ package ca.fxco.moreculling.platform; import ca.fxco.moreculling.platform.services.IPlatformHelper; +import net.neoforged.fml.ModContainer; import net.neoforged.fml.ModList; import net.neoforged.fml.loading.FMLLoader; @@ -20,7 +21,13 @@ public boolean isModLoaded(String modId) { @Override public boolean isDevelopmentEnvironment() { - return !FMLLoader.isProduction(); } + + @Override + public String getModName(String modId) { + ModContainer container = ModList.get().getModContainerById(modId).orElse(null); + + return container == null ? modId : container.getModInfo().getDisplayName(); + } } \ No newline at end of file