diff options
| author | KrLite <68179735+krlite@users.noreply.github.com> | 2023-01-28 20:16:07 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2023-05-29 21:22:03 +0800 |
| commit | 21cd9c37987fe8d438ff9246e8aefbca10785711 (patch) | |
| tree | 94426d7a3c0a67aeb0256c32f446db8ebf7033b5 /runtime/src/main/java | |
| parent | 5d2049448a111e0661b041034ae11bca080e3c38 (diff) | |
| download | RoughlyEnoughItems-21cd9c37987fe8d438ff9246e8aefbca10785711.tar.gz RoughlyEnoughItems-21cd9c37987fe8d438ff9246e8aefbca10785711.tar.bz2 RoughlyEnoughItems-21cd9c37987fe8d438ff9246e8aefbca10785711.zip | |
Fix Render Misbehaves Under Certain Conditions [1.19] (#1343)
* fix entrylist background render
* fix others
* Consolidate calls to entrySize()
---------
Co-authored-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'runtime/src/main/java')
4 files changed, 12 insertions, 9 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java index 3fef2df4a..9076c0ffc 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/CompositeDisplayViewingScreen.java @@ -112,9 +112,6 @@ public class CompositeDisplayViewingScreen extends AbstractDisplayViewingScreen int guiHeight = Mth.clamp(category.getDisplayHeight() + 40, 166, largestHeight); this.bounds = new Rectangle(width / 2 - guiWidth / 2, height / 2 - guiHeight / 2, guiWidth, guiHeight); - this.initTabs(this.bounds.width); - this.widgets.addAll(this.tabs.widgets()); - List<EntryIngredient> workstations = CategoryRegistry.getInstance().get(category.getCategoryIdentifier()).getWorkstations(); if (!workstations.isEmpty()) { int ww = Mth.floor((bounds.width - 16) / 18f); @@ -163,6 +160,9 @@ public class CompositeDisplayViewingScreen extends AbstractDisplayViewingScreen Optional<ButtonArea> supplier = CategoryRegistry.getInstance().get(category.getCategoryIdentifier()).getPlusButtonArea(); if (supplier.isPresent() && supplier.get().get(recipeBounds) != null) this.widgets.add(Widgets.withTranslate(InternalWidgets.createAutoCraftingButtonWidget(recipeBounds, supplier.get().get(recipeBounds), new TextComponent(supplier.get().getButtonText()), display::provideInternalDisplay, display::provideInternalDisplayIds, setupDisplay, category), 0, 0, 100)); + + this.initTabs(this.bounds.width); + this.widgets.addAll(this.tabs.widgets()); int index = 0; for (DisplaySpec recipeDisplay : categoryMap.get(category)) { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/BatchedEntryRendererManager.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/BatchedEntryRendererManager.java index a9c255a9d..7ff51286c 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/BatchedEntryRendererManager.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/BatchedEntryRendererManager.java @@ -186,7 +186,7 @@ public class BatchedEntryRendererManager { try { @SuppressWarnings("rawtypes") EntryStack currentEntry = entry.getCurrentEntry(); - currentEntry.setZ(100); + currentEntry.setZ(entry.getBounds().contains(mouseX, mouseY) ? 150 : 100); firstRenderer.renderBase(currentEntry, extraData[i++], matrices, immediate, entry.getInnerBounds(), mouseX, mouseY, delta); if (debugTime && !currentEntry.isEmpty()) size.increment(); } catch (Throwable throwable) { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListStackEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListStackEntry.java index ae6974668..dafcec4f9 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListStackEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListStackEntry.java @@ -110,7 +110,9 @@ public class EntryListStackEntry extends DisplayedEntryWidget { Rectangle bounds = getBounds(); if (collapsedStack != null) { - fillGradient(matrices, bounds.x, bounds.y, bounds.getMaxX(), bounds.getMaxY(), 0x34FFFFFF, 0x34FFFFFF); + int entrySize = entrySize(); + fillGradient(matrices, bounds.getCenterX() - entrySize / 2, bounds.getCenterY() - entrySize / 2, + bounds.getCenterX() + entrySize / 2 + 1, bounds.getCenterY() + entrySize / 2 + 1, 0x34FFFFFF, 0x34FFFFFF); } super.drawBackground(matrices, mouseX, mouseY, delta); @@ -210,4 +212,4 @@ public class EntryListStackEntry extends DisplayedEntryWidget { protected long getCyclingInterval() { return 100; } -}
\ No newline at end of file +} diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/ScrolledEntryListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/ScrolledEntryListWidget.java index 444f8ddc8..ac057a33c 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/ScrolledEntryListWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/ScrolledEntryListWidget.java @@ -64,8 +64,9 @@ public class ScrolledEntryListWidget extends CollapsingEntryListWidget { protected void renderEntries(boolean fastEntryRendering, PoseStack matrices, int mouseX, int mouseY, float delta) { ScissorsHandler.INSTANCE.scissor(bounds); - int skip = Math.max(0, Mth.floor(scrolling.scrollAmount() / (float) entrySize())); - int nextIndex = skip * innerBounds.width / entrySize(); + int entrySize = entrySize(); + int skip = Math.max(0, Mth.floor(scrolling.scrollAmount() / (float) entrySize)); + int nextIndex = skip * innerBounds.width / entrySize; this.blockedCount = 0; BatchedEntryRendererManager helper = new BatchedEntryRendererManager(); Int2ObjectMap<CollapsedStack> indexedCollapsedStack = getCollapsedStackIndexed(); @@ -75,7 +76,7 @@ public class ScrolledEntryListWidget extends CollapsingEntryListWidget { EntryListStackEntry entry = entries.get(cont); Rectangle entryBounds = entry.getBounds(); - entryBounds.y = entry.backupY - scrolling.scrollAmountInt(); + entryBounds.y = entry.backupY - scrolling.scrollAmountInt() - entryBounds.height / 2 + entrySize / 2; if (entryBounds.y > this.bounds.getMaxY()) break; if (stacks.size() <= i) break; if (notSteppingOnExclusionZones(entryBounds.x, entryBounds.y, entryBounds.width, entryBounds.height)) { |
