AbstractConfigEntry.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package me.shedaniel.clothconfig2.api;
  2. import me.shedaniel.clothconfig2.gui.ClothConfigScreen;
  3. import me.shedaniel.clothconfig2.gui.widget.DynamicElementListWidget;
  4. import net.fabricmc.api.EnvType;
  5. import net.fabricmc.api.Environment;
  6. import net.minecraft.client.util.math.MatrixStack;
  7. import net.minecraft.text.Text;
  8. import java.util.Optional;
  9. import java.util.function.Supplier;
  10. @Environment(EnvType.CLIENT)
  11. public abstract class AbstractConfigEntry<T> extends DynamicElementListWidget.ElementEntry<AbstractConfigEntry<T>> {
  12. private ClothConfigScreen screen;
  13. private Supplier<Optional<Text>> errorSupplier;
  14. public abstract boolean isRequiresRestart();
  15. public abstract void setRequiresRestart(boolean requiresRestart);
  16. public abstract Text getFieldName();
  17. public abstract T getValue();
  18. public final Optional<Text> getConfigError() {
  19. if (errorSupplier != null && errorSupplier.get().isPresent())
  20. return errorSupplier.get();
  21. return getError();
  22. }
  23. public void lateRender(MatrixStack matrices, int mouseX, int mouseY, float delta) {}
  24. public void setErrorSupplier(Supplier<Optional<Text>> errorSupplier) {
  25. this.errorSupplier = errorSupplier;
  26. }
  27. public Optional<Text> getError() {
  28. return Optional.empty();
  29. }
  30. public abstract Optional<T> getDefaultValue();
  31. public final ClothConfigScreen.ListWidget getParent() {
  32. return screen.listWidget;
  33. }
  34. public final ClothConfigScreen getScreen() {
  35. return screen;
  36. }
  37. public void updateSelected(boolean isSelected) {}
  38. @Deprecated
  39. public final void setScreen(ClothConfigScreen screen) {
  40. this.screen = screen;
  41. }
  42. public abstract void save();
  43. @Override
  44. public int getItemHeight() {
  45. return 24;
  46. }
  47. }