aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java/me/shedaniel/rei/impl
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-03-28 23:02:31 +0800
committershedaniel <daniel@shedaniel.me>2021-03-28 23:02:31 +0800
commit9402858f8f6f4ddee96fbaf171de7f0cfd770d5b (patch)
tree3e45f4ae1946c6ad41b27f0026fe7cb7ef2cc191 /runtime/src/main/java/me/shedaniel/rei/impl
parent939d940c178637748f0c393e1209647479fdd8f3 (diff)
downloadRoughlyEnoughItems-9402858f8f6f4ddee96fbaf171de7f0cfd770d5b.tar.gz
RoughlyEnoughItems-9402858f8f6f4ddee96fbaf171de7f0cfd770d5b.tar.bz2
RoughlyEnoughItems-9402858f8f6f4ddee96fbaf171de7f0cfd770d5b.zip
Porperly save JEI compatibility settings
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'runtime/src/main/java/me/shedaniel/rei/impl')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ReloadPluginsEntry.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/ConfigReloadingScreen.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/UncertainDisplayViewingScreen.java14
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/types/BuiltinEntryDefinition.java4
7 files changed, 32 insertions, 13 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java
index 0c18217cb..9590c62a7 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java
@@ -69,7 +69,8 @@ import java.util.stream.Collectors;
@ApiStatus.Internal
@Environment(EnvType.CLIENT)
public class ClientHelperImpl implements ClientHelper {
- @ApiStatus.Internal public final LazyLoadedValue<Boolean> isYog = new LazyLoadedValue<>(() -> {
+ @ApiStatus.Internal
+ public final LazyLoadedValue<Boolean> isYog = new LazyLoadedValue<>(() -> {
try {
if (Minecraft.getInstance().getUser().getGameProfile().getId().equals(UUID.fromString("f9546389-9415-4358-9c29-2c26b25bff5b")))
return true;
@@ -77,7 +78,8 @@ public class ClientHelperImpl implements ClientHelper {
}
return false;
});
- @ApiStatus.Internal public final LazyLoadedValue<Boolean> isAprilFools = new LazyLoadedValue<>(() -> {
+ @ApiStatus.Internal
+ public final LazyLoadedValue<Boolean> isAprilFools = new LazyLoadedValue<>(() -> {
try {
LocalDateTime now = LocalDateTime.now();
return now.getMonthValue() == 4 && now.getDayOfMonth() == 1;
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java
index 3a27369d6..25315cca1 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java
@@ -386,6 +386,10 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData {
return Platform.isForge() && advanced.jeiCompatibilityLayer;
}
+ public void setJEICompatibilityLayerEnabled(boolean value) {
+ advanced.jeiCompatibilityLayer = value;
+ }
+
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
@interface DontApplyFieldName {}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ReloadPluginsEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ReloadPluginsEntry.java
index 27a6554df..81c652c97 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ReloadPluginsEntry.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ReloadPluginsEntry.java
@@ -35,6 +35,7 @@ import net.minecraft.client.gui.chat.NarratorChatListener;
import net.minecraft.client.gui.components.AbstractWidget;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.events.GuiEventListener;
+import net.minecraft.client.gui.screens.Screen;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.util.Unit;
import org.jetbrains.annotations.ApiStatus;
@@ -49,7 +50,8 @@ public class ReloadPluginsEntry extends AbstractConfigListEntry<Unit> {
@Override
public void render(PoseStack matrices, int mouseX, int mouseY, float delta) {
if (PluginManager.areAnyPluginsReloading()) {
- Minecraft.getInstance().setScreen(new ConfigReloadingScreen(Minecraft.getInstance().screen));
+ Screen screen = Minecraft.getInstance().screen;
+ Minecraft.getInstance().setScreen(new ConfigReloadingScreen(() -> Minecraft.getInstance().setScreen(screen)));
} else {
super.render(matrices, mouseX, mouseY, delta);
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/ConfigReloadingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/ConfigReloadingScreen.java
index c74f1e928..eb39fbe74 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/ConfigReloadingScreen.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/ConfigReloadingScreen.java
@@ -33,10 +33,9 @@ import org.jetbrains.annotations.ApiStatus;
@ApiStatus.Internal
public class ConfigReloadingScreen extends Screen {
+ private Runnable parent;
- private Screen parent;
-
- public ConfigReloadingScreen(Screen parent) {
+ public ConfigReloadingScreen(Runnable parent) {
super(NarratorChatListener.NO_TITLE);
this.parent = parent;
}
@@ -50,7 +49,7 @@ public class ConfigReloadingScreen extends Screen {
public void render(PoseStack matrices, int int_1, int int_2, float float_1) {
this.renderDirtBackground(0);
if (!PluginManager.areAnyPluginsReloading()) {
- minecraft.setScreen(parent);
+ parent.run();
}
drawCenteredString(matrices, this.font, I18n.get("text.rei.config.is.reloading"), this.width / 2, this.height / 2 - 50, 16777215);
String string_3;
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/UncertainDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/UncertainDisplayViewingScreen.java
index 31ebbf260..6c1fa75ee 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/UncertainDisplayViewingScreen.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/UncertainDisplayViewingScreen.java
@@ -33,8 +33,10 @@ import me.shedaniel.clothconfig2.gui.widget.DynamicNewSmoothScrollingEntryListWi
import me.shedaniel.clothconfig2.impl.EasingMethod;
import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle;
+import me.shedaniel.rei.RoughlyEnoughItemsCore;
import me.shedaniel.rei.api.client.ClientHelper;
import me.shedaniel.rei.api.client.REIHelper;
+import me.shedaniel.rei.api.client.config.ConfigManager;
import me.shedaniel.rei.api.client.gui.config.DisplayScreenType;
import me.shedaniel.rei.api.client.gui.widgets.Button;
import me.shedaniel.rei.api.client.gui.widgets.Widget;
@@ -43,6 +45,7 @@ import me.shedaniel.rei.api.client.gui.widgets.Widgets;
import me.shedaniel.rei.api.common.util.Animator;
import me.shedaniel.rei.api.common.util.ImmutableTextComponent;
import me.shedaniel.rei.impl.ClientInternals;
+import me.shedaniel.rei.impl.client.config.ConfigManagerImpl;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.chat.NarratorChatListener;
@@ -57,7 +60,6 @@ import net.minecraft.util.FormattedCharSequence;
import net.minecraft.util.Mth;
import org.jetbrains.annotations.ApiStatus;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@@ -80,6 +82,7 @@ public class UncertainDisplayViewingScreen extends Screen {
private boolean showTips;
private Animator scroll = new Animator();
private List<String> allModsUsingJEI = null;
+ private boolean jeiEnabled = false;
public UncertainDisplayViewingScreen(Screen parent, DisplayScreenType type, boolean showTips, BooleanConsumer callback) {
super(ImmutableTextComponent.EMPTY);
@@ -139,6 +142,11 @@ public class UncertainDisplayViewingScreen extends Screen {
.onClick(button -> {
if (scroll.target() == 0 && allModsUsingJEI != null) {
scroll.setTo(200, 450);
+ } else if (allModsUsingJEI != null && jeiEnabled) {
+ ConfigManagerImpl.getInstance().getConfig().setJEICompatibilityLayerEnabled(jeiEnabled);
+ ConfigManager.getInstance().saveConfig();
+ RoughlyEnoughItemsCore.reloadPlugins(null);
+ Minecraft.getInstance().setScreen(new ConfigReloadingScreen(() -> callback.accept(original)));
} else {
callback.accept(original);
}
@@ -150,7 +158,7 @@ public class UncertainDisplayViewingScreen extends Screen {
this.widgets.add(slider = transformScroll(Widgets.wrapVanillaWidget(new AbstractSliderButton(width / 2 - 100, height * 2 - 64, 200, 20, new TranslatableComponent("text.rei.jei_compat.false"), 0) {
@Override
protected void updateMessage() {
- setMessage(new TranslatableComponent("text.rei.jei_compat." + (value == 1f)));
+ setMessage(new TranslatableComponent("text.rei.jei_compat." + (jeiEnabled = value == 1f)));
}
@Override
@@ -259,7 +267,7 @@ public class UncertainDisplayViewingScreen extends Screen {
this.bounds = new Rectangle(x - 4 + 16, y - 4, 176 + 8, 120 + 8);
}
- @Override
+ @Override
public Rectangle getBounds() {
return bounds;
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java
index e5284e6ab..d6f45de76 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java
@@ -55,6 +55,7 @@ import me.shedaniel.rei.api.client.gui.widgets.Tooltip;
import me.shedaniel.rei.api.client.gui.widgets.Widget;
import me.shedaniel.rei.api.client.gui.widgets.WidgetWithBounds;
import me.shedaniel.rei.api.client.util.ClientEntryStacks;
+import me.shedaniel.rei.api.common.entry.EntrySerializer;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.util.Animator;
import me.shedaniel.rei.api.common.util.CollectionUtils;
@@ -212,7 +213,10 @@ public class FavoritesListWidget extends WidgetWithBounds implements DraggableSt
@Override
public Optional<Acceptor> visitDraggedStack(DraggableStack stack) {
if (innerBounds.contains(PointHelper.ofMouse())) {
- return Optional.of(this::acceptDraggedStack);
+ EntrySerializer<?> serializer = stack.getStack().getDefinition().getSerializer();
+ if (stack instanceof FavoriteDraggableStack || (serializer.supportReading() && serializer.supportSaving())) {
+ return Optional.of(this::acceptDraggedStack);
+ }
}
return Optional.empty();
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/types/BuiltinEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/types/BuiltinEntryDefinition.java
index 4cb06a9ea..2df769391 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/types/BuiltinEntryDefinition.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/type/types/BuiltinEntryDefinition.java
@@ -122,12 +122,12 @@ public class BuiltinEntryDefinition<T> implements EntryDefinition<T>, EntrySeria
@Override
public boolean supportReading() {
- return true;
+ return empty;
}
@Override
public boolean supportSaving() {
- return true;
+ return empty;
}
@Override