Skip to content

Commit 8d417d0

Browse files
committed
Fix Vault Comparator Output gametest failing and also Fix #1625
1 parent e017c86 commit 8d417d0

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultBlock.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,19 @@ public boolean hasAnalogOutputSignal(BlockState p_149740_1_) {
167167
public int getAnalogOutputSignal(BlockState pState, Level pLevel, BlockPos pPos) {
168168
return getBlockEntityOptional(pLevel, pPos)
169169
.filter(vte -> !Transaction.isOpen()) // fabric: hack fix for comparators updating when they shouldn't
170-
.map(vte -> vte.getItemStorage(null))
170+
.map(vte -> {
171+
// fabric: fix for comparators grabbing the capability too quickly, relying on grabbing it through
172+
// the non-controller's initCapability method isn't reliable and doesn't work properly.
173+
// so what we end up doing is just returning the capability for the controller, and if it's
174+
// not the controller it's own capability is returned
175+
if (!vte.isController()) {
176+
ItemVaultBlockEntity controllerBE = vte.getControllerBE();
177+
if (controllerBE != null)
178+
return controllerBE.getItemStorage(null);
179+
}
180+
181+
return vte.getItemStorage(null);
182+
})
171183
.map(ItemHelper::calcRedstoneFromInventory)
172184
.orElse(0);
173185
}

src/main/java/com/simibubi/create/content/logistics/vault/ItemVaultBlockEntity.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,16 @@
55
import javax.annotation.Nullable;
66

77
import com.simibubi.create.AllBlockEntityTypes;
8-
import com.simibubi.create.Create;
98
import com.simibubi.create.api.connectivity.ConnectivityHandler;
109
import com.simibubi.create.foundation.blockEntity.IMultiBlockEntityContainer;
1110
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
1211
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
1312
import com.simibubi.create.foundation.blockEntity.behaviour.inventory.VersionedInventoryWrapper;
1413
import com.simibubi.create.infrastructure.config.AllConfigs;
14+
1515
import io.github.fabricators_of_create.porting_lib.transfer.item.ItemStackHandler;
1616
import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant;
1717
import net.fabricmc.fabric.api.transfer.v1.storage.Storage;
18-
import net.fabricmc.fabric.api.transfer.v1.storage.base.CombinedSlottedStorage;
1918
import net.fabricmc.fabric.api.transfer.v1.storage.base.CombinedStorage;
2019
import net.fabricmc.fabric.api.transfer.v1.storage.base.SidedStorageBlockEntity;
2120
import net.minecraft.core.BlockPos;
@@ -240,7 +239,7 @@ public Storage<ItemVariant> getItemStorage(@Nullable Direction face) {
240239
return itemCapability;
241240
}
242241

243-
private void initCapability() {
242+
protected void initCapability() {
244243
if (itemCapability != null)
245244
return;
246245
if (!isController()) {

0 commit comments

Comments
 (0)