Mod will delete config if config version is incorrect.

This commit is contained in:
nelle 2023-09-29 23:13:41 -06:00
parent 26b48d32f3
commit 62a6ba7386
7 changed files with 78 additions and 14 deletions

View file

@ -37,3 +37,6 @@ The Changelog for this mod. Standard SemVer
- Updated language file - Updated language file
- New Cooked Egg Texture - New Cooked Egg Texture
## [0.1.3-dev]
- Config is deleted if config version is set incorrectly

View file

@ -12,7 +12,7 @@ org.gradle.jvmargs=-Xmx1G
fabric_version = 1.9.0+1.7.10 fabric_version = 1.9.0+1.7.10
# Mod Properties # Mod Properties
mod_version = 0.1.2-dev mod_version = 0.1.3-dev
maven_group = xyz.limepot maven_group = xyz.limepot
archives_base_name = EMB archives_base_name = EMB
projchangelog = Changelog! projchangelog = Changelog!

View file

@ -16,7 +16,7 @@ public class EMB implements ModInitializer {
//Mod ID //Mod ID
public static final String MOD_ID = "emb"; public static final String MOD_ID = "emb";
public static final String MOD_VER = "0.1.2-dev"; public static final String MOD_VER = "0.1.3-dev";
//Initialize Logger //Initialize Logger
public static final Logger LOGGER = LogManager.getLogger("Even More Bountiful"); public static final Logger LOGGER = LogManager.getLogger("Even More Bountiful");

View file

@ -3,13 +3,14 @@ package xyz.limepot.emb.config;
import net.minecraft.util.Pair; import net.minecraft.util.Pair;
import xyz.limepot.emb.EMB; import xyz.limepot.emb.EMB;
import java.io.*;
public class ModConfigs { public class ModConfigs {
public static SimpleConfig CONFIG; public static SimpleConfig CONFIG;
private static ModConfigProvider configs; private static ModConfigProvider configs;
public static boolean TUTORIAL_BUTTON_TOGGLE; public static boolean TUTORIAL_BUTTON_TOGGLE;
public static boolean CONFIG_BUTTON_TOGGLE; public static boolean CONFIG_BUTTON_TOGGLE;
public static boolean ENABLE_ACHIEVEMENTS; public static boolean ENABLE_ACHIEVEMENTS;
public static int CONFIG_VERSION; public static int CONFIG_VERSION;
public static void registerConfigs() { public static void registerConfigs() {
@ -19,16 +20,23 @@ public class ModConfigs {
CONFIG = SimpleConfig.of(EMB.MOD_ID).provider(configs).request(); CONFIG = SimpleConfig.of(EMB.MOD_ID).provider(configs).request();
assignConfigs(); assignConfigs();
if(CONFIG_VERSION == 1){
return;
}
else{
CONFIG.delete();
}
} }
private static void createConfigs() { private static void createConfigs() {
configs.addKeyValuePair(new Pair("config.version", 1), "Do Not Edit, this can break things"); configs.addKeyValuePair(new Pair("config.version", 1), "DO NOT EDIT! If this value is anything other than default the mod will delete it.");
configs.addKeyValuePair(new Pair("tutorial.button.toggle", false), "True Or False - True being enable the feature, False being disable"); configs.addKeyValuePair(new Pair("tutorial.button.toggle", false), "True Or False - True being enable the feature, False being disable.");
configs.addKeyValuePair(new Pair("config.button.toggle", false), "True Or False - True being enable the feature, False being disable"); configs.addKeyValuePair(new Pair("config.button.toggle", false), "True Or False - True being enable the feature, False being disable.");
configs.addKeyValuePair(new Pair("enable.achievements", false), "True Or False - True being enable the feature, False being disable"); configs.addKeyValuePair(new Pair("enable.achievements", false), "True Or False - True being enable the feature, False being disable.");
} }
private static void assignConfigs() { private static void assignConfigs() {
CONFIG_VERSION = CONFIG.getOrDefault("config.version", 1);
TUTORIAL_BUTTON_TOGGLE = CONFIG.getOrDefault("tutorial.button.toggle", false); TUTORIAL_BUTTON_TOGGLE = CONFIG.getOrDefault("tutorial.button.toggle", false);
CONFIG_BUTTON_TOGGLE = CONFIG.getOrDefault("config.button.toggle", false); CONFIG_BUTTON_TOGGLE = CONFIG.getOrDefault("config.button.toggle", false);
ENABLE_ACHIEVEMENTS = CONFIG.getOrDefault("enable.achievements", false); ENABLE_ACHIEVEMENTS = CONFIG.getOrDefault("enable.achievements", false);

View file

@ -41,7 +41,7 @@ public class SimpleConfig {
private static final Logger LOGGER = LogManager.getLogger("SimpleConfig"); private static final Logger LOGGER = LogManager.getLogger("SimpleConfig");
private final HashMap<String, String> config = new HashMap<>(); private final HashMap<String, String> config = new HashMap<>();
private final ConfigRequest request; private final ConfigRequest request;
private boolean broken = false; private static boolean broken = false;
public interface DefaultConfig { public interface DefaultConfig {
String get( String namespace ); String get( String namespace );
@ -86,7 +86,7 @@ public class SimpleConfig {
return new SimpleConfig( this ); return new SimpleConfig( this );
} }
private String getConfig() { String getConfig() {
return provider.get( filename ) + "\n"; return provider.get( filename ) + "\n";
} }
@ -101,8 +101,8 @@ public class SimpleConfig {
*/ */
public static ConfigRequest of( String filename ) { public static ConfigRequest of( String filename ) {
Path path = FabricLoader.getInstance().getConfigDir(); Path path = FabricLoader.getInstance().getConfigDir();
//Changed from .properties to .conf by LimePotato //Changed from .properties to .cfg by LimePotato
return new ConfigRequest( path.resolve( filename + ".conf" ).toFile(), filename ); return new ConfigRequest( path.resolve( filename + ".cfg" ).toFile(), filename );
} }
private void createConfig() throws IOException { private void createConfig() throws IOException {

View file

@ -0,0 +1,54 @@
package xyz.limepot.emb.gui.screen;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.gui.screen.*;
import net.minecraft.client.gui.widget.*;
import net.minecraft.client.option.GameOptions;
import net.minecraft.client.resource.language.I18n;
import xyz.limepot.emb.config.ModConfigs;
@Environment(EnvType.CLIENT)
public class EMBConfScreen extends Screen implements IdentifiableBooleanConsumer {
private final Screen parent;
private final GameOptions options;
protected String title = "EMB Configs";
public EMBConfScreen(Screen screen, GameOptions gameOptions) {
this.parent = screen;
this.options = gameOptions;
}
@Override
public void init() {
this.title = I18n.translate("options.embConfTitle");
if(ModConfigs.TUTORIAL_BUTTON_TOGGLE) {
this.buttons.add(new ButtonWidget(900, this.width / 2 - 155, this.height / 6 + 72 - 6, 150, 20, I18n.translate("emb.options.toggle.tutorial.enable")));
}
else{
this.buttons.add(new ButtonWidget(901, this.width / 2 - 155, this.height / 6 + 72 - 6, 150, 20, I18n.translate("emb.options.toggle.tutorial.disable")));
}
this.buttons.add(new ButtonWidget(200, this.width / 2 - 100, this.height / 6 + 168, I18n.translate("gui.done")));
}
@Override
protected void buttonClicked(ButtonWidget button) {
if (button.active) {
if (button.id == 900) {
ModConfigs.TUTORIAL_BUTTON_TOGGLE = false;
}
if (button.id == 901) {
ModConfigs.TUTORIAL_BUTTON_TOGGLE = true;
}
}
}
@Override
public void render(int mouseX, int mouseY, float tickDelta) {
this.renderBackground();
this.drawCenteredString(this.textRenderer, this.title, this.width / 2, 15, 16777215);
super.render(mouseX, mouseY, tickDelta);
}
}

View file

@ -9,8 +9,7 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import xyz.limepot.emb.config.ModConfigs; import xyz.limepot.emb.config.ModConfigs;
import xyz.limepot.emb.gui.screen.EMBConfScreen;
import static xyz.limepot.emb.config.ModConfigs.TUTORIAL_BUTTON_TOGGLE;
@Mixin(SettingsScreen.class) @Mixin(SettingsScreen.class)
public class SettingScreenMixin extends Screen { public class SettingScreenMixin extends Screen {
@ -23,7 +22,7 @@ public class SettingScreenMixin extends Screen {
@Inject(at = @At("RETURN"), method = "buttonClicked") @Inject(at = @At("RETURN"), method = "buttonClicked")
private void CustomButtonClicked(ButtonWidget par1, CallbackInfo ci) { private void CustomButtonClicked(ButtonWidget par1, CallbackInfo ci) {
if (par1.id == 13) this.client.setScreen(new SettingsScreen(this, this.client.options)); if (par1.id == 13) this.client.setScreen(new EMBConfScreen(this, this.client.options));
} }
} }