diff --git a/src/main/java/markil3/immersive_hud/Main.java b/src/main/java/markil3/immersive_hud/Main.java index 990b00c..b6ed0bd 100644 --- a/src/main/java/markil3/immersive_hud/Main.java +++ b/src/main/java/markil3/immersive_hud/Main.java @@ -21,8 +21,8 @@ import net.minecraft.util.text.TranslationTextComponent; import net.minecraftforge.fml.ExtensionPoint; import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.ModLoadingContext; +import net.minecraftforge.fml.VersionChecker; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.network.FMLNetworkConstants; @@ -31,14 +31,6 @@ import org.apache.commons.lang3.tuple.Pair; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import me.shedaniel.clothconfig2.api.AbstractConfigListEntry; -import me.shedaniel.clothconfig2.api.ConfigBuilder; -import me.shedaniel.clothconfig2.api.ConfigCategory; -import me.shedaniel.clothconfig2.api.ConfigEntryBuilder; -import me.shedaniel.clothconfig2.gui.entries.DoubleListEntry; -import me.shedaniel.clothconfig2.gui.entries.FloatListEntry; -import me.shedaniel.clothconfig2.gui.entries.IntegerListEntry; - /** * The main entry point for the Immersive HUD mod. * @@ -60,7 +52,17 @@ public class Main .getModEventBus() .addListener(this::setup); - setupScreen(); + try + { + if (Class.forName("me.shedaniel.clothconfig2.api.ConfigBuilder") != null) + { + ModMenu.setupScreen(); + } + } + catch (ClassNotFoundException e) + { + // Do nothing + } //Make sure the mod being absent on the other network side does not // cause the client to display the server as incompatible ModLoadingContext.get() @@ -69,166 +71,6 @@ public class Main (a, b) -> true)); } - private void startTimeField(ConfigEntryBuilder entryBuilder, - ConfigCategory cat, - ConfigManager.TimeValues value) - { - final float SHOW_TIME = 6; - final float FADE_IN = 0.25F; - final float FADE_OUT = 0.5F; - - DoubleListEntry maxTime = - entryBuilder.startDoubleField(new TranslationTextComponent( - "option.immersive_hud." + value.getName() + - "MaxTime"), - (float) value.getMaxTime() / TICKS_PER_SECOND) - .setDefaultValue(SHOW_TIME) - .setMin(0) - .setMax(10 * 60 * TICKS_PER_SECOND) // 10 Minutes - .setTooltip(new TranslationTextComponent( - "tooltip.immersive_hud." + value.getName() + - "MaxTime")) - .setSaveConsumer(val -> value.setMaxTime((int) (val * TICKS_PER_SECOND))) - .build(); - - DoubleListEntry fadeIn = - entryBuilder.startDoubleField(new TranslationTextComponent( - "option.immersive_hud." + value.getName() + - "FadeIn"), - (float) value.getFadeInTime() / TICKS_PER_SECOND) - .setDefaultValue(FADE_IN).setMin(0).setMax(10 * 60 * TICKS_PER_SECOND) - .setTooltip(new TranslationTextComponent( - "tooltip.immersive_hud." + value.getName() + - "FadeIn")) - .setSaveConsumer(val -> value.setFadeInTime((int) (val * TICKS_PER_SECOND))) - .build(); - - DoubleListEntry fadeOut = - entryBuilder.startDoubleField(new TranslationTextComponent( - "option.immersive_hud." + value.getName() + - "FadeOut"), - (float) value.getFadeOutTime() / TICKS_PER_SECOND) - .setDefaultValue(FADE_OUT) - .setMin(0) - .setMax(10 * 60 * TICKS_PER_SECOND) - .setTooltip(new TranslationTextComponent( - "tooltip.immersive_hud." + value.getName() + - "FadeOut")) - .setSaveConsumer(val -> value.setFadeOutTime((int) (val * TICKS_PER_SECOND))) - .build(); - - cat.addEntry(maxTime); - cat.addEntry(fadeIn); - cat.addEntry(fadeOut); - } - - private void setupScreen() - { - ModLoadingContext.get() - .registerExtensionPoint(ExtensionPoint.CONFIGGUIFACTORY, - () -> (mc, screen) -> { - ConfigCategory general; - ConfigEntryBuilder entryBuilder; - final ConfigBuilder builder = ConfigBuilder.create() - .setParentScreen(screen) - .setTitle(new TranslationTextComponent( - "immersive_hud.configGui.title")) - .setSavingRunnable(() -> { - ConfigManager.getInstance().save(); - }); - general = - builder.getOrCreateCategory(new TranslationTextComponent( - "category.immersive_hud.general")); - entryBuilder = builder.entryBuilder(); - - startTimeField(entryBuilder, - general, - ConfigManager.getInstance() - .getHotbarTime()); - startTimeField(entryBuilder, - general, - ConfigManager.getInstance() - .getExperenceTime()); - startTimeField(entryBuilder, - general, - ConfigManager.getInstance().getJumpTime()); - startTimeField(entryBuilder, - general, - ConfigManager.getInstance() - .getHealthTime()); - startTimeField(entryBuilder, - general, - ConfigManager.getInstance() - .getHungerTime()); - startTimeField(entryBuilder, - general, - ConfigManager.getInstance() - .getPotionTime()); - - general.addEntry(entryBuilder.startDoubleField(new TranslationTextComponent( - "option.immersive_hud" + - ".crosshairTime"), - (float) ConfigManager.getInstance() - .getCrosshairTime() / TICKS_PER_SECOND) - .setDefaultValue(6) - .setTooltip(new TranslationTextComponent( - "tooltip.immersive_hud" + - ".crosshairTime")) - .setSaveConsumer(val -> ConfigManager.getInstance() - .setCrosshairTime((int) (val * TICKS_PER_SECOND))) - .build()); - - general.addEntry(entryBuilder.startDoubleField(new TranslationTextComponent( - "option.immersive_hud.handTime"), - (float) ConfigManager.getInstance() - .getHandTime() / TICKS_PER_SECOND) - .setDefaultValue(30) - .setTooltip(new TranslationTextComponent( - "tooltip.immersive_hud.handTime")) - .setSaveConsumer(val -> ConfigManager.getInstance() - .setHandTime((int) (val * TICKS_PER_SECOND))) - .build()); - - general.addEntry(entryBuilder.startDoubleField(new TranslationTextComponent( - "option.immersive_hud.minHealth"), - ConfigManager.getInstance() - .getMinHealth()) - .setDefaultValue(0.5) - .setTooltip(new TranslationTextComponent( - "tooltip.immersive_hud.minHealth")) - .setSaveConsumer(val -> ConfigManager.getInstance() - .setMinHealth( - val)) - .build()); - - general.addEntry(entryBuilder.startIntField(new TranslationTextComponent( - "option.immersive_hud.minHunger"), - ConfigManager.getInstance() - .getMinHunger()) - .setDefaultValue(17) - .setTooltip(new TranslationTextComponent( - "tooltip.immersive_hud.minHunger")) - .setSaveConsumer(val -> ConfigManager.getInstance() - .setMinHunger( - val)) - .build()); - - general.addEntry(entryBuilder.startBooleanToggle(new TranslationTextComponent( - "option.immersive_hud.showArmor"), - ConfigManager.getInstance() - .shouldShowArmor()) - .setDefaultValue(true) - .setTooltip(new TranslationTextComponent( - "tooltip.immersive_hud.showArmor")) - .setSaveConsumer(val -> ConfigManager.getInstance() - .shouldShowArmor( - val)) - .build()); - - return builder.build(); - }); - } - private void setup(final FMLClientSetupEvent event) { } diff --git a/src/main/java/markil3/immersive_hud/ModMenu.java b/src/main/java/markil3/immersive_hud/ModMenu.java new file mode 100644 index 0000000..a5090e7 --- /dev/null +++ b/src/main/java/markil3/immersive_hud/ModMenu.java @@ -0,0 +1,176 @@ +package markil3.immersive_hud; + +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraftforge.fml.ExtensionPoint; +import net.minecraftforge.fml.ModLoadingContext; + +import me.shedaniel.clothconfig2.api.ConfigBuilder; +import me.shedaniel.clothconfig2.api.ConfigCategory; +import me.shedaniel.clothconfig2.api.ConfigEntryBuilder; +import me.shedaniel.clothconfig2.gui.entries.DoubleListEntry; + +import static markil3.immersive_hud.Main.TICKS_PER_SECOND; + +public class ModMenu +{ + + static void startTimeField(ConfigEntryBuilder entryBuilder, + ConfigCategory cat, + ConfigManager.TimeValues value) + { + final float SHOW_TIME = 6; + final float FADE_IN = 0.25F; + final float FADE_OUT = 0.5F; + + DoubleListEntry maxTime = + entryBuilder.startDoubleField(new TranslationTextComponent( + "option.immersive_hud." + value.getName() + + "MaxTime"), + (float) value.getMaxTime() / TICKS_PER_SECOND) + .setDefaultValue(SHOW_TIME) + .setMin(0) + .setMax(10 * 60 * TICKS_PER_SECOND) // 10 Minutes + .setTooltip(new TranslationTextComponent( + "tooltip.immersive_hud." + value.getName() + + "MaxTime")) + .setSaveConsumer(val -> value.setMaxTime((int) (val * TICKS_PER_SECOND))) + .build(); + + DoubleListEntry fadeIn = + entryBuilder.startDoubleField(new TranslationTextComponent( + "option.immersive_hud." + value.getName() + + "FadeIn"), + (float) value.getFadeInTime() / TICKS_PER_SECOND) + .setDefaultValue(FADE_IN).setMin(0).setMax(10 * 60 * TICKS_PER_SECOND) + .setTooltip(new TranslationTextComponent( + "tooltip.immersive_hud." + value.getName() + + "FadeIn")) + .setSaveConsumer(val -> value.setFadeInTime((int) (val * TICKS_PER_SECOND))) + .build(); + + DoubleListEntry fadeOut = + entryBuilder.startDoubleField(new TranslationTextComponent( + "option.immersive_hud." + value.getName() + + "FadeOut"), + (float) value.getFadeOutTime() / TICKS_PER_SECOND) + .setDefaultValue(FADE_OUT) + .setMin(0) + .setMax(10 * 60 * TICKS_PER_SECOND) + .setTooltip(new TranslationTextComponent( + "tooltip.immersive_hud." + value.getName() + + "FadeOut")) + .setSaveConsumer(val -> value.setFadeOutTime((int) (val * TICKS_PER_SECOND))) + .build(); + + cat.addEntry(maxTime); + cat.addEntry(fadeIn); + cat.addEntry(fadeOut); + } + + static void setupScreen() + { + ModLoadingContext.get() + .registerExtensionPoint(ExtensionPoint.CONFIGGUIFACTORY, + () -> (mc, screen) -> { + ConfigCategory general; + ConfigEntryBuilder entryBuilder; + final ConfigBuilder builder = ConfigBuilder.create() + .setParentScreen(screen) + .setTitle(new TranslationTextComponent( + "immersive_hud.configGui.title")) + .setSavingRunnable(() -> { + ConfigManager.getInstance().save(); + }); + general = + builder.getOrCreateCategory(new TranslationTextComponent( + "category.immersive_hud.general")); + entryBuilder = builder.entryBuilder(); + + startTimeField(entryBuilder, + general, + ConfigManager.getInstance() + .getHotbarTime()); + startTimeField(entryBuilder, + general, + ConfigManager.getInstance() + .getExperenceTime()); + startTimeField(entryBuilder, + general, + ConfigManager.getInstance().getJumpTime()); + startTimeField(entryBuilder, + general, + ConfigManager.getInstance() + .getHealthTime()); + startTimeField(entryBuilder, + general, + ConfigManager.getInstance() + .getHungerTime()); + startTimeField(entryBuilder, + general, + ConfigManager.getInstance() + .getPotionTime()); + + general.addEntry(entryBuilder.startDoubleField(new TranslationTextComponent( + "option.immersive_hud" + + ".crosshairTime"), + (float) ConfigManager.getInstance() + .getCrosshairTime() / TICKS_PER_SECOND) + .setDefaultValue(6) + .setTooltip(new TranslationTextComponent( + "tooltip.immersive_hud" + + ".crosshairTime")) + .setSaveConsumer(val -> ConfigManager.getInstance() + .setCrosshairTime((int) (val * TICKS_PER_SECOND))) + .build()); + + general.addEntry(entryBuilder.startDoubleField(new TranslationTextComponent( + "option.immersive_hud.handTime"), + (float) ConfigManager.getInstance() + .getHandTime() / TICKS_PER_SECOND) + .setDefaultValue(30) + .setTooltip(new TranslationTextComponent( + "tooltip.immersive_hud.handTime")) + .setSaveConsumer(val -> ConfigManager.getInstance() + .setHandTime((int) (val * TICKS_PER_SECOND))) + .build()); + + general.addEntry(entryBuilder.startDoubleField(new TranslationTextComponent( + "option.immersive_hud.minHealth"), + ConfigManager.getInstance() + .getMinHealth()) + .setDefaultValue(0.5) + .setTooltip(new TranslationTextComponent( + "tooltip.immersive_hud.minHealth")) + .setSaveConsumer(val -> ConfigManager.getInstance() + .setMinHealth( + val)) + .build()); + + general.addEntry(entryBuilder.startIntField(new TranslationTextComponent( + "option.immersive_hud.minHunger"), + ConfigManager.getInstance() + .getMinHunger()) + .setDefaultValue(17) + .setTooltip(new TranslationTextComponent( + "tooltip.immersive_hud.minHunger")) + .setSaveConsumer(val -> ConfigManager.getInstance() + .setMinHunger( + val)) + .build()); + + general.addEntry(entryBuilder.startBooleanToggle(new TranslationTextComponent( + "option.immersive_hud.showArmor"), + ConfigManager.getInstance() + .shouldShowArmor()) + .setDefaultValue(true) + .setTooltip(new TranslationTextComponent( + "tooltip.immersive_hud.showArmor")) + .setSaveConsumer(val -> ConfigManager.getInstance() + .shouldShowArmor( + val)) + .build()); + + return builder.build(); + }); + } +}