aboutsummaryrefslogtreecommitdiff
path: root/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2020-11-05 17:27:31 +0800
committershedaniel <daniel@shedaniel.me>2020-11-05 17:27:31 +0800
commitecf3079ca2622e538cc325fa6063401139881e12 (patch)
tree00a90fcf5af63b36f4951a598270d6d81ad6b2ed /RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java
parent19d5cc098a812d08b235dbb128746380919a4de6 (diff)
downloadRoughlyEnoughItems-ecf3079ca2622e538cc325fa6063401139881e12.tar.gz
RoughlyEnoughItems-ecf3079ca2622e538cc325fa6063401139881e12.tar.bz2
RoughlyEnoughItems-ecf3079ca2622e538cc325fa6063401139881e12.zip
v5.8.0 Update
- Config screen animations - Require dragging the favorites further before initializing the dragging phase - Require specific fabric modules to run instead of the whole API - Mark getPreviousContainerScreen as nullable - New config settings for setting entry list boundaries - Update fabric loader, auto config and cloth config versions Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java')
-rw-r--r--RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java17
1 files changed, 13 insertions, 4 deletions
diff --git a/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java b/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java
index 0e3bb662e..a38da1d4a 100644
--- a/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java
+++ b/RoughlyEnoughItems-runtime/src/main/java/me/shedaniel/rei/impl/ConfigManagerImpl.java
@@ -46,6 +46,7 @@ import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
import me.shedaniel.clothconfig2.api.Modifier;
import me.shedaniel.clothconfig2.api.ModifierKeyCode;
import me.shedaniel.clothconfig2.gui.entries.KeyCodeEntry;
+import me.shedaniel.clothconfig2.impl.EasingMethod;
import me.shedaniel.rei.RoughlyEnoughItemsCore;
import me.shedaniel.rei.api.ConfigManager;
import me.shedaniel.rei.api.EntryRegistry;
@@ -53,6 +54,7 @@ import me.shedaniel.rei.api.EntryStack;
import me.shedaniel.rei.api.REIHelper;
import me.shedaniel.rei.api.favorites.FavoriteEntry;
import me.shedaniel.rei.gui.ContainerScreenOverlay;
+import me.shedaniel.rei.gui.TransformingScreen;
import me.shedaniel.rei.gui.WarningAndErrorScreen;
import me.shedaniel.rei.gui.config.RecipeScreenType;
import me.shedaniel.rei.gui.config.entry.FilteringEntry;
@@ -65,6 +67,7 @@ import me.shedaniel.rei.impl.filtering.rules.ManualFilteringRule;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.loader.api.FabricLoader;
+import net.minecraft.Util;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.components.Button;
@@ -79,6 +82,7 @@ import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.util.Mth;
import net.minecraft.util.Tuple;
+import org.apache.commons.lang3.mutable.MutableLong;
import org.jetbrains.annotations.ApiStatus;
import java.lang.reflect.Method;
@@ -158,7 +162,7 @@ public class ConfigManagerImpl implements ConfigManager {
ConfigObjectImpl.UsePercentage bounds = field.getAnnotation(ConfigObjectImpl.UsePercentage.class);
return Collections.singletonList(ConfigEntryBuilder.create().startIntSlider(new TranslatableComponent(i13n), Mth.ceil(Utils.getUnsafely(field, config, 0.0) * 100), Mth.ceil(bounds.min() * 100), Mth.ceil(bounds.max() * 100)).setDefaultValue(() -> Mth.ceil((double) Utils.getUnsafely(field, defaults) * 100)).setSaveConsumer((newValue) -> {
Utils.setUnsafely(field, config, newValue / 100d);
- }).setTextGetter(integer -> new TextComponent(String.format("Size: %d%%", integer))).build());
+ }).setTextGetter(integer -> new TextComponent(bounds.prefix() + String.format("%d%%", integer))).build());
}, (field) -> field.getType() == Double.TYPE || field.getType() == Double.class, ConfigObjectImpl.UsePercentage.class);
guiRegistry.registerAnnotationProvider((i13n, field, config, defaults, guiProvider) ->
@@ -223,7 +227,7 @@ public class ConfigManagerImpl implements ConfigManager {
provider.setCategoryFunction((baseI13n, categoryName) -> String.format("%s.%s", baseI13n, categoryName));
provider.setBuildFunction(builder -> {
builder.setGlobalized(true);
- builder.setGlobalizedExpanded(true);
+ builder.setGlobalizedExpanded(false);
if (Minecraft.getInstance().getConnection() != null && Minecraft.getInstance().getConnection().getRecipeManager() != null) {
builder.getOrCreateCategory(new TranslatableComponent("config.roughlyenoughitems.advanced")).getEntries().add(0, new ReloadPluginsEntry(220));
}
@@ -238,7 +242,12 @@ public class ConfigManagerImpl implements ConfigManager {
ContainerScreenOverlay.getEntryListWidget().updateSearch(ScreenHelper.getSearchField().getText(), true);
}).build();
});
- return provider.get();
+ MutableLong current = new MutableLong();
+ return new TransformingScreen(provider.get(),
+ parent,
+ () -> current.setValue(Util.getMillis() + (getConfig().isReducedMotion() ? -3000 : 0)),
+ () -> 0, () -> (1 - EasingMethod.EasingMethodImpl.EXPO.apply(Mth.clamp((Util.getMillis() - current.getValue()) / 750.0, 0, 1)))
+ * Minecraft.getInstance().getWindow().getGuiScaledHeight() * 1.3);
} catch (Exception e) {
e.printStackTrace();
}
@@ -266,7 +275,7 @@ public class ConfigManagerImpl implements ConfigManager {
}
@Override
- protected void init() {
+ public void init() {
super.init();
this.addButton(new Button(this.width / 2 - 100, 140, 200, 20, CommonComponents.GUI_CANCEL, button -> this.minecraft.setScreen(parent)));
}