ConfigEntryBuilderImpl.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package me.shedaniel.clothconfig2.impl;
  2. import me.shedaniel.clothconfig2.api.AbstractConfigListEntry;
  3. import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
  4. import me.shedaniel.clothconfig2.api.ModifierKeyCode;
  5. import me.shedaniel.clothconfig2.gui.entries.DropdownBoxEntry.SelectionCellCreator;
  6. import me.shedaniel.clothconfig2.gui.entries.DropdownBoxEntry.SelectionTopCellElement;
  7. import me.shedaniel.clothconfig2.impl.builders.*;
  8. import net.fabricmc.api.EnvType;
  9. import net.fabricmc.api.Environment;
  10. import java.util.List;
  11. import java.util.UUID;
  12. @Environment(EnvType.CLIENT)
  13. public class ConfigEntryBuilderImpl implements ConfigEntryBuilder {
  14. private String resetButtonKey = "text.cloth-config.reset_value";
  15. private ConfigEntryBuilderImpl() {
  16. }
  17. public static ConfigEntryBuilderImpl create() {
  18. return new ConfigEntryBuilderImpl();
  19. }
  20. public static ConfigEntryBuilderImpl createImmutable() {
  21. return new ConfigEntryBuilderImpl() {
  22. @Override
  23. public ConfigEntryBuilder setResetButtonKey(String resetButtonKey) {
  24. throw new UnsupportedOperationException("This is an immutable entry builder!");
  25. }
  26. };
  27. }
  28. @Override
  29. public String getResetButtonKey() {
  30. return resetButtonKey;
  31. }
  32. @Override
  33. public ConfigEntryBuilder setResetButtonKey(String resetButtonKey) {
  34. this.resetButtonKey = resetButtonKey;
  35. return this;
  36. }
  37. @Override
  38. public IntListBuilder startIntList(String fieldNameKey, List<Integer> value) {
  39. return new IntListBuilder(resetButtonKey, fieldNameKey, value);
  40. }
  41. @Override
  42. public LongListBuilder startLongList(String fieldNameKey, List<Long> value) {
  43. return new LongListBuilder(resetButtonKey, fieldNameKey, value);
  44. }
  45. @Override
  46. public FloatListBuilder startFloatList(String fieldNameKey, List<Float> value) {
  47. return new FloatListBuilder(resetButtonKey, fieldNameKey, value);
  48. }
  49. @Override
  50. public DoubleListBuilder startDoubleList(String fieldNameKey, List<Double> value) {
  51. return new DoubleListBuilder(resetButtonKey, fieldNameKey, value);
  52. }
  53. @Override
  54. public StringListBuilder startStrList(String fieldNameKey, List<String> value) {
  55. return new StringListBuilder(resetButtonKey, fieldNameKey, value);
  56. }
  57. @Override
  58. public SubCategoryBuilder startSubCategory(String fieldNameKey) {
  59. return new SubCategoryBuilder(resetButtonKey, fieldNameKey);
  60. }
  61. @Override
  62. public SubCategoryBuilder startSubCategory(String fieldNameKey, List<AbstractConfigListEntry> entries) {
  63. SubCategoryBuilder builder = new SubCategoryBuilder(resetButtonKey, fieldNameKey);
  64. builder.addAll(entries);
  65. return builder;
  66. }
  67. @Override
  68. public BooleanToggleBuilder startBooleanToggle(String fieldNameKey, boolean value) {
  69. return new BooleanToggleBuilder(resetButtonKey, fieldNameKey, value);
  70. }
  71. @Override
  72. public StringFieldBuilder startStrField(String fieldNameKey, String value) {
  73. return new StringFieldBuilder(resetButtonKey, fieldNameKey, value);
  74. }
  75. @Override
  76. public TextFieldBuilder startTextField(String fieldNameKey, String value) {
  77. return new TextFieldBuilder(resetButtonKey, fieldNameKey, value);
  78. }
  79. @Override
  80. public TextDescriptionBuilder startTextDescription(String value) {
  81. return new TextDescriptionBuilder(resetButtonKey, UUID.randomUUID().toString(), value);
  82. }
  83. @Override
  84. public <T extends Enum<?>> EnumSelectorBuilder<T> startEnumSelector(String fieldNameKey, Class<T> clazz, T value) {
  85. return new EnumSelectorBuilder<>(resetButtonKey, fieldNameKey, clazz, value);
  86. }
  87. @Override
  88. public <T> SelectorBuilder<T> startSelector(String fieldNameKey, T[] valuesArray, T value) {
  89. return new SelectorBuilder<>(resetButtonKey, fieldNameKey, valuesArray, value);
  90. }
  91. @Override
  92. public IntFieldBuilder startIntField(String fieldNameKey, int value) {
  93. return new IntFieldBuilder(resetButtonKey, fieldNameKey, value);
  94. }
  95. @Override
  96. public LongFieldBuilder startLongField(String fieldNameKey, long value) {
  97. return new LongFieldBuilder(resetButtonKey, fieldNameKey, value);
  98. }
  99. @Override
  100. public FloatFieldBuilder startFloatField(String fieldNameKey, float value) {
  101. return new FloatFieldBuilder(resetButtonKey, fieldNameKey, value);
  102. }
  103. @Override
  104. public DoubleFieldBuilder startDoubleField(String fieldNameKey, double value) {
  105. return new DoubleFieldBuilder(resetButtonKey, fieldNameKey, value);
  106. }
  107. @Override
  108. public IntSliderBuilder startIntSlider(String fieldNameKey, int value, int min, int max) {
  109. return new IntSliderBuilder(resetButtonKey, fieldNameKey, value, min, max);
  110. }
  111. @Override
  112. public LongSliderBuilder startLongSlider(String fieldNameKey, long value, long min, long max) {
  113. return new LongSliderBuilder(resetButtonKey, fieldNameKey, value, min, max);
  114. }
  115. @Override
  116. public KeyCodeBuilder startModifierKeyCodeField(String fieldNameKey, ModifierKeyCode value) {
  117. return new KeyCodeBuilder(resetButtonKey, fieldNameKey, value);
  118. }
  119. @Override
  120. public <T> DropdownMenuBuilder<T> startDropdownMenu(String fieldNameKey, SelectionTopCellElement<T> topCellElement, SelectionCellCreator<T> cellCreator) {
  121. return new DropdownMenuBuilder<>(resetButtonKey, fieldNameKey, topCellElement, cellCreator);
  122. }
  123. }