Skip to content

Commit 46d08c7

Browse files
committed
fix: 🐛 Fixed void upgrade block-list defaults in limited barrels
1 parent 8b105a5 commit 46d08c7

3 files changed

Lines changed: 33 additions & 2 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ loader_version_range=[4,)
1313
mod_id=sophisticatedcore
1414
mod_name=Sophisticated Core
1515
mod_license=All Rights Reserved
16-
mod_version=1.4.98
16+
mod_version=1.4.99
1717
mod_group_id=net.p3pp3rf1y
1818
mod_authors=P3pp3rF1y
1919
mod_description=A library / shared functionality mod for Sophisticated Storage and Backpacks

src/main/java/net/p3pp3rf1y/sophisticatedcore/upgrades/FilterLogic.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,9 @@ protected void setAttributes(Function<FilterAttributes, FilterAttributes> setter
147147

148148
public void setAllowByDefault(boolean allowListDefault) {
149149
this.allowListDefault = allowListDefault;
150+
if (!upgrade.has(filterAttributesComponent)) {
151+
emptyAttributes = null;
152+
}
150153
}
151154

152155
protected void save() {

src/test/java/net/p3pp3rf1y/sophisticatedcore/upgrades/voiding/VoidUpgradeWrapperTest.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,25 @@ void shouldVoidFluidSkipsEmptyContainedFilters() {
129129
assertTrue(getVoidUpgradeWrapper().shouldVoidFluid(FluidResource.of(Fluids.WATER), VoidType.ALWAYS));
130130
}
131131

132+
@Test
133+
void setAllowByDefaultUpdatesEmptyFilterAttributes() {
134+
VoidUpgradeWrapper wrapper = getVoidUpgradeWrapperWithEmptyFilterAttributes();
135+
136+
wrapper.getFilterLogic().setAllowByDefault(false);
137+
138+
assertTrue(wrapper.getFilterLogic().matchesFilter(ItemResource.of(Items.DIAMOND)));
139+
}
140+
141+
@Test
142+
void setAllowByDefaultDoesNotOverridePersistedFilterAttributes() {
143+
VoidUpgradeWrapper wrapper = getVoidUpgradeWrapperWithEmptyFilterAttributes();
144+
wrapper.getFilterLogic().setAllowList(true);
145+
146+
wrapper.getFilterLogic().setAllowByDefault(false);
147+
148+
assertFalse(wrapper.getFilterLogic().matchesFilter(ItemResource.of(Items.DIAMOND)));
149+
}
150+
132151
private static VoidUpgradeWrapper getVoidUpgradeWrapper(InventoryHandler inventoryHandler) {
133152
IStorageWrapper storageWrapper = mock(IStorageWrapper.class);
134153
when(storageWrapper.getInventoryHandler()).thenReturn(inventoryHandler);
@@ -144,7 +163,15 @@ private static VoidUpgradeWrapper getVoidUpgradeWrapper() {
144163
return getVoidUpgradeWrapper(mock(IStorageWrapper.class), 1);
145164
}
146165

166+
private static VoidUpgradeWrapper getVoidUpgradeWrapperWithEmptyFilterAttributes() {
167+
return getVoidUpgradeWrapper(mock(IStorageWrapper.class), 1, false);
168+
}
169+
147170
private static VoidUpgradeWrapper getVoidUpgradeWrapper(IStorageWrapper storageWrapper, int filterSlotCount) {
171+
return getVoidUpgradeWrapper(storageWrapper, filterSlotCount, true);
172+
}
173+
174+
private static VoidUpgradeWrapper getVoidUpgradeWrapper(IStorageWrapper storageWrapper, int filterSlotCount, boolean useBlockListFilterAttributesDefault) {
148175
VoidUpgradeItem upgradeItem = mock(VoidUpgradeItem.class);
149176
when(upgradeItem.getFilterSlotCount()).thenReturn(filterSlotCount);
150177
when(upgradeItem.isVoidAlwaysEnabled()).thenReturn(true);
@@ -157,10 +184,11 @@ private static VoidUpgradeWrapper getVoidUpgradeWrapper(IStorageWrapper storageW
157184
return true;
158185
}
159186
if (component == ModCoreDataComponents.FILTER_ATTRIBUTES) {
160-
return components.getOrDefault(component, BLOCK_LIST_FILTER_ATTRIBUTES);
187+
return components.getOrDefault(component, useBlockListFilterAttributesDefault ? BLOCK_LIST_FILTER_ATTRIBUTES : invocation.getArgument(1));
161188
}
162189
return components.getOrDefault(component, invocation.getArgument(1));
163190
});
191+
when(upgrade.has(anyDataComponentSupplier())).thenAnswer(invocation -> components.containsKey(invocation.getArgument(0)));
164192
doAnswer(invocation -> components.put(invocation.getArgument(0), invocation.getArgument(1))).when(upgrade).set(anySetDataComponentSupplier(), any());
165193

166194
return new VoidUpgradeWrapper(storageWrapper, upgrade, stack -> {

0 commit comments

Comments
 (0)