aboutsummaryrefslogtreecommitdiff
path: root/api/src
diff options
context:
space:
mode:
Diffstat (limited to 'api/src')
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/REIHelper.java1
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/BatchedEntryRenderer.java (renamed from api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/BatchEntryRenderer.java)42
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/EntryRenderer.java7
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/gui/SimpleDisplayRenderer.java4
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/client/util/SpriteRenderer.java4
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/entry/EntryStack.java4
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfo.java5
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/SimplePlayerInventoryMenuInfo.java2
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/util/EntryIngredients.java11
-rw-r--r--api/src/main/java/me/shedaniel/rei/api/common/util/EntryStacks.java16
10 files changed, 52 insertions, 44 deletions
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/REIHelper.java b/api/src/main/java/me/shedaniel/rei/api/client/REIHelper.java
index 9cc776a55..ff5a3b762 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/REIHelper.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/REIHelper.java
@@ -35,6 +35,7 @@ import net.fabricmc.api.Environment;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
import net.minecraft.resources.ResourceLocation;
+import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.Nullable;
import java.util.Optional;
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/BatchEntryRenderer.java b/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/BatchedEntryRenderer.java
index ba7e5d150..400ef727c 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/BatchEntryRenderer.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/BatchedEntryRenderer.java
@@ -29,28 +29,54 @@ import me.shedaniel.rei.api.common.entry.EntryStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource;
-public interface BatchEntryRenderer<T> extends EntryRenderer<T> {
- static <T> int getBatchIdFrom(EntryStack<T> entry) {
- EntryRenderer<T> renderer = entry.getRenderer();
- if (renderer instanceof BatchEntryRenderer) return ((BatchEntryRenderer<T>) renderer).getBatchId(entry);
- return renderer.getClass().hashCode();
+public interface BatchedEntryRenderer<T> extends EntryRenderer<T> {
+ /**
+ * Returns a batch identifier, stacks with the same batch identifier will be grouped together
+ * into a batch.
+ *
+ * @param entry the stack
+ * @param bounds the bounds of the entry
+ * @return the batch identifier
+ */
+ default int getBatchIdentifier(EntryStack<T> entry, Rectangle bounds) {
+ return getClass().hashCode();
}
- default int getBatchId(EntryStack<T> entry) {
- return getClass().hashCode();
+ /**
+ * Modifies the {@link PoseStack} passed tp various batch rendering methods.
+ *
+ * @param matrices the matrix stack
+ * @return the modified matrix stack, could be an entirely different stack
+ */
+ default PoseStack batchModifyMatrices(PoseStack matrices) {
+ return matrices;
}
+ /**
+ * Starts the batch rendering, used to setup states, only called once with every batch.
+ *
+ * @param entry the first entry in the batch
+ * @param matrices the matrix stack
+ * @param delta the tick delta
+ */
void startBatch(EntryStack<T> entry, PoseStack matrices, float delta);
void renderBase(EntryStack<T> entry, PoseStack matrices, MultiBufferSource.BufferSource immediate, Rectangle bounds, int mouseX, int mouseY, float delta);
void renderOverlay(EntryStack<T> entry, PoseStack matrices, MultiBufferSource.BufferSource immediate, Rectangle bounds, int mouseX, int mouseY, float delta);
+ /**
+ * Ends the batch rendering, used to setup states, only called once with every batch.
+ *
+ * @param entry the first entry in the batch
+ * @param matrices the matrix stack
+ * @param delta the tick delta
+ */
void endBatch(EntryStack<T> entry, PoseStack matrices, float delta);
- @Deprecated
@Override
default void render(EntryStack<T> entry, PoseStack matrices, Rectangle bounds, int mouseX, int mouseY, float delta) {
+ matrices = batchModifyMatrices(matrices);
startBatch(entry, matrices, delta);
MultiBufferSource.BufferSource immediate = Minecraft.getInstance().renderBuffers().bufferSource();
renderBase(entry, matrices, immediate, bounds, mouseX, mouseY, delta);
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/EntryRenderer.java b/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/EntryRenderer.java
index 9ee60c5f8..caabdbabd 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/EntryRenderer.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/entry/renderer/EntryRenderer.java
@@ -34,6 +34,13 @@ import net.fabricmc.api.Environment;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
+/**
+ * A renderer to render a {@link EntryStack}.
+ * Use {@link EntryStack.Settings#RENDERER} to change the {@link EntryRenderer} for a {@link EntryStack}.
+ *
+ * @param <T> the entry type
+ * @see BatchedEntryRenderer
+ */
public interface EntryRenderer<T> {
static <T> EntryRenderer<T> empty() {
return ClientInternals.getEmptyEntryRenderer();
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 917a88b75..3ec24c511 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
@@ -24,6 +24,7 @@
package me.shedaniel.rei.api.client.gui;
import com.google.common.base.Predicates;
+import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
import it.unimi.dsi.fastutil.longs.LongSet;
@@ -37,7 +38,6 @@ import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.util.CollectionUtils;
import me.shedaniel.rei.api.common.util.EntryStacks;
-import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
@@ -121,7 +121,7 @@ public class SimpleDisplayRenderer extends DisplayRenderer implements WidgetHold
}
xx = bounds.x + 4 + 18 * (getItemsPerLine() - 2);
yy = bounds.y + getHeight() / 2 - 8;
- Minecraft.getInstance().getTextureManager().bind(CHEST_GUI_TEXTURE);
+ RenderSystem.setShaderTexture(0, CHEST_GUI_TEXTURE);
blit(matrices, xx, yy, 0, 28, 18, 18);
xx += 18;
yy += outputWidgets.size() * -9 + 9;
diff --git a/api/src/main/java/me/shedaniel/rei/api/client/util/SpriteRenderer.java b/api/src/main/java/me/shedaniel/rei/api/client/util/SpriteRenderer.java
index 10de31d6d..1ff551825 100644
--- a/api/src/main/java/me/shedaniel/rei/api/client/util/SpriteRenderer.java
+++ b/api/src/main/java/me/shedaniel/rei/api/client/util/SpriteRenderer.java
@@ -23,11 +23,11 @@
package me.shedaniel.rei.api.client.util;
+import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Matrix3f;
import com.mojang.math.Matrix4f;
-import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
@@ -212,7 +212,7 @@ public class SpriteRenderer {
float sX = sprite.getWidth();
float sY = sprite.getHeight();
- Minecraft.getInstance().getTextureManager().bind(texture);
+ RenderSystem.setShaderTexture(0, texture);
for (float y = y1; y < y2; y += Math.min(y2 - y, sY)) {
for (float x = x1; x < x2; x += Math.min(x2 - x, sX)) {
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 660605f32..d6f73a7cf 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
@@ -103,7 +103,7 @@ public interface EntryStack<T> extends TextRepresentable, Renderer {
@Environment(EnvType.CLIENT)
default EntryRenderer<T> getRenderer() {
- EntryRenderer<?> renderer = get(Settings.RENDER).apply(this);
+ EntryRenderer<?> renderer = get(Settings.RENDERER).apply(this);
return renderer == null ? EntryRenderer.empty() : renderer.cast();
}
@@ -162,7 +162,7 @@ public interface EntryStack<T> extends TextRepresentable, Renderer {
public static final Function<EntryStack<?>, EntryRenderer<?>> EMPTY_RENDERER = stack -> EntryRenderer.empty();
public static final BiFunction<EntryStack<?>, Tooltip, Tooltip> DEFAULT_TOOLTIP_PROCESSOR = (stack, tooltip) -> tooltip;
@Environment(EnvType.CLIENT)
- public static final Settings<Function<EntryStack<?>, EntryRenderer<?>>> RENDER = new Settings<>(DEFAULT_RENDERER);
+ public static final Settings<Function<EntryStack<?>, EntryRenderer<?>>> RENDERER = new Settings<>(DEFAULT_RENDERER);
@Deprecated
public static final Settings<BiFunction<EntryStack<?>, Tooltip, Tooltip>> TOOLTIP_PROCESSOR = new Settings<>(DEFAULT_TOOLTIP_PROCESSOR);
@Deprecated
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfo.java b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfo.java
index bdb54adbb..11c307def 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfo.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/MenuInfo.java
@@ -65,11 +65,8 @@ public interface MenuInfo<T extends AbstractContainerMenu, D extends Display> {
Iterable<StackAccessor> getInventoryStacks(MenuInfoContext<T, ?, D> context);
default void markDirty(MenuInfoContext<T, ? extends ServerPlayer, D> context) {
- context.getPlayerEntity().inventory.setChanged();
+ context.getPlayerEntity().getInventory().setChanged();
context.getMenu().broadcastChanges();
-
- AbstractContainerMenu containerMenu = context.getPlayerEntity().containerMenu;
- context.getPlayerEntity().refreshContainer(containerMenu, containerMenu.getItems());
}
default void populateRecipeFinder(T container, RecipeFinder finder) {}
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/SimplePlayerInventoryMenuInfo.java b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/SimplePlayerInventoryMenuInfo.java
index 67f5d2bb1..e94630d46 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/SimplePlayerInventoryMenuInfo.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/transfer/info/simple/SimplePlayerInventoryMenuInfo.java
@@ -77,7 +77,7 @@ public interface SimplePlayerInventoryMenuInfo<T extends AbstractContainerMenu,
}
default Iterable<StackAccessor> getInventoryStacks(MenuInfoContext<T, ?, D> context) {
- Inventory inventory = context.getPlayerEntity().inventory;
+ Inventory inventory = context.getPlayerEntity().getInventory();
return IntStream.range(0, inventory.items.size())
.mapToObj(index -> StackAccessor.fromContainer(inventory, index))
.collect(Collectors.toList());
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/util/EntryIngredients.java b/api/src/main/java/me/shedaniel/rei/api/common/util/EntryIngredients.java
index 786a212fc..d2488f4fa 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/util/EntryIngredients.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/util/EntryIngredients.java
@@ -25,7 +25,6 @@ package me.shedaniel.rei.api.common.util;
import com.google.common.collect.ImmutableList;
import me.shedaniel.architectury.fluid.FluidStack;
-import me.shedaniel.architectury.utils.Fraction;
import me.shedaniel.rei.api.common.entry.EntryIngredient;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.entry.type.EntryDefinition;
@@ -58,15 +57,7 @@ public final class EntryIngredients {
return EntryIngredient.of(EntryStacks.of(fluid));
}
- public static EntryIngredient of(Fluid fluid, int amount) {
- return EntryIngredient.of(EntryStacks.of(fluid, amount));
- }
-
- public static EntryIngredient of(Fluid fluid, double amount) {
- return EntryIngredient.of(EntryStacks.of(fluid, amount));
- }
-
- public static EntryIngredient of(Fluid fluid, Fraction amount) {
+ public static EntryIngredient of(Fluid fluid, long amount) {
return EntryIngredient.of(EntryStacks.of(fluid, amount));
}
diff --git a/api/src/main/java/me/shedaniel/rei/api/common/util/EntryStacks.java b/api/src/main/java/me/shedaniel/rei/api/common/util/EntryStacks.java
index c8b1b86e9..3cd5fbd50 100644
--- a/api/src/main/java/me/shedaniel/rei/api/common/util/EntryStacks.java
+++ b/api/src/main/java/me/shedaniel/rei/api/common/util/EntryStacks.java
@@ -24,7 +24,6 @@
package me.shedaniel.rei.api.common.util;
import me.shedaniel.architectury.fluid.FluidStack;
-import me.shedaniel.architectury.utils.Fraction;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.entry.comparison.ComparisonContext;
import me.shedaniel.rei.api.common.entry.type.EntryType;
@@ -47,15 +46,7 @@ public final class EntryStacks {
return of(fluid, FluidStack.bucketAmount());
}
- public static EntryStack<FluidStack> of(Fluid fluid, int amount) {
- return of(fluid, Fraction.ofWhole(amount));
- }
-
- public static EntryStack<FluidStack> of(Fluid fluid, double amount) {
- return of(fluid, Fraction.from(amount));
- }
-
- public static EntryStack<FluidStack> of(Fluid fluid, Fraction amount) {
+ public static EntryStack<FluidStack> of(Fluid fluid, long amount) {
return EntryStack.of(VanillaEntryTypes.FLUID, FluidStack.create(fluid, amount));
}
@@ -174,9 +165,4 @@ public final class EntryStacks {
public static <T> long hashFuzzy(EntryStack<T> stack) {
return stack.getDefinition().hash(stack, stack.getValue(), ComparisonContext.FUZZY);
}
-
- public static EntryStack<FluidStack> simplifyAmount(EntryStack<FluidStack> stack) {
- stack.getValue().setAmount(stack.getValue().getAmount().simplify());
- return stack;
- }
}