aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java/me/shedaniel/rei/plugin
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-05-31 00:14:21 +0800
committershedaniel <daniel@shedaniel.me>2021-05-31 00:14:21 +0800
commit82e9655e3786f58c32e2b6584732bb40f9508c1c (patch)
treec045169783ff60013c5d063dbe8ec03b97cdc2a9 /runtime/src/main/java/me/shedaniel/rei/plugin
parent82cb8e2ac9f87375998e5962f1ffe8a9c05bafb0 (diff)
downloadRoughlyEnoughItems-82e9655e3786f58c32e2b6584732bb40f9508c1c.tar.gz
RoughlyEnoughItems-82e9655e3786f58c32e2b6584732bb40f9508c1c.tar.bz2
RoughlyEnoughItems-82e9655e3786f58c32e2b6584732bb40f9508c1c.zip
Fix rendering issues with overlays, REIHelper -> REIRuntime
Diffstat (limited to 'runtime/src/main/java/me/shedaniel/rei/plugin')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java6
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java10
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java41
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java16
4 files changed, 55 insertions, 18 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java b/runtime/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java
index 5f36daf1d..4fa47b9bf 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java
@@ -32,7 +32,7 @@ import me.shedaniel.rei.api.client.ClientHelper;
import me.shedaniel.rei.api.client.registry.transfer.TransferHandler;
import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.api.common.display.Display;
-import me.shedaniel.rei.api.common.display.SimpleMenuDisplay;
+import me.shedaniel.rei.api.common.display.SimpleGridMenuDisplay;
import me.shedaniel.rei.api.common.transfer.RecipeFinder;
import me.shedaniel.rei.api.common.transfer.info.MenuInfo;
import me.shedaniel.rei.api.common.transfer.info.MenuInfoContext;
@@ -56,9 +56,9 @@ import java.util.List;
public class DefaultCategoryHandler implements TransferHandler {
@Override
public Result handle(Context context) {
- if (!(context.getDisplay() instanceof SimpleMenuDisplay))
+ if (!(context.getDisplay() instanceof SimpleGridMenuDisplay))
return Result.createNotApplicable();
- SimpleMenuDisplay display = (SimpleMenuDisplay) context.getDisplay();
+ SimpleGridMenuDisplay display = (SimpleGridMenuDisplay) context.getDisplay();
AbstractContainerScreen<?> containerScreen = context.getContainerScreen();
if (containerScreen == null) {
return Result.createNotApplicable();
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java
index 755f53940..b645040a1 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/DefaultClientRuntimePlugin.java
@@ -30,7 +30,7 @@ import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.RoughlyEnoughItemsCore;
import me.shedaniel.rei.api.client.ClientHelper;
-import me.shedaniel.rei.api.client.REIHelper;
+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;
@@ -153,12 +153,12 @@ public class DefaultClientRuntimePlugin implements REIClientPlugin {
}
});
registry.registerDraggableStackProvider(DraggableStackProviderWidget.from(context -> {
- if (RoughlyEnoughItemsCore.shouldReturn(context.getScreen()) || !REIHelper.getInstance().isOverlayVisible()) return Collections.emptyList();
- return Widgets.walk(REIHelper.getInstance().getOverlay().get().children(), DraggableStackProviderWidget.class::isInstance);
+ if (RoughlyEnoughItemsCore.shouldReturn(context.getScreen()) || !REIRuntime.getInstance().isOverlayVisible()) return Collections.emptyList();
+ return Widgets.walk(REIRuntime.getInstance().getOverlay().get().children(), DraggableStackProviderWidget.class::isInstance);
}));
registry.registerDraggableStackVisitor(DraggableStackVisitorWidget.from(context -> {
- if (RoughlyEnoughItemsCore.shouldReturn(context.getScreen()) || !REIHelper.getInstance().isOverlayVisible()) return Collections.emptyList();
- return Widgets.walk(REIHelper.getInstance().getOverlay().get().children(), DraggableStackVisitorWidget.class::isInstance);
+ if (RoughlyEnoughItemsCore.shouldReturn(context.getScreen()) || !REIRuntime.getInstance().isOverlayVisible()) return Collections.emptyList();
+ return Widgets.walk(REIRuntime.getInstance().getOverlay().get().children(), DraggableStackVisitorWidget.class::isInstance);
}));
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java
index ffd565362..cd298db2a 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/FluidEntryDefinition.java
@@ -33,6 +33,7 @@ import dev.architectury.utils.EnvExecutor;
import me.shedaniel.math.Point;
import me.shedaniel.math.Rectangle;
import me.shedaniel.rei.api.client.entry.renderer.AbstractEntryRenderer;
+import me.shedaniel.rei.api.client.entry.renderer.BatchedEntryRenderer;
import me.shedaniel.rei.api.client.entry.renderer.EntryRenderer;
import me.shedaniel.rei.api.client.gui.widgets.Tooltip;
import me.shedaniel.rei.api.client.util.SpriteRenderer;
@@ -173,7 +174,45 @@ public class FluidEntryDefinition implements EntryDefinition<FluidStack>, EntryS
return collection == null ? Collections.emptyList() : collection.getMatchingTags(value.getFluid());
}
- public static class FluidEntryRenderer extends AbstractEntryRenderer<FluidStack> {
+ public static class FluidEntryRenderer extends AbstractEntryRenderer<FluidStack> implements BatchedEntryRenderer<FluidStack, TextureAtlasSprite> {
+ @Override
+ public TextureAtlasSprite getExtraData(EntryStack<FluidStack> entry) {
+ FluidStack stack = entry.getValue();
+ if (stack.isEmpty()) return null;
+ return FluidStackHooks.getStillTexture(stack);
+ }
+
+ @Override
+ public int getBatchIdentifier(EntryStack<FluidStack> entry, Rectangle bounds, TextureAtlasSprite extraData) {
+ return 0;
+ }
+
+ @Override
+ public void startBatch(EntryStack<FluidStack> entry, TextureAtlasSprite extraData, PoseStack matrices, float delta) {}
+
+ @Override
+ public void renderBase(EntryStack<FluidStack> entry, TextureAtlasSprite sprite, PoseStack matrices, MultiBufferSource.BufferSource immediate, Rectangle bounds, int mouseX, int mouseY, float delta) {
+ SpriteRenderer.beginPass()
+ .setup(immediate, RenderType.solid())
+ .sprite(sprite)
+ .color(FluidStackHooks.getColor(entry.getValue()))
+ .light(0x00f000f0)
+ .overlay(OverlayTexture.NO_OVERLAY)
+ .alpha(0xff)
+ .normal(matrices.last().normal(), 0, 0, 0)
+ .position(matrices.last().pose(), bounds.x, bounds.getMaxY() - bounds.height * Mth.clamp(entry.get(EntryStack.Settings.FLUID_RENDER_RATIO), 0, 1), bounds.getMaxX(), bounds.getMaxY(), entry.getZ())
+ .next(InventoryMenu.BLOCK_ATLAS);
+ }
+
+ @Override
+ public void afterBase(EntryStack<FluidStack> entry, TextureAtlasSprite extraData, PoseStack matrices, float delta) {}
+
+ @Override
+ public void renderOverlay(EntryStack<FluidStack> entry, TextureAtlasSprite extraData, PoseStack matrices, MultiBufferSource.BufferSource immediate, Rectangle bounds, int mouseX, int mouseY, float delta) {}
+
+ @Override
+ public void endBatch(EntryStack<FluidStack> entry, TextureAtlasSprite extraData, PoseStack matrices, float delta) {}
+
@Override
public void render(EntryStack<FluidStack> entry, PoseStack matrices, Rectangle bounds, int mouseX, int mouseY, float delta) {
FluidStack stack = entry.getValue();
diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java
index 0fafc92bc..cc3a57941 100644
--- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java
+++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java
@@ -205,12 +205,6 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer
}
@Override
- public boolean isBatched(EntryStack<ItemStack> entry) {
- // TODO Fix rendering overlay with batched renderer
- return false;
- }
-
- @Override
public void render(EntryStack<ItemStack> entry, PoseStack matrices, Rectangle bounds, int mouseX, int mouseY, float delta) {
BakedModel model = getExtraData(entry);
setupGL(entry, model);
@@ -286,6 +280,13 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer
}
@Override
+ public void afterBase(EntryStack<ItemStack> entry, BakedModel model, PoseStack matrices, float delta) {
+ endGL(entry, model);
+ RenderSystem.getModelViewStack().popPose();
+ RenderSystem.applyModelViewMatrix();
+ }
+
+ @Override
public void renderOverlay(EntryStack<ItemStack> entry, BakedModel model, PoseStack matrices, MultiBufferSource.BufferSource immediate, Rectangle bounds, int mouseX, int mouseY, float delta) {
renderOverlay(entry, bounds);
}
@@ -300,9 +301,6 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer
@Override
public void endBatch(EntryStack<ItemStack> entry, BakedModel model, PoseStack matrices, float delta) {
- endGL(entry, model);
- RenderSystem.getModelViewStack().popPose();
- RenderSystem.applyModelViewMatrix();
}
public void endGL(EntryStack<ItemStack> entry, BakedModel model) {