Makes the Cloth API optional.
This commit is contained in:
@@ -21,8 +21,8 @@ import net.minecraft.util.text.TranslationTextComponent;
|
|||||||
import net.minecraftforge.fml.ExtensionPoint;
|
import net.minecraftforge.fml.ExtensionPoint;
|
||||||
import net.minecraftforge.fml.ModList;
|
import net.minecraftforge.fml.ModList;
|
||||||
import net.minecraftforge.fml.ModLoadingContext;
|
import net.minecraftforge.fml.ModLoadingContext;
|
||||||
|
import net.minecraftforge.fml.VersionChecker;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import net.minecraftforge.fml.config.ModConfig;
|
|
||||||
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
||||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||||
import net.minecraftforge.fml.network.FMLNetworkConstants;
|
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.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
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.
|
* The main entry point for the Immersive HUD mod.
|
||||||
*
|
*
|
||||||
@@ -60,7 +52,17 @@ public class Main
|
|||||||
.getModEventBus()
|
.getModEventBus()
|
||||||
.addListener(this::setup);
|
.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
|
//Make sure the mod being absent on the other network side does not
|
||||||
// cause the client to display the server as incompatible
|
// cause the client to display the server as incompatible
|
||||||
ModLoadingContext.get()
|
ModLoadingContext.get()
|
||||||
@@ -69,166 +71,6 @@ public class Main
|
|||||||
(a, b) -> true));
|
(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)
|
private void setup(final FMLClientSetupEvent event)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
176
src/main/java/markil3/immersive_hud/ModMenu.java
Normal file
176
src/main/java/markil3/immersive_hud/ModMenu.java
Normal file
@@ -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();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user