From 66bd26b6ab2172a834d06e9f70d09a659faa8ebd Mon Sep 17 00:00:00 2001 From: shedaniel Date: Fri, 28 Oct 2022 19:21:36 +0800 Subject: Update to 22w43a --- .../rei/impl/client/ClientHelperImpl.java | 3 +- .../rei/impl/client/config/ConfigManagerImpl.java | 4 +- .../client/config/addon/ConfigAddonsScreen.java | 13 +-- .../client/config/entries/ConfigAddonsEntry.java | 7 +- .../config/entries/FilteringAddRuleScreen.java | 9 +- .../impl/client/config/entries/FilteringEntry.java | 7 +- .../config/entries/FilteringRuleOptionsScreen.java | 12 +-- .../config/entries/FilteringRulesScreen.java | 19 ++-- .../client/config/entries/FilteringScreen.java | 104 +++++++++++---------- .../client/config/entries/NoFilteringEntry.java | 7 +- .../config/entries/RecipeScreenTypeEntry.java | 7 +- .../client/config/entries/ReloadPluginsEntry.java | 13 +-- .../SearchFilterSyntaxHighlightingEntry.java | 9 +- .../rei/impl/client/gui/RecipeDisplayExporter.java | 4 +- .../rei/impl/client/gui/credits/CreditsScreen.java | 3 +- .../client/gui/error/ErrorsEntryListWidget.java | 16 ++-- .../rei/impl/client/gui/error/ErrorsScreen.java | 5 +- .../client/gui/performance/PerformanceScreen.java | 3 +- .../gui/performance/entry/PerformanceEntry.java | 7 +- .../gui/screen/AbstractDisplayViewingScreen.java | 2 +- .../gui/screen/DefaultDisplayViewingScreen.java | 2 +- .../SearchFilterSyntaxHighlightingScreen.java | 2 +- .../gui/screen/UncertainDisplayViewingScreen.java | 8 +- .../client/gui/screen/WarningAndErrorScreen.java | 3 +- .../client/gui/widget/CachedEntryListRender.java | 4 +- .../gui/widget/CraftableFilterButtonWidget.java | 4 +- .../gui/widget/DelegateWidgetWithTranslate.java | 8 +- .../widget/DynamicErrorFreeEntryListWidget.java | 6 +- .../impl/client/gui/widget/InternalWidgets.java | 2 +- .../rei/impl/client/gui/widget/OverflowWidget.java | 6 +- .../impl/client/gui/widget/PaddedCenterWidget.java | 4 +- .../rei/impl/client/gui/widget/PaddedWidget.java | 4 +- .../client/gui/widget/VanillaWrappedWidget.java | 3 +- .../gui/widget/basewidgets/ButtonWidget.java | 2 +- .../basewidgets/FillRectangleDrawableConsumer.java | 2 +- .../client/gui/widget/basewidgets/PanelWidget.java | 2 +- .../gui/widget/basewidgets/TextFieldWidget.java | 2 +- .../basewidgets/TexturedDrawableConsumer.java | 2 +- .../gui/widget/entrylist/CachingEntryRenderer.java | 2 +- .../widget/entrylist/EntryListSearchManager.java | 7 +- .../gui/widget/favorites/history/DisplayEntry.java | 4 +- .../favorites/history/DisplayHistoryWidget.java | 2 +- .../gui/widget/region/RegionEntryWidget.java | 4 +- .../gui/widget/region/RegionRenderingDebugger.java | 2 +- .../gui/widget/search/OverlaySearchField.java | 2 +- .../impl/client/transfer/MissingStacksTooltip.java | 2 +- .../impl/common/entry/type/EntryRegistryImpl.java | 3 +- .../plugin/client/entry/FluidEntryDefinition.java | 3 +- .../plugin/client/entry/ItemEntryDefinition.java | 2 +- 49 files changed, 187 insertions(+), 166 deletions(-) (limited to 'runtime/src') diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java index 43204cec1..9877f9343 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/ClientHelperImpl.java @@ -47,7 +47,6 @@ import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes; import me.shedaniel.rei.api.common.util.EntryStacks; import me.shedaniel.rei.api.common.util.FormattingUtils; import me.shedaniel.rei.impl.ClientInternals; -import me.shedaniel.rei.impl.VersionAdapter; import me.shedaniel.rei.impl.client.gui.screen.CompositeDisplayViewingScreen; import me.shedaniel.rei.impl.client.gui.screen.DefaultDisplayViewingScreen; import me.shedaniel.rei.impl.client.view.ViewsImpl; @@ -226,7 +225,7 @@ public class ClientHelperImpl implements ClientHelper { madeUpCommand = og.replaceAll("\\{player_name}", Minecraft.getInstance().player.getScoreboardName()).replaceAll("\\{item_name}", identifier.getPath()).replaceAll("\\{item_identifier}", identifier.toString()).replaceAll("\\{nbt}", "").replaceAll("\\{count}", String.valueOf(cheatedStack.getCount())); Minecraft.getInstance().player.displayClientMessage(Component.translatable("text.rei.too_long_nbt"), false); } - VersionAdapter.INSTANCE.sendCommand(StringUtils.removeStart(madeUpCommand, "/")); + Minecraft.getInstance().player.connection.sendCommand(StringUtils.removeStart(madeUpCommand, "/")); return true; } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java index f69b56d9a..faa56785e 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/ConfigManagerImpl.java @@ -46,7 +46,6 @@ import me.shedaniel.clothconfig2.gui.AbstractConfigScreen; import me.shedaniel.clothconfig2.gui.GlobalizedClothConfigScreen; import me.shedaniel.clothconfig2.gui.entries.KeyCodeEntry; import me.shedaniel.clothconfig2.gui.entries.TextListEntry; -import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.client.REIRuntime; import me.shedaniel.rei.api.client.config.ConfigManager; import me.shedaniel.rei.api.client.config.addon.ConfigAddonRegistry; @@ -90,6 +89,7 @@ import org.jetbrains.annotations.ApiStatus; import java.util.*; import java.util.function.Consumer; +import java.util.function.Supplier; import static me.shedaniel.autoconfig.util.Utils.getUnsafely; import static me.shedaniel.autoconfig.util.Utils.setUnsafely; @@ -422,7 +422,7 @@ public class ConfigManagerImpl implements ConfigManager { ScreenHooks.addRenderableWidget(screen, new Button(screen.width - 104, 4, 100, 20, Component.translatable("text.rei.credits"), button -> { CreditsScreen creditsScreen = new CreditsScreen(screen); Minecraft.getInstance().setScreen(creditsScreen); - })); + }, Button.NO_TOOLTIP, Supplier::get) {}); }).setSavingRunnable(() -> { saveConfig(); EntryRegistry.getInstance().refilter(); 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 0fe6a4e85..85329ac9f 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 @@ -41,6 +41,7 @@ import net.minecraft.resources.ResourceLocation; import java.util.Collections; import java.util.List; +import java.util.function.Supplier; public class ConfigAddonsScreen extends Screen { private AddonsList rulesList; @@ -56,9 +57,9 @@ public class ConfigAddonsScreen extends Screen { super.init(); { Component backText = Component.literal("↩ ").append(Component.translatable("gui.back")); - addRenderableWidget(new Button(4, 4, Minecraft.getInstance().font.width(backText) + 10, 20, backText, button -> { + addRenderableWidget(Button.builder(backText, button -> { minecraft.setScreen(parent); - })); + }).bounds(4, 4, Minecraft.getInstance().font.width(backText) + 10, 20).build()); } rulesList = addWidget(new AddonsList(minecraft, width, height, 30, height, BACKGROUND_LOCATION)); ConfigAddonRegistryImpl addonRegistry = (ConfigAddonRegistryImpl) ConfigAddonRegistry.getInstance(); @@ -138,12 +139,12 @@ public class ConfigAddonsScreen extends Screen { this.addon = addon; this.configureButton = new Button(0, 0, 20, 20, Component.nullToEmpty(null), button -> { Minecraft.getInstance().setScreen(this.addon.createScreen(Minecraft.getInstance().screen)); - }) { + }, Button.NO_TOOLTIP, Supplier::get) { @Override protected void renderBg(PoseStack matrices, Minecraft client, int mouseX, int mouseY) { super.renderBg(matrices, client, mouseX, mouseY); RenderSystem.setShaderTexture(0, InternalTextures.CHEST_GUI_TEXTURE); - blit(matrices, x + 3, y + 3, 0, 0, 14, 14); + blit(matrices, getX() + 3, getY() + 3, 0, 0, 14, 14); } }; } @@ -171,8 +172,8 @@ public class ConfigAddonsScreen extends Screen { client.font.drawShadow(matrices, subtitle.getVisualOrderText(), x + 2, y + 12, 8421504); } } - configureButton.x = x + entryWidth - 25; - configureButton.y = y + 1; + configureButton.setX(x + entryWidth - 25); + configureButton.setY(y + 1); configureButton.render(matrices, mouseX, mouseY, delta); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ConfigAddonsEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ConfigAddonsEntry.java index 8062b1ea0..a1eaf5c78 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ConfigAddonsEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ConfigAddonsEntry.java @@ -40,13 +40,14 @@ import org.jetbrains.annotations.ApiStatus; import java.util.List; import java.util.Optional; +import java.util.function.Supplier; @ApiStatus.Internal public class ConfigAddonsEntry extends AbstractConfigListEntry { private int width; private AbstractWidget buttonWidget = new Button(0, 0, 0, 20, Component.empty(), button -> { Minecraft.getInstance().setScreen(new ConfigAddonsScreen(Minecraft.getInstance().screen)); - }); + }, Button.NO_TOOLTIP, Supplier::get) {}; private List children = ImmutableList.of(buttonWidget); public ConfigAddonsEntry(int width) { @@ -77,8 +78,8 @@ public class ConfigAddonsEntry extends AbstractConfigListEntry { Window window = Minecraft.getInstance().getWindow(); this.buttonWidget.active = REIRuntime.getInstance().getPreviousContainerScreen() != null && Minecraft.getInstance().getConnection() != null && Minecraft.getInstance().getConnection().getRecipeManager() != null && this.isEditable(); - this.buttonWidget.y = y; - this.buttonWidget.x = x + entryWidth / 2 - width / 2; + this.buttonWidget.setY(y); + this.buttonWidget.setX(x + entryWidth / 2 - width / 2); this.buttonWidget.setWidth(width); this.buttonWidget.render(matrices, mouseX, mouseY, delta); } 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 080bbc292..68cb9cc0c 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 @@ -41,6 +41,7 @@ import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.function.BiFunction; +import java.util.function.Supplier; public class FilteringAddRuleScreen extends Screen { private final FilteringEntry entry; @@ -60,7 +61,7 @@ public class FilteringAddRuleScreen extends Screen { addRenderableWidget(new Button(4, 4, Minecraft.getInstance().font.width(backText) + 10, 20, backText, button -> { minecraft.setScreen(parent); this.parent = null; - })); + }, Button.NO_TOOLTIP, Supplier::get) {}); } rulesList = addWidget(new RulesList(minecraft, width, height, 30, height, BACKGROUND_LOCATION)); for (FilteringRule rule : FilteringRule.REGISTRY.values()) { @@ -154,7 +155,7 @@ public class FilteringAddRuleScreen extends Screen { entry.edited = true; Minecraft.getInstance().setScreen(this.screenFunction.apply(entry, parent)); entry.rules.add(0, rule); - }); + }, Button.NO_TOOLTIP, Supplier::get) {}; addButton.active = this.screenFunction != null; } @@ -181,8 +182,8 @@ public class FilteringAddRuleScreen extends Screen { client.font.drawShadow(matrices, subtitle.getVisualOrderText(), x + 2, y + 12, 8421504); } } - addButton.x = x + entryWidth - 25; - addButton.y = y + 1; + addButton.setX(x + entryWidth - 25); + addButton.setY(y + 1); addButton.render(matrices, mouseX, mouseY, delta); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java index 52171b53a..97715ad23 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/FilteringEntry.java @@ -41,6 +41,7 @@ import org.jetbrains.annotations.ApiStatus; import java.util.*; import java.util.function.Consumer; +import java.util.function.Supplier; @ApiStatus.Internal public class FilteringEntry extends AbstractConfigListEntry>> { @@ -56,7 +57,7 @@ public class FilteringEntry extends AbstractConfigListEntry>> private final AbstractWidget buttonWidget = new Button(0, 0, 0, 20, Component.translatable("config.roughlyenoughitems.filteringScreen"), button -> { filteringRulesScreen.parent = Minecraft.getInstance().screen; Minecraft.getInstance().setScreen(filteringRulesScreen); - }); + }, Button.NO_TOOLTIP, Supplier::get) {}; private final List children = ImmutableList.of(buttonWidget); public FilteringEntry(int width, List> configFiltered, List> rules, List> defaultValue, Consumer>> saveConsumer, Consumer>> rulesSaveConsumer) { @@ -92,8 +93,8 @@ public class FilteringEntry extends AbstractConfigListEntry>> super.render(matrices, index, y, x, entryWidth, entryHeight, mouseX, mouseY, isSelected, delta); Window window = Minecraft.getInstance().getWindow(); this.buttonWidget.active = this.isEditable(); - this.buttonWidget.y = y; - this.buttonWidget.x = x + entryWidth / 2 - width / 2; + this.buttonWidget.setY(y); + this.buttonWidget.setX(x + entryWidth / 2 - width / 2); this.buttonWidget.setWidth(width); this.buttonWidget.render(matrices, mouseX, mouseY, delta); } 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 86429e437..157c13a08 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 @@ -72,7 +72,7 @@ public abstract class FilteringRuleOptionsScreen> ext addRenderableWidget(new Button(this.width - 4 - width - 10, 4, width + 10, 20, doneText, button -> { save(); minecraft.setScreen(parent); - })); + }, Button.NO_TOOLTIP, Supplier::get) {}); } rulesList = addWidget(new RulesList(minecraft, width, height, 30, height, BACKGROUND_LOCATION)); addEntries(ruleEntry -> rulesList.addItem(ruleEntry)); @@ -200,8 +200,8 @@ public abstract class FilteringRuleOptionsScreen> ext @Override public void render(PoseStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isHovered, float delta) { - widget.x = x + 2; - widget.y = y + 2; + widget.setX(x + 2); + widget.setY(y + 2); widget.render(matrices, mouseX, mouseY, delta); } @@ -235,7 +235,7 @@ public abstract class FilteringRuleOptionsScreen> ext this.widget = new Button(0, 0, 100, 20, textFunction.apply(b), button -> { this.b = !this.b; button.setMessage(textFunction.apply(this.b)); - }); + }, Button.NO_TOOLTIP, Supplier::get) {}; } public boolean getBoolean() { @@ -244,8 +244,8 @@ public abstract class FilteringRuleOptionsScreen> ext @Override public void render(PoseStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isHovered, float delta) { - widget.x = x + 2; - widget.y = y; + widget.setX(x + 2); + widget.setY(y); widget.render(matrices, mouseX, mouseY, delta); } 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 d3da37ef2..74920f783 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 @@ -45,6 +45,7 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.function.BiFunction; +import java.util.function.Supplier; public class FilteringRulesScreen extends Screen { private final FilteringEntry entry; @@ -64,7 +65,7 @@ public class FilteringRulesScreen extends Screen { addRenderableWidget(new Button(4, 4, Minecraft.getInstance().font.width(backText) + 10, 20, backText, button -> { minecraft.setScreen(parent); this.parent = null; - })); + }, Button.NO_TOOLTIP, Supplier::get) {}); } { Component addText = Component.literal(" + "); @@ -72,7 +73,7 @@ public class FilteringRulesScreen extends Screen { FilteringAddRuleScreen screen = new FilteringAddRuleScreen(entry); screen.parent = this; minecraft.setScreen(screen); - })); + }, Button.NO_TOOLTIP, Supplier::get) {}); } rulesList = addWidget(new RulesList(minecraft, width, height, 30, height, BACKGROUND_LOCATION)); for (int i = entry.rules.size() - 1; i >= 0; i--) { @@ -186,12 +187,12 @@ public class FilteringRulesScreen extends Screen { configureButton = new Button(0, 0, 20, 20, Component.nullToEmpty(null), button -> { entry.edited = true; Minecraft.getInstance().setScreen(this.screenFunction.apply(entry, Minecraft.getInstance().screen)); - }) { + }, Button.NO_TOOLTIP, Supplier::get) { @Override protected void renderBg(PoseStack matrices, Minecraft client, int mouseX, int mouseY) { super.renderBg(matrices, client, mouseX, mouseY); RenderSystem.setShaderTexture(0, InternalTextures.CHEST_GUI_TEXTURE); - blit(matrices, x + 3, y + 3, 0, 0, 14, 14); + blit(matrices, getX() + 3, getY() + 3, 0, 0, 14, 14); } }; { @@ -201,7 +202,7 @@ public class FilteringRulesScreen extends Screen { entry.edited = true; entry.rules.remove(rule); screen.init(Minecraft.getInstance(), screen.width, screen.height); - }); + }, Button.NO_TOOLTIP, Supplier::get) {}; } configureButton.active = this.screenFunction != null; deleteButton.active = !(rule instanceof ManualFilteringRule); @@ -230,11 +231,11 @@ public class FilteringRulesScreen extends Screen { client.font.drawShadow(matrices, subtitle.getVisualOrderText(), x + 2, y + 12, 8421504); } } - configureButton.x = x + entryWidth - 25; - configureButton.y = y + 1; + configureButton.setX(x + entryWidth - 25); + configureButton.setY(y + 1); configureButton.render(matrices, mouseX, mouseY, delta); - deleteButton.x = x + entryWidth - 27 - deleteButton.getWidth(); - deleteButton.y = y + 1; + deleteButton.setX(x + entryWidth - 27 - deleteButton.getWidth()); + deleteButton.setY(y + 1); deleteButton.render(matrices, mouseX, mouseY, delta); } 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 0e37743d4..9804af2ed 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 @@ -27,7 +27,6 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; -import com.mojang.math.Matrix4f; import me.shedaniel.clothconfig2.ClothConfigInitializer; import me.shedaniel.clothconfig2.api.ScissorsHandler; import me.shedaniel.clothconfig2.api.scroll.ScrollingContainer; @@ -56,6 +55,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; +import org.joml.Matrix4f; import java.util.ArrayList; import java.util.Collections; @@ -113,52 +113,62 @@ public class FilteringScreen extends Screen { this.searchField = new OverlaySearchField(0, 0, 0, 0); { Component selectAllText = Component.translatable("config.roughlyenoughitems.filteredEntries.selectAll"); - this.selectAllButton = new Button(0, 0, Minecraft.getInstance().font.width(selectAllText) + 10, 20, selectAllText, button -> { - this.points.clear(); - this.points.add(new PointPair(new Point(-Integer.MAX_VALUE / 2, -Integer.MAX_VALUE / 2), new Point(Integer.MAX_VALUE / 2, Integer.MAX_VALUE / 2))); - }); + this.selectAllButton = Button.builder(selectAllText, button -> { + this.points.clear(); + this.points.add(new PointPair(new Point(-Integer.MAX_VALUE / 2, -Integer.MAX_VALUE / 2), new Point(Integer.MAX_VALUE / 2, Integer.MAX_VALUE / 2))); + }) + .bounds(0, 0, Minecraft.getInstance().font.width(selectAllText) + 10, 20) + .build(); } { Component selectNoneText = Component.translatable("config.roughlyenoughitems.filteredEntries.selectNone"); - this.selectNoneButton = new Button(0, 0, Minecraft.getInstance().font.width(selectNoneText) + 10, 20, selectNoneText, button -> { - this.points.clear(); - }); + this.selectNoneButton = Button.builder(selectNoneText, button -> { + this.points.clear(); + }) + .bounds(0, 0, Minecraft.getInstance().font.width(selectNoneText) + 10, 20) + .build(); } { Component hideText = Component.translatable("config.roughlyenoughitems.filteredEntries.hide"); - this.hideButton = new Button(0, 0, Minecraft.getInstance().font.width(hideText) + 10, 20, hideText, button -> { - for (int i = 0; i < entryStacks.size(); i++) { - EntryStack stack = entryStacks.get(i); - FilteringListEntry entry = entries.get(i); - entry.getBounds().y = entry.backupY - scrolling.scrollAmountInt(); - if (entry.isSelected() && !entry.isFiltered()) { - filteringEntry.configFiltered.add(stack); - filteringEntry.edited = true; - entry.dirty = true; - } - } - }); + this.hideButton = Button.builder(hideText, button -> { + for (int i = 0; i < entryStacks.size(); i++) { + EntryStack stack = entryStacks.get(i); + FilteringListEntry entry = entries.get(i); + entry.getBounds().y = entry.backupY - scrolling.scrollAmountInt(); + if (entry.isSelected() && !entry.isFiltered()) { + filteringEntry.configFiltered.add(stack); + filteringEntry.edited = true; + entry.dirty = true; + } + } + }) + .bounds(0, 0, Minecraft.getInstance().font.width(hideText) + 10, 20) + .build(); } { Component showText = Component.translatable("config.roughlyenoughitems.filteredEntries.show"); - this.showButton = new Button(0, 0, Minecraft.getInstance().font.width(showText) + 10, 20, showText, button -> { - for (int i = 0; i < entryStacks.size(); i++) { - EntryStack stack = entryStacks.get(i); - FilteringListEntry entry = entries.get(i); - entry.getBounds().y = entry.backupY - scrolling.scrollAmountInt(); - if (entry.isSelected() && filteringEntry.configFiltered.remove(stack)) { - filteringEntry.edited = true; - entry.dirty = true; - } - } - }); + this.showButton = Button.builder(showText, button -> { + for (int i = 0; i < entryStacks.size(); i++) { + EntryStack stack = entryStacks.get(i); + FilteringListEntry entry = entries.get(i); + entry.getBounds().y = entry.backupY - scrolling.scrollAmountInt(); + if (entry.isSelected() && filteringEntry.configFiltered.remove(stack)) { + filteringEntry.edited = true; + entry.dirty = true; + } + } + }) + .bounds(0, 0, Minecraft.getInstance().font.width(showText) + 10, 20) + .build(); } { Component backText = Component.literal("↩ ").append(Component.translatable("gui.back")); - this.backButton = new Button(0, 0, Minecraft.getInstance().font.width(backText) + 10, 20, backText, button -> { - minecraft.setScreen(parent); - this.parent = null; - }); + this.backButton = Button.builder(backText, button -> { + minecraft.setScreen(parent); + this.parent = null; + }) + .bounds(0, 0, Minecraft.getInstance().font.width(backText) + 10, 20) + .build(); } this.searchField.isMain = false; } @@ -177,18 +187,18 @@ public class FilteringScreen extends Screen { super.init(); Rectangle bounds = getBounds(); updateSearch(this.searchField.getText()); - this.selectAllButton.x = 2; - this.selectAllButton.y = bounds.getMaxY() - 22; - this.selectNoneButton.x = 4 + selectAllButton.getWidth(); - this.selectNoneButton.y = bounds.getMaxY() - 22; - int searchFieldWidth = Math.max(bounds.width - (selectNoneButton.x + selectNoneButton.getWidth() + hideButton.getWidth() + showButton.getWidth() + 12), 100); - this.searchField.getBounds().setBounds(selectNoneButton.x + selectNoneButton.getWidth() + 4, bounds.getMaxY() - 21, searchFieldWidth, 18); - this.hideButton.x = bounds.getMaxX() - hideButton.getWidth() - showButton.getWidth() - 4; - this.hideButton.y = bounds.getMaxY() - 22; - this.showButton.x = bounds.getMaxX() - showButton.getWidth() - 2; - this.showButton.y = bounds.getMaxY() - 22; - this.backButton.x = 4; - this.backButton.y = 4; + this.selectAllButton.setX(2); + this.selectAllButton.setY(bounds.getMaxY() - 22); + this.selectNoneButton.setX(4 + selectAllButton.getWidth()); + this.selectNoneButton.setY(bounds.getMaxY() - 22); + int searchFieldWidth = Math.max(bounds.width - (selectNoneButton.getX() + selectNoneButton.getWidth() + hideButton.getWidth() + showButton.getWidth() + 12), 100); + this.searchField.getBounds().setBounds(selectNoneButton.getX() + selectNoneButton.getWidth() + 4, bounds.getMaxY() - 21, searchFieldWidth, 18); + this.hideButton.setX(bounds.getMaxX() - hideButton.getWidth() - showButton.getWidth() - 4); + this.hideButton.setY(bounds.getMaxY() - 22); + this.showButton.setX(bounds.getMaxX() - showButton.getWidth() - 2); + this.showButton.setY(bounds.getMaxY() - 22); + this.backButton.setX(4); + this.backButton.setY(4); this.searchField.setResponder(this::updateSearch); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringEntry.java index 95249d260..61b45bca7 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/NoFilteringEntry.java @@ -39,6 +39,7 @@ import org.jetbrains.annotations.ApiStatus; import java.util.List; import java.util.Optional; import java.util.function.Consumer; +import java.util.function.Supplier; @ApiStatus.Internal public class NoFilteringEntry extends AbstractConfigListEntry>> { @@ -46,7 +47,7 @@ public class NoFilteringEntry extends AbstractConfigListEntry private Consumer>> saveConsumer; private List> defaultValue; private List> configFiltered; - private final AbstractWidget buttonWidget = new Button(0, 0, 0, 20, Component.translatable("config.roughlyenoughitems.filteredEntries.loadWorldFirst"), button -> {}); + private final AbstractWidget buttonWidget = new Button(0, 0, 0, 20, Component.translatable("config.roughlyenoughitems.filteredEntries.loadWorldFirst"), button -> {}, Button.NO_TOOLTIP, Supplier::get) {}; private final List children = ImmutableList.of(buttonWidget); public NoFilteringEntry(int width, List> configFiltered, List> defaultValue, Consumer>> saveConsumer) { @@ -77,8 +78,8 @@ public class NoFilteringEntry extends AbstractConfigListEntry super.render(matrices, index, y, x, entryWidth, entryHeight, mouseX, mouseY, isSelected, delta); Window window = Minecraft.getInstance().getWindow(); this.buttonWidget.active = false; - this.buttonWidget.y = y; - this.buttonWidget.x = x + entryWidth / 2 - width / 2; + this.buttonWidget.setY(y); + this.buttonWidget.setX(x + entryWidth / 2 - width / 2); this.buttonWidget.setWidth(width); this.buttonWidget.render(matrices, mouseX, mouseY, delta); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/RecipeScreenTypeEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/RecipeScreenTypeEntry.java index d1ee26970..d54952fba 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/RecipeScreenTypeEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/RecipeScreenTypeEntry.java @@ -39,6 +39,7 @@ import net.minecraft.network.chat.Component; import java.util.List; import java.util.Optional; import java.util.function.Consumer; +import java.util.function.Supplier; public class RecipeScreenTypeEntry extends TooltipListEntry { private int width; @@ -51,7 +52,7 @@ public class RecipeScreenTypeEntry extends TooltipListEntry { Minecraft.getInstance().setScreen(getConfigScreen()); type = original ? DisplayScreenType.ORIGINAL : DisplayScreenType.COMPOSITE; })); - }) { + }, Button.NO_TOOLTIP, Supplier::get) { @Override public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { setMessage(Component.translatable("config.roughlyenoughitems.recipeScreenType.config", type.toString())); @@ -105,8 +106,8 @@ public class RecipeScreenTypeEntry extends TooltipListEntry { super.render(matrices, index, y, x, entryWidth, entryHeight, mouseX, mouseY, isSelected, delta); Window window = Minecraft.getInstance().getWindow(); this.buttonWidget.active = this.isEditable(); - this.buttonWidget.y = y; - this.buttonWidget.x = x + entryWidth / 2 - width / 2; + this.buttonWidget.setY(y); + this.buttonWidget.setX(x + entryWidth / 2 - width / 2); this.buttonWidget.setWidth(width); this.buttonWidget.render(matrices, mouseX, mouseY, delta); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ReloadPluginsEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ReloadPluginsEntry.java index 5988b43f3..3721d1bee 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ReloadPluginsEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/ReloadPluginsEntry.java @@ -44,6 +44,7 @@ import org.jetbrains.annotations.ApiStatus; import java.util.List; import java.util.Optional; +import java.util.function.Supplier; @ApiStatus.Internal public class ReloadPluginsEntry extends AbstractConfigListEntry { @@ -51,7 +52,7 @@ public class ReloadPluginsEntry extends AbstractConfigListEntry { private AbstractWidget reloadPluginsButton = new Button(0, 0, 0, 20, Component.empty(), button -> { RoughlyEnoughItemsCore.PERFORMANCE_LOGGER.clear(); RoughlyEnoughItemsCoreClient.reloadPlugins(null, null); - }) { + }, Button.NO_TOOLTIP, Supplier::get) { @Override public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { if (PluginManager.areAnyReloading()) { @@ -64,7 +65,7 @@ public class ReloadPluginsEntry extends AbstractConfigListEntry { }; private AbstractWidget reloadSearchButton = new Button(0, 0, 0, 20, Component.empty(), button -> { Argument.SEARCH_CACHE.clear(); - }); + }, Button.NO_TOOLTIP, Supplier::get) {}; private List children = ImmutableList.of(reloadPluginsButton, reloadSearchButton); public ReloadPluginsEntry(int width) { @@ -94,14 +95,14 @@ public class ReloadPluginsEntry extends AbstractConfigListEntry { super.render(matrices, index, y, x, entryWidth, entryHeight, mouseX, mouseY, isSelected, delta); Window window = Minecraft.getInstance().getWindow(); this.reloadPluginsButton.active = this.isEditable(); - this.reloadPluginsButton.y = y; + this.reloadPluginsButton.setY(y); this.reloadPluginsButton.setWidth(width / 2 - 2); - this.reloadPluginsButton.x = x + entryWidth / 2 - width / 2; + this.reloadPluginsButton.setX(x + entryWidth / 2 - width / 2); this.reloadPluginsButton.render(matrices, mouseX, mouseY, delta); this.reloadSearchButton.active = this.isEditable() && !Argument.SEARCH_CACHE.isEmpty(); - this.reloadSearchButton.y = y; + this.reloadSearchButton.setY(y); this.reloadSearchButton.setWidth(width / 2 - 2); - this.reloadSearchButton.x = x + entryWidth / 2 + 2; + this.reloadSearchButton.setX(x + entryWidth / 2 + 2); this.reloadSearchButton.render(matrices, mouseX, mouseY, delta); } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/SearchFilterSyntaxHighlightingEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/SearchFilterSyntaxHighlightingEntry.java index 3cd747776..d15e85d2f 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/SearchFilterSyntaxHighlightingEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/config/entries/SearchFilterSyntaxHighlightingEntry.java @@ -38,6 +38,7 @@ import net.minecraft.network.chat.Component; import java.util.List; import java.util.Optional; import java.util.function.Consumer; +import java.util.function.Supplier; public class SearchFilterSyntaxHighlightingEntry extends TooltipListEntry { private final SyntaxHighlightingMode original; @@ -46,7 +47,7 @@ public class SearchFilterSyntaxHighlightingEntry extends TooltipListEntry save; private final AbstractWidget buttonWidget = new Button(0, 0, 0, 20, Component.empty(), $ -> { type = SyntaxHighlightingMode.values()[(type.ordinal() + 1) % SyntaxHighlightingMode.values().length]; - }) { + }, Button.NO_TOOLTIP, Supplier::get) { @Override public void render(PoseStack matrices, int mouseX, int mouseY, float delta) { setMessage(Component.literal(type.toString())); @@ -99,14 +100,14 @@ public class SearchFilterSyntaxHighlightingEntry extends TooltipListEntry openPrevious())); + addRenderableWidget(buttonDone = new Button(width / 2 - 100, height - 26, 200, 20, Component.translatable("gui.done"), button -> openPrevious(), Button.NO_TOOLTIP, Supplier::get) {}); } private static void fillTranslators(Exception[] exception, List>> translators) { 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 468a49241..10568f0fd 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 @@ -26,8 +26,6 @@ package me.shedaniel.rei.impl.client.gui.error; import com.mojang.blaze3d.platform.NativeImage; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Matrix4f; -import com.mojang.math.Vector4f; import me.shedaniel.clothconfig2.gui.widget.DynamicEntryListWidget; import me.shedaniel.clothconfig2.gui.widget.DynamicSmoothScrollingEntryListWidget; import net.minecraft.ChatFormatting; @@ -50,6 +48,8 @@ import net.minecraft.util.FormattedCharSequence; import net.minecraft.util.Mth; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; +import org.joml.Matrix4f; +import org.joml.Vector4f; import java.net.URI; import java.net.URISyntaxException; @@ -194,7 +194,7 @@ public class ErrorsEntryListWidget extends DynamicSmoothScrollingEntryListWidget public ScaledEntry(Entry entry, float scale) { this.entry = entry; this.scale = scale; - this.transform = Matrix4f.createScaleMatrix(scale, scale, scale); + this.transform = new Matrix4f().scale(scale, scale, scale); } public Entry getEntry() { @@ -204,7 +204,7 @@ public class ErrorsEntryListWidget extends DynamicSmoothScrollingEntryListWidget private Vector4f transformMouse(double mouseX, double mouseY) { Vector4f mouse = new Vector4f((float) mouseX, (float) mouseY, 0, 1); - mouse.transform(transform); + transform.transform(mouse); return mouse; } @@ -212,10 +212,10 @@ public class ErrorsEntryListWidget extends DynamicSmoothScrollingEntryListWidget public void render(PoseStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean isSelected, float delta) { Vector4f mouse = transformMouse(mouseX, mouseY); matrices.pushPose(); - matrices.last().pose().multiply(transform); + matrices.last().pose().mul(transform); Vector4f pos = new Vector4f(x, y, 0, 1); - pos.transform(Matrix4f.createScaleMatrix(1 / scale, 1 / scale, 1 / scale)); + pos.mul(new Matrix4f().scale(1 / scale, 1 / scale, 1 / scale)); getEntry().render(matrices, index, Math.round(pos.y()), Math.round(pos.x()), Math.round(entryWidth / scale), Math.round(entryHeight / scale), (int) mouse.x(), (int) mouse.y(), isSelected, delta); matrices.popPose(); } @@ -340,7 +340,7 @@ public class ErrorsEntryListWidget extends DynamicSmoothScrollingEntryListWidget public boolean changeFocus(boolean boolean_1) { return false; } - + @Override public boolean mouseClicked(double mouseX, double mouseY, int button) { if (button == 0) { @@ -360,7 +360,7 @@ public class ErrorsEntryListWidget extends DynamicSmoothScrollingEntryListWidget return super.mouseClicked(mouseX, mouseY, button); } - + @Nullable private Style getTextAt(double x, double y) { int lineCount = this.textSplit.size(); 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 706a89b7d..c4aa39d10 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 @@ -35,6 +35,7 @@ import org.jetbrains.annotations.ApiStatus; import java.util.List; import java.util.function.Function; +import java.util.function.Supplier; @ApiStatus.Internal public class ErrorsScreen extends Screen { @@ -79,9 +80,9 @@ public class ErrorsScreen extends Screen { } listWidget._addEntry(new TextEntry(Component.empty(), listWidget.getItemWidth())); if (quitable) { - addRenderableWidget(doneButton = new Button(width / 2 - 100, height - 26, 200, 20, Component.translatable("gui.done"), button -> Minecraft.getInstance().setScreen(parent))); + addRenderableWidget(doneButton = new Button(width / 2 - 100, height - 26, 200, 20, Component.translatable("gui.done"), button -> Minecraft.getInstance().setScreen(parent), Button.NO_TOOLTIP, Supplier::get) {}); } else { - addRenderableWidget(doneButton = new Button(width / 2 - 100, height - 26, 200, 20, Component.translatable("menu.quit"), button -> exit())); + addRenderableWidget(doneButton = new Button(width / 2 - 100, height - 26, 200, 20, Component.translatable("menu.quit"), button -> exit(), Button.NO_TOOLTIP, Supplier::get) {}); } } 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 e1fbae0cb..ce262e4fa 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 @@ -43,6 +43,7 @@ import net.minecraft.util.FormattedCharSequence; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; import java.util.stream.Collectors; import static java.util.concurrent.TimeUnit.*; @@ -140,7 +141,7 @@ public class PerformanceScreen extends Screen { addRenderableWidget(new Button(4, 4, Minecraft.getInstance().font.width(backText) + 10, 20, backText, button -> { minecraft.setScreen(parent); this.parent = null; - })); + }, Button.NO_TOOLTIP, Supplier::get) {}); } list = new PerformanceEntryListWidget(); long[] totalTime = {0}; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/entry/PerformanceEntry.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/entry/PerformanceEntry.java index c52630bba..f6b33e1af 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/entry/PerformanceEntry.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/performance/entry/PerformanceEntry.java @@ -39,13 +39,14 @@ import org.jetbrains.annotations.ApiStatus; import java.util.List; import java.util.Optional; +import java.util.function.Supplier; @ApiStatus.Internal public class PerformanceEntry extends AbstractConfigListEntry { private int width; private AbstractWidget buttonWidget = new Button(0, 0, 0, 20, Component.empty(), button -> { Minecraft.getInstance().setScreen(new PerformanceScreen(Minecraft.getInstance().screen)); - }); + }, Button.NO_TOOLTIP, Supplier::get) {}; private List children = ImmutableList.of(buttonWidget); public PerformanceEntry(int width) { @@ -74,8 +75,8 @@ public class PerformanceEntry extends AbstractConfigListEntry { super.render(matrices, index, y, x, entryWidth, entryHeight, mouseX, mouseY, isSelected, delta); Window window = Minecraft.getInstance().getWindow(); this.buttonWidget.active = this.isEditable(); - this.buttonWidget.y = y; - this.buttonWidget.x = x + entryWidth / 2 - width / 2; + this.buttonWidget.setY(y); + this.buttonWidget.setX(x + entryWidth / 2 - width / 2); this.buttonWidget.setWidth(width); this.buttonWidget.render(matrices, mouseX, mouseY, delta); } 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 73e9d24ca..ccdc28b74 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 @@ -27,7 +27,6 @@ import com.google.common.collect.Lists; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.Tesselator; import com.mojang.datafixers.util.Pair; -import com.mojang.math.Matrix4f; import dev.architectury.fluid.FluidStack; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.REIRuntime; @@ -69,6 +68,7 @@ import net.minecraft.util.Mth; import net.minecraft.world.inventory.tooltip.TooltipComponent; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.Nullable; +import org.joml.Matrix4f; import java.util.*; import java.util.function.UnaryOperator; 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 92e2afb5d..62910e808 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 @@ -29,7 +29,6 @@ import com.google.common.collect.Maps; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.Tesselator; -import com.mojang.math.Matrix4f; import it.unimi.dsi.fastutil.Pair; import me.shedaniel.clothconfig2.api.ModifierKeyCode; import me.shedaniel.clothconfig2.api.animator.ValueAnimator; @@ -73,6 +72,7 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.util.Mth; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; +import org.joml.Matrix4f; import java.util.*; import java.util.function.Supplier; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/SearchFilterSyntaxHighlightingScreen.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/SearchFilterSyntaxHighlightingScreen.java index a2575d643..c0ca7e9a0 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/SearchFilterSyntaxHighlightingScreen.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/screen/SearchFilterSyntaxHighlightingScreen.java @@ -25,11 +25,11 @@ package me.shedaniel.rei.impl.client.gui.screen; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; -import com.mojang.math.Matrix4f; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.network.chat.Component; import org.jetbrains.annotations.ApiStatus; +import org.joml.Matrix4f; @ApiStatus.Internal public class SearchFilterSyntaxHighlightingScreen extends Screen { 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 05e476504..d83877320 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 @@ -26,7 +26,6 @@ package me.shedaniel.rei.impl.client.gui.screen; import com.google.common.collect.Lists; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Matrix4f; import dev.architectury.platform.Platform; import it.unimi.dsi.fastutil.booleans.BooleanConsumer; import me.shedaniel.clothconfig2.api.ScissorsHandler; @@ -57,6 +56,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.util.FormattedCharSequence; import net.minecraft.util.Mth; import org.jetbrains.annotations.ApiStatus; +import org.joml.Matrix4f; import java.util.Collections; import java.util.List; @@ -167,9 +167,9 @@ public class UncertainDisplayViewingScreen extends Screen { @Override public void renderButton(PoseStack poseStack, int i, int j, float f) { - y = UncertainDisplayViewingScreen.this.height * 2 - 64; + setY(UncertainDisplayViewingScreen.this.height * 2 - 64); super.renderButton(poseStack, i, j, f); - y = UncertainDisplayViewingScreen.this.height * 2 - 64 - (int) (scroll.floatValue() / 200f * height); + setY(UncertainDisplayViewingScreen.this.height * 2 - 64 - (int) (scroll.floatValue() / 200f * height)); } }))); this._children().addAll(widgets); @@ -180,7 +180,7 @@ public class UncertainDisplayViewingScreen extends Screen { } private Widget transformScroll(Widget widget) { - return Widgets.withTranslate(widget, () -> Matrix4f.createTranslateMatrix(0, -(scroll.floatValue() / 200f * height), 0)); + return Widgets.withTranslate(widget, () -> new Matrix4f().translate(0, -(scroll.floatValue() / 200f * height), 0)); } @Override 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 56a7ae15e..8e1ed9666 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 @@ -49,6 +49,7 @@ import java.net.URISyntaxException; import java.util.Collections; import java.util.List; import java.util.function.Consumer; +import java.util.function.Supplier; @ApiStatus.Internal public class WarningAndErrorScreen extends Screen { @@ -123,7 +124,7 @@ public class WarningAndErrorScreen extends Screen { } addRenderableWidget(buttonExit = new Button(width / 2 - 100, height - 26, 200, 20, Component.literal(errors.isEmpty() ? "Continue" : "Exit"), - button -> onContinue.accept(parent))); + button -> onContinue.accept(parent), Button.NO_TOOLTIP, Supplier::get) {}); } @Override diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CachedEntryListRender.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CachedEntryListRender.java index 60c7b98ce..79bb56df8 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CachedEntryListRender.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/CachedEntryListRender.java @@ -30,7 +30,6 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexFormat; -import com.mojang.math.Matrix4f; import dev.architectury.registry.ReloadListenerRegistry; import it.unimi.dsi.fastutil.longs.Long2LongMap; import it.unimi.dsi.fastutil.longs.Long2LongOpenHashMap; @@ -52,6 +51,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.PackType; import net.minecraft.util.Unit; import org.jetbrains.annotations.Nullable; +import org.joml.Matrix4f; import java.util.List; @@ -145,7 +145,7 @@ public class CachedEntryListRender { Minecraft minecraft = Minecraft.getInstance(); TextureTarget target = new TextureTarget(width, height, true, false); target.bindWrite(true); - Matrix4f projectionMatrix = Matrix4f.orthographic(0.0F, width, 0.0F, height, 1000.0F, 3000.0F); + Matrix4f projectionMatrix = new Matrix4f().setOrtho(0.0F, width, 0.0F, height, 1000.0F, 3000.0F); RenderSystem.setProjectionMatrix(projectionMatrix); PoseStack modelViewStack = RenderSystem.getModelViewStack(); modelViewStack.pushPose(); 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 bef9eaa02..285f54b7e 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 @@ -23,7 +23,6 @@ package me.shedaniel.rei.impl.client.gui.widget; -import com.mojang.math.Vector4f; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.config.ConfigManager; import me.shedaniel.rei.api.client.gui.config.SearchFieldLocation; @@ -51,6 +50,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; 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; @@ -80,7 +80,7 @@ public class CraftableFilterButtonWidget { .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); - vector.transform(matrices.last().pose()); + matrices.last().pose().transform(vector); itemRenderer.blitOffset = vector.z(); itemRenderer.renderGuiItem(icon, (int) vector.x(), (int) vector.y()); itemRenderer.blitOffset = 0.0F; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DelegateWidgetWithTranslate.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DelegateWidgetWithTranslate.java index e90c1cb19..b3201b356 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DelegateWidgetWithTranslate.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/DelegateWidgetWithTranslate.java @@ -24,13 +24,13 @@ package me.shedaniel.rei.impl.client.gui.widget; import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Matrix4f; import com.mojang.math.Transformation; -import com.mojang.math.Vector4f; import me.shedaniel.rei.api.client.gui.widgets.DelegateWidget; import me.shedaniel.rei.api.client.gui.widgets.Widget; import me.shedaniel.rei.api.client.gui.widgets.WidgetWithBounds; import me.shedaniel.rei.api.client.util.MatrixUtils; +import org.joml.Matrix4f; +import org.joml.Vector4f; import java.util.function.Supplier; @@ -53,7 +53,7 @@ public class DelegateWidgetWithTranslate extends DelegateWidget { @Override public void render(PoseStack poseStack, int mouseX, int mouseY, float delta) { poseStack.pushPose(); - poseStack.last().pose().multiply(translate()); + poseStack.last().pose().mul(translate()); Vector4f mouse = transformMouse(mouseX, mouseY); super.render(poseStack, (int) mouse.x(), (int) mouse.y(), delta); poseStack.popPose(); @@ -61,7 +61,7 @@ public class DelegateWidgetWithTranslate extends DelegateWidget { private Vector4f transformMouse(double mouseX, double mouseY) { Vector4f mouse = new Vector4f((float) mouseX, (float) mouseY, 0, 1); - mouse.transform(inverseTranslate()); + inverseTranslate().transform(mouse); return mouse; } 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 0096a6b6a..8213d386a 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 @@ -26,13 +26,12 @@ package me.shedaniel.rei.impl.client.gui.widget; import com.google.common.collect.Lists; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; -import com.mojang.math.Matrix4f; import me.shedaniel.rei.api.client.gui.AbstractContainerEventHandler; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiComponent; -import net.minecraft.client.gui.components.Widget; +import net.minecraft.client.gui.components.Renderable; import net.minecraft.client.gui.components.events.GuiEventListener; import net.minecraft.client.gui.narration.NarratableEntry; import net.minecraft.client.gui.narration.NarratedElementType; @@ -43,6 +42,7 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import org.jetbrains.annotations.Nullable; +import org.joml.Matrix4f; import java.util.AbstractList; import java.util.ArrayList; @@ -50,7 +50,7 @@ import java.util.List; import java.util.Objects; @Environment(EnvType.CLIENT) -public abstract class DynamicErrorFreeEntryListWidget