diff options
Diffstat (limited to 'runtime/src/main')
10 files changed, 60 insertions, 21 deletions
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 7a6e9f32d..9717f1cf1 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 @@ -46,7 +46,7 @@ import me.shedaniel.rei.api.client.search.SearchFilter; import me.shedaniel.rei.api.client.search.SearchProvider; import me.shedaniel.rei.api.common.entry.EntryStack; import me.shedaniel.rei.impl.client.gui.ContainerScreenOverlay; -import me.shedaniel.rei.impl.client.gui.widget.BatchEntryRendererManager; +import me.shedaniel.rei.impl.client.gui.widget.BatchedEntryRendererManager; import me.shedaniel.rei.impl.client.gui.widget.EntryWidget; import me.shedaniel.rei.impl.client.gui.widget.search.OverlaySearchField; import net.minecraft.client.Minecraft; @@ -222,7 +222,7 @@ public class FilteringScreen extends Screen { int skip = Math.max(0, Mth.floor(scrolling.scrollAmount / (float) entrySize())); int nextIndex = skip * innerBounds.width / entrySize(); int i = nextIndex; - BatchEntryRendererManager manager = new BatchEntryRendererManager(); + BatchedEntryRendererManager manager = new BatchedEntryRendererManager(); for (; i < entryStacks.size(); i++) { EntryStack<?> stack = entryStacks.get(i); EntryListEntry entry = entries.get(nextIndex); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/BatchEntryRendererManager.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/BatchedEntryRendererManager.java index 6cafecb90..a410a24a3 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/BatchEntryRendererManager.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/BatchedEntryRendererManager.java @@ -28,7 +28,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import me.shedaniel.rei.api.client.config.ConfigObject; -import me.shedaniel.rei.api.client.entry.renderer.BatchEntryRenderer; +import me.shedaniel.rei.api.client.entry.renderer.BatchedEntryRenderer; import me.shedaniel.rei.api.client.entry.renderer.EntryRenderer; import me.shedaniel.rei.api.common.entry.EntryStack; import net.minecraft.client.Minecraft; @@ -40,15 +40,15 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -public class BatchEntryRendererManager { +public class BatchedEntryRendererManager { private boolean fastEntryRendering = ConfigObject.getInstance().doesFastEntryRendering(); private Int2ObjectMap<List<EntryWidget>> grouping = new Int2ObjectOpenHashMap<>(); private List<EntryWidget> toRender = new ArrayList<>(); - public BatchEntryRendererManager() { + public BatchedEntryRendererManager() { } - public BatchEntryRendererManager(Collection<? extends EntryWidget> widgets) { + public BatchedEntryRendererManager(Collection<? extends EntryWidget> widgets) { addAll(widgets); } @@ -66,8 +66,8 @@ public class BatchEntryRendererManager { if (fastEntryRendering) { EntryStack<?> currentEntry = widget.getCurrentEntry(); EntryRenderer<?> renderer = currentEntry.getRenderer(); - if (renderer instanceof BatchEntryRenderer) { - int hash = ((BatchEntryRenderer<Object>) renderer).getBatchId(currentEntry.cast()); + if (renderer instanceof BatchedEntryRenderer) { + int hash = ((BatchedEntryRenderer<Object>) renderer).getBatchIdentifier(currentEntry.cast(), widget.getBounds()); List<EntryWidget> entries = grouping.get(hash); if (entries == null) { grouping.put(hash, entries = new ArrayList<>()); @@ -101,8 +101,9 @@ public class BatchEntryRendererManager { @SuppressWarnings("rawtypes") EntryStack first = firstWidget.getCurrentEntry(); EntryRenderer<?> renderer = first.getRenderer(); - if (fastEntryRendering && renderer instanceof BatchEntryRenderer) { - BatchEntryRenderer<?> firstRenderer = (BatchEntryRenderer<?>) renderer; + if (fastEntryRendering && renderer instanceof BatchedEntryRenderer) { + BatchedEntryRenderer<?> firstRenderer = (BatchedEntryRenderer<?>) renderer; + matrices = firstRenderer.batchModifyMatrices(matrices); firstRenderer.startBatch(first, matrices, delta); long l = debugTime ? System.nanoTime() : 0; MultiBufferSource.BufferSource immediate = Minecraft.getInstance().renderBuffers().bufferSource(); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryListWidget.java index ec57bf1d1..44e0589d9 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryListWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/EntryListWidget.java @@ -220,7 +220,7 @@ public class EntryListWidget extends WidgetWithBounds { int skip = Math.max(0, Mth.floor(scrolling.scrollAmount / (float) entrySize())); int nextIndex = skip * innerBounds.width / entrySize(); this.blockedCount = 0; - BatchEntryRendererManager helper = new BatchEntryRendererManager(); + BatchedEntryRendererManager helper = new BatchedEntryRendererManager(); int i = nextIndex; for (int cont = nextIndex; cont < entries.size(); cont++) { @@ -253,7 +253,7 @@ public class EntryListWidget extends WidgetWithBounds { for (Widget widget : renders) { widget.render(matrices, mouseX, mouseY, delta); } - new BatchEntryRendererManager(entries).render(debugTime, size, time, matrices, mouseX, mouseY, delta); + new BatchedEntryRendererManager(entries).render(debugTime, size, time, matrices, mouseX, mouseY, delta); } if (debugTime) { diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java index 57ccd0b6a..1433c65de 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/FavoritesListWidget.java @@ -251,7 +251,7 @@ public class FavoritesListWidget extends WidgetWithBounds implements DraggableSt Stream<EntryListEntry> entryStream = this.entriesList.stream() .filter(entry -> entry.getBounds().getMaxY() >= this.currentBounds.getY() && entry.getBounds().y <= this.currentBounds.getMaxY()); - new BatchEntryRendererManager(entryStream.collect(Collectors.toList())) + new BatchedEntryRendererManager(entryStream.collect(Collectors.toList())) .render(matrices, mouseX, mouseY, delta); updatePosition(delta); diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchFieldSyntaxHighlighter.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchFieldSyntaxHighlighter.java index 42308f678..0af21de72 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchFieldSyntaxHighlighter.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchFieldSyntaxHighlighter.java @@ -23,9 +23,9 @@ package me.shedaniel.rei.impl.client.gui.widget.search; +import me.shedaniel.rei.impl.client.search.IntRange; import me.shedaniel.rei.impl.client.search.argument.Argument; import me.shedaniel.rei.impl.client.search.argument.type.ArgumentTypesRegistry; -import net.minecraft.util.IntRange; import org.jetbrains.annotations.ApiStatus; import java.util.Collection; @@ -63,7 +63,7 @@ public class OverlaySearchFieldSyntaxHighlighter implements Consumer<String> { highlighted[i] = (byte) argIndex; } for (IntRange grammarRange : grammarRanges) { - for (int i = grammarRange.getMinInclusive(); i <= grammarRange.getMaxInclusive(); i++) { + for (int i = grammarRange.min(); i <= grammarRange.max(); i++) { highlighted[i + index] = (byte) (argIndex + 1); } } diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/IntRange.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/IntRange.java new file mode 100644 index 000000000..05c5e1ca4 --- /dev/null +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/IntRange.java @@ -0,0 +1,38 @@ +package me.shedaniel.rei.impl.client.search; + +import java.util.Objects; + +public class IntRange { + private final int min; + private final int max; + + private IntRange(int min, int max) { + this.min = min; + this.max = max; + } + + public static IntRange of(int min, int max) { + return new IntRange(min, max); + } + + public int min() { + return min; + } + + public int max() { + return max; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + IntRange intRange = (IntRange) o; + return min == intRange.min && max == intRange.max; + } + + @Override + public int hashCode() { + return Objects.hash(min, max); + } +} diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/Argument.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/Argument.java index 67520b666..dcabfbdf2 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/Argument.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/argument/Argument.java @@ -27,13 +27,13 @@ import com.google.common.base.MoreObjects; import com.google.common.collect.Lists; import me.shedaniel.rei.api.client.gui.config.SearchMode; import me.shedaniel.rei.api.common.entry.EntryStack; +import me.shedaniel.rei.impl.client.search.IntRange; import me.shedaniel.rei.impl.client.search.argument.type.AlwaysMatchingArgumentType; import me.shedaniel.rei.impl.client.search.argument.type.ArgumentType; import me.shedaniel.rei.impl.client.search.argument.type.ArgumentTypesRegistry; import me.shedaniel.rei.impl.client.search.result.ArgumentApplicableResult; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.util.IntRange; import net.minecraft.util.Unit; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.mutable.Mutable; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/result/ArgumentApplicableResult.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/result/ArgumentApplicableResult.java index e25b89326..3014c9771 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/client/search/result/ArgumentApplicableResult.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/search/result/ArgumentApplicableResult.java @@ -23,8 +23,8 @@ package me.shedaniel.rei.impl.client.search.result; +import me.shedaniel.rei.impl.client.search.IntRange; import me.shedaniel.rei.impl.client.search.argument.type.MatchType; -import net.minecraft.util.IntRange; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java index 618674152..3cbf8d511 100644 --- a/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java +++ b/runtime/src/main/java/me/shedaniel/rei/impl/common/entry/AbstractEntryStack.java @@ -154,7 +154,7 @@ public abstract class AbstractEntryStack<A> extends AbstractRenderer implements @Override @Nullable public Tooltip getTooltip(Point mouse, boolean appendModName) { - Mutable<Tooltip> tooltip = new MutableObject<>(this.get(Settings.RENDER).apply(this).<A>cast().getTooltip(this, mouse)); + Mutable<Tooltip> tooltip = new MutableObject<>(this.get(Settings.RENDERER).apply(this).<A>cast().getTooltip(this, mouse)); if (tooltip.getValue() == null) return null; tooltip.getValue().getText().addAll(get(EntryStack.Settings.TOOLTIP_APPEND_EXTRA).apply(this)); tooltip.setValue(get(Settings.TOOLTIP_PROCESSOR).apply(this, tooltip.getValue())); diff --git a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java index 453df00c3..a6a102ea8 100644 --- a/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java +++ b/runtime/src/main/java/me/shedaniel/rei/plugin/client/entry/ItemEntryDefinition.java @@ -33,7 +33,7 @@ import it.unimi.dsi.fastutil.objects.ReferenceSet; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.entry.renderer.AbstractEntryRenderer; -import me.shedaniel.rei.api.client.entry.renderer.BatchEntryRenderer; +import me.shedaniel.rei.api.client.entry.renderer.BatchedEntryRenderer; import me.shedaniel.rei.api.client.entry.renderer.EntryRenderer; import me.shedaniel.rei.api.client.gui.widgets.Tooltip; import me.shedaniel.rei.api.common.entry.EntrySerializer; @@ -185,9 +185,9 @@ public class ItemEntryDefinition implements EntryDefinition<ItemStack>, EntrySer } @SuppressWarnings("deprecation") - public class ItemEntryRenderer extends AbstractEntryRenderer<ItemStack> implements BatchEntryRenderer<ItemStack> { + public class ItemEntryRenderer extends AbstractEntryRenderer<ItemStack> implements BatchedEntryRenderer<ItemStack> { @Override - public int getBatchId(EntryStack<ItemStack> entry) { + public int getBatchIdentifier(EntryStack<ItemStack> entry, Rectangle bounds) { return 1738923 + (getModelFromStack(entry.getValue()).usesBlockLight() ? 1 : 0); } |
