@@ -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