From d405e2c9489890f9f28113af3cf07259484b9827 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sat, 4 Mar 2023 22:00:07 +0800 Subject: Initial Port to 1.19.4-pre3 --- .../rei/RoughlyEnoughItemsCoreClient.java | 2 +- .../client/config/addon/ConfigAddonsScreen.java | 28 ++++---------- .../config/entries/FilteringAddRuleScreen.java | 21 ---------- .../config/entries/FilteringCategoriesScreen.java | 21 ---------- .../config/entries/FilteringRuleOptionsScreen.java | 18 +++++++++ .../config/entries/FilteringRulesScreen.java | 25 +----------- .../client/config/entries/FilteringScreen.java | 9 ----- .../rei/impl/client/gui/ScreenOverlayImpl.java | 7 ++-- .../client/gui/credits/CreditsEntryListWidget.java | 40 +++++-------------- .../rei/impl/client/gui/credits/CreditsScreen.java | 2 +- .../client/gui/error/ErrorsEntryListWidget.java | 45 +++++----------------- .../rei/impl/client/gui/error/ErrorsScreen.java | 2 +- .../client/gui/performance/PerformanceScreen.java | 2 +- .../performance/entry/SubCategoryListEntry.java | 9 +++++ .../gui/screen/AbstractDisplayViewingScreen.java | 10 ++--- .../gui/screen/CompositeDisplayViewingScreen.java | 6 --- .../client/gui/screen/ConfigReloadingScreen.java | 2 +- .../gui/screen/DefaultDisplayViewingScreen.java | 17 ++++---- .../gui/screen/UncertainDisplayViewingScreen.java | 7 ---- .../client/gui/screen/WarningAndErrorScreen.java | 37 +++++------------- .../impl/client/gui/widget/ConfigButtonWidget.java | 8 ++-- .../gui/widget/CraftableFilterButtonWidget.java | 10 ++--- .../client/gui/widget/DisplayTooltipComponent.java | 4 +- .../widget/DynamicErrorFreeEntryListWidget.java | 6 +-- .../client/gui/widget/VanillaWrappedWidget.java | 13 +++++-- .../gui/widget/basewidgets/ButtonWidget.java | 18 ++++----- .../basewidgets/FillRectangleDrawableConsumer.java | 10 ++--- .../client/gui/widget/basewidgets/LabelWidget.java | 10 ++--- .../gui/widget/basewidgets/TextFieldWidget.java | 22 +++++------ .../basewidgets/TexturedDrawableConsumer.java | 2 +- .../widget/entrylist/CollapsedEntriesTooltip.java | 6 +-- .../widget/entrylist/PaginatedEntryListWidget.java | 14 +++---- .../favorites/history/DisplayHistoryWidget.java | 4 -- .../panel/FavoritesTogglePanelButton.java | 5 ++- .../gui/widget/region/RegionRenderingDebugger.java | 5 +-- .../impl/client/transfer/MissingStacksTooltip.java | 8 ++-- .../plugin/client/entry/ItemEntryDefinition.java | 16 ++++---- .../client/runtime/DefaultClientRuntimePlugin.java | 10 ++--- 38 files changed, 164 insertions(+), 317 deletions(-) (limited to 'runtime/src') diff --git a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java index f1b1110e8..b2d326148 100644 --- a/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java +++ b/runtime/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCoreClient.java @@ -150,7 +150,7 @@ public class RoughlyEnoughItemsCoreClient { String type = object.getString(FavoriteEntry.TYPE_KEY); ResourceLocation id = new ResourceLocation(type); FavoriteEntryType entryType = FavoriteEntryType.registry().get(id); - if (entryType == null) return DataResult.error("Unknown favorite type: " + id + ", json: " + object); + if (entryType == null) return DataResult.error(() -> "Unknown favorite type: " + id + ", json: " + object); return entryType.read(object); }, "favoriteEntryFromJson"); ClientInternals.attachInstance((BiFunction<@Nullable Point, Collection, Tooltip>) QueuedTooltip::impl, "tooltipProvider"); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/addon/ConfigAddonsScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/addon/ConfigAddonsScreen.java index 8acdc7937..c98745dcd 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/addon/ConfigAddonsScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/addon/ConfigAddonsScreen.java @@ -30,14 +30,17 @@ import me.shedaniel.rei.api.client.config.addon.ConfigAddon; import me.shedaniel.rei.api.client.config.addon.ConfigAddonRegistry; import me.shedaniel.rei.impl.client.gui.InternalTextures; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.ComponentPath; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.narration.NarratableEntry; +import net.minecraft.client.gui.navigation.FocusNavigationEvent; import net.minecraft.client.gui.screens.Screen; import net.minecraft.locale.Language; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.Nullable; import java.util.Collections; import java.util.List; @@ -82,22 +85,6 @@ public class ConfigAddonsScreen extends Screen { super(client, width, height, top, bottom, backgroundLocation); } - @Override - public boolean changeFocus(boolean lookForwards) { - if (!this.inFocus && this.getItemCount() == 0) { - return false; - } else { - this.inFocus = !this.inFocus; - if (this.inFocus && this.getSelectedItem() == null && this.getItemCount() > 0) { - this.moveSelection(1); - } else if (this.inFocus && this.getSelectedItem() != null) { - this.getSelectedItem(); - } - - return this.inFocus; - } - } - @Override protected boolean isSelected(int index) { return false; @@ -126,8 +113,9 @@ public class ConfigAddonsScreen extends Screen { } @Override - public boolean changeFocus(boolean lookForwards) { - return false; + @Nullable + public ComponentPath nextFocusPath(FocusNavigationEvent focusNavigationEvent) { + return null; } } @@ -141,8 +129,8 @@ public class ConfigAddonsScreen extends Screen { Minecraft.getInstance().setScreen(this.addon.createScreen(Minecraft.getInstance().screen)); }, Supplier::get) { @Override - protected void renderBg(PoseStack matrices, Minecraft client, int mouseX, int mouseY) { - super.renderBg(matrices, client, mouseX, mouseY); + public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { + super.render(matrices, mouseX, mouseY, delta); RenderSystem.setShaderTexture(0, InternalTextures.CHEST_GUI_TEXTURE); blit(matrices, getX() + 3, getY() + 3, 0, 0, 14, 14); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java index 5288ad476..36bd45546 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringAddRuleScreen.java @@ -86,22 +86,6 @@ public class FilteringAddRuleScreen extends Screen { super(client, width, height, top, bottom, backgroundLocation); } - @Override - public boolean changeFocus(boolean lookForwards) { - if (!this.inFocus && this.getItemCount() == 0) { - return false; - } else { - this.inFocus = !this.inFocus; - if (this.inFocus && this.getSelectedItem() == null && this.getItemCount() > 0) { - this.moveSelection(1); - } else if (this.inFocus && this.getSelectedItem() != null) { - this.getSelectedItem(); - } - - return this.inFocus; - } - } - @Override protected boolean isSelected(int index) { return Objects.equals(this.getSelectedItem(), this.children().get(index)); @@ -138,11 +122,6 @@ public class FilteringAddRuleScreen extends Screen { public int getItemHeight() { return 26; } - - @Override - public boolean changeFocus(boolean lookForwards) { - return false; - } } public static class DefaultRuleEntry extends RuleEntry { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringCategoriesScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringCategoriesScreen.java index e73314289..2344e3d41 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringCategoriesScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringCategoriesScreen.java @@ -84,22 +84,6 @@ public class FilteringCategoriesScreen extends Screen { super(client, width, height, top, bottom, backgroundLocation); } - @Override - public boolean changeFocus(boolean lookForwards) { - if (!this.inFocus && this.getItemCount() == 0) { - return false; - } else { - this.inFocus = !this.inFocus; - if (this.inFocus && this.getSelectedItem() == null && this.getItemCount() > 0) { - this.moveSelection(1); - } else if (this.inFocus && this.getSelectedItem() != null) { - this.getSelectedItem(); - } - - return this.inFocus; - } - } - @Override protected boolean isSelected(int index) { return false; @@ -146,11 +130,6 @@ public class FilteringCategoriesScreen extends Screen { public int getItemHeight() { return 35; } - - @Override - public boolean changeFocus(boolean lookForwards) { - return false; - } } private class DefaultListEntry extends ListEntry { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRuleOptionsScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRuleOptionsScreen.java index 9f57d2890..bde57a088 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRuleOptionsScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRuleOptionsScreen.java @@ -29,10 +29,12 @@ import me.shedaniel.clothconfig2.gui.widget.DynamicElementListWidget; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.entry.filtering.FilteringRule; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.ComponentPath; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.EditBox; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.narration.NarratableEntry; +import net.minecraft.client.gui.navigation.FocusNavigationEvent; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.network.chat.Component; @@ -40,6 +42,7 @@ import net.minecraft.network.chat.FormattedText; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvents; import net.minecraft.util.FormattedCharSequence; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Collections; @@ -373,6 +376,21 @@ public abstract class FilteringRuleOptionsScreen> ext return false; } } + + @Nullable + @Override + public ComponentPath nextFocusPath(FocusNavigationEvent event) { + return null; + } + + @Override + public void setFocused(boolean bl) { + } + + @Override + public boolean isFocused() { + return false; + } } } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java index 127dfd54b..d3275419c 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringRulesScreen.java @@ -113,22 +113,6 @@ public class FilteringRulesScreen extends Screen { super(client, width, height, top, bottom, backgroundLocation); } - @Override - public boolean changeFocus(boolean lookForwards) { - if (!this.inFocus && this.getItemCount() == 0) { - return false; - } else { - this.inFocus = !this.inFocus; - if (this.inFocus && this.getSelectedItem() == null && this.getItemCount() > 0) { - this.moveSelection(1); - } else if (this.inFocus && this.getSelectedItem() != null) { - this.getSelectedItem(); - } - - return this.inFocus; - } - } - @Override protected boolean isSelected(int index) { return Objects.equals(this.getSelectedItem(), this.children().get(index)); @@ -180,11 +164,6 @@ public class FilteringRulesScreen extends Screen { public int getItemHeight() { return 26; } - - @Override - public boolean changeFocus(boolean lookForwards) { - return false; - } } public static class DefaultRuleEntry extends RuleEntry { @@ -200,8 +179,8 @@ public class FilteringRulesScreen extends Screen { Minecraft.getInstance().setScreen(this.screenFunction.apply(Minecraft.getInstance().screen)); }, Supplier::get) { @Override - protected void renderBg(PoseStack matrices, Minecraft client, int mouseX, int mouseY) { - super.renderBg(matrices, client, mouseX, mouseY); + public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { + super.render(matrices, mouseX, mouseY, delta); RenderSystem.setShaderTexture(0, InternalTextures.CHEST_GUI_TEXTURE); blit(matrices, getX() + 3, getY() + 3, 0, 0, 14, 14); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java index a82f907e3..3c9837db0 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringScreen.java @@ -260,7 +260,6 @@ public class FilteringScreen extends Screen { BufferBuilder buffer = tesselator.getBuilder(); RenderSystem.enableBlend(); RenderSystem.blendFuncSeparate(770, 771, 0, 1); - RenderSystem.disableTexture(); RenderSystem.setShader(GameRenderer::getPositionTexColorShader); Matrix4f matrix = matrices.last().pose(); buffer.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); @@ -269,7 +268,6 @@ public class FilteringScreen extends Screen { buffer.vertex(matrix, width, bounds.y, 0.0F).uv(1.0F, 0.0F).color(0, 0, 0, 255).endVertex(); buffer.vertex(matrix, 0, bounds.y, 0.0F).uv(0.0F, 0.0F).color(0, 0, 0, 255).endVertex(); tesselator.end(); - RenderSystem.enableTexture(); RenderSystem.disableBlend(); renderHoleBackground(matrices, 0, bounds.y, 64, 255, 255); @@ -428,13 +426,6 @@ public class FilteringScreen extends Screen { } if (keyCode == 256 && this.shouldCloseOnEsc()) { this.backButton.onPress(); - return true; - } else if (keyCode == 258) { - boolean bl = !hasShiftDown(); - if (!this.changeFocus(bl)) { - this.changeFocus(bl); - } - return true; } return false; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java index 85751f649..abe307c9c 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/ScreenOverlayImpl.java @@ -306,9 +306,10 @@ public abstract class ScreenOverlayImpl extends ScreenOverlay { menuHolder.lateRender(matrices, mouseX, mouseY, delta); matrices.popPose(); if (choosePageWidget != null) { - setBlitOffset(500); - this.fillGradient(matrices, 0, 0, window.getGuiScaledWidth(), window.getGuiScaledHeight(), -1072689136, -804253680); - setBlitOffset(0); + matrices.pushPose(); + matrices.translate(0, 0, 500); + fillGradient(matrices, 0, 0, window.getGuiScaledWidth(), window.getGuiScaledHeight(), -1072689136, -804253680); + matrices.popPose(); choosePageWidget.render(matrices, mouseX, mouseY, delta); } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsEntryListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsEntryListWidget.java index f814dcfeb..0ccd1b04a 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsEntryListWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsEntryListWidget.java @@ -50,22 +50,6 @@ public class CreditsEntryListWidget extends DynamicSmoothScrollingEntryListWidge super(client, width, height, startY, endY, GuiComponent.BACKGROUND_LOCATION); } - @Override - public boolean changeFocus(boolean boolean_1) { - if (!this.inFocus && this.getItemCount() == 0) { - return false; - } else { - this.inFocus = !this.inFocus; - if (this.inFocus && this.getFocused() == null && this.getItemCount() > 0) { - this.moveSelection(1); - } else if (this.inFocus && this.getFocused() != null) { - this.moveSelection(0); - } - - return this.inFocus; - } - } - public void creditsClearEntries() { clearItems(); } @@ -93,6 +77,15 @@ public class CreditsEntryListWidget extends DynamicSmoothScrollingEntryListWidge public List narratables() { return Collections.emptyList(); } + + @Override + public void setFocused(boolean bl) { + } + + @Override + public boolean isFocused() { + return false; + } } public static class TextCreditsItem extends CreditsItem { @@ -111,11 +104,6 @@ public class CreditsEntryListWidget extends DynamicSmoothScrollingEntryListWidge public int getItemHeight() { return 12; } - - @Override - public boolean changeFocus(boolean boolean_1) { - return false; - } } public static class TranslationCreditsItem extends CreditsItem { @@ -143,11 +131,6 @@ public class CreditsEntryListWidget extends DynamicSmoothScrollingEntryListWidge public int getItemHeight() { return 12 * translators.size(); } - - @Override - public boolean changeFocus(boolean boolean_1) { - return false; - } } public static class LinkItem extends CreditsItem { @@ -193,11 +176,6 @@ public class CreditsEntryListWidget extends DynamicSmoothScrollingEntryListWidge return 12 * textSplit.size(); } - @Override - public boolean changeFocus(boolean boolean_1) { - return false; - } - @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { if (contains && button == 0) { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsScreen.java index 107d907fe..fca1b4075 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/credits/CreditsScreen.java @@ -153,7 +153,7 @@ public class CreditsScreen extends Screen { @Override public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { - this.renderDirtBackground(0); + this.renderDirtBackground(matrices); this.entryListWidget.render(matrices, mouseX, mouseY, delta); drawCenteredString(matrices, this.font, I18n.get("text.rei.credits"), this.width / 2, 16, 16777215); super.render(matrices, mouseX, mouseY, delta); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/error/ErrorsEntryListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/error/ErrorsEntryListWidget.java index b965f1ad9..ad91b1f51 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/error/ErrorsEntryListWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/error/ErrorsEntryListWidget.java @@ -64,22 +64,6 @@ public class ErrorsEntryListWidget extends DynamicSmoothScrollingEntryListWidget super(client, width, height, startY, endY, GuiComponent.BACKGROUND_LOCATION); } - @Override - public boolean changeFocus(boolean boolean_1) { - if (!this.inFocus && this.getItemCount() == 0) { - return false; - } else { - this.inFocus = !this.inFocus; - if (this.inFocus && this.getFocused() == null && this.getItemCount() > 0) { - this.moveSelection(1); - } else if (this.inFocus && this.getFocused() != null) { - this.moveSelection(0); - } - - return this.inFocus; - } - } - public void _clearItems() { clearItems(); } @@ -107,6 +91,15 @@ public class ErrorsEntryListWidget extends DynamicSmoothScrollingEntryListWidget public List narratables() { return Collections.emptyList(); } + + @Override + public void setFocused(boolean bl) { + } + + @Override + public boolean isFocused() { + return false; + } } public static class EmptyEntry extends Entry { @@ -336,11 +329,6 @@ public class ErrorsEntryListWidget extends DynamicSmoothScrollingEntryListWidget return 12 * textSplit.size(); } - @Override - public boolean changeFocus(boolean boolean_1) { - return false; - } - @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { if (button == 0) { @@ -399,11 +387,6 @@ public class ErrorsEntryListWidget extends DynamicSmoothScrollingEntryListWidget public int getItemHeight() { return 5; } - - @Override - public boolean changeFocus(boolean boolean_1) { - return false; - } } public static class ImageEntry extends Entry { @@ -434,11 +417,6 @@ public class ErrorsEntryListWidget extends DynamicSmoothScrollingEntryListWidget public int getItemHeight() { return height + 2; } - - @Override - public boolean changeFocus(boolean boolean_1) { - return false; - } } public static class LinkEntry extends Entry { @@ -480,11 +458,6 @@ public class ErrorsEntryListWidget extends DynamicSmoothScrollingEntryListWidget return 12 * textSplit.size(); } - @Override - public boolean changeFocus(boolean boolean_1) { - return false; - } - @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { if (contains && button == 0) { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/error/ErrorsScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/error/ErrorsScreen.java index 5ef43819e..e5ac0258c 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/error/ErrorsScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/error/ErrorsScreen.java @@ -109,7 +109,7 @@ public class ErrorsScreen extends Screen { @Override public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { - this.renderDirtBackground(0); + this.renderDirtBackground(matrices); this.listWidget.render(matrices, mouseX, mouseY, delta); drawCenteredString(matrices, this.font, getTitle(), this.width / 2, 16, 16777215); super.render(matrices, mouseX, mouseY, delta); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/PerformanceScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/PerformanceScreen.java index 4949c6890..3275c9786 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/PerformanceScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/PerformanceScreen.java @@ -168,7 +168,7 @@ public class PerformanceScreen extends Screen { @Override public void render(PoseStack poses, int mouseX, int mouseY, float delta) { - renderDirtBackground(0); + renderDirtBackground(poses); list.render(poses, mouseX, mouseY, delta); this.font.drawShadow(poses, this.title.getVisualOrderText(), this.width / 2.0F - this.font.width(this.title) / 2.0F, 12.0F, -1); super.render(poses, mouseX, mouseY, delta); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/entry/SubCategoryListEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/entry/SubCategoryListEntry.java index 368bd5a3a..f6f55f92c 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/entry/SubCategoryListEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/entry/SubCategoryListEntry.java @@ -173,5 +173,14 @@ public class SubCategoryListEntry extends PerformanceScreen.PerformanceEntry imp return false; } } + + @Override + public void setFocused(boolean bl) { + } + + @Override + public boolean isFocused() { + return false; + } } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java index 2b5155e35..4089d5240 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/AbstractDisplayViewingScreen.java @@ -334,12 +334,12 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis } @Override - public void renderImage(Font font, int x, int y, PoseStack poses, ItemRenderer renderer, int z) { + public void renderImage(Font font, int x, int y, PoseStack poses, ItemRenderer renderer) { int entrySize = EntryListWidget.entrySize(); int w = Math.max(1, MAX_WIDTH / entrySize); int i = 0; poses.pushPose(); - poses.translate(0, 0, z + 50); + poses.translate(0, 0, 50); for (EntryStack entry : widget.getEntries()) { int x1 = x + (i % w) * entrySize; int y1 = y + 13 + (i / w) * entrySize; @@ -347,7 +347,7 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis if (i / w > 5) { MultiBufferSource.BufferSource source = MultiBufferSource.immediate(Tesselator.getInstance().getBuilder()); Component text = Component.literal("+" + (widget.getEntries().size() - w * 6 + 1)).withStyle(ChatFormatting.GRAY); - font.drawInBatch(text, x1 + entrySize / 2 - font.width(text) / 2, y1 + entrySize / 2 - 1, -1, true, poses.last().pose(), source, false, 0, 15728880); + font.drawInBatch(text, x1 + entrySize / 2 - font.width(text) / 2, y1 + entrySize / 2 - 1, -1, true, poses.last().pose(), source, Font.DisplayMode.NORMAL, 0, 15728880); source.endBatch(); break; } else { @@ -360,7 +360,7 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis @Override public void renderText(Font font, int x, int y, Matrix4f pose, MultiBufferSource.BufferSource buffers) { font.drawInBatch(Component.translatable("text.rei.accepts").withStyle(ChatFormatting.GRAY), - x, y + 2, -1, true, pose, buffers, false, 0, 15728880); + x, y + 2, -1, true, pose, buffers, Font.DisplayMode.NORMAL, 0, 15728880); if (widget.tagMatch != null) { int entrySize = EntryListWidget.entrySize(); @@ -368,7 +368,7 @@ public abstract class AbstractDisplayViewingScreen extends Screen implements Dis font.drawInBatch(Component.translatable("text.rei.tag_accept", widget.tagMatch.toString()) .withStyle(ChatFormatting.GRAY), x, y + 16 + Math.min(6, Mth.ceil(widget.getEntries().size() / (float) w)) * entrySize, - -1, true, pose, buffers, false, 0, 15728880); + -1, true, pose, buffers, Font.DisplayMode.NORMAL, 0, 15728880); } } } 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 a95d52069..189a9f4b6 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 @@ -345,12 +345,6 @@ public class CompositeDisplayViewingScreen extends AbstractDisplayViewingScreen @Override public boolean keyPressed(int keyCode, int scanCode, int modifiers) { - if (keyCode == 258 && !minecraft.options.keyInventory.matches(keyCode, scanCode)) { - boolean boolean_1 = !hasShiftDown(); - if (!this.changeFocus(boolean_1)) - this.changeFocus(boolean_1); - return true; - } if (ConfigObject.getInstance().getNextPageKeybind().matchesKey(keyCode, scanCode)) { if (categoryMap.get(categories.get(selectedCategoryIndex)).size() > 1) { selectedRecipeIndex++; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/ConfigReloadingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/ConfigReloadingScreen.java index 7111c964c..232239977 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/ConfigReloadingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/ConfigReloadingScreen.java @@ -58,7 +58,7 @@ public class ConfigReloadingScreen extends Screen { @Override public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { - this.renderDirtBackground(0); + this.renderDirtBackground(matrices); if (!predicate.getAsBoolean()) { parent.run(); return; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java index 7c4567f55..ff076bbf0 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/DefaultDisplayViewingScreen.java @@ -61,6 +61,7 @@ import me.shedaniel.rei.impl.client.gui.widget.basewidgets.PanelWidget; import me.shedaniel.rei.impl.display.DisplaySpec; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.screens.ConfirmScreen; import net.minecraft.client.gui.screens.Screen; @@ -118,12 +119,7 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { @Override public boolean keyPressed(int keyCode, int scanCode, int modifiers) { - if (keyCode == 258 && !minecraft.options.keyInventory.matches(keyCode, scanCode)) { - boolean next = !hasShiftDown(); - if (!this.changeFocus(next)) - this.changeFocus(next); - return true; - } else if (ConfigObject.getInstance().getNextPageKeybind().matchesKey(keyCode, scanCode)) { + if (ConfigObject.getInstance().getNextPageKeybind().matchesKey(keyCode, scanCode)) { if (recipeNext.isEnabled()) recipeNext.onClick(); return recipeNext.isEnabled(); @@ -345,21 +341,22 @@ public class DefaultDisplayViewingScreen extends AbstractDisplayViewingScreen { ModifierKeyCode export = ConfigObject.getInstance().getExportImageKeybind(); if (export.matchesCurrentKey() || export.matchesCurrentMouse()) { for (Rectangle bounds : Iterables.concat(recipeBounds.keySet(), Iterables.transform(getTabs(), TabWidget::getBounds))) { - setBlitOffset(470); + matrices.pushPose(); + matrices.translate(0.0D, 0.0D, 480.0D); if (bounds.contains(mouseX, mouseY)) { fillGradient(matrices, bounds.x, bounds.y, bounds.getMaxX(), bounds.getMaxY(), 1744822402, 1744822402); Component text = Component.translatable("text.rei.release_export", export.getLocalizedName().plainCopy().getString()); MultiBufferSource.BufferSource immediate = MultiBufferSource.immediate(Tesselator.getInstance().getBuilder()); matrices.pushPose(); - matrices.translate(0.0D, 0.0D, 480); + matrices.translate(0.0D, 0.0D, 10.0D); Matrix4f matrix4f = matrices.last().pose(); - font.drawInBatch(text.getVisualOrderText(), bounds.getCenterX() - font.width(text) / 2f, bounds.getCenterY() - 4.5f, 0xff000000, false, matrix4f, immediate, false, 0, 15728880); + font.drawInBatch(text.getVisualOrderText(), bounds.getCenterX() - font.width(text) / 2f, bounds.getCenterY() - 4.5f, 0xff000000, false, matrix4f, immediate, Font.DisplayMode.NORMAL, 0, 15728880); immediate.endBatch(); matrices.popPose(); } else { fillGradient(matrices, bounds.x, bounds.y, bounds.getMaxX(), bounds.getMaxY(), 1744830463, 1744830463); } - setBlitOffset(0); + matrices.popPose(); } } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/UncertainDisplayViewingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/UncertainDisplayViewingScreen.java index add176ea0..c4b2b4b92 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/UncertainDisplayViewingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/UncertainDisplayViewingScreen.java @@ -164,13 +164,6 @@ public class UncertainDisplayViewingScreen extends Screen { protected void applyValue() { } - - @Override - public void renderButton(PoseStack poseStack, int i, int j, float f) { - setY(UncertainDisplayViewingScreen.this.height * 2 - 64); - super.renderButton(poseStack, i, j, f); - setY(UncertainDisplayViewingScreen.this.height * 2 - 64 - (int) (scroll.floatValue() / 200f * height)); - } }))); this._children().addAll(widgets); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/WarningAndErrorScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/WarningAndErrorScreen.java index 780b3f05a..055ac2596 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/WarningAndErrorScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/WarningAndErrorScreen.java @@ -134,7 +134,7 @@ public class WarningAndErrorScreen extends Screen { @Override public void render(PoseStack matrices, int int_1, int int_2, float float_1) { - this.renderDirtBackground(0); + this.renderDirtBackground(matrices); this.listWidget.render(matrices, int_1, int_2, float_1); if (RoughlyEnoughItemsState.getErrors().isEmpty()) { drawCenteredString(matrices, this.font, "Warnings during Roughly Enough Items' " + action, this.width / 2, 16, 16777215); @@ -153,22 +153,6 @@ public class WarningAndErrorScreen extends Screen { super(client, width, height, startY, endY, GuiComponent.BACKGROUND_LOCATION); } - @Override - public boolean changeFocus(boolean boolean_1) { - if (!this.inFocus && this.getItemCount() == 0) { - return false; - } else { - this.inFocus = !this.inFocus; - if (this.inFocus && this.getFocused() == null && this.getItemCount() > 0) { - this.moveSelection(1); - } else if (this.inFocus && this.getFocused() != null) { - this.moveSelection(0); - } - - return this.inFocus; - } - } - public void creditsClearEntries() { clearItems(); } @@ -194,6 +178,15 @@ public class WarningAndErrorScreen extends Screen { private abstract static class StringItem extends DynamicErrorFreeEntryListWidget.Entry { public abstract int getWidth(); + + @Override + public void setFocused(boolean bl) { + } + + @Override + public boolean isFocused() { + return false; + } } private static class EmptyItem extends StringItem { @@ -235,11 +228,6 @@ public class WarningAndErrorScreen extends Screen { return 12; } - @Override - public boolean changeFocus(boolean boolean_1) { - return false; - } - @Override public int getWidth() { return Minecraft.getInstance().font.width(text) + 10; @@ -292,11 +280,6 @@ public class WarningAndErrorScreen extends Screen { return 12; } - @Override - public boolean changeFocus(boolean boolean_1) { - return false; - } - @Override public int getWidth() { return Minecraft.getInstance().font.width(text) + 10; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java index ee7e01035..c307fcba9 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/ConfigButtonWidget.java @@ -46,6 +46,7 @@ import me.shedaniel.rei.impl.client.gui.ScreenOverlayImpl; import me.shedaniel.rei.impl.client.gui.modules.MenuAccess; import me.shedaniel.rei.impl.client.gui.modules.entries.*; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiComponent; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; @@ -87,10 +88,11 @@ public class ConfigButtonWidget { .focusable(false) .containsMousePredicate((button, point) -> button.getBounds().contains(point) && overlay.isNotInExclusionZones(point.x, point.y)); Widget overlayWidget = Widgets.createDrawableWidget((helper, matrices, mouseX, mouseY, delta) -> { - helper.setBlitOffset(helper.getBlitOffset() + 1); + matrices.pushPose(); + matrices.translate(0, 0, 1); RenderSystem.setShaderTexture(0, InternalTextures.CHEST_GUI_TEXTURE); - helper.blit(matrices, bounds.x + 3, bounds.y + 3, 0, 0, 14, 14); - helper.setBlitOffset(helper.getBlitOffset() - 1); + GuiComponent.blit(matrices, bounds.x + 3, bounds.y + 3, 0, 0, 14, 14); + matrices.popPose(); }); return Widgets.concat(configButton, overlayWidget); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java index 858e92442..27624c69c 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CraftableFilterButtonWidget.java @@ -56,7 +56,6 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Blocks; -import org.joml.Vector4f; import java.util.*; import java.util.concurrent.CompletableFuture; @@ -86,11 +85,10 @@ public class CraftableFilterButtonWidget { .containsMousePredicate((button, point) -> button.getBounds().contains(point) && overlay.isNotInExclusionZones(point.x, point.y)) .tooltipLineSupplier(button -> Component.translatable(ConfigManager.getInstance().isCraftableOnlyEnabled() ? "text.rei.showing_craftable" : "text.rei.showing_all")); Widget overlayWidget = Widgets.createDrawableWidget((helper, matrices, mouseX, mouseY, delta) -> { - Vector4f vector = new Vector4f(bounds.x + 2, bounds.y + 2, helper.getBlitOffset() - 10, 1.0F); - matrices.last().pose().transform(vector); - itemRenderer.blitOffset = vector.z(); - itemRenderer.renderGuiItem(icon, (int) vector.x(), (int) vector.y()); - itemRenderer.blitOffset = 0.0F; + matrices.pushPose(); + matrices.translate(bounds.x + 2, bounds.y + 2, 10); + itemRenderer.renderGuiItem(matrices, icon, 0, 0); + matrices.popPose(); }); return Widgets.concat(filterButton, overlayWidget); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayTooltipComponent.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayTooltipComponent.java index 1d7a9f17e..29da60020 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayTooltipComponent.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DisplayTooltipComponent.java @@ -72,9 +72,9 @@ public class DisplayTooltipComponent implements TooltipComponent, ClientTooltipC } @Override - public void renderImage(Font font, int x, int y, PoseStack matrices, ItemRenderer itemRenderer, int z) { + public void renderImage(Font font, int x, int y, PoseStack matrices, ItemRenderer itemRenderer) { matrices.pushPose(); - matrices.translate(x + 2, y + 2, z); + matrices.translate(x + 2, y + 2, 0); matrices.translate(-this.bounds.getX(), -this.bounds.getY(), 0); widget.render(matrices, -1000, -1000, 0); matrices.popPose(); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DynamicErrorFreeEntryListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DynamicErrorFreeEntryListWidget.java index 4249bac7c..9201cdfd5 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DynamicErrorFreeEntryListWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DynamicErrorFreeEntryListWidget.java @@ -261,7 +261,6 @@ public abstract class DynamicErrorFreeEntryListWidget> 16 & 255) / 255.0F; float g = (color >> 8 & 255) / 255.0F; float b = (color & 255) / 255.0F; - RenderSystem.disableTexture(); RenderSystem.enableBlend(); RenderSystem.defaultBlendFunc(); Tesselator tesselator = Tesselator.getInstance(); @@ -54,12 +53,11 @@ public final class FillRectangleDrawableConsumer implements DrawableConsumer { RenderSystem.setShader(GameRenderer::getPositionColorShader); Matrix4f pose = matrices.last().pose(); bufferBuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); - bufferBuilder.vertex(pose, rectangle.getMaxX(), rectangle.getMinY(), helper.getBlitOffset()).color(r, g, b, a).endVertex(); - bufferBuilder.vertex(pose, rectangle.getMinX(), rectangle.getMinY(), helper.getBlitOffset()).color(r, g, b, a).endVertex(); - bufferBuilder.vertex(pose, rectangle.getMinX(), rectangle.getMaxY(), helper.getBlitOffset()).color(r, g, b, a).endVertex(); - bufferBuilder.vertex(pose, rectangle.getMaxX(), rectangle.getMaxY(), helper.getBlitOffset()).color(r, g, b, a).endVertex(); + bufferBuilder.vertex(pose, rectangle.getMaxX(), rectangle.getMinY(), 0).color(r, g, b, a).endVertex(); + bufferBuilder.vertex(pose, rectangle.getMinX(), rectangle.getMinY(), 0).color(r, g, b, a).endVertex(); + bufferBuilder.vertex(pose, rectangle.getMinX(), rectangle.getMaxY(), 0).color(r, g, b, a).endVertex(); + bufferBuilder.vertex(pose, rectangle.getMaxX(), rectangle.getMaxY(), 0).color(r, g, b, a).endVertex(); tesselator.end(); RenderSystem.disableBlend(); - RenderSystem.enableTexture(); } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/LabelWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/LabelWidget.java index 18dd11450..cbdc13f2d 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/LabelWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/LabelWidget.java @@ -35,7 +35,9 @@ import me.shedaniel.rei.api.client.gui.widgets.Label; import me.shedaniel.rei.api.client.gui.widgets.Tooltip; import me.shedaniel.rei.api.client.gui.widgets.Widgets; import me.shedaniel.rei.impl.client.gui.text.TextTransformations; +import net.minecraft.client.gui.ComponentPath; import net.minecraft.client.gui.components.events.GuiEventListener; +import net.minecraft.client.gui.navigation.FocusNavigationEvent; import net.minecraft.locale.Language; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; @@ -291,12 +293,10 @@ public final class LabelWidget extends Label { return true; } + @Nullable @Override - public boolean changeFocus(boolean boolean_1) { - if (!isClickable() || !isFocusable()) - return false; - this.focused = !this.focused; - return true; + public ComponentPath nextFocusPath(FocusNavigationEvent event) { + return isClickable() && focusable ? ComponentPath.leaf(this) : null; } public boolean isHovered(int mouseX, int mouseY) { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget.java index 0796dd823..b66b86c75 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TextFieldWidget.java @@ -32,6 +32,8 @@ import me.shedaniel.rei.api.client.gui.widgets.Widget; import me.shedaniel.rei.api.client.gui.widgets.WidgetWithBounds; import net.minecraft.SharedConstants; import net.minecraft.Util; +import net.minecraft.client.gui.ComponentPath; +import net.minecraft.client.gui.navigation.FocusNavigationEvent; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.network.chat.Style; @@ -487,19 +489,17 @@ public class TextFieldWidget extends WidgetWithBounds implements TickableWidget, int b = (color & 255); Tesselator tesselator = Tesselator.getInstance(); BufferBuilder buffer = tesselator.getBuilder(); - RenderSystem.disableTexture(); RenderSystem.enableBlend(); RenderSystem.blendFuncSeparate(770, 771, 1, 0); Matrix4f matrix = matrices.last().pose(); RenderSystem.setShader(GameRenderer::getPositionColorShader); buffer.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); - buffer.vertex(matrix, x1, y2, getBlitOffset() + 50f).color(r, g, b, 120).endVertex(); - buffer.vertex(matrix, x2, y2, getBlitOffset() + 50f).color(r, g, b, 120).endVertex(); - buffer.vertex(matrix, x2, y1, getBlitOffset() + 50f).color(r, g, b, 120).endVertex(); - buffer.vertex(matrix, x1, y1, getBlitOffset() + 50f).color(r, g, b, 120).endVertex(); + buffer.vertex(matrix, x1, y2, getZ() + 50f).color(r, g, b, 120).endVertex(); + buffer.vertex(matrix, x2, y2, getZ() + 50f).color(r, g, b, 120).endVertex(); + buffer.vertex(matrix, x2, y1, getZ() + 50f).color(r, g, b, 120).endVertex(); + buffer.vertex(matrix, x1, y1, getZ() + 50f).color(r, g, b, 120).endVertex(); tesselator.end(); RenderSystem.disableBlend(); - RenderSystem.enableTexture(); } @Override @@ -546,13 +546,9 @@ public class TextFieldWidget extends WidgetWithBounds implements TickableWidget, this.notEditableColor = notEditableColor; } - @Override - public boolean changeFocus(boolean next) { - if (this.visible && this.editable) { - this.setFocused(!this.focused); - return this.focused; - } - return false; + @Nullable + public ComponentPath nextFocusPath(FocusNavigationEvent event) { + return this.visible && this.editable ? super.nextFocusPath(event) : null; } @Override diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TexturedDrawableConsumer.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TexturedDrawableConsumer.java index aa892db33..90bbbd8c5 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TexturedDrawableConsumer.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/basewidgets/TexturedDrawableConsumer.java @@ -54,7 +54,7 @@ public final class TexturedDrawableConsumer implements DrawableConsumer { @Override public void render(GuiComponent helper, PoseStack matrices, int mouseX, int mouseY, float delta) { RenderSystem.setShaderTexture(0, identifier); - innerBlit(matrices.last().pose(), x, x + width, y, y + height, helper.getBlitOffset(), uWidth, vHeight, u, v, textureWidth, textureHeight); + innerBlit(matrices.last().pose(), x, x + width, y, y + height, 0, uWidth, vHeight, u, v, textureWidth, textureHeight); } private static void innerBlit(Matrix4f matrix, int xStart, int xEnd, int yStart, int yEnd, int z, int width, int height, float u, float v, int texWidth, int texHeight) { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/CollapsedEntriesTooltip.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/CollapsedEntriesTooltip.java index 19612082f..f35a8922e 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/CollapsedEntriesTooltip.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/CollapsedEntriesTooltip.java @@ -61,12 +61,12 @@ public class CollapsedEntriesTooltip implements ClientTooltipComponent, TooltipC } @Override - public void renderImage(Font font, int x, int y, PoseStack poses, ItemRenderer renderer, int z) { + public void renderImage(Font font, int x, int y, PoseStack poses, ItemRenderer renderer) { int entrySize = EntryListWidget.entrySize(); int w = Math.max(1, MAX_WIDTH / entrySize); int i = 0; poses.pushPose(); - poses.translate(0, 0, z + 50); + poses.translate(0, 0, 50); for (EntryStack entry : stack.getIngredient()) { int x1 = x + (i % w) * entrySize; int y1 = y + (i / w) * entrySize; @@ -75,7 +75,7 @@ public class CollapsedEntriesTooltip implements ClientTooltipComponent, TooltipC poses.translate(0, 0, 200); MultiBufferSource.BufferSource source = MultiBufferSource.immediate(Tesselator.getInstance().getBuilder()); Component text = Component.literal("+" + (stack.getIngredient().size() - w * 3 + 1)).withStyle(ChatFormatting.GRAY); - font.drawInBatch(text, x1 + entrySize / 2 - font.width(text) / 2, y1 + entrySize / 2 - 1, -1, true, poses.last().pose(), source, false, 0, 15728880); + font.drawInBatch(text, x1 + entrySize / 2 - font.width(text) / 2, y1 + entrySize / 2 - 1, -1, true, poses.last().pose(), source, Font.DisplayMode.NORMAL, 0, 15728880); source.endBatch(); break; } else { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/PaginatedEntryListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/PaginatedEntryListWidget.java index bf6089262..6954c895d 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/PaginatedEntryListWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/PaginatedEntryListWidget.java @@ -87,7 +87,7 @@ public class PaginatedEntryListWidget extends CollapsingEntryListWidget { if (entry.our == null) { CachedEntryListRender.Sprite sprite = CachedEntryListRender.get(entry.getCurrentEntry()); if (sprite != null) { - CachingEntryRenderer renderer = new CachingEntryRenderer(sprite, this::getBlitOffset); + CachingEntryRenderer renderer = new CachingEntryRenderer(sprite, this::getZ); entry.our = ClientEntryStacks.setRenderer(entry.getCurrentEntry().copy().cast(), stack -> renderer); } } @@ -200,13 +200,12 @@ public class PaginatedEntryListWidget extends CollapsingEntryListWidget { .focusable(false); this.additionalWidgets.add(leftButton); this.additionalWidgets.add(Widgets.createDrawableWidget((helper, matrices, mouseX, mouseY, delta) -> { - helper.setBlitOffset(helper.getBlitOffset() + 1); RenderSystem.setShaderTexture(0, InternalTextures.ARROW_LEFT_TEXTURE); Rectangle bounds = leftButton.getBounds(); matrices.pushPose(); + matrices.translate(0, 0, 1); blit(matrices, bounds.x + 4, bounds.y + 4, 0, 0, 8, 8, 8, 8); matrices.popPose(); - helper.setBlitOffset(helper.getBlitOffset() - 1); })); this.changelogButton = Widgets.createButton(new Rectangle(overlayBounds.getMaxX() - 18 - 18, overlayBounds.y + (ConfigObject.getInstance().getSearchFieldLocation() == SearchFieldLocation.TOP_SIDE ? 24 : 0) + 5, 16, 16), Component.translatable("")) .onClick(button -> { @@ -217,14 +216,12 @@ public class PaginatedEntryListWidget extends CollapsingEntryListWidget { .focusable(false); this.additionalWidgets.add(changelogButton); this.additionalWidgets.add(Widgets.createDrawableWidget((helper, matrices, mouseX, mouseY, delta) -> { - helper.setBlitOffset(helper.getBlitOffset() + 1); RenderSystem.setShaderTexture(0, InternalTextures.CHEST_GUI_TEXTURE); Rectangle bounds = changelogButton.getBounds(); matrices.pushPose(); - matrices.translate(0.5f, 0, 0); - helper.blit(matrices, bounds.x + 1, bounds.y + 2, !ChangelogLoader.hasVisited() ? 28 : 14, 0, 14, 14); + matrices.translate(0.5f, 0, 1); +