aboutsummaryrefslogtreecommitdiff
path: root/runtime/src/main/java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2022-06-20 20:42:33 +0800
committershedaniel <daniel@shedaniel.me>2023-05-29 21:02:40 +0800
commit35841904482b47e315643ca59c3ca42a5187172e (patch)
tree860565de839f698b16affa505783e4f24d6d92b4 /runtime/src/main/java
parent74893ae97ff5406745bb6d388f09f0060488893f (diff)
downloadRoughlyEnoughItems-35841904482b47e315643ca59c3ca42a5187172e.tar.gz
RoughlyEnoughItems-35841904482b47e315643ca59c3ca42a5187172e.tar.bz2
RoughlyEnoughItems-35841904482b47e315643ca59c3ca42a5187172e.zip
Separate stacks in the EntryListWidget
Diffstat (limited to 'runtime/src/main/java')
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListWidget.java13
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/PaginatedEntryListWidget.java16
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/ScrolledEntryListWidget.java20
-rw-r--r--runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java4
4 files changed, 37 insertions, 16 deletions
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListWidget.java
index b0cef4aef..e28d1c552 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/EntryListWidget.java
@@ -66,7 +66,6 @@ import net.minecraft.world.InteractionResult;
import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.ApiStatus;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -76,7 +75,6 @@ public abstract class EntryListWidget extends WidgetWithBounds implements Overla
private static final int SIZE = 18;
protected final RegionRenderingDebugger debugger = new RegionRenderingDebugger();
protected Rectangle bounds, innerBounds;
- protected List<EntryStack<?>> allStacks = Collections.emptyList();
protected List<EntryListStackEntry> entries = Collections.emptyList();
public final NumberAnimator<Double> scaleIndicator = ValueAnimator.ofDouble(0.0D)
.withConvention(() -> 0.0D, 8000);
@@ -264,7 +262,7 @@ public abstract class EntryListWidget extends WidgetWithBounds implements Overla
if (favoritesListWidget != null) {
favoritesListWidget.updateFavoritesBounds(searchTerm);
}
- if (allStacks == null || (ConfigObject.getInstance().isFavoritesEnabled() && favoritesListWidget == null)) {
+ if (ConfigObject.getInstance().isFavoritesEnabled() && favoritesListWidget == null) {
updateSearch(searchTerm, true);
} else {
updateEntriesPosition();
@@ -292,14 +290,13 @@ public abstract class EntryListWidget extends WidgetWithBounds implements Overla
protected abstract void updateEntries(int entrySize, boolean zoomed);
- @ApiStatus.Internal
- public List<EntryStack<?>> getAllStacks() {
- return allStacks;
- }
+ public abstract List<EntryStack<?>> getStacks();
+
+ protected abstract void setStacks(List<EntryStack<?>> stacks);
public void updateSearch(String searchTerm, boolean ignoreLastSearch) {
EntryListSearchManager.INSTANCE.update(searchTerm, ignoreLastSearch, stacks -> {
- allStacks = stacks;
+ setStacks(stacks);
updateEntriesPosition();
});
debugger.debugTime = ConfigObject.getInstance().doDebugRenderTimeRequired();
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 2f0329149..926c8726f 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
@@ -40,11 +40,13 @@ import me.shedaniel.rei.impl.client.gui.widget.EntryWidget;
import net.minecraft.util.Mth;
import org.jetbrains.annotations.Nullable;
+import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class PaginatedEntryListWidget extends EntryListWidget {
+ private List<EntryStack<?>> stacks = new ArrayList<>();
private int page;
@Override
@@ -89,7 +91,7 @@ public class PaginatedEntryListWidget extends EntryListWidget {
@Override
public int getTotalPages() {
- return Mth.ceil(allStacks.size() / (float) entries.size());
+ return Mth.ceil(stacks.size() / (float) entries.size());
}
@Override
@@ -108,7 +110,7 @@ public class PaginatedEntryListWidget extends EntryListWidget {
}
}
page = Math.max(Math.min(page, getTotalPages() - 1), 0);
- List<EntryStack<?>> subList = allStacks.stream().skip(Math.max(0, page * entries.size())).limit(Math.max(0, entries.size() - Math.max(0, -page * entries.size()))).collect(Collectors.toList());
+ List<EntryStack<?>> subList = stacks.stream().skip(Math.max(0, page * entries.size())).limit(Math.max(0, entries.size() - Math.max(0, -page * entries.size()))).collect(Collectors.toList());
for (int i = 0; i < subList.size(); i++) {
EntryStack<?> stack = subList.get(i);
entries.get(i + Math.max(0, -page * entries.size())).clearStacks().entry(stack);
@@ -117,6 +119,16 @@ public class PaginatedEntryListWidget extends EntryListWidget {
}
@Override
+ public List<EntryStack<?>> getStacks() {
+ return stacks;
+ }
+
+ @Override
+ public void setStacks(List<EntryStack<?>> stacks) {
+ this.stacks = stacks;
+ }
+
+ @Override
public Stream<EntryStack<?>> getEntries() {
return entries.stream().map(EntryWidget::getCurrentEntry);
}
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/ScrolledEntryListWidget.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/ScrolledEntryListWidget.java
index 2e4cd8b20..2edde5a34 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/ScrolledEntryListWidget.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/entrylist/ScrolledEntryListWidget.java
@@ -37,10 +37,12 @@ import me.shedaniel.rei.impl.client.gui.widget.EntryWidget;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.util.Mth;
+import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class ScrolledEntryListWidget extends EntryListWidget {
+ private List<EntryStack<?>> stacks = new ArrayList<>();
protected int blockedCount;
protected final ScrollingContainer scrolling = new ScrollingContainer() {
@Override
@@ -50,7 +52,7 @@ public class ScrolledEntryListWidget extends EntryListWidget {
@Override
public int getMaxScrollHeight() {
- return Mth.ceil((allStacks.size() + blockedCount) / (innerBounds.width / (float) entrySize())) * entrySize();
+ return Mth.ceil((stacks.size() + blockedCount) / (innerBounds.width / (float) entrySize())) * entrySize();
}
};
@@ -70,9 +72,9 @@ public class ScrolledEntryListWidget extends EntryListWidget {
entryBounds.y = entry.backupY - scrolling.scrollAmountInt();
if (entryBounds.y > this.bounds.getMaxY()) break;
- if (allStacks.size() <= i) break;
+ if (stacks.size() <= i) break;
if (notSteppingOnExclusionZones(entryBounds.x, entryBounds.y, entryBounds.width, entryBounds.height)) {
- EntryStack<?> stack = allStacks.get(i++);
+ EntryStack<?> stack = stacks.get(i++);
entry.clearStacks();
if (!stack.isEmpty()) {
entry.entry(stack);
@@ -109,7 +111,7 @@ public class ScrolledEntryListWidget extends EntryListWidget {
protected void updateEntries(int entrySize, boolean zoomed) {
int width = innerBounds.width / entrySize;
int pageHeight = innerBounds.height / entrySize;
- int slotsToPrepare = Math.max(allStacks.size() * 3, width * pageHeight * 3);
+ int slotsToPrepare = Math.max(stacks.size() * 3, width * pageHeight * 3);
int currentX = 0;
int currentY = 0;
List<EntryListStackEntry> entries = Lists.newArrayList();
@@ -152,6 +154,16 @@ public class ScrolledEntryListWidget extends EntryListWidget {
}
@Override
+ public List<EntryStack<?>> getStacks() {
+ return stacks;
+ }
+
+ @Override
+ public void setStacks(List<EntryStack<?>> stacks) {
+ this.stacks = stacks;
+ }
+
+ @Override
public Stream<EntryStack<?>> getEntries() {
int skip = Math.max(0, Mth.floor(scrolling.scrollAmount() / (float) entrySize()));
int nextIndex = skip * innerBounds.width / entrySize();
diff --git a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java
index 88dc31964..bb4d236fa 100644
--- a/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java
+++ b/runtime/src/main/java/me/shedaniel/rei/impl/client/gui/widget/search/OverlaySearchField.java
@@ -95,7 +95,7 @@ public class OverlaySearchField extends TextFieldWidget implements TextFieldWidg
return TextTransformations.forwardWithTransformation(text, (s, charIndex, c) -> {
byte arg = highlighter.highlighted[charIndex + index];
Style style = Style.EMPTY;
- if (isMain && ScreenOverlayImpl.getEntryListWidget().getAllStacks().isEmpty() && !getText().isEmpty()) {
+ if (isMain && ScreenOverlayImpl.getEntryListWidget().getStacks().isEmpty() && !getText().isEmpty()) {
style = ERROR_STYLE;
}
if (arg > 0) {
@@ -239,7 +239,7 @@ public class OverlaySearchField extends TextFieldWidget implements TextFieldWidg
isHighlighting = isHighlighting && ConfigObject.getInstance().isInventoryHighlightingAllowed();
if (isMain && isHighlighting) {
fill(matrices, this.getBounds().x - 1, this.getBounds().y - 1, this.getBounds().x + this.getBounds().width + 1, this.getBounds().y + this.getBounds().height + 1, -852212);
- } else if (isMain && ScreenOverlayImpl.getEntryListWidget().getAllStacks().isEmpty() && !getText().isEmpty()) {
+ } else if (isMain && ScreenOverlayImpl.getEntryListWidget().getStacks().isEmpty() && !getText().isEmpty()) {
fill(matrices, this.getBounds().x - 1, this.getBounds().y - 1, this.getBounds().x + this.getBounds().width + 1, this.getBounds().y + this.getBounds().height + 1, -43691);
} else {
super.renderBorder(matrices);