aboutsummaryrefslogtreecommitdiff
path: root/api/src
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2024-10-26 16:55:52 +0800
committershedaniel <daniel@shedaniel.me>2024-10-26 16:55:57 +0800
commitddb48e2032d1986709cad973067693eec3118504 (patch)
treee7905130008c67767d2ad2a4d72f49ba4df7e6e3 /api/src
parenteaf9236e3da2adafcea204778ecc0072e70d0aa5 (diff)
downloadRoughlyEnoughItems-ddb48e2032d1986709cad973067693eec3118504.tar.gz
RoughlyEnoughItems-ddb48e2032d1986709cad973067693eec3118504.tar.bz2
RoughlyEnoughItems-ddb48e2032d1986709cad973067693eec3118504.zip
Update to 1.21.2 (Please read Primer)
https://hackmd.io/@shedaniel/rei17_primer
Diffstat (limited to 'api/src')
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java1
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/config/entry/EntryStackProvider.java21
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/favorites/CompoundFavoriteRenderer.java5
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/SimpleDisplayRenderer.java3
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/config/RecipeBorderType.java34
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Button.java9
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Panel.java21
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Tooltip.java6
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java11
-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/gui/widgets/utils/PanelTextures.java (renamed from api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfoContext.java)36
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/registry/display/DisplayGeneratorsRegistry.java71
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/registry/display/DisplayPredicatesRegistry.java63
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/registry/display/DisplayRegistry.java398
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/registry/display/reason/DisplayAdditionReason.java12
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/registry/transfer/TransferHandler.java5
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/display/Display.java46
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/display/DisplaySerializer.java47
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/display/DisplaySerializerRegistry.java65
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/display/SimpleDisplaySerializer.java77
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/display/SimpleGridMenuDisplay.java26
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/display/basic/BasicDisplay.java245
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/EntryIngredient.java54
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/EntrySerializer.java35
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java91
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/EntryComparatorRegistry.java4
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/FluidComparatorRegistry.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/comparison/ItemComparatorRegistry.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/settings/EntrySettingsAdapterRegistry.java4
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/type/EntryTypeRegistry.java6
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/fluid/FluidSupportProvider.java4
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/plugins/PluginManager.java11
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/plugins/PluginView.java6
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/plugins/REICommonPlugin.java111
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/plugins/REIPlugin.java64
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/registry/display/DisplayConsumer.java424
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/registry/display/DisplayRegistryCommon.java (renamed from api/src/main/java/me/shedaniel/rei/api/common/registry/RecipeManagerContext.java)53
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/registry/display/ServerDisplayRegistry.java (renamed from api/src/main/java/me/shedaniel/rei/api/common/plugins/REIServerPlugin.java)20
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/ItemRecipeFinder.java102
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/RecipeFinder.java483
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/RecipeFinderPopulator.java34
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfo.java221
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfoProvider.java49
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfoRegistry.java59
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuSerializationContext.java68
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/clean/InputCleanHandler.java65
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/DumpHandler.java60
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/RecipeBookGridMenuInfo.java75
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/SimpleGridMenuInfo.java75
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/SimpleMenuInfoProvider.java74
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/SimplePlayerInventoryMenuInfo.java118
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/ContainerSlotAccessor.java67
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/SlotAccessor.java6
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/stack/SlotAccessorRegistry.java6
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/util/CollectionUtils.java11
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/util/EntryIngredients.java182
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/util/EntryStacks.java17
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/ClientInternals.java3
-rw-r--r--api/src/main/java/me/shedaniel/rei/impl/Internals.java14
59 files changed, 1468 insertions, 2425 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java b/api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java
index a15816f24..11fbe4a37 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/config/ConfigObject.java
@@ -267,7 +267,6 @@ public interface ConfigObject {
RecipeBorderType getRecipeBorderType();
-
boolean isCompositeScrollBarPermanent();
boolean doesRegisterRecipesInAnotherThread();
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/config/entry/EntryStackProvider.java b/api/src/main/java/me/shedaniel/rei/api/client/config/entry/EntryStackProvider.java
index c103a2d94..ac15be536 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/config/entry/EntryStackProvider.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/config/entry/EntryStackProvider.java
@@ -23,11 +23,13 @@
package me.shedaniel.rei.api.client.config.entry;
-import me.shedaniel.rei.api.common.entry.EntrySerializer;
+import me.shedaniel.rei.api.common.display.basic.BasicDisplay;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.entry.type.EntryDefinition;
import me.shedaniel.rei.api.common.util.EntryStacks;
import net.minecraft.nbt.CompoundTag;
+import net.minecraft.nbt.NbtOps;
+import net.minecraft.nbt.Tag;
import org.jetbrains.annotations.ApiStatus;
import java.util.Objects;
@@ -53,11 +55,10 @@ public interface EntryStackProvider<T> {
*
* @return the saved tag
* @throws UnsupportedOperationException if the {@link EntryDefinition} does not support saving to a tag
- * @see EntrySerializer#supportSaving()
- * @see EntryStack#saveStack()
+ * @see EntryStack#codec()
* @since 8.3
*/
- CompoundTag save();
+ Tag save();
/**
* Returns whether the {@link EntryStack} is valid.
@@ -67,14 +68,14 @@ public interface EntryStackProvider<T> {
boolean isValid();
/**
- * Creates a new {@link EntryStackProvider} from the given {@link CompoundTag},
+ * Creates a new {@link EntryStackProvider} from the given {@link Tag},
* the stack is not resolved immediately, but rather deferred until {@link #provide()} is called.
*
* @param tag the tag to load from
* @param <T> the type of {@link EntryStack}
* @return the {@link EntryStackProvider}
*/
- static <T> EntryStackProvider<T> defer(CompoundTag tag) {
+ static <T> EntryStackProvider<T> defer(Tag tag) {
return new EntryStackProvider<T>() {
private EntryStack<T> stack;
@@ -82,7 +83,7 @@ public interface EntryStackProvider<T> {
public EntryStack<T> provide() {
if (stack == null) {
try {
- stack = (EntryStack<T>) EntryStack.read(tag);
+ stack = EntryStack.codec().parse(BasicDisplay.registryAccess().createSerializationContext(NbtOps.INSTANCE), tag).getOrThrow().cast();
} catch (Exception e) {
e.printStackTrace();
return (EntryStack<T>) EntryStack.empty();
@@ -95,7 +96,7 @@ public interface EntryStackProvider<T> {
}
@Override
- public CompoundTag save() {
+ public Tag save() {
return tag.copy();
}
@@ -137,8 +138,8 @@ public interface EntryStackProvider<T> {
}
@Override
- public CompoundTag save() {
- return finalStack.saveStack();
+ public Tag save() {
+ return EntryStack.codec().encodeStart(BasicDisplay.registryAccess().createSerializationContext(NbtOps.INSTANCE), finalStack).getOrThrow();
}
@Override
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/favorites/CompoundFavoriteRenderer.java b/api/src/main/java/me/shedaniel/rei/api/client/favorites/CompoundFavoriteRenderer.java
index 701a2e611..ad1c7b3b2 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/favorites/CompoundFavoriteRenderer.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/favorites/CompoundFavoriteRenderer.java
@@ -23,7 +23,6 @@
package me.shedaniel.rei.api.client.favorites;
-import me.shedaniel.clothconfig2.api.ScissorsHandler;
import me.shedaniel.clothconfig2.api.animator.NumberAnimator;
import me.shedaniel.clothconfig2.api.animator.ValueAnimator;
import me.shedaniel.math.Rectangle;
@@ -96,7 +95,7 @@ public class CompoundFavoriteRenderer implements Renderer {
Vector4f vector4f2 = new Vector4f(bounds.getMaxX(), bounds.getMaxY(), 0, 1.0F);
graphics.pose().last().pose().transform(vector4f2);
scissorArea.setBounds((int) vector4f.x(), (int) vector4f.y(), (int) vector4f2.x() - (int) vector4f.x(), (int) vector4f2.y() - (int) vector4f.y());
- ScissorsHandler.INSTANCE.scissor(scissorArea);
+ graphics.enableScissor(scissorArea.x, scissorArea.y, scissorArea.getMaxX(), scissorArea.getMaxY());
graphics.pose().pushPose();
graphics.pose().translate(0, this.offset.floatValue() * -bounds.getHeight(), 0);
for (int i = 0; i < count; i++) {
@@ -104,7 +103,7 @@ public class CompoundFavoriteRenderer implements Renderer {
graphics.pose().translate(0, bounds.height, 0);
}
graphics.pose().popPose();
- ScissorsHandler.INSTANCE.removeLastScissor();
+ graphics.disableScissor();
}
private void updateAnimator(float delta) {
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/SimpleDisplayRenderer.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/SimpleDisplayRenderer.java
index c3963ec93..f7863abcc 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/gui/SimpleDisplayRenderer.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/SimpleDisplayRenderer.java
@@ -36,6 +36,7 @@ import me.shedaniel.rei.api.common.util.CollectionUtils;
import me.shedaniel.rei.api.common.util.EntryStacks;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.events.GuiEventListener;
+import net.minecraft.client.renderer.RenderType;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
import org.jetbrains.annotations.ApiStatus;
@@ -135,7 +136,7 @@ public class SimpleDisplayRenderer extends DisplayRenderer implements WidgetHold
graphics.pose().popPose();
xx = bounds.x + 4 + 18 * (getItemsPerLine() - 2);
yy = bounds.y + getHeight() / 2 - 8;
- graphics.blit(CHEST_GUI_TEXTURE, xx, yy, 0, 28, 18, 18);
+ graphics.blit(RenderType::guiTextured, CHEST_GUI_TEXTURE, xx, yy, 0, 28, 18, 18, 256, 256);
xx += 18;
yy += outputWidgets.size() * -9 + 9;
graphics.pose().pushPose();
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/config/RecipeBorderType.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/config/RecipeBorderType.java
index 86db371be..279a9d62e 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/gui/config/RecipeBorderType.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/config/RecipeBorderType.java
@@ -23,36 +23,36 @@
package me.shedaniel.rei.api.client.gui.config;
+import me.shedaniel.rei.api.client.gui.widgets.utils.PanelTextures;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.resources.language.I18n;
+import net.minecraft.resources.ResourceLocation;
import java.util.Locale;
@Environment(EnvType.CLIENT)
-public enum RecipeBorderType {
- DEFAULT(66),
- LIGHTER(0),
- NONE(0, false);
+public enum RecipeBorderType implements PanelTextures {
+ DEFAULT(ResourceLocation.parse("roughlyenoughitems:widget/panel_default"), ResourceLocation.parse("roughlyenoughitems:widget/panel_default_dark")),
+ LIGHTER(ResourceLocation.parse("roughlyenoughitems:widget/panel_lighter"), ResourceLocation.parse("roughlyenoughitems:widget/panel_lighter_dark")),
+ NONE(ResourceLocation.parse("roughlyenoughitems:widget/panel_none"), ResourceLocation.parse("roughlyenoughitems:widget/panel_none_dark"));
- private int offset;
- private boolean render;
+ private final ResourceLocation texture;
+ private final ResourceLocation darkTexture;
- RecipeBorderType(int offset) {
- this(offset, true);
+ RecipeBorderType(ResourceLocation texture, ResourceLocation darkTexture) {
+ this.texture = texture;
+ this.darkTexture = darkTexture;
}
- RecipeBorderType(int offset, boolean render) {
- this.offset = offset;
- this.render = render;
- }
-
- public int getYOffset() {
- return offset;
+ @Override
+ public ResourceLocation texture() {
+ return texture;
}
- public boolean isRendering() {
- return render;
+ @Override
+ public ResourceLocation darkTexture() {
+ return darkTexture;
}
@Override
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Button.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Button.java
index 4705c3969..2c4ec2260 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Button.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Button.java
@@ -44,15 +44,6 @@ public abstract class Button extends BaseWidget<Button> {
public abstract int getTextColor(Point mouse);
- public abstract void setTextureId(@Nullable BiFunction<Button, Point, Integer> textureIdFunction);
-
- public final Button textureId(@Nullable BiFunction<Button, Point, Integer> textureIdFunction) {
- setTextureId(textureIdFunction);
- return this;
- }
-
- public abstract int getTextureId(Point mouse);
-
public abstract void onClick();
public abstract boolean isEnabled();
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Panel.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Panel.java
index e7fa9926c..17eb766e7 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Panel.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Panel.java
@@ -24,26 +24,25 @@
package me.shedaniel.rei.api.client.gui.widgets;
import me.shedaniel.rei.api.client.REIRuntime;
+import me.shedaniel.rei.api.client.gui.widgets.utils.PanelTextures;
+import net.minecraft.resources.ResourceLocation;
import java.util.function.Predicate;
public abstract class Panel extends WidgetWithBounds {
- public abstract int getXTextureOffset();
+ public abstract void setTexture(ResourceLocation texture, ResourceLocation darkTexture);
- public abstract void setXTextureOffset(int xTextureOffset);
+ public final void setTexture(PanelTextures textures) {
+ setTexture(textures.texture(), textures.darkTexture());
+ }
- public final Panel xTextureOffset(int xTextureOffset) {
- setXTextureOffset(xTextureOffset);
+ public final Panel texture(ResourceLocation texture, ResourceLocation darkTexture) {
+ setTexture(texture, darkTexture);
return this;
}
- public abstract int getYTextureOffset();
-
- public abstract void setYTextureOffset(int yTextureOffset);
-
- public final Panel yTextureOffset(int yTextureOffset) {
- setYTextureOffset(yTextureOffset);
- return this;
+ public final Panel texture(PanelTextures textures) {
+ return texture(textures.texture(), textures.darkTexture());
}
public abstract int getColor();
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 168db401e..a877311af 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
@@ -33,6 +33,7 @@ import me.shedaniel.rei.impl.ClientInternals;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.network.chat.Component;
+import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.inventory.tooltip.TooltipComponent;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
@@ -125,6 +126,11 @@ public interface Tooltip {
Tooltip withContextStack(EntryStack<?> stack);
+ @Nullable
+ ResourceLocation getTooltipStyle();
+
+ Tooltip withTooltipStyle(@Nullable ResourceLocation styleLocation);
+
default void queue() {
EnvExecutor.runInEnv(Env.CLIENT, () -> () -> REIRuntime.getInstance().queueTooltip(this));
}
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java
index 82b07c256..06a770620 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/gui/widgets/Widget.java
@@ -24,7 +24,6 @@
package me.shedaniel.rei.api.client.gui.widgets;
import com.mojang.blaze3d.vertex.PoseStack;
-import me.shedaniel.clothconfig2.api.ScissorsHandler;
import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle;
import me.shedaniel.math.impl.PointHelper;
@@ -120,12 +119,8 @@ public abstract class Widget extends AbstractContainerEventHandler implements Re
@ApiStatus.Experimental
public static CloseableScissors scissor(GuiGraphics graphics, Rectangle bounds) {
- return scissor(graphics.pose().last().pose(), bounds);
- }
-
- @ApiStatus.Experimental
- public static