116 lines
4.8 KiB
Java
116 lines
4.8 KiB
Java
package me.zacharias.speedometer;
|
|
|
|
import me.shedaniel.clothconfig2.api.*;
|
|
import net.minecraft.client.gui.screens.Screen;
|
|
import net.minecraft.network.chat.Component;
|
|
|
|
import java.util.Optional;
|
|
|
|
public class ConfigMenu {
|
|
public static ConfigBuilder getConfig(Screen parent) {
|
|
ConfigBuilder builder = ConfigBuilder.create()
|
|
.setParentScreen(parent)
|
|
.setTitle(Component.translatable("speedometer.config.name"));
|
|
|
|
ConfigCategory category = builder.getOrCreateCategory(Component.translatable("speedometer.config.category.name"));
|
|
|
|
ConfigEntryBuilder entryBuilder = builder.entryBuilder();
|
|
|
|
category.addEntry(entryBuilder.startEnumSelector(Component.translatable("speedometer.config.speed"), SpeedTypes.class, me.zacharias.speedometer.Config.getSpeedType())
|
|
.setEnumNameProvider(SpeedTypes::getName)
|
|
.setSaveConsumer(me.zacharias.speedometer.Config::setSpeedType)
|
|
.build()
|
|
);
|
|
|
|
category.addEntry(entryBuilder.startColorField(Component.translatable("speedometer.config.color"), me.zacharias.speedometer.Config.getColor().getRGB())
|
|
.setSaveConsumer2(color -> {
|
|
me.zacharias.speedometer.Config.setColor(color.getRed(), color.getGreen(), color.getBlue());
|
|
})
|
|
.build()
|
|
);
|
|
|
|
category.addEntry(entryBuilder.startBooleanToggle(Component.translatable("speedometer.config.knot"), me.zacharias.speedometer.Config.getUseKnot())
|
|
.setSaveConsumer(me.zacharias.speedometer.Config::setUseKnot)
|
|
.setYesNoTextSupplier(useKnot -> Component.translatable("speedometer.useKnot."+useKnot))
|
|
.build()
|
|
);
|
|
|
|
category.addEntry(entryBuilder.startBooleanToggle(Component.translatable("speedometer.config.visualSpeedometer"), me.zacharias.speedometer.Config.getVisualSpeedometer())
|
|
.setSaveConsumer(me.zacharias.speedometer.Config::setVisualSpeedometer)
|
|
.setYesNoTextSupplier((visualSpeedometer -> Component.translatable("speedometer.visualSpeedometer."+visualSpeedometer)))
|
|
.setRequirement(Requirement.isFalse(Config::isDisableVisualSpeedometer))
|
|
.build()
|
|
);
|
|
|
|
// Regex
|
|
|
|
String xRegex = "W*w*S*s*\\+*-*\\**/*[0-9]*";
|
|
String yRegex = "H*h*S*s*\\+*-*\\**/*[0-9]*";
|
|
|
|
category.addEntry(entryBuilder.startStringDropdownMenu(Component.translatable("speedometer.config.xPosition"), Config.getXPosition())
|
|
.setSaveConsumer(Config::setXPosition)
|
|
.setErrorSupplier(xPosition -> {
|
|
if(xPosition.matches(xRegex)){
|
|
return Optional.empty();
|
|
}else{
|
|
return Optional.of(Component.translatable("speedometer.invalid"));
|
|
}
|
|
})
|
|
.setTooltip(
|
|
Component.translatable("speedometer.config.tooltip.xPosition.line1"),
|
|
Component.translatable("speedometer.config.tooltip.xPosition.line2"),
|
|
Component.translatable("speedometer.config.tooltip.xPosition.line3")
|
|
)
|
|
.build()
|
|
);
|
|
|
|
|
|
category.addEntry(entryBuilder.startStringDropdownMenu(Component.translatable("speedometer.config.yPosition"), Config.getYPosition())
|
|
.setSaveConsumer(Config::setYPosition)
|
|
.setErrorSupplier(yPosition -> {
|
|
if(yPosition.matches(yRegex)){
|
|
return Optional.empty();
|
|
}else{
|
|
return Optional.of(Component.translatable("speedometer.invalid"));
|
|
}
|
|
})
|
|
.setTooltip(
|
|
Component.translatable("speedometer.config.tooltip.yPosition.line1"),
|
|
Component.translatable("speedometer.config.tooltip.yPosition.line2"),
|
|
Component.translatable("speedometer.config.tooltip.yPosition.line3")
|
|
)
|
|
.build()
|
|
);
|
|
|
|
// Size of visual image
|
|
|
|
category.addEntry(entryBuilder.startIntField(Component.translatable("speedometer.config.imageSize"), Config.getImageSize())
|
|
.setSaveConsumer(Config::setImageSize)
|
|
.setTooltip(Component.translatable("speedometer.config.tooltip.imageSize"))
|
|
.build()
|
|
);
|
|
|
|
// Show visual speed type
|
|
|
|
category.addEntry(entryBuilder.startBooleanToggle(Component.translatable("speedometer.config.showSpeedType"), Config.getShowSpeedType())
|
|
.setSaveConsumer(Config::setShowSpeedType)
|
|
.setYesNoTextSupplier(showSpeedType -> Component.translatable("speedometer."+(showSpeedType?"show":"hide")))
|
|
.setTooltip(Component.translatable("speedometer.config.tooltip.showSpeedType.line1"))
|
|
.build()
|
|
);
|
|
|
|
|
|
|
|
category.addEntry(entryBuilder.startBooleanToggle(Component.translatable("speedometer.config.debug"),Config.isDebug())
|
|
.setSaveConsumer(Config::setDebug)
|
|
.setYesNoTextSupplier(isDebug -> Component.translatable("speedometer.debug."+isDebug))
|
|
.setTooltip(Component.translatable("speedometer.config.tooltip.debug"))
|
|
.build()
|
|
);
|
|
|
|
builder.setSavingRunnable(me.zacharias.speedometer.Config::save);
|
|
|
|
return builder;
|
|
}
|
|
}
|