aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2023-10-23 21:45:09 +0800
committershedaniel <daniel@shedaniel.me>2023-10-23 21:45:09 +0800
commit7ffedfb98499f94a9c9be01d5e5d64d05ce4db85 (patch)
treebfeb14a1bc0c5bb9a909aec7c481ae79c138629d /runtime/src/main/java
parentc274b688ed7dc2502217c45de08ac2f348344b49 (diff)
downloadRoughlyEnoughItems-7ffedfb98499f94a9c9be01d5e5d64d05ce4db85.tar.gz
RoughlyEnoughItems-7ffedfb98499f94a9c9be01d5e5d64d05ce4db85.tar.bz2
RoughlyEnoughItems-7ffedfb98499f94a9c9be01d5e5d64d05ce4db85.zip
Close #1505
Diffstat (limited to 'runtime/src/main/java')
-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.java15
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java12
3 files changed, 26 insertions, 5 deletions
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 f94490ce9..0d0e72044 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
@@ -57,7 +57,7 @@ public class ReloadPluginsEntry extends AbstractConfigListEntry<Unit> {
public void render(PoseStack matrices, int mouseX, int mouseY, float delta) {
if (PluginManager.areAnyReloading()) {
Screen screen = Minecraft.getInstance().screen;
- Minecraft.getInstance().setScreen(new ConfigReloadingScreen(new TranslatableComponent("text.rei.config.is.reloading"), PluginManager::areAnyReloading, () -> Minecraft.getInstance().setScreen(screen)));
+ Minecraft.getInstance().setScreen(new ConfigReloadingScreen(new TranslatableComponent("text.rei.config.is.reloading"), PluginManager::areAnyReloading, () -> Minecraft.getInstance().setScreen(screen), null));
} else {
super.render(matrices, mouseX, mouseY, delta);
}
@@ -87,7 +87,7 @@ public class ReloadPluginsEntry extends AbstractConfigListEntry<Unit> {
@Override
public void save() {
-
+
}
@Override
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 083d950db..267e54d4b 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
@@ -26,7 +26,9 @@ package me.shedaniel.rei.impl.client.gui.screen;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.Util;
import net.minecraft.client.gui.chat.NarratorChatListener;
+import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.screens.Screen;
+import net.minecraft.network.chat.CommonComponents;
import net.minecraft.network.chat.Component;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
@@ -40,12 +42,14 @@ public class ConfigReloadingScreen extends Screen {
private final BooleanSupplier predicate;
private Supplier<@Nullable Component> subtitle = () -> null;
private final Runnable parent;
+ private final Runnable cancel;
- public ConfigReloadingScreen(Component title, BooleanSupplier predicate, Runnable parent) {
+ public ConfigReloadingScreen(Component title, BooleanSupplier predicate, Runnable parent, Runnable cancel) {
super(NarratorChatListener.NO_TITLE);
this.title = title;
this.predicate = predicate;
this.parent = parent;
+ this.cancel = cancel;
}
public void setSubtitle(Supplier<@Nullable Component> subtitle) {
@@ -58,6 +62,15 @@ public class ConfigReloadingScreen extends Screen {
}
@Override
+ public void init() {
+ super.init();
+ if (cancel == null) return;
+ this.addRenderableWidget(new Button(this.width / 2 - 100, this.height / 4 + 120 + 12, 200, 20, CommonComponents.GUI_CANCEL, button -> {
+ cancel.run();
+ }));
+ }
+
+ @Override
public void render(PoseStack matrices, int mouseX, int mouseY, float delta) {
this.renderDirtBackground(0);
if (!predicate.getAsBoolean()) {
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java
index 3718a4de7..859dc7156 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java
@@ -24,6 +24,7 @@
package me.shedaniel.rei.impl.client.gui.widget;
import com.mojang.math.Vector4f;
+import dev.architectury.platform.Platform;
import dev.architectury.utils.value.BooleanValue;
import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle;
@@ -152,15 +153,22 @@ public class CraftableFilterButtonWidget {
ConfigReloadingScreen reloadingScreen = new ConfigReloadingScreen(new TranslatableComponent("text.rei.input.methods.initializing"),
() -> !future.isDone(), () -> {
Minecraft.getInstance().setScreen(screen);
+ }, () -> {
+ Minecraft.getInstance().setScreen(screen);
+ InternalLogger.getInstance().error("Failed to prepare input method: cancelled");
+ ConfigManagerImpl.getInstance().getConfig().setInputMethodId(new ResourceLocation("rei:default"));
+ future.cancel(Platform.isFabric());
+ service.shutdown();
});
reloadingScreen.setSubtitle(() -> new TranslatableComponent("text.rei.input.methods.reload.progress", String.format("%.2f", progress[0] * 100)));
Minecraft.getInstance().setScreen(reloadingScreen);
access.close();
future.whenComplete((unused, throwable) -> {
service.shutdown();
+ if (throwable != null) return;
+ ScreenOverlayImpl.getInstance().getHintsContainer().addHint(12, () -> new Point(getCraftableFilterBounds().getCenterX(), getCraftableFilterBounds().getCenterY()),
+ "text.rei.hint.input.methods", List.of(new TranslatableComponent("text.rei.hint.input.methods")));
});
- ScreenOverlayImpl.getInstance().getHintsContainer().addHint(12, () -> new Point(getCraftableFilterBounds().getCenterX(), getCraftableFilterBounds().getCenterY()),
- "text.rei.hint.input.methods", List.of(new TranslatableComponent("text.rei.hint.input.methods")));
})
.withActive(() -> !Objects.equals(config.getInputMethodId(), pair.getKey()))
.withTooltip(() -> Tooltip.create(Widget.mouse(), pair.getValue().getDescription()))