Explorar el Código

Fix compile error

Danielshe hace 5 años
padre
commit
9552281acf

+ 2 - 4
src/main/java/me/shedaniel/clothconfig2/api/ConfigEntryBuilder.java

@@ -1,7 +1,5 @@
 package me.shedaniel.clothconfig2.api;
 
-import com.sun.istack.internal.NotNull;
-import com.sun.istack.internal.Nullable;
 import me.shedaniel.clothconfig2.impl.ConfigEntryBuilderImpl;
 import me.shedaniel.clothconfig2.impl.builders.*;
 
@@ -39,9 +37,9 @@ public interface ConfigEntryBuilder {
     
     TextDescriptionBuilder startTextDescription(String value);
     
-    <T extends Enum<?>> EnumSelectorBuilder<T> startEnumSelector(String fieldNameKey, Class<T> clazz, @NotNull T value);
+    <T extends Enum<?>> EnumSelectorBuilder<T> startEnumSelector(String fieldNameKey, Class<T> clazz, T value);
     
-    <T> SelectorBuilder<T> startSelector(String fieldNameKey, @Nullable T[] valuesArray, @NotNull T value);
+    <T> SelectorBuilder<T> startSelector(String fieldNameKey, T[] valuesArray, T value);
     
     IntFieldBuilder startIntField(String fieldNameKey, int value);
     

+ 16 - 5
src/main/java/me/shedaniel/clothconfig2/gui/widget/DynamicNewSmoothScrollingEntryListWidget.java

@@ -1,6 +1,7 @@
 package me.shedaniel.clothconfig2.gui.widget;
 
 import me.shedaniel.clothconfig2.ClothConfigInitializer;
+import me.shedaniel.clothconfig2.api.RunSixtyTimesEverySec;
 import me.shedaniel.math.api.Rectangle;
 import me.shedaniel.math.impl.PointHelper;
 import net.minecraft.client.MinecraftClient;
@@ -18,11 +19,24 @@ public abstract class DynamicNewSmoothScrollingEntryListWidget<E extends Dynamic
     protected boolean smoothScrolling = true;
     protected long start;
     protected long duration;
+    protected RunSixtyTimesEverySec clamper = () -> {
+        target = clamp(target);
+        if (target < 0) {
+            target = target * getBounceBackMultiplier();
+        } else if (target > getMaxScroll()) {
+            target = (target - getMaxScroll()) * getBounceBackMultiplier() + getMaxScroll();
+        } else
+            unregisterClamper();
+    };
     
     public DynamicNewSmoothScrollingEntryListWidget(MinecraftClient client, int width, int height, int top, int bottom, Identifier backgroundLocation) {
         super(client, width, height, top, bottom, backgroundLocation);
     }
     
+    protected void unregisterClamper() {
+        clamper.unregisterTick();
+    }
+    
     public final double clamp(double v) {
         return clamp(v, SmoothScrollingSettings.CLAMP_EXTENSION);
     }
@@ -109,11 +123,8 @@ public abstract class DynamicNewSmoothScrollingEntryListWidget<E extends Dynamic
     
     private void updatePosition(float delta) {
         target = clamp(target);
-        if (target < 0) {
-            target = target * getBounceBackMultiplier();
-        } else if (target > getMaxScroll()) {
-            target = (target - getMaxScroll()) * getBounceBackMultiplier() + getMaxScroll();
-        }
+        if ((target < 0 || target > getMaxScroll()) && !clamper.isRegistered())
+            clamper.registerTick();
         if (!Precision.almostEquals(scroll, target, Precision.FLOAT_EPSILON))
             scroll = (float) Interpolation.expoEase(scroll, target, Math.min((System.currentTimeMillis() - start) / ((double) duration), 1));
         else

+ 2 - 5
src/main/java/me/shedaniel/clothconfig2/impl/ConfigEntryBuilderImpl.java

@@ -1,7 +1,5 @@
 package me.shedaniel.clothconfig2.impl;
 
-import com.sun.istack.internal.NotNull;
-import com.sun.istack.internal.Nullable;
 import me.shedaniel.clothconfig2.api.AbstractConfigListEntry;
 import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
 import me.shedaniel.clothconfig2.impl.builders.*;
@@ -98,13 +96,12 @@ public class ConfigEntryBuilderImpl implements ConfigEntryBuilder {
     }
     
     @Override
-    public <T extends Enum<?>> EnumSelectorBuilder<T> startEnumSelector(String fieldNameKey, Class<T> clazz,
-            @NotNull T value) {
+    public <T extends Enum<?>> EnumSelectorBuilder<T> startEnumSelector(String fieldNameKey, Class<T> clazz, T value) {
         return new EnumSelectorBuilder<T>(resetButtonKey, fieldNameKey, clazz, value);
     }
     
     @Override
-    public <T> SelectorBuilder<T> startSelector(String fieldNameKey, @Nullable T[] valuesArray, T value) {
+    public <T> SelectorBuilder<T> startSelector(String fieldNameKey, T[] valuesArray, T value) {
         return new SelectorBuilder<T>(resetButtonKey, fieldNameKey, valuesArray, value);
     }