Skip to content

Commit

Permalink
don't use FAPI's versioning for VersionedInventoryWrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
TropheusJ committed Mar 24, 2024
1 parent c9155a7 commit 6189d5f
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import javax.annotation.Nullable;

import com.simibubi.create.AllBlockEntityTypes;
import com.simibubi.create.Create;
import com.simibubi.create.api.connectivity.ConnectivityHandler;
import com.simibubi.create.foundation.blockEntity.IMultiBlockEntityContainer;
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
Expand All @@ -29,7 +30,6 @@
import net.minecraft.world.level.block.state.BlockState;

public class ItemVaultBlockEntity extends SmartBlockEntity implements IMultiBlockEntityContainer.Inventory, ItemTransferable {

protected Storage<ItemVariant> itemCapability;

protected ItemStackHandler inventory;
Expand Down Expand Up @@ -267,7 +267,8 @@ private void initCapability() {
}
}

Storage<ItemVariant> combinedInvWrapper = new VersionedInventoryWrapper(new CombinedStorage<>(List.of(invs)));
Storage<ItemVariant> combinedInvWrapper = new CombinedStorage<>(List.of(invs));
combinedInvWrapper = new VersionedInventoryWrapper(combinedInvWrapper);
itemCapability = combinedInvWrapper;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,11 @@
import java.util.Iterator;
import java.util.concurrent.atomic.AtomicInteger;

import io.github.fabricators_of_create.porting_lib.transfer.item.ItemHandlerHelper;
import io.github.fabricators_of_create.porting_lib.transfer.callbacks.TransactionCallback;
import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant;
import net.fabricmc.fabric.api.transfer.v1.storage.Storage;
import net.fabricmc.fabric.api.transfer.v1.storage.StorageView;
import net.fabricmc.fabric.api.transfer.v1.transaction.TransactionContext;
import net.minecraft.world.item.ItemStack;

import org.jetbrains.annotations.Nullable;

Expand All @@ -17,12 +16,21 @@ public class VersionedInventoryWrapper implements Storage<ItemVariant> {
public static final AtomicInteger idGenerator = new AtomicInteger();

private Storage<ItemVariant> inventory;
//private int version;
private int version;
private int id;

public VersionedInventoryWrapper(Storage<ItemVariant> inventory) {
this.id = idGenerator.getAndIncrement();
this.inventory = inventory;
this.version = 0;
}

public void incrementVersion() {
version++;
}

private void listen(TransactionContext transaction) {
TransactionCallback.onSuccess(transaction, this::incrementVersion);
}

public int getId() {
Expand All @@ -31,53 +39,64 @@ public int getId() {

@Override
public long getVersion() {
return inventory.getVersion();
return this.version;
}


//

@Override
public long insert(ItemVariant resource, long maxAmount, TransactionContext transaction) {
return inventory.insert(resource, maxAmount, transaction);
public boolean supportsInsertion() {
return inventory.supportsInsertion();
}

@Override
public long extract(ItemVariant resource, long maxAmount, TransactionContext transaction) {
return inventory.extract(resource, maxAmount, transaction);
public boolean supportsExtraction() {
return inventory.supportsExtraction();
}

@Override
public Iterator<? extends StorageView<ItemVariant>> iterator(TransactionContext transaction) {
return inventory.iterator(transaction);
}
//

@Override
public boolean supportsInsertion() {
return inventory.supportsInsertion();
public long insert(ItemVariant resource, long maxAmount, TransactionContext transaction) {
this.listen(transaction);
return inventory.insert(resource, maxAmount, transaction);
}

@Override
public long simulateInsert(ItemVariant resource, long maxAmount, @Nullable TransactionContext transaction) {
this.listen(transaction);
return inventory.simulateInsert(resource, maxAmount, transaction);
}

@Override
public boolean supportsExtraction() {
return inventory.supportsExtraction();
public long extract(ItemVariant resource, long maxAmount, TransactionContext transaction) {
this.listen(transaction);
return inventory.extract(resource, maxAmount, transaction);
}

@Override
public long simulateExtract(ItemVariant resource, long maxAmount, @Nullable TransactionContext transaction) {
this.listen(transaction);
return inventory.simulateExtract(resource, maxAmount, transaction);
}

@Override
public Iterator<? extends StorageView<ItemVariant>> iterator(TransactionContext transaction) {
this.listen(transaction);
return inventory.iterator(transaction);
}

@Override
public Iterable<? extends StorageView<ItemVariant>> iterable(TransactionContext transaction) {
this.listen(transaction);
return inventory.iterable(transaction);
}

@Override
public @Nullable StorageView<ItemVariant> exactView(TransactionContext transaction, ItemVariant resource) {
@Nullable
public StorageView<ItemVariant> exactView(TransactionContext transaction, ItemVariant resource) {
this.listen(transaction);
return inventory.exactView(transaction, resource);
}
}

0 comments on commit 6189d5f

Please sign in to comment.