aboutsummaryrefslogtreecommitdiff
path: root/api/src
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-08-05 01:30:08 +0800
committershedaniel <daniel@shedaniel.me>2022-08-26 10:53:55 +0900
commit8c13c015031a0de865d2e767cd8e879754f803e2 (patch)
tree2bb6fa6578b63d1c216b863a6c4206295c044b36 /api/src
parent8f5d3ef632f3d1a733c98ce5607c9fd5a0fd7567 (diff)
downloadRoughlyEnoughItems-8c13c015031a0de865d2e767cd8e879754f803e2.tar.gz
RoughlyEnoughItems-8c13c015031a0de865d2e767cd8e879754f803e2.tar.bz2
RoughlyEnoughItems-8c13c015031a0de865d2e767cd8e879754f803e2.zip
More work
Diffstat (limited to 'api/src')
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/ClientHelper.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/REIRuntime.java4
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntry.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/BatchedSlots.java40
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Slot.java22
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/TextField.java51
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Tooltip.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/TooltipContext.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widgets.java11
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/overlay/ScreenOverlay.java7
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/registry/entry/PreFilteredEntryList.java3
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/registry/screen/ClickArea.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandler.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/view/ViewSearchBuilder.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/category/CategoryIdentifier.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/EntryIngredient.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/EntryComparator.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryType.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/plugins/PluginManager.java4
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/plugins/PluginView.java13
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/registry/ParentReloadable.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/util/CollectionUtils.java9
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/client/ClientInternals.java (renamed from api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java)70
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/client/provider/DelegatingFavoriteEntryProvider.java34
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/client/provider/FavoritesEntriesListProvider.java32
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/client/provider/MissingStacksTooltipProvider.java33
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/client/provider/WidgetsProvider.java82
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/common/InternalLogger.java1
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/common/Internals.java (renamed from api/src/main/java/me/shedaniel/rei/impl/Internals.java)44
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/common/provider/CategoryIdentifierConstructor.java31
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/common/provider/DeferringEntryTypeProvider.java31
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/common/provider/EntryIngredientProvider.java41
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/common/provider/EntryStackProvider.java34
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/common/provider/NbtHasherProvider.java31
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/common/provider/PluginManagerConstructor.java34
36 files changed, 557 insertions, 131 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/ClientHelper.java b/api/src/main/java/me/shedaniel/rei/api/client/ClientHelper.java
index 2e1be6030..6b62994b1 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/ClientHelper.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/ClientHelper.java
@@ -28,7 +28,7 @@ import me.shedaniel.rei.api.client.gui.widgets.Tooltip;
import me.shedaniel.rei.api.client.view.ViewSearchBuilder;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.util.FormattingUtils;
-import me.shedaniel.rei.impl.ClientInternals;
+import me.shedaniel.rei.impl.client.ClientInternals;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.ChatFormatting;
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/REIRuntime.java b/api/src/main/java/me/shedaniel/rei/api/client/REIRuntime.java
index a17751703..540dcc2ab 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/REIRuntime.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/REIRuntime.java
@@ -134,7 +134,9 @@ public interface REIRuntime extends Reloadable<REIClientPlugin> {
* @return the text field used for searching, or {@code null} if none
*/
@Nullable
- TextField getSearchTextField();
+ default TextField getSearchTextField() {
+ return getOverlay().map(ScreenOverlay::getSearchField).orElse(null);
+ }
/**
* Queues a tooltip to be displayed.
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntry.java b/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntry.java
index 6c5415910..e1f18684d 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntry.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/favorites/FavoriteEntry.java
@@ -29,7 +29,7 @@ import me.shedaniel.rei.api.client.entry.region.RegionEntry;
import me.shedaniel.rei.api.client.gui.Renderer;
import me.shedaniel.rei.api.client.util.ClientEntryStacks;
import me.shedaniel.rei.api.common.entry.EntryStack;
-import me.shedaniel.rei.impl.ClientInternals;
+import me.shedaniel.rei.impl.client.ClientInternals;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.nbt.CompoundTag;
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/BatchedSlots.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/BatchedSlots.java
new file mode 100644
index 000000000..6cead07dd
--- /dev/null
+++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/BatchedSlots.java
@@ -0,0 +1,40 @@
+/*
+ * This file is licensed under the MIT License, part of Roughly Enough Items.
+ * Copyright (c) 2018, 2019, 2020, 2021, 2022 shedaniel
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+package me.shedaniel.rei.api.client.gui.widgets;
+
+import org.apache.commons.lang3.mutable.MutableInt;
+import org.apache.commons.lang3.mutable.MutableLong;
+
+import java.util.Collection;
+import java.util.List;
+
+public abstract class BatchedSlots extends Widget implements List<Slot> {
+ public abstract void addUnbatched(Slot slot);
+
+ public abstract void addAllUnbatched(Collection<? extends Slot> slots);
+
+ public abstract boolean isBatched();
+
+ public abstract void addDebugger(MutableInt size, MutableLong time);
+}
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Slot.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Slot.java
index f0b2842e6..88220ecf2 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Slot.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Slot.java
@@ -23,6 +23,7 @@
package me.shedaniel.rei.api.client.gui.widgets;
+import com.mojang.blaze3d.vertex.PoseStack;
import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.common.entry.EntryStack;
@@ -30,13 +31,14 @@ import org.jetbrains.annotations.Nullable;
import java.util.Collection;
import java.util.List;
+import java.util.function.UnaryOperator;
public abstract class Slot extends WidgetWithBounds {
public static final byte UN_MARKED = 0;
public static final byte INPUT = 1;
public static final byte OUTPUT = 2;
- public Slot unmarkInputOrOutput() {
+ public final Slot unmarkInputOrOutput() {
setNoticeMark(UN_MARKED);
return this;
}
@@ -59,7 +61,7 @@ public abstract class Slot extends WidgetWithBounds {
public abstract boolean isInteractable();
- public Slot interactable(boolean interactable) {
+ public final Slot interactable(boolean interactable) {
setInteractable(interactable);
return this;
}
@@ -76,7 +78,7 @@ public abstract class Slot extends WidgetWithBounds {
public abstract boolean isInteractableFavorites();
- public Slot interactableFavorites(boolean interactableFavorites) {
+ public final Slot interactableFavorites(boolean interactableFavorites) {
setInteractableFavorites(interactableFavorites);
return this;
}
@@ -140,8 +142,22 @@ public abstract class Slot extends WidgetWithBounds {
public abstract Rectangle getInnerBounds();
+ public abstract void drawBackground(PoseStack matrices, int mouseX, int mouseY, float delta);
+
@Nullable
+ @Deprecated(forRemoval = true)
public Tooltip getCurrentTooltip(Point point) {
+ return getCurrentTooltip(TooltipContext.of(point));
+ }
+
+ public abstract void drawExtra(PoseStack matrices, int mouseX, int mouseY, float delta);
+
+ @Nullable
+ public Tooltip getCurrentTooltip(TooltipContext context) {
return null;
}
+
+ public abstract void drawHighlighted(PoseStack matrices, int mouseX, int mouseY, float delta);
+
+ public abstract void tooltipProcessor(UnaryOperator<Tooltip> operator);
}
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 7002ad26f..803502972 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,7 +23,23 @@
package me.shedaniel.rei.api.client.gui.widgets;
-public interface TextField {
+import com.mojang.blaze3d.vertex.PoseStack;
+import it.unimi.dsi.fastutil.booleans.BooleanConsumer;
+import me.shedaniel.clothconfig2.api.TickableWidget;
+import net.minecraft.network.chat.Style;
+import net.minecraft.util.FormattedCharSequence;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.function.Consumer;
+import java.util.function.Function;
+
+import static me.shedaniel.rei.api.client.gui.widgets.Widget.mouse;
+
+public interface TextField extends TickableWidget {
+ void setFormatter(TextFormatter formatter);
+
+ void setSuggestionRenderer(SuggestionRenderer renderer);
+
String getText();
void setText(String text);
@@ -57,4 +73,37 @@ public interface TextField {
boolean isFocused();
void setFocused(boolean focused);
+
+ void setResponder(Consumer<String> responder);
+
+ void setFocusedResponder(BooleanConsumer responder);
+
+ void setTextTransformer(Function<String, String> textTransformer);
+
+ @Nullable
+ String getSuggestion();
+
+ void setSuggestion(@Nullable String suggestion);
+
+ void setBorderColorProvider(BorderColorProvider borderColorProvider);
+
+ WidgetWithBounds asWidget();
+
+ interface TextFormatter {
+ TextFormatter DEFAULT = (text, index) -> {
+ return FormattedCharSequence.forward(text, Style.EMPTY);
+ };
+
+ FormattedCharSequence format(String text, int index);
+ }
+
+ interface SuggestionRenderer {
+ void renderSuggestion(PoseStack matrices, int x, int y, int color);
+ }
+
+ interface BorderColorProvider {
+ BorderColorProvider DEFAULT = textField -> textField.asWidget().containsMouse(mouse()) || textField.isFocused() ? 0xffffffff : 0xffa0a0a0;
+
+ int getBorderColor(TextField textField);
+ }
}
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Tooltip.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Tooltip.java
index dad0e9d59..550c9b226 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Tooltip.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Tooltip.java
@@ -29,7 +29,7 @@ import me.shedaniel.math.Point;
import me.shedaniel.rei.api.client.REIRuntime;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.util.CollectionUtils;
-import me.shedaniel.rei.impl.ClientInternals;
+import me.shedaniel.rei.impl.client.ClientInternals;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent;
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/TooltipContext.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/TooltipContext.java
index 598bbc292..cb20f2bd2 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/TooltipContext.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/TooltipContext.java
@@ -25,7 +25,7 @@ package me.shedaniel.rei.api.client.gui.widgets;
import me.shedaniel.math.Point;
import me.shedaniel.math.impl.PointHelper;
-import me.shedaniel.rei.impl.ClientInternals;
+import me.shedaniel.rei.impl.client.ClientInternals;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.world.item.TooltipFlag;
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widgets.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widgets.java
index 028947c34..4e7e2d336 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widgets.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widgets.java
@@ -31,7 +31,7 @@ import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.client.config.ConfigObject;
import me.shedaniel.rei.api.client.gui.DrawableConsumer;
import me.shedaniel.rei.api.client.gui.Renderer;
-import me.shedaniel.rei.impl.ClientInternals;
+import me.shedaniel.rei.impl.client.ClientInternals;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.Minecraft;
@@ -327,6 +327,15 @@ public final class Widgets {
return ClientInternals.getWidgetsProvider().wrapPadded(padLeft, padRight, padTop, padBottom, widget);
}
+ public static TextField createTextField(Rectangle bounds) {
+ return ClientInternals.getWidgetsProvider().createTextField(bounds);
+ }
+
+ @ApiStatus.Experimental
+ public static BatchedSlots createBatchedSlots() {
+ return ClientInternals.getWidgetsProvider().createBatchedSlots();
+ }
+
public static Widget delegate(Supplier<Widget> supplier) {
return new DelegateWidget(Widgets.noOp()) {
@Override
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 f7f5c481e..944755f61 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
@@ -23,7 +23,10 @@
package me.shedaniel.rei.api.client.overlay;
+import com.mojang.blaze3d.vertex.PoseStack;
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;
import me.shedaniel.rei.api.client.gui.widgets.WidgetWithBounds;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@@ -43,4 +46,8 @@ public abstract class ScreenOverlay extends WidgetWithBounds {
public abstract OverlayListWidget getEntryList();
public abstract Optional<OverlayListWidget> getFavoritesList();
+
+ public abstract TextField getSearchField();
+
+ public abstract void renderTooltip(PoseStack matrices, Tooltip tooltip);
}
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/registry/entry/PreFilteredEntryList.java b/api/src/main/java/me/shedaniel/rei/api/client/registry/entry/PreFilteredEntryList.java
index f9bd53422..f05db2347 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/registry/entry/PreFilteredEntryList.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/registry/entry/PreFilteredEntryList.java
@@ -26,8 +26,7 @@ package me.shedaniel.rei.api.client.registry.entry;
import me.shedaniel.rei.api.client.plugins.REIClientPlugin;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.registry.Reloadable;
-import me.shedaniel.rei.impl.ClientInternals;
-import me.shedaniel.rei.impl.Internals;
+import me.shedaniel.rei.impl.client.ClientInternals;
import org.jetbrains.annotations.ApiStatus;
import java.util.Collection;
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/registry/screen/ClickArea.java b/api/src/main/java/me/shedaniel/rei/api/client/registry/screen/ClickArea.java
index 3f6803d97..8b6aad935 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/registry/screen/ClickArea.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/registry/screen/ClickArea.java
@@ -25,7 +25,7 @@ package me.shedaniel.rei.api.client.registry.screen;
import me.shedaniel.math.Point;
import me.shedaniel.rei.api.common.category.CategoryIdentifier;
-import me.shedaniel.rei.impl.ClientInternals;
+import me.shedaniel.rei.impl.client.ClientInternals;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.gui.screens.Screen;
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandler.java b/api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandler.java
index ec32d75aa..3945e9c63 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandler.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandler.java
@@ -27,7 +27,7 @@ import me.shedaniel.math.Point;
import me.shedaniel.rei.api.client.gui.widgets.Tooltip;
import me.shedaniel.rei.api.common.display.Display;
import me.shedaniel.rei.api.common.entry.EntryIngredient;
-import me.shedaniel.rei.impl.ClientInternals;
+import me.shedaniel.rei.impl.client.ClientInternals;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.Minecraft;
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/view/ViewSearchBuilder.java b/api/src/main/java/me/shedaniel/rei/api/client/view/ViewSearchBuilder.java
index 1afa8f04d..5f7a2c1a4 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/view/ViewSearchBuilder.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/view/ViewSearchBuilder.java
@@ -31,7 +31,7 @@ import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.api.common.display.Display;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.util.CollectionUtils;
-import me.shedaniel.rei.impl.ClientInternals;
+import me.shedaniel.rei.impl.client.ClientInternals;
import me.shedaniel.rei.impl.display.DisplaySpec;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/category/CategoryIdentifier.java b/api/src/main/java/me/shedaniel/rei/api/common/category/CategoryIdentifier.java
index 8fd2136c0..001517a5c 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/category/CategoryIdentifier.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/category/CategoryIdentifier.java
@@ -25,7 +25,7 @@ package me.shedaniel.rei.api.common.category;
import me.shedaniel.rei.api.common.display.Display;
import me.shedaniel.rei.api.common.util.Identifiable;
-import me.shedaniel.rei.impl.Internals;
+import me.shedaniel.rei.impl.common.Internals;
import net.minecraft.ResourceLocationException;
import net.minecraft.resources.ResourceLocation;
import org.jetbrains.annotations.ApiStatus;
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryIngredient.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryIngredient.java
index fd6302218..27f37f620 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryIngredient.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryIngredient.java
@@ -24,7 +24,7 @@
package me.shedaniel.rei.api.common.entry;
import me.shedaniel.rei.api.common.entry.type.EntryDefinition;
-import me.shedaniel.rei.impl.Internals;
+import me.shedaniel.rei.impl.common.Internals;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.ListTag;
import org.jetbrains.annotations.ApiStatus;
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java
index 0dcb10eda..2d2f3ca15 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java
@@ -37,7 +37,7 @@ import me.shedaniel.rei.api.common.entry.type.EntryDefinition;
import me.shedaniel.rei.api.common.entry.type.EntryType;
import me.shedaniel.rei.api.common.entry.type.EntryTypeRegistry;
import me.shedaniel.rei.api.common.util.TextRepresentable;
-import me.shedaniel.rei.impl.Internals;
+import me.shedaniel.rei.impl.common.Internals;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.nbt.CompoundTag;
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/EntryComparator.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/EntryComparator.java
index e24d41327..c30fb7aa7 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/EntryComparator.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/EntryComparator.java
@@ -24,7 +24,7 @@
package me.shedaniel.rei.api.common.entry.comparison;
import dev.architectury.fluid.FluidStack;
-import me.shedaniel.rei.impl.Internals;
+import me.shedaniel.rei.impl.common.Internals;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag;
import net.minecraft.world.item.ItemStack;
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryType.java b/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryType.java
index 6db72c191..69834c070 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryType.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryType.java
@@ -25,7 +25,7 @@ package me.shedaniel.rei.api.common.entry.type;
import me.shedaniel.rei.api.client.entry.type.BuiltinClientEntryTypes;
import me.shedaniel.rei.api.common.util.Identifiable;
-import me.shedaniel.rei.impl.Internals;
+import me.shedaniel.rei.impl.common.Internals;
import net.minecraft.resources.ResourceLocation;
import org.jetbrains.annotations.ApiStatus;
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/plugins/PluginManager.java b/api/src/main/java/me/shedaniel/rei/api/common/plugins/PluginManager.java
index f135fded3..b42a5d8f5 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/plugins/PluginManager.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/plugins/PluginManager.java
@@ -28,8 +28,8 @@ import me.shedaniel.rei.api.client.plugins.REIClientPlugin;
import me.shedaniel.rei.api.common.registry.ParentReloadable;
import me.shedaniel.rei.api.common.registry.Reloadable;
import me.shedaniel.rei.api.common.util.CollectionUtils;
-import me.shedaniel.rei.impl.ClientInternals;