Fix craftable stack vanishing or duplicating when using craftable view (#2940)

When an associated non-craftable stack was:
- Fully removed, the craftable stack duplicated.
- Newly added, the craftable stack vanished.
This commit is contained in:
BlueAgent
2021-06-12 23:09:10 +08:00
committed by GitHub
parent 9c21cad9f6
commit e10f25938f

View File

@@ -144,6 +144,7 @@ public class GridViewImpl implements IGridView {
IGridStack existing = map.get(stack.getId()); IGridStack existing = map.get(stack.getId());
boolean stillExists = true; boolean stillExists = true;
boolean shouldSort = screen.canSort(); boolean shouldSort = screen.canSort();
boolean shouldDisplay = getActiveFilters().test(existing);
if (existing == null) { if (existing == null) {
stack.setQuantity(delta); stack.setQuantity(delta);
@@ -151,7 +152,7 @@ public class GridViewImpl implements IGridView {
map.put(stack.getId(), stack); map.put(stack.getId(), stack);
existing = stack; existing = stack;
if (craftingStack != null && shouldSort) { if (craftingStack != null && shouldSort && shouldDisplay) {
stacks.remove(craftingStack); stacks.remove(craftingStack);
} }
} else { } else {
@@ -163,7 +164,7 @@ public class GridViewImpl implements IGridView {
map.remove(existing.getId()); map.remove(existing.getId());
stillExists = false; stillExists = false;
if (craftingStack != null && shouldSort && getActiveFilters().test(craftingStack)) { if (craftingStack != null && shouldSort && shouldDisplay && getActiveFilters().test(craftingStack)) {
addStack(craftingStack); addStack(craftingStack);
} }
} }
@@ -172,7 +173,7 @@ public class GridViewImpl implements IGridView {
} }
if (shouldSort) { if (shouldSort) {
if (stillExists && getActiveFilters().test(existing)) { if (stillExists && shouldDisplay) {
addStack(existing); addStack(existing);
} }
this.screen.updateScrollbar(); this.screen.updateScrollbar();