diff options
| author | shedaniel <daniel@shedaniel.me> | 2021-05-31 00:14:21 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2021-05-31 00:14:21 +0800 |
| commit | 82e9655e3786f58c32e2b6584732bb40f9508c1c (patch) | |
| tree | c045169783ff60013c5d063dbe8ec03b97cdc2a9 /runtime/src/main/java/me/shedaniel/rei/plugin | |
| parent | 82cb8e2ac9f87375998e5962f1ffe8a9c05bafb0 (diff) | |
| download | RoughlyEnoughItems-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')
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) { |
