EnumEntry.java 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package me.lortseam.completeconfig.data;
  2. import com.google.common.base.CaseFormat;
  3. import lombok.Getter;
  4. import me.lortseam.completeconfig.api.ConfigEntry;
  5. import me.lortseam.completeconfig.api.ConfigEntryContainer;
  6. import me.lortseam.completeconfig.data.gui.TranslationIdentifier;
  7. import net.minecraft.text.Text;
  8. import java.lang.reflect.Field;
  9. import java.util.function.Function;
  10. public class EnumEntry<T extends Enum<?>> extends Entry<T> {
  11. @Getter
  12. private final DisplayType displayType;
  13. EnumEntry(Field field, ConfigEntryContainer parentObject, TranslationIdentifier parentTranslation, DisplayType displayType) {
  14. super(field, parentObject, parentTranslation);
  15. this.displayType = displayType;
  16. }
  17. EnumEntry(Field field, ConfigEntryContainer parentObject, TranslationIdentifier parentTranslation) {
  18. this(field, parentObject, parentTranslation, DisplayType.DEFAULT);
  19. }
  20. public Function<Enum, Text> getEnumNameProvider() {
  21. return enumValue -> getTranslation().append(CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, enumValue.name())).translate();
  22. }
  23. public enum DisplayType {
  24. BUTTON, DROPDOWN;
  25. private static final DisplayType DEFAULT;
  26. static {
  27. try {
  28. DEFAULT = (DisplayType) ConfigEntry.EnumOptions.class.getDeclaredMethod("displayType").getDefaultValue();
  29. } catch (NoSuchMethodException e) {
  30. throw new RuntimeException(e);
  31. }
  32. }
  33. }
  34. }