Skip to content

Commit 4eeb199

Browse files
authored
Switch from Cloth Config to NeoForge's config system (#1066)
1 parent 5956d92 commit 4eeb199

File tree

32 files changed

+464
-244
lines changed

32 files changed

+464
-244
lines changed

build.gradle

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,6 @@ dependencies {
277277
throw new GradleException("Invalid runtime_itemlist_mod value: " + project.runtime_itemlist_mod)
278278
}
279279

280-
implementation "me.shedaniel.cloth:cloth-config-neoforge:${project.cloth_config_version}"
281-
282280
localRuntimeOnly compileOnly("curse.maven:jade-324717:${project.jade_file_id}")
283281

284282
// TODO: compileOnly because implementation will cause datagen to crash... hopefully kubejs fixes it soon
@@ -297,7 +295,6 @@ var generateModMetadata = tasks.register("generateModMetadata", ProcessResources
297295
neo_version: neo_version,
298296
neo_version_range: neo_version_range,
299297
mod_version: version,
300-
cloth_config_version_range: cloth_config_version_range,
301298
grandpower_version_range: grandpower_version_range,
302299
guideme_version_range: guideme_version_range,
303300
ae2_version_range: ae2_version_range,
@@ -394,7 +391,6 @@ if (System.getenv("CURSEFORGE_API_KEY") && !version.endsWith("-SNAPSHOT")) {
394391
addGameVersion "Java 21"
395392

396393
relations {
397-
requiredDependency "cloth-config"
398394
requiredDependency "guideme"
399395
optionalDependency "wthit"
400396
optionalDependency "emi"
@@ -426,7 +422,6 @@ modrinth {
426422
gameVersions = [project.minecraft_version]
427423
loaders = ["neoforge"]
428424
dependencies {
429-
required.project "cloth-config"
430425
required.project "guideme"
431426
optional.project "wthit"
432427
optional.project "emi"

gradle.properties

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ modrinth_project=Gov5Dboq
2525
runtime_itemlist_mod=emi
2626

2727
# Dependency versions
28-
cloth_config_version=15.0.128
29-
cloth_config_version_range=[15.0.128, 16)
3028
grandpower_version=3.0.0
3129
grandpower_version_range=[3.0.0, 4)
3230
guideme_version=21.1.5

src/client/java/aztech/modern_industrialization/MIClient.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import aztech.modern_industrialization.blocks.storage.barrel.client.BarrelTooltipComponent;
3131
import aztech.modern_industrialization.blocks.storage.tank.TankRenderer;
3232
import aztech.modern_industrialization.client.MIRenderTypes;
33+
import aztech.modern_industrialization.config.MIClientConfig;
34+
import aztech.modern_industrialization.config.MIStartupConfig;
3335
import aztech.modern_industrialization.datagen.MIDatagenClient;
3436
import aztech.modern_industrialization.datagen.MIDatagenServer;
3537
import aztech.modern_industrialization.datagen.model.DelegatingModelBuilder;
@@ -70,7 +72,6 @@
7072
import java.util.List;
7173
import java.util.Objects;
7274
import java.util.function.Supplier;
73-
import me.shedaniel.autoconfig.AutoConfig;
7475
import net.minecraft.ChatFormatting;
7576
import net.minecraft.client.Minecraft;
7677
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
@@ -88,6 +89,7 @@
8889
import net.neoforged.fml.ModList;
8990
import net.neoforged.fml.ModLoadingContext;
9091
import net.neoforged.fml.common.EventBusSubscriber;
92+
import net.neoforged.fml.config.ModConfig;
9193
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
9294
import net.neoforged.fml.event.lifecycle.FMLConstructModEvent;
9395
import net.neoforged.neoforge.client.event.ClientPlayerNetworkEvent;
@@ -99,6 +101,7 @@
99101
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent;
100102
import net.neoforged.neoforge.client.event.RegisterRenderBuffersEvent;
101103
import net.neoforged.neoforge.client.event.RenderFrameEvent;
104+
import net.neoforged.neoforge.client.gui.ConfigurationScreen;
102105
import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
103106
import net.neoforged.neoforge.client.gui.VanillaGuiLayers;
104107
import net.neoforged.neoforge.common.NeoForge;
@@ -114,6 +117,9 @@ private static void init(FMLConstructModEvent ignored) {
114117
Objects.requireNonNull(modBus);
115118
var modContainer = ModLoadingContext.get().getActiveContainer();
116119

120+
modContainer.registerConfig(ModConfig.Type.CLIENT, MIClientConfig.SPEC);
121+
modContainer.registerExtensionPoint(IConfigScreenFactory.class, ConfigurationScreen::new);
122+
117123
NeoForge.EVENT_BUS.addListener(SteamDrillHighlight::onBlockHighlight);
118124
NeoForge.EVENT_BUS.addListener(MachineOverlayClient::onBlockOutline);
119125
DeferredBarrelTextRenderer.init();
@@ -132,7 +138,7 @@ private static void init(FMLConstructModEvent ignored) {
132138

133139
// Apparently tooltips are accessed from the main menu, or something, hence the
134140
// != null check
135-
if (Minecraft.getInstance().level != null && !MIConfig.getConfig().disableFuelTooltips) {
141+
if (Minecraft.getInstance().level != null && MIClientConfig.INSTANCE.fuelTooltips.getAsBoolean()) {
136142
try {
137143
int fuelTime = event.getItemStack().getBurnTime(null);
138144
if (fuelTime > 0) {
@@ -144,7 +150,7 @@ private static void init(FMLConstructModEvent ignored) {
144150
}
145151
}
146152

147-
if (event.getFlags().isAdvanced() && !MIConfig.getConfig().disableItemTagTooltips) {
153+
if (event.getFlags().isAdvanced() && MIClientConfig.INSTANCE.itemTagTooltips.getAsBoolean()) {
148154
var ids = event.getItemStack().getTags().map(TagKey::location).sorted().toList();
149155
for (ResourceLocation id : ids) {
150156
event.getToolTip().add(Component.literal("#" + id).setStyle(TextHelper.GRAY_TEXT));
@@ -161,10 +167,6 @@ private static void init(FMLConstructModEvent ignored) {
161167
false);
162168
});
163169

164-
modContainer.registerExtensionPoint(
165-
IConfigScreenFactory.class,
166-
(mc, parentScreen) -> AutoConfig.getConfigScreen(MIConfig.class, parentScreen).get());
167-
168170
modBus.addListener(RegisterRenderBuffersEvent.class, event -> {
169171
event.registerRenderBuffer(MIRenderTypes.cutoutHighlight());
170172
});
@@ -173,13 +175,13 @@ private static void init(FMLConstructModEvent ignored) {
173175
if (!ModList.get().isLoaded("emi") && !ModList.get().isLoaded("jei")
174176
&& !ModList.get().isLoaded("roughlyenoughitems")) {
175177
NeoForge.EVENT_BUS.addListener(ClientPlayerNetworkEvent.LoggingIn.class, event -> {
176-
if (MIConfig.getConfig().enableNoEmiMessage) {
178+
if (MIClientConfig.INSTANCE.missingRecipeViewerMessage.getAsBoolean()) {
177179
event.getPlayer().displayClientMessage(MIText.NoEmi.text().withStyle(ChatFormatting.GOLD), false);
178180
}
179181
});
180182
}
181183

182-
if (MIConfig.getConfig().datagenOnStartup) {
184+
if (MIStartupConfig.INSTANCE.datagenOnStartup.getAsBoolean()) {
183185
modBus.addListener(AddPackFindersEvent.class, event -> {
184186
if (event.getPackType() == PackType.CLIENT_RESOURCES) {
185187
RuntimeDataGen.run(MIDatagenClient::configure, MIDatagenServer::configure);

src/client/java/aztech/modern_industrialization/blocks/storage/barrel/BarrelRenderer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
*/
2424
package aztech.modern_industrialization.blocks.storage.barrel;
2525

26-
import aztech.modern_industrialization.MIConfig;
26+
import aztech.modern_industrialization.config.MIClientConfig;
2727
import aztech.modern_industrialization.thirdparty.fabrictransfer.api.item.ItemVariant;
2828
import aztech.modern_industrialization.util.RenderHelper;
2929
import com.mojang.blaze3d.vertex.PoseStack;
@@ -56,7 +56,7 @@ public void render(@NotNull BarrelBlockEntity entity, float tickDelta, @NotNull
5656
RenderHelper.drawLockedTexture(entity, matrices, vertexConsumers, itemNameColor);
5757
}
5858

59-
if (!MIConfig.getConfig().enableBarrelContentRendering) {
59+
if (!MIClientConfig.INSTANCE.barrelContentRendering.getAsBoolean()) {
6060
return;
6161
}
6262
int nesting = barrelNesting.get();

src/client/java/aztech/modern_industrialization/items/armor/HudRenderer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
*/
2424
package aztech.modern_industrialization.items.armor;
2525

26-
import aztech.modern_industrialization.MIConfig;
2726
import aztech.modern_industrialization.MIText;
27+
import aztech.modern_industrialization.config.MIClientConfig;
2828
import aztech.modern_industrialization.items.FluidFuelItemHelper;
2929
import net.minecraft.ChatFormatting;
3030
import net.minecraft.client.DeltaTracker;
@@ -41,7 +41,7 @@ public static void onRenderHud(GuiGraphics guiGraphics, DeltaTracker deltaTracke
4141
Minecraft mc = Minecraft.getInstance();
4242
if (mc.player != null) {
4343
guiGraphics.pose().pushPose();
44-
guiGraphics.pose().translate(0, MIConfig.getConfig().armorHudYPosition, 0);
44+
guiGraphics.pose().translate(0, MIClientConfig.INSTANCE.armorHudYPosition.getAsInt(), 0);
4545
ItemStack chest = mc.player.getItemBySlot(EquipmentSlot.CHEST);
4646
if (chest.getItem() instanceof JetpackItem jetpack) {
4747
boolean active = jetpack.isActivated(chest);

src/client/java/aztech/modern_industrialization/machines/multiblocks/MultiblockMachineBER.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
*/
2424
package aztech.modern_industrialization.machines.multiblocks;
2525

26-
import aztech.modern_industrialization.MIConfig;
2726
import aztech.modern_industrialization.MITags;
27+
import aztech.modern_industrialization.config.MIClientConfig;
2828
import aztech.modern_industrialization.machines.MachineBlock;
2929
import aztech.modern_industrialization.machines.MachineBlockEntityRenderer;
3030
import aztech.modern_industrialization.util.RenderHelper;
@@ -70,7 +70,7 @@ public void render(MultiblockMachineBlockEntity be, float tickDelta, PoseStack m
7070

7171
HatchFlags hatchFlag = matcher.getHatchFlags(pos);
7272
if (hatchType != null) {
73-
if (MIConfig.getConfig().enableHatchPlacementOverlay && hatchFlag != null && hatchFlag.allows(hatchType)) {
73+
if (MIClientConfig.INSTANCE.hatchPlacementOverlay.getAsBoolean() && hatchFlag != null && hatchFlag.allows(hatchType)) {
7474
// Highlight placeable hatches in green
7575
matrices.translate(-0.005, -0.005, -0.005);
7676
matrices.scale(1.01f, 1.01f, 1.01f);

src/client/java/aztech/modern_industrialization/misc/version/VersionEvents.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
package aztech.modern_industrialization.misc.version;
2525

2626
import aztech.modern_industrialization.MI;
27-
import aztech.modern_industrialization.MIConfig;
2827
import aztech.modern_industrialization.MIText;
28+
import aztech.modern_industrialization.config.MIClientConfig;
2929
import com.google.gson.JsonElement;
3030
import com.google.gson.JsonObject;
3131
import com.google.gson.JsonParser;
@@ -103,7 +103,7 @@ private static Version fetchVersion(boolean isIncludeAlphaVersion) throws Except
103103
public static void startVersionCheck(ModContainer miContainer, LocalPlayer player) {
104104
new Thread(() -> {
105105
try {
106-
if (MIConfig.getConfig().newVersionMessage) {
106+
if (MIClientConfig.INSTANCE.newVersionMessage.getAsBoolean()) {
107107
String currentVersion = miContainer.getModInfo().getVersion().toString();
108108
Version lastVersion = fetchVersion(currentVersion.contains(alphaPostfix));
109109

src/client/java/aztech/modern_industrialization/pipes/MIPipesClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@
2424
package aztech.modern_industrialization.pipes;
2525

2626
import aztech.modern_industrialization.MI;
27-
import aztech.modern_industrialization.MIConfig;
2827
import aztech.modern_industrialization.MIItem;
2928
import aztech.modern_industrialization.MIText;
29+
import aztech.modern_industrialization.config.MIStartupConfig;
3030
import aztech.modern_industrialization.pipes.api.PipeNetworkType;
3131
import aztech.modern_industrialization.pipes.api.PipeRenderer;
3232
import aztech.modern_industrialization.pipes.impl.PipeBlock;
@@ -134,7 +134,7 @@ private static void registerRenderers() {
134134
}
135135
}
136136

137-
if (MIConfig.loadAe2Compat()) {
137+
if (MIStartupConfig.INSTANCE.loadAe2Compat()) {
138138
try {
139139
Class.forName("aztech.modern_industrialization.compat.ae2.MIAEAddonClient")
140140
.getMethod("registerPipeRenderers")

src/client/java/aztech/modern_industrialization/pipes/impl/PipeUnbakedModel.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
package aztech.modern_industrialization.pipes.impl;
2525

2626
import aztech.modern_industrialization.MI;
27-
import aztech.modern_industrialization.MIConfig;
27+
import aztech.modern_industrialization.config.MIStartupConfig;
2828
import aztech.modern_industrialization.pipes.MIPipesClient;
2929
import aztech.modern_industrialization.pipes.api.PipeRenderer;
3030
import aztech.modern_industrialization.thirdparty.fabricrendering.SpriteFinderImpl;
@@ -63,7 +63,7 @@ public BakedModel bake(IGeometryBakingContext context, ModelBaker baker, Functio
6363
}
6464

6565
BakedModel[] meWireConnectors = null;
66-
if (MIConfig.loadAe2Compat()) {
66+
if (MIStartupConfig.INSTANCE.loadAe2Compat()) {
6767
meWireConnectors = RotatedModelHelper.loadRotatedModels(ME_WIRE_CONNECTOR_MODEL, baker, spriteGetter);
6868
}
6969

src/client/java/aztech/modern_industrialization/proxy/ClientProxy.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@
2424
package aztech.modern_industrialization.proxy;
2525

2626
import aztech.modern_industrialization.MIClient;
27-
import aztech.modern_industrialization.MIConfig;
2827
import aztech.modern_industrialization.blocks.storage.barrel.BarrelBlockEntity;
2928
import aztech.modern_industrialization.blocks.storage.barrel.BarrelRenderer;
3029
import aztech.modern_industrialization.blocks.storage.tank.AbstractTankBlockEntity;
3130
import aztech.modern_industrialization.blocks.storage.tank.TankRenderer;
31+
import aztech.modern_industrialization.config.MIClientConfig;
3232
import aztech.modern_industrialization.items.SteamDrillHooks;
3333
import aztech.modern_industrialization.machines.gui.MachineMenuClient;
3434
import aztech.modern_industrialization.machines.gui.MachineMenuCommon;
@@ -119,7 +119,7 @@ public MachineMenuCommon createClientMachineMenu(int syncId, Inventory playerInv
119119
@Override
120120
public BlockState getMachineCasingBlockState(BlockState state, BlockAndTintGetter renderView, BlockPos pos) {
121121
var be = renderView.getBlockEntity(pos); // Note: not safe to access fields!
122-
if (!MIConfig.getConfig().enableInterMachineConnectedTextures) {
122+
if (!MIClientConfig.INSTANCE.interMachineConnectedTextures.getAsBoolean()) {
123123
// Use the machine's own state, unless we are a hatch or a multiblock controller of course.
124124
if (!(be instanceof HatchBlockEntity) && !(be instanceof MultiblockMachineBlockEntity)) {
125125
return state;

0 commit comments

Comments
 (0)