aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-08-28 20:48:46 +0900
committershedaniel <daniel@shedaniel.me>2022-08-28 21:14:21 +0900
commitfb91ed996b01f986492de4007cb86be5e68ad192 (patch)
treeb1176be6374ac6d56094c9bcf2b48226b31e68ec
parent94e323f75c17e297c33fba1d3afb5c47ae66a8ad (diff)
downloadRoughlyEnoughItems-fb91ed996b01f986492de4007cb86be5e68ad192.tar.gz
RoughlyEnoughItems-fb91ed996b01f986492de4007cb86be5e68ad192.tar.bz2
RoughlyEnoughItems-fb91ed996b01f986492de4007cb86be5e68ad192.zip
More internal changes
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/TextField.java3
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/overlay/ScreenOverlay.java19
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/registry/screen/ScreenRegistry.java23
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/client/ClientInternals.java7
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/client/provider/OverlayProvider.java9
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java46
-rw-r--r--default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/EntryStackFavoriteEntry.java93
-rw-r--r--runtime-engine/search/src/main/java/me/shedaniel/rei/plugin/client/runtime/SearchFilterPrepareWatcher.java3
-rw-r--r--runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/favorites/panel/rows/FavoritesPanelEntriesRow.java6
-rw-r--r--runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/EntryStacksRegionWidget.java2
-rw-r--r--runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RealRegionEntry.java2
-rw-r--r--runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionEntryWidget.java50
-rw-r--r--runtime-frontend/favorites-entries/src/main/java/me/shedaniel/rei/impl/client/gui/widget/region/RegionListener.java5
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/CollapsedEntriesTooltip.java2
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListStackEntry.java2
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/EntryListWidgetImpl.java29
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/entries/scrolled/ScrolledEntryListWidget.java2
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/ConfigButtonWidgetProvider.java (renamed from runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/ConfigButtonWidget.java)10
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/CraftableFilterButtonWidgetProvider.java (renamed from runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/CraftableFilterButtonWidget.java)20
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/SearchFieldWidgetProvider.java25
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/search/DelegateTextField.java (renamed from runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/DelegateTextField.java)8
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/search/OverlaySearchField.java (renamed from runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java)33
-rw-r--r--runtime-frontend/overlay-entries/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/widgets/search/OverlaySearchFieldSyntaxHighlighter.java (renamed from runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchFieldSyntaxHighlighter.java)2
-rw-r--r--runtime-frontend/overlay-entries/src/main/resources/META-INF/services/me.shedaniel.rei.impl.client.gui.overlay.widgets.OverlayWidgetProvider5
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/menu/MenuEntry.java44
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/AbstractScreenOverlay.java4
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/InternalOverlayBounds.java10
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayImpl.java22
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/ScreenOverlayProviderImpl.java11
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/dragging/DraggingContextImpl.java (renamed from runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/dragging/DraggingContextImpl.java)2
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/menu/AbstractMenuEntry.java (renamed from runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/menu/AbstractMenuEntry.java)6
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/menu/Menu.java (renamed from runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/menu/Menu.java)33
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/menu/MenuAccessImpl.java (renamed from runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/menu/MenuAccessImpl.java)33
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/menu/entries/EmptyMenuEntry.java (renamed from runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/menu/entries/EmptyMenuEntry.java)4
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/menu/entries/SeparatorMenuEntry.java (renamed from runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/menu/entries/SeparatorMenuEntry.java)4
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/menu/entries/SubMenuEntry.java (renamed from runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/menu/entries/SubMenuEntry.java)23
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/menu/entries/TextMenuEntry.java (renamed from runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/menu/entries/TextMenuEntry.java)4
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/menu/entries/ToggleMenuEntry.java (renamed from runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/menu/entries/ToggleMenuEntry.java)6
-rw-r--r--runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/overlay/menu/provider/OverlayMenuEntryProvider.java18
-rw-r--r--runtime-frontend/overlay/src/main/resources/META-INF/services/me.shedaniel.rei.impl.client.provider.OverlayProvider1
-rw-r--r--runtime-frontend/widgets/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java31
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/REIRuntimeImpl.java7
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java13
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/DefaultClientRuntimePlugin.java150
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/InputMethodWatcher.java9
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/PluginStageExecutionWatcher.java3
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/runtime/SearchBarHighlightWatcher.java3
-rw-r--r--shared-internals/src/main/java/me/shedaniel/rei/impl/client/gui/hints/HintProvider.java3
-rw-r--r--shared-internals/src/main/java/me/shedaniel/rei/impl/client/gui/menu/MenuAccess.java (renamed from runtime-frontend/overlay/src/main/java/me/shedaniel/rei/impl/client/gui/menu/MenuAccess.java)21
-rw-r--r--shared-internals/src/main/java/me/shedaniel/rei/impl/client/search/AsyncSearchManager.java7
-rw-r--r--shared-internals/src/main/java/me/shedaniel/rei/impl/client/util/InternalEntryBounds.java12
52 files changed, 462 insertions, 434 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/TextField.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/TextField.java
index 1757e77b5..4b062c6bd 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/TextField.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/TextField.java
@@ -23,6 +23,7 @@
package me.shedaniel.rei.api.client.gui.widgets;
+import com.mojang.blaze3d.platform.InputConstants;
import com.mojang.blaze3d.vertex.PoseStack;
import it.unimi.dsi.fastutil.booleans.BooleanConsumer;
import me.shedaniel.clothconfig2.api.TickableWidget;
@@ -78,6 +79,8 @@ public interface TextField extends TickableWidget {
void setFocused(boolean focused);
+ void setFocusedFromKey(boolean focused, InputConstants.Key key);
+
void setResponder(Consumer<String> responder);
void setFocusedResponder(BooleanConsumer responder);
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/overlay/ScreenOverlay.java b/api/src/main/java/me/shedaniel/rei/api/client/overlay/ScreenOverlay.java
index 5d8ed2b80..9954a57a9 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/overlay/ScreenOverlay.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/overlay/ScreenOverlay.java
@@ -24,6 +24,8 @@
package me.shedaniel.rei.api.client.overlay;
import com.mojang.blaze3d.vertex.PoseStack;
+import me.shedaniel.math.Rectangle;
+import me.shedaniel.rei.api.client.REIRuntime;
import me.shedaniel.rei.api.client.gui.drag.DraggingContext;
import me.shedaniel.rei.api.client.gui.widgets.TextField;
import me.shedaniel.rei.api.client.gui.widgets.Tooltip;
@@ -38,6 +40,10 @@ import java.util.Optional;
@Environment(EnvType.CLIENT)
public abstract class ScreenOverlay extends WidgetWithBounds {
+ public static Optional<ScreenOverlay> getInstance() {
+ return REIRuntime.getInstance().getOverlay();
+ }
+
/**
* Queues reload of the overlay.
*/
@@ -79,6 +85,19 @@ public abstract class ScreenOverlay extends WidgetWithBounds {
public abstract boolean isNotInExclusionZones(double mouseX, double mouseY);
/**
+ * Returns whether a specified bounds is within the bounds of the overlay.
+ *
+ * @param bounds the bounds to test
+ * @return whether the bounds is within the bounds of the overlay
+ */
+ public boolean isNotInExclusionZones(Rectangle bounds) {
+ return isNotInExclusionZones(bounds.x, bounds.y) &&
+ isNotInExclusionZones(bounds.getMaxX(), bounds.y) &&
+ isNotInExclusionZones(bounds.x, bounds.getMaxY()) &&
+ isNotInExclusionZones(bounds.getMaxX(), bounds.getMaxY());
+ }
+
+ /**
* Returns the entry list of the overlay.
*
* @return the entry list of the overlay
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/registry/screen/ScreenRegistry.java b/api/src/main/java/me/shedaniel/rei/api/client/registry/screen/ScreenRegistry.java
index d43b96be6..45d32737d 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/registry/screen/ScreenRegistry.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/registry/screen/ScreenRegistry.java
@@ -25,6 +25,7 @@ package me.shedaniel.rei.api.client.registry.screen;
import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle;
+import me.shedaniel.rei.api.client.REIRuntime;
import me.shedaniel.rei.api.client.gui.config.DisplayPanelLocation;
import me.shedaniel.rei.api.client.gui.drag.DraggableStackProvider;
import me.shedaniel.rei.api.client.gui.drag.DraggableStackProviderWidget;
@@ -49,14 +50,12 @@ import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
import net.minecraft.client.resources.sounds.SimpleSoundInstance;
import net.minecraft.network.chat.Component;
import net.minecraft.sounds.SoundEvents;
+import net.minecraft.world.InteractionResult;
import net.minecraft.world.inventory.AbstractContainerMenu;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -289,4 +288,20 @@ public interface ScreenRegistry extends Reloadable<REIClientPlugin> {
return false;
}
+
+ default boolean shouldDisplay(Screen screen) {
+ if (REIRuntime.getInstance().getOverlay().isEmpty()) return false;
+ if (screen == null) return false;
+ if (screen != Minecraft.getInstance().screen) return false;
+ try {
+ for (OverlayDecider decider : getDeciders(screen)) {
+ InteractionResult result = decider.shouldScreenBeOverlaid(screen);
+ if (result != InteractionResult.PASS) {
+ return result != InteractionResult.FAIL && REIRuntime.getInstance().getPreviousScreen() != null;
+ }
+ }
+ } catch (ConcurrentModificationException ignored) {
+ }
+ return false;
+ }
}
diff --git a/api/src/main/java/me/shedaniel/rei/impl/client/ClientInternals.java b/api/src/main/java/me/shedaniel/rei/impl/client/ClientInternals.java
index eeb03e5fb..22c64a606 100644
--- a/api/src/main/java/me/shedaniel/rei/impl/client/ClientInternals.java
+++ b/api/src/main/java/me/shedaniel/rei/impl/client/ClientInternals.java
@@ -23,6 +23,7 @@
package me.shedaniel.rei.impl.client;
+import com.google.common.base.Suppliers;
import com.mojang.serialization.DataResult;
import me.shedaniel.math.Point;
import me.shedaniel.rei.api.client.ClientHelper;
@@ -30,6 +31,7 @@ import me.shedaniel.rei.api.client.favorites.FavoriteEntry;
import me.shedaniel.rei.api.client.gui.widgets.Tooltip;
import me.shedaniel.rei.api.client.gui.widgets.TooltipContext;
import me.shedaniel.rei.api.client.gui.widgets.TooltipQueue;
+import me.shedaniel.rei.api.client.overlay.ScreenOverlay;
import me.shedaniel.rei.api.client.plugins.REIClientPlugin;
import me.shedaniel.rei.api.client.registry.entry.PreFilteredEntryList;
import me.shedaniel.rei.api.client.registry.screen.ClickArea;
@@ -66,6 +68,7 @@ public final class ClientInternals {
private static final AutoCraftingEvaluator AUTO_CRAFTING_EVALUATOR = resolveService(AutoCraftingEvaluator.class);
private static final TooltipQueue TOOLTIP_QUEUE = resolveService(TooltipQueue.class);
private static final TooltipRenderer TOOLTIP_RENDERER = resolveService(TooltipRenderer.class);
+ private static final OverlayProvider SCREEN_OVERLAY_PROVIDER = resolveService(OverlayProvider.class);
private static Function<CompoundTag, DataResult<FavoriteEntry>> favoriteEntryFromJson = (object) -> throwNotSetup();
private static Function<Boolean, ClickArea.Result> clickAreaHandlerResult = (result) -> throwNotSetup();
private static BiFunction<@Nullable Point, Collection<Tooltip.Entry>, Tooltip> tooltipProvider = (point, texts) -> throwNotSetup();
@@ -142,6 +145,10 @@ public final class ClientInternals {
return TOOLTIP_RENDERER;
}
+ public static ScreenOverlay getNewOverlay() {
+ return SCREEN_OVERLAY_PROVIDER.provide();
+ }
+
public static TooltipContext createTooltipContext(Point point, @Nullable TooltipFlag flag, boolean isSearch) {
return tooltipContextProvider.apply(point, flag, isSearch);
}
diff --git a/api/src/main/java/me/shedaniel/rei/impl/client/provider/OverlayProvider.java b/api/src/main/java/me/shedaniel/rei/impl/client/provider/OverlayProvider.java
new file mode 100644
index 000000000..c3688626a
--- /dev/null
+++ b/api/src/main/java/me/shedaniel/rei/impl/client/provider/OverlayProvider.java
@@ -0,0 +1,9 @@
+package me.shedaniel.rei.impl.client.provider;
+
+import me.shedaniel.rei.api.client.overlay.ScreenOverlay;
+import org.jetbrains.annotations.ApiStatus;
+
+@ApiStatus.Internal
+public interface OverlayProvider {
+ ScreenOverlay provide();
+}
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java
index cc39f9e3a..01c7f3b0c 100644
--- a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java
+++ b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientPlugin.java
@@ -26,13 +26,23 @@ package me.shedaniel.rei.plugin.client;
import com.google.common.collect.Iterators;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
+import com.mojang.blaze3d.systems.RenderSystem;
+import com.mojang.blaze3d.vertex.PoseStack;
import dev.architectury.platform.Platform;
import it.unimi.dsi.fastutil.objects.Object2FloatMap;
import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet;
import it.unimi.dsi.fastutil.objects.ReferenceSet;
import me.shedaniel.math.Rectangle;
+import me.shedaniel.rei.api.client.ClientHelper;
+import me.shedaniel.rei.api.client.REIRuntime;
import me.shedaniel.rei.api.client.favorites.FavoriteEntry;
import me.shedaniel.rei.api.client.favorites.FavoriteEntryType;
+import me.shedaniel.rei.api.client.gui.AbstractRenderer;
+import me.shedaniel.rei.api.client.gui.drag.component.DraggableComponentProviderWidget;
+import me.shedaniel.rei.api.client.gui.drag.component.DraggableComponentVisitorWidget;
+import me.shedaniel.rei.api.client.gui.widgets.Tooltip;
+import me.shedaniel.rei.api.client.gui.widgets.TooltipContext;
+import me.shedaniel.rei.api.client.gui.widgets.Widgets;
import me.shedaniel.rei.api.client.plugins.REIClientPlugin;
import me.shedaniel.rei.api.client.registry.category.CategoryRegistry;
import me.shedaniel.rei.api.client.registry.display.DisplayRegistry;
@@ -40,6 +50,7 @@ import me.shedaniel.rei.api.client.registry.entry.EntryRegistry;
import me.shedaniel.rei.api.client.registry.screen.ExclusionZones;
import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry;
import me.shedaniel.rei.api.client.registry.transfer.TransferHandlerRegistry;
+import me.shedaniel.rei.api.client.util.ClientEntryStacks;
import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.util.EntryIngredients;
@@ -55,6 +66,7 @@ import me.shedaniel.rei.plugin.client.categories.crafting.DefaultCraftingCategor
import me.shedaniel.rei.plugin.client.categories.tag.DefaultTagCategory;
import me.shedaniel.rei.plugin.client.exclusionzones.DefaultPotionEffectExclusionZones;
import me.shedaniel.rei.plugin.client.exclusionzones.DefaultRecipeBookExclusionZones;
+import me.shedaniel.rei.plugin.client.favorites.EntryStackFavoriteEntry;
import me.shedaniel.rei.plugin.client.favorites.GameModeFavoriteEntry;
import me.shedaniel.rei.plugin.client.favorites.TimeFavoriteEntry;
import me.shedaniel.rei.plugin.client.favorites.WeatherFavoriteEntry;
@@ -77,6 +89,7 @@ import net.minecraft.client.gui.screens.inventory.*;
import net.minecraft.client.gui.screens.recipebook.RecipeUpdateListener;
import net.minecraft.core.Registry;
import net.minecraft.network.chat.Component;
+import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.BlockTags;
@@ -97,7 +110,9 @@ import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.Fluid;
import net.minecraft.world.level.material.FluidState;
import org.jetbrains.annotations.ApiStatus;
+import org.jetbrains.annotations.Nullable;
+import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Supplier;
import java.util.function.UnaryOperator;
@@ -135,6 +150,24 @@ public class DefaultClientPlugin implements REIClientPlugin, BuiltinClientPlugin
registry.addEntry(EntryStacks.of(fluid));
}
}
+
+ if (LocalDateTime.now().getMonthValue() == 4 && LocalDateTime.now().getDayOfMonth() == 1) {
+ registry.addEntry(ClientEntryStacks.of(new AbstractRenderer() {
+ private final ResourceLocation id = new ResourceLocation("roughlyenoughitems", "textures/gui/kirb.png");
+
+ @Override
+ public void render(PoseStack matrices, Rectangle bounds, int mouseX, int mouseY, float delta) {
+ RenderSystem.setShaderTexture(0, id);
+ innerBlit(matrices.last().pose(), bounds.x, bounds.getMaxX(), bounds.y, bounds.getMaxY(), getBlitOffset(), 0, 1, 0, 1);
+ }
+
+ @Override
+ @Nullable
+ public Tooltip getTooltip(TooltipContext context) {
+ return Tooltip.create(context, new TextComponent("Kirby"), ClientHelper.getInstance().getFormattedModFromModId("Dream Land"));
+ }
+ }));
+ }
}
@Override
@@ -324,7 +357,6 @@ public class DefaultClientPlugin implements REIClientPlugin, BuiltinClientPlugin
}
protected void registerForgePotions(DisplayRegistry registry, BuiltinClientPlugin clientPlugin) {
-
}
@Override
@@ -341,6 +373,17 @@ public class DefaultClientPlugin implements REIClientPlugin, BuiltinClientPlugin
registry.registerContainerClickArea(new Rectangle(78, 32, 28, 23), FurnaceScreen.class, SMELTING);
registry.registerContainerClickArea(new Rectangle(78, 32, 28, 23), SmokerScreen.class, SMOKING);
registry.registerContainerClickArea(new Rectangle(78, 32, 28, 23), BlastFurnaceScreen.class, BLASTING);
+
+ registry.registerDraggableComponentProvider(DraggableComponentProviderWidget.from(context -> {
+ if (!ScreenRegistry.getInstance().shouldDisplay(context.getScreen()) || !REIRuntime.getInstance().isOverlayVisible())
+ return Collections.emptyList();
+ return Widgets.walk(REIRuntime.getInstance().getOverlay().get().children(), DraggableComponentProviderWidget.class::isInstance);
+ }));
+ registry.registerDraggableComponentVisitor(DraggableComponentVisitorWidget.from(context -> {
+ if (!ScreenRegistry.getInstance().shouldDisplay(context.getScreen()) || !REIRuntime.getInstance().isOverlayVisible())
+ return Collections.emptyList();
+ return Widgets.walk(REIRuntime.getInstance().getOverlay().get().children(), DraggableComponentVisitorWidget.class::isInstance);
+ }));
}
@Override
@@ -350,6 +393,7 @@ public class DefaultClientPlugin implements REIClientPlugin, BuiltinClientPlugin
@Override
public void registerFavorites(FavoriteEntryType.Registry registry) {
+ registry.register(FavoriteEntryType.ENTRY_STACK, EntryStackFavoriteEntry.Type.INSTANCE);
registry.register(GameModeFavoriteEntry.ID, GameModeFavoriteEntry.Type.INSTANCE);
registry.getOrCrateSection(new TranslatableComponent(GameModeFavoriteEntry.TRANSLATION_KEY))
.add(Stream.concat(
diff --git a/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/EntryStackFavoriteEntry.java b/default-plugin/src/main/java/me/shedaniel/rei/plugin/client/favorites/EntryStackFavoriteEntry.java
new file mode 100644
index 000000000..ecd9e673e
--- /dev/null
+++ b/