BoundedEntry.java 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package me.lortseam.completeconfig.data;
  2. import lombok.Getter;
  3. import lombok.extern.log4j.Log4j2;
  4. import me.lortseam.completeconfig.data.entry.EntryOrigin;
  5. import java.math.BigDecimal;
  6. @Log4j2
  7. public class BoundedEntry<T extends Number> extends Entry<T> {
  8. @Getter
  9. private final T min, max;
  10. @Getter
  11. private final boolean slider;
  12. public BoundedEntry(EntryOrigin origin, T min, T max, boolean slider) {
  13. super(origin, value -> {
  14. if (new BigDecimal(value.toString()).compareTo(new BigDecimal(min.toString())) < 0) {
  15. logger.warn("[CompleteConfig] Tried to set value of field " + origin.getField() + " to a value less than minimum bound, setting to minimum now!");
  16. return min;
  17. } else if (new BigDecimal(value.toString()).compareTo(new BigDecimal(max.toString())) > 0) {
  18. logger.warn("[CompleteConfig] Tried to set value of field " + origin.getField() + " to a value greater than maximum bound, setting to maximum now!");
  19. return max;
  20. }
  21. return value;
  22. });
  23. this.min = min;
  24. this.max = max;
  25. this.slider = slider;
  26. }
  27. public BoundedEntry(EntryOrigin origin, T min, T max) {
  28. this(origin, min, max, false);
  29. }
  30. }