BooleanEntry.java 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package me.lortseam.completeconfig.data;
  2. import me.lortseam.completeconfig.api.ConfigEntry;
  3. import me.lortseam.completeconfig.data.text.TranslationKey;
  4. import net.fabricmc.api.EnvType;
  5. import net.fabricmc.api.Environment;
  6. import net.minecraft.text.Text;
  7. import org.apache.commons.lang3.StringUtils;
  8. import java.util.HashMap;
  9. import java.util.Map;
  10. import java.util.Optional;
  11. import java.util.function.Function;
  12. public class BooleanEntry extends Entry<Boolean> {
  13. @Environment(EnvType.CLIENT)
  14. private Map<Boolean, TranslationKey> valueTranslations;
  15. BooleanEntry(EntryOrigin origin) {
  16. super(origin);
  17. }
  18. @Environment(EnvType.CLIENT)
  19. private Map<Boolean, TranslationKey> getValueTranslations() {
  20. if (valueTranslations == null) {
  21. valueTranslations = new HashMap<>();
  22. Optional<ConfigEntry.Boolean> annotation = origin.getOptionalAnnotation(ConfigEntry.Boolean.class);
  23. if (annotation.isPresent()) {
  24. if (!StringUtils.isBlank(annotation.get().trueTranslationKey())) {
  25. valueTranslations.put(true, getTranslation().root().append(annotation.get().trueTranslationKey()));
  26. }
  27. if (!StringUtils.isBlank(annotation.get().falseTranslationKey())) {
  28. valueTranslations.put(false, getTranslation().root().append(annotation.get().falseTranslationKey()));
  29. }
  30. }
  31. TranslationKey defaultTrueTranslation = getTranslation().append("true");
  32. if (defaultTrueTranslation.exists()) {
  33. valueTranslations.putIfAbsent(true, defaultTrueTranslation);
  34. }
  35. TranslationKey defaultFalseTranslation = getTranslation().append("false");
  36. if (defaultFalseTranslation.exists()) {
  37. valueTranslations.putIfAbsent(false, defaultFalseTranslation);
  38. }
  39. }
  40. return valueTranslations;
  41. }
  42. @Environment(EnvType.CLIENT)
  43. public Function<Boolean, Text> getValueTextSupplier() {
  44. if (getValueTranslations().isEmpty()) {
  45. return null;
  46. }
  47. return value -> getValueTranslations().get(value).toText();
  48. }
  49. }