aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java/me
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/src/main/java/me')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/PluginDetector.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInitializer.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/ErrorDisplayer.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java16
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java94
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigObjectImpl.java18
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java (renamed from runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ContainerScreenOverlay.java)84
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/craftable/CraftableFilter.java50
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsScreen.java15
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/modules/entries/EntryStackSubsetsMenuEntry.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/modules/entries/SubSubsetsMenuEntry.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DelegateScreen.java302
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/TransformingScreen.java151
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryListWidget.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryWidget.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java4
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/registry/category/CategoryRegistryImpl.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/registry/display/DisplayRegistryImpl.java14
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/search/AsyncSearchManager.java5
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/view/ViewsImpl.java72
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/display/DisplaySerializerRegistryImpl.java30
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/plugins/PluginManagerImpl.java8
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/common/transfer/MenuInfoRegistryImpl.java2
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java6
28 files changed, 202 insertions, 726 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/PluginDetector.java b/runtime/src/main/java/me/shedaniel/rei/PluginDetector.java
index 56d7c65c7..28592bcf3 100644
--- a/runtime/src/main/java/me/shedaniel/rei/PluginDetector.java
+++ b/runtime/src/main/java/me/shedaniel/rei/PluginDetector.java
@@ -23,7 +23,7 @@
package me.shedaniel.rei;
-import me.shedaniel.architectury.annotations.ExpectPlatform;
+import dev.architectury.injectables.annotations.ExpectPlatform;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
index dcb8ce91e..9513bbe21 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java
@@ -70,7 +70,7 @@ import me.shedaniel.rei.impl.client.REIHelperImpl;
import me.shedaniel.rei.impl.client.config.ConfigManagerImpl;
import me.shedaniel.rei.impl.client.entry.type.types.RenderingEntryDefinition;
import me.shedaniel.rei.impl.client.favorites.FavoriteEntryTypeRegistryImpl;
-import me.shedaniel.rei.impl.client.gui.ContainerScreenOverlay;
+import me.shedaniel.rei.impl.client.gui.ScreenOverlayImpl;
import me.shedaniel.rei.impl.client.gui.widget.InternalWidgets;
import me.shedaniel.rei.impl.client.gui.widget.QueuedTooltip;
import me.shedaniel.rei.impl.client.registry.category.CategoryRegistryImpl;
@@ -574,7 +574,7 @@ public class RoughlyEnoughItemsCore {
return;
resetFocused(screen);
REIHelper.getInstance().getOverlay().get().render(matrices, mouseX, mouseY, delta);
- ((ContainerScreenOverlay) REIHelper.getInstance().getOverlay().get()).lateRender(matrices, mouseX, mouseY, delta);
+ ((ScreenOverlayImpl) REIHelper.getInstance().getOverlay().get()).lateRender(matrices, mouseX, mouseY, delta);
resetFocused(screen);
});
ClientScreenInputEvent.MOUSE_DRAGGED_PRE.register((minecraftClient, screen, mouseX1, mouseY1, button, mouseX2, mouseY2) -> {
diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInitializer.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInitializer.java
index 78f118501..0ee468267 100644
--- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInitializer.java
+++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsInitializer.java
@@ -23,7 +23,7 @@
package me.shedaniel.rei;
-import me.shedaniel.architectury.annotations.ExpectPlatform;
+import dev.architectury.injectables.annotations.ExpectPlatform;
import net.fabricmc.api.EnvType;
import java.lang.reflect.InvocationTargetException;
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 44b12c821..29d2deb00 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
@@ -24,6 +24,8 @@
package me.shedaniel.rei.impl.client;
import io.netty.buffer.Unpooled;
+import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
+import it.unimi.dsi.fastutil.longs.LongSet;
import me.shedaniel.architectury.networking.NetworkManager;
import me.shedaniel.architectury.platform.Platform;
import me.shedaniel.rei.RoughlyEnoughItemsNetwork;
@@ -65,7 +67,6 @@ import org.jetbrains.annotations.Nullable;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Supplier;
-import java.util.stream.Collectors;
@ApiStatus.Internal
@Environment(EnvType.CLIENT)
@@ -215,11 +216,12 @@ public class ClientHelperImpl implements ClientHelper {
}
@ApiStatus.Internal
- public Set<EntryStack<?>> _getInventoryItemsTypes() {
+ public LongSet _getInventoryItemsTypes() {
return Minecraft.getInstance().player.getInventory().compartments.stream()
.flatMap(Collection::stream)
.map(EntryStacks::of)
- .collect(Collectors.toSet());
+ .mapToLong(EntryStacks::hashExact)
+ .collect(LongOpenHashSet::new, LongOpenHashSet::add, LongOpenHashSet::addAll);
}
@ApiStatus.Internal
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/ErrorDisplayer.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/ErrorDisplayer.java
index b6eb5da51..12bf9da50 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/ErrorDisplayer.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/ErrorDisplayer.java
@@ -23,7 +23,7 @@
package me.shedaniel.rei.impl.client;
-import me.shedaniel.architectury.annotations.ExpectPlatform;
+import dev.architectury.injectables.annotations.ExpectPlatform;
import me.shedaniel.rei.RoughlyEnoughItemsState;
import me.shedaniel.rei.impl.client.gui.screen.WarningAndErrorScreen;
import net.minecraft.client.Minecraft;
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java
index 58c7506b3..1a4d28fcf 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/REIHelperImpl.java
@@ -30,15 +30,15 @@ import me.shedaniel.architectury.event.events.GuiEvent;
import me.shedaniel.architectury.event.events.client.ClientTickEvent;
import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.client.REIHelper;
-import me.shedaniel.rei.api.client.overlay.ScreenOverlay;
import me.shedaniel.rei.api.client.config.ConfigManager;
import me.shedaniel.rei.api.client.config.ConfigObject;
import me.shedaniel.rei.api.client.gui.config.SearchFieldLocation;
import me.shedaniel.rei.api.client.gui.screen.DisplayScreen;
import me.shedaniel.rei.api.client.gui.widgets.TextField;
import me.shedaniel.rei.api.client.gui.widgets.Tooltip;
+import me.shedaniel.rei.api.client.overlay.ScreenOverlay;
import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry;
-import me.shedaniel.rei.impl.client.gui.ContainerScreenOverlay;
+import me.shedaniel.rei.impl.client.gui.ScreenOverlayImpl;
import me.shedaniel.rei.impl.client.gui.widget.search.OverlaySearchField;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@@ -61,7 +61,7 @@ public class REIHelperImpl implements REIHelper {
private static final ResourceLocation DISPLAY_TEXTURE_DARK = new ResourceLocation("roughlyenoughitems", "textures/gui/display_dark.png");
@ApiStatus.Internal
public static boolean isWithinRecipeViewingScreen = false;
- private ContainerScreenOverlay overlay;
+ private ScreenOverlayImpl overlay;
private OverlaySearchField searchField;
private AbstractContainerScreen<?> previousContainerScreen = null;
private Screen previousScreen = null;
@@ -129,7 +129,7 @@ public class REIHelperImpl implements REIHelper {
@Override
public Optional<ScreenOverlay> getOverlay(boolean reset) {
if (overlay == null || reset) {
- overlay = new ContainerScreenOverlay();
+ overlay = new ScreenOverlayImpl();
overlay.init();
getSearchField().setFocused(false);
}
@@ -201,8 +201,7 @@ public class REIHelperImpl implements REIHelper {
Rectangle bounds = ScreenRegistry.getInstance().getOverlayBounds(ConfigObject.getInstance().getDisplayPanelLocation().mirror(), Minecraft.getInstance().screen);
int yOffset = 8;
- if (ConfigObject.getInstance().doesShowUtilsButtons()) yOffset += 50;
- else if (!ConfigObject.getInstance().isLowerConfigButton()) yOffset += 25;
+ if (!ConfigObject.getInstance().isLowerConfigButton()) yOffset += 25;
return new Rectangle(bounds.x, bounds.y + yOffset, bounds.width, bounds.height - 3 - yOffset);
}
@@ -224,8 +223,9 @@ public class REIHelperImpl implements REIHelper {
return InteractionResult.PASS;
});
ClientTickEvent.CLIENT_POST.register(minecraft -> {
- if (isOverlayVisible() && getSearchField() != null)
- getSearchField().tick();
+ if (isOverlayVisible()) {
+ ScreenOverlayImpl.getInstance().tick();
+ }
});
}
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java
index e89995311..292d76358 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java
@@ -27,9 +27,7 @@ import com.google.common.collect.Lists;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.mojang.blaze3d.platform.InputConstants;
-import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
-import com.mojang.math.Matrix4f;
import me.shedaniel.architectury.hooks.screen.ScreenHooks;
import me.shedaniel.autoconfig.AutoConfig;
import me.shedaniel.autoconfig.annotation.ConfigEntry;
@@ -46,13 +44,13 @@ 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.client.REIHelper;
import me.shedaniel.rei.api.client.config.ConfigManager;
import me.shedaniel.rei.api.client.favorites.FavoriteEntry;
import me.shedaniel.rei.api.client.gui.config.DisplayScreenType;
import me.shedaniel.rei.api.client.gui.config.SyntaxHighlightingMode;
+import me.shedaniel.rei.api.client.overlay.ScreenOverlay;
import me.shedaniel.rei.api.client.registry.entry.EntryRegistry;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.util.CollectionUtils;
@@ -60,23 +58,16 @@ import me.shedaniel.rei.impl.client.REIHelperImpl;
import me.shedaniel.rei.impl.client.config.entries.*;
import me.shedaniel.rei.impl.client.entry.filtering.FilteringRule;
import me.shedaniel.rei.impl.client.entry.filtering.rules.ManualFilteringRule;
-import me.shedaniel.rei.impl.client.gui.ContainerScreenOverlay;
+import me.shedaniel.rei.impl.client.gui.ScreenOverlayImpl;
import me.shedaniel.rei.impl.client.gui.credits.CreditsScreen;
-import me.shedaniel.rei.impl.client.gui.screen.TransformingScreen;
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;
import net.minecraft.client.gui.screens.Screen;
-import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag;
import net.minecraft.nbt.TagParser;
-import net.minecraft.network.chat.CommonComponents;
-import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.util.Mth;
@@ -84,7 +75,6 @@ import net.minecraft.world.InteractionResult;
import org.apache.commons.lang3.mutable.MutableLong;
import org.jetbrains.annotations.ApiStatus;
-import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -305,19 +295,7 @@ public class ConfigManagerImpl implements ConfigManager {
@Override
public Screen getConfigScreen(Screen parent) {
try {
- Screen parentTranslated;
- if (!getConfig().isConfigScreenAnimated()) {
- parentTranslated = parent;
- } else {
- MutableLong current = new MutableLong(0);
- parentTranslated = new TransformingScreen(true, parent,
- null,
- () -> current.setValue(current.getValue() == 0 ? Util.getMillis() + (!getConfig().isConfigScreenAnimated() ? -3000 : 0) : current.getValue()),
- () -> 0, () -> (EasingMethod.EasingMethodImpl.EXPO.apply(Mth.clamp((Util.getMillis() - current.getValue()) / 750.0, 0, 1)))
- * Minecraft.getInstance().getWindow().getGuiScaledHeight(), () -> Util.getMillis() - current.getValue() > 800);
- ((TransformingScreen) parentTranslated).setInitAfter(true);
- }
- ConfigScreenProvider<ConfigObjectImpl> provider = (ConfigScreenProvider<ConfigObjectImpl>) AutoConfig.getConfigScreen(ConfigObjectImpl.class, parentTranslated);
+ ConfigScreenProvider<ConfigObjectImpl> provider = (ConfigScreenProvider<ConfigObjectImpl>) AutoConfig.getConfigScreen(ConfigObjectImpl.class, parent);
provider.setI13nFunction(manager -> "config.roughlyenoughitems");
provider.setOptionFunction((baseI13n, field) -> field.isAnnotationPresent(ConfigObjectImpl.DontApplyFieldName.class) ? baseI13n : String.format("%s.%s", baseI13n, field.getName()));
provider.setCategoryFunction((baseI13n, categoryName) -> String.format("%s.%s", baseI13n, categoryName));
@@ -331,79 +309,21 @@ public class ConfigManagerImpl implements ConfigManager {
ScreenHooks.addRenderableWidget(screen, new Button(screen.width - 104, 4, 100, 20, new TranslatableComponent("text.rei.credits"), button -> {
MutableLong current = new MutableLong(0);
CreditsScreen creditsScreen = new CreditsScreen(screen);
- if (getConfig().isCreditsScreenAnimated()) {
- Minecraft.getInstance().setScreen(new TransformingScreen(false, creditsScreen,
- screen,
- () -> current.setValue(current.getValue() == 0 ? Util.getMillis() + (!getConfig().isCreditsScreenAnimated() ? -3000 : 0) : current.getValue()),
- () -> (1 - EasingMethod.EasingMethodImpl.EXPO.apply(Mth.clamp((Util.getMillis() - current.getValue()) / 750.0, 0, 1)))
- * Minecraft.getInstance().getWindow().getGuiScaledWidth() * 1.3,
- () -> 0,
- () -> Util.getMillis() - current.getValue() > 800));
- } else {
- Minecraft.getInstance().setScreen(creditsScreen);
- }
+ Minecraft.getInstance().setScreen(creditsScreen);
}));
}).setSavingRunnable(() -> {
saveConfig();
EntryRegistry.getInstance().refilter();
+ REIHelper.getInstance().getOverlay().ifPresent(ScreenOverlay::queueReloadOverlay);
if (REIHelperImpl.getSearchField() != null) {
- ContainerScreenOverlay.getEntryListWidget().updateSearch(REIHelperImpl.getSearchField().getText(), true);
+ ScreenOverlayImpl.getEntryListWidget().updateSearch(REIHelperImpl.getSearchField().getText(), true);
}
}).build();
});
- Screen configScreen = provider.get();
- if (!getConfig().isConfigScreenAnimated()) return configScreen;
- ((TransformingScreen) parentTranslated).setLastScreen(configScreen);
- MutableLong current = new MutableLong(0);
- return new TransformingScreen(false, configScreen,
- parent,
- () -> current.setValue(current.getValue() == 0 ? Util.getMillis() + (!getConfig().isConfigScreenAnimated() ? -3000 : 0) : current.getValue()),
- () -> 0, () -> (1 - EasingMethod.EasingMethodImpl.EXPO.apply(Mth.clamp((Util.getMillis() - current.getValue()) / 750.0, 0, 1)))
- * Minecraft.getInstance().getWindow().getGuiScaledHeight() * 1.3, () -> Util.getMillis() - current.getValue() > 800);
+ return provider.get();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
-
- private boolean detectWorkingOptifabric() {
- try {
- String renderText = FabricLoader.getInstance().getMappingResolver().mapMethodName("intermediary", "net.minecraft.class_327", "method_1724", "(Ljava/lang/String;FFIZLnet/minecraft/class_1159;Lnet/minecraft/class_4597;ZII)F");
- Method method = Font.class.getDeclaredMethod(renderText, String.class, Float.TYPE, Float.TYPE, Integer.TYPE, Boolean.TYPE, Matrix4f.class, MultiBufferSource.class, Boolean.TYPE, Integer.TYPE, Integer.TYPE);
- return !java.lang.reflect.Modifier.isPrivate(method.getModifiers());
- } catch (Throwable ignored) {
- return false;
- }
- }
-
- public static class ConfigErrorScreen extends Screen {
- private final Component message;
- private final Screen parent;
-
- public ConfigErrorScreen(Screen parent, Component title, Component message) {
- super(title);
- this.parent = parent;
- this.message = message;
- }
-
- @Override
- public void init() {
- super.init();
- this.addRenderableWidget(new Button(this.width / 2 - 100, 140, 200, 20, CommonComponents.GUI_CANCEL, button -> this.minecraft.setScreen(parent)));
- }
-
- @Override
- public void render(PoseStack matrices, int mouseX, int mouseY, float delta) {
- this.renderBackground(matrices);
- drawCenteredString(matrices, this.font, this.title, this.width / 2, 90, 16777215);
- drawCenteredString(matrices, this.font, this.message, this.width / 2, 110, 16777215);
- super.render(matrices, mouseX, mouseY, delta);
- }
-
- @Override
- public boolean shouldCloseOnEsc() {
- return false;
- }
- }
-
}
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 9279a7f51..e4b855e1e 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
@@ -102,16 +102,6 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData {
}
@Override
- public boolean isConfigScreenAnimated() {
- return basics.motion.configScreenAnimation;
- }
-
- @Override
- public boolean isCreditsScreenAnimated() {
- return basics.motion.creditsScreenAnimation;
- }
-
- @Override
public boolean isFavoritesAnimated() {
return basics.motion.favoritesAnimation;
}
@@ -177,11 +167,6 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData {
}
@Override
- public boolean doesShowUtilsButtons() {
- return appearance.layout.showUtilsButtons;
- }
-
- @Override
public boolean doesDisableRecipeBook() {
return functionality.disableRecipeBook;
}
@@ -430,8 +415,6 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData {
}
public static class Motion {
- private boolean configScreenAnimation = false;
- private boolean creditsScreenAnimation = false;
private boolean favoritesAnimation = true;
}
@@ -463,7 +446,6 @@ public class ConfigObjectImpl implements ConfigObject, ConfigData {
@Comment("Declares the position of the config button.") @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
private ConfigButtonPosition configButtonLocation = ConfigButtonPosition.LOWER;
@Comment("Declares whether the craftable filter button is enabled.") private boolean enableCraftableOnlyButton = false;
- @Comment("Declares whether the utils buttons are shown.") private boolean showUtilsButtons = false;
}
@UsePercentage(min = 0.1, max = 1.0, prefix = "Limit: ") private double horizontalEntriesBoundaries = 1.0;
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java
index 8b7eed143..0aea413fd 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java
@@ -42,7 +42,7 @@ import me.shedaniel.rei.api.client.registry.entry.EntryRegistry;
import me.shedaniel.rei.api.client.search.SearchFilter;
import me.shedaniel.rei.api.client.search.SearchProvider;
import me.shedaniel.rei.api.common.entry.EntryStack;
-import me.shedaniel.rei.impl.client.gui.ContainerScreenOverlay;
+import me.shedaniel.rei.impl.client.gui.ScreenOverlayImpl;
import me.shedaniel.rei.impl.client.gui.widget.BatchedEntryRendererManager;
import me.shedaniel.rei.impl.client.gui.widget.EntryWidget;
import me.shedaniel.rei.impl.client.gui.widget.search.OverlaySearchField;
@@ -265,7 +265,7 @@ public class FilteringScreen extends Screen {
this.backButton.render(matrices, mouseX, mouseY, delta);
if (tooltip != null) {
- ((ContainerScreenOverlay) REIHelper.getInstance().getOverlay().get()).renderTooltip(matrices, tooltip);
+ ((ScreenOverlayImpl) REIHelper.getInstance().getOverlay().get()).renderTooltip(matrices, tooltip);
}
this.font.drawShadow(matrices, this.title.getVisualOrderText(), this.width / 2.0F - this.font.width(this.title) / 2.0F, 12.0F, -1);
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ContainerScreenOverlay.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java
index 144a97adc..08f2ad875 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ContainerScreenOverlay.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java
@@ -59,10 +59,9 @@ import me.shedaniel.rei.api.common.util.EntryStacks;
import me.shedaniel.rei.api.common.util.ImmutableTextComponent;
import me.shedaniel.rei.impl.client.ClientHelperImpl;
import me.shedaniel.rei.impl.client.REIHelperImpl;
+import me.shedaniel.rei.impl.client.gui.craftable.CraftableFilter;
import me.shedaniel.rei.impl.client.gui.dragging.CurrentDraggingStack;
import me.shedaniel.rei.impl.client.gui.modules.Menu;
-import me.shedaniel.rei.impl.client.gui.modules.entries.GameModeMenuEntry;
-import me.shedaniel.rei.impl.client.gui.modules.entries.WeatherMenuEntry;
import me.shedaniel.rei.impl.client.gui.screen.DefaultDisplayViewingScreen;
import me.shedaniel.rei.impl.client.gui.widget.EntryListWidget;
import me.shedaniel.rei.impl.client.gui.widget.FavoritesListWidget;
@@ -100,7 +99,7 @@ import java.util.function.Predicate;
import java.util.stream.Collectors;
@ApiStatus.Internal
-public class ContainerScreenOverlay extends ScreenOverlay {
+public class ScreenOverlayImpl extends ScreenOverlay {
private static final ResourceLocation CHEST_GUI_TEXTURE = new ResourceLocation("roughlyenoughitems", "textures/gui/recipecontainer.png");
private static final List<Tooltip> TOOLTIPS = Lists.newArrayList();
private static final List<Runnable> AFTER_RENDER = Lists.newArrayList();
@@ -115,9 +114,8 @@ public class ContainerScreenOverlay extends ScreenOverlay {
private CurrentDraggingStack draggingStack = new CurrentDraggingStack();
@Nullable
- private ContainerScreenOverlay.OverlayMenu overlayMenu = null;
+ private ScreenOverlayImpl.OverlayMenu overlayMenu = null;
- public Set<EntryStack<?>> inventoryStacks = Sets.newHashSet();
public static EntryListWidget getEntryListWidget() {
return ENTRY_LIST_WIDGET;
@@ -128,8 +126,17 @@ public class ContainerScreenOverlay extends ScreenOverlay {
return favoritesListWidget;
}
- public static ContainerScreenOverlay getInstance() {
- return (ContainerScreenOverlay) REIHelper.getInstance().getOverlay().get();
+ public static ScreenOverlayImpl getInstance() {
+ return (ScreenOverlayImpl) REIHelper.getInstance().getOverlay().get();
+ }
+
+ public void tick() {
+ if (REIHelperImpl.getSearchField() != null) {
+ REIHelperImpl.getSearchField().tick();
+ if (Minecraft.getInstance().player != null) {
+ CraftableFilter.INSTANCE.tick();
+ }
+ }
}
private static class OverlayMenu {
@@ -302,57 +309,6 @@ public class ContainerScreenOverlay extends ScreenOverlay {
0, 0, 600
)
));
- if (ConfigObject.getInstance().doesShowUtilsButtons()) {
- widgets.add(Widgets.createButton(ConfigObject.getInstance().isLowerConfigButton() ? new Rectangle(ConfigObject.getInstance().isLeftHandSidePanel() ? window.getGuiScaledWidth() - 30 : 10, 10, 20, 20) : new Rectangle(ConfigObject.getInstance().isLeftHandSidePanel() ? window.getGuiScaledWidth() - 55 : 35, 10, 20, 20), NarratorChatListener.NO_TITLE)
- .onRender((matrices, button) -> {
- boolean isOpened = isMenuOpened(Menu.GAME_TYPE);
- if (isOpened || !isAnyMenuOpened()) {
- boolean inBounds = (button.isFocused() || button.containsMouse(PointHelper.ofMouse())) || isMenuInBounds(Menu.GAME_TYPE);
- if (isOpened != inBounds) {
- if (inBounds) {
- Menu menu = new Menu(new Point(button.getBounds().x, button.getBounds().getMaxY()),
- CollectionUtils.map(GameType.values(), GameModeMenuEntry::new));
- if (ConfigObject.getInstance().isLeftHandSidePanel())
- menu.menuStartPoint.x -= menu.getBounds().width - button.getBounds().width;
- openMenu(Menu.GAME_TYPE, menu, point -> button.isFocused() && button.containsMouse(PointHelper.ofMouse()), point -> true);
- } else {
- closeOverlayMenu();
- }
- }
- }
- button.setText(new TextComponent(getGameModeShortText(getCurrentGameMode())));
- })
- .focusable(false)
- .tooltipLine(new TranslatableComponent("text.rei.gamemode_button.tooltip.all"))
- .containsMousePredicate((button, point) -> button.getBounds().contains(point) && isNotInExclusionZones(point.x, point.y)));
- Button weatherButton;
- widgets.add(weatherButton = Widgets.createButton(new Rectangle(ConfigObject.getInstance().isLeftHandSidePanel() ? window.getGuiScaledWidth() - 30 : 10, 35, 20, 20), NarratorChatListener.NO_TITLE)
- .onRender((matrices, button) -> {
- boolean isOpened = isMenuOpened(Menu.WEATHER);
- if (isOpened || !isAnyMenuOpened()) {
- boolean inBounds = (button.isFocused() || button.containsMouse(PointHelper.ofMouse())) || isMenuInBounds(Menu.WEATHER);
- if (isOpened != inBounds) {
- if (inBounds) {
- Menu menu = new Menu(new Point(button.getBounds().x, button.getBounds().getMaxY()),
- CollectionUtils.map(Weather.values(), WeatherMenuEntry::new));
- if (ConfigObject.getInstance().isLeftHandSidePanel())
- menu.menuStartPoint.x -= menu.getBounds().width - button.getBounds().width;
- openMenu(Menu.WEATHER, menu, point -> button.isFocused() && button.containsMouse(PointHelper.ofMouse()), point -> true);
- } else {
- closeOverlayMenu();
- }
- }
- }
- })
- .tooltipLine(new TranslatableComponent("text.rei.weather_button.tooltip.all"))
- .focusable(false)
- .containsMousePredicate((button, point) -> button.getBounds().contains(point) && isNotInExclusionZones(