Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
gateguardian523 committed Jun 15, 2024
1 parent 6906174 commit 0845a58
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 18 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package com.epimorphismmc.gregiceng.api.misc;

import com.lowdragmc.lowdraglib.misc.ItemStackTransfer;
import com.lowdragmc.lowdraglib.side.item.ItemTransferHelper;
import net.minecraft.core.NonNullList;
import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.NotNull;

public class UnlimitedItemStackTransfer extends ItemStackTransfer {

public UnlimitedItemStackTransfer() {
}

public UnlimitedItemStackTransfer(int size) {
super(size);
}

public UnlimitedItemStackTransfer(NonNullList<ItemStack> stacks) {
super(stacks);
}

public UnlimitedItemStackTransfer(ItemStack stack) {
super(stack);
}

@Override
@NotNull
public ItemStack extractItem(int slot, int amount, boolean simulate, boolean notifyChanges) {
if (amount == 0)
return ItemStack.EMPTY;

validateSlotIndex(slot);

ItemStack existing = this.stacks.get(slot);

if (existing.isEmpty())
return ItemStack.EMPTY;

if (existing.getCount() <= amount) {
if (!simulate) {
this.stacks.set(slot, ItemStack.EMPTY);
if (notifyChanges) {
onContentsChanged(slot);
}
return existing;
} else {
return existing.copy();
}
} else {
if (!simulate) {
this.stacks.set(slot, ItemTransferHelper.copyStackWithSize(existing, existing.getCount() - amount));
if (notifyChanges) {
onContentsChanged(slot);
}
}

return ItemTransferHelper.copyStackWithSize(existing, amount);
}
}

@Override
public int getSlotLimit(int slot) {
return Integer.MAX_VALUE;
}

@Override
protected int getStackLimit(int slot, @NotNull ItemStack stack) {
return Integer.MAX_VALUE;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.epimorphismmc.gregiceng.api.misc.ConfigurableAESlot;
import com.epimorphismmc.gregiceng.api.misc.IConfigurableAESlotList;

import com.epimorphismmc.gregiceng.api.misc.UnlimitedItemStackTransfer;
import com.epimorphismmc.monomorphism.ae2.MEPartMachine;
import com.epimorphismmc.monomorphism.machine.fancyconfigurator.InventoryFancyConfigurator;

Expand Down Expand Up @@ -300,18 +301,11 @@ public ManagedFieldHolder getFieldHolder() {

private static class WrappedItemStackTransfer extends ItemStackTransfer {

private final boolean isCopy;

private final ExportOnlyAEItem[] inventory;

public WrappedItemStackTransfer(ExportOnlyAEItem[] inventory) {
this(inventory, false);
}

public WrappedItemStackTransfer(ExportOnlyAEItem[] inventory, boolean isCopy) {
super();
this.inventory = inventory;
this.isCopy = isCopy;
}

@Override
Expand Down Expand Up @@ -339,7 +333,7 @@ public ItemStack insertItem(
public ItemStack extractItem(int slot, int amount, boolean simulate, boolean notifyChanges) {
if (amount == 0) return ItemStack.EMPTY;
validateSlotIndex(slot);
return inventory[slot].extract(amount, isCopy || simulate);
return inventory[slot].extract(amount, simulate);
}

@Override
Expand All @@ -354,7 +348,11 @@ public boolean isItemValid(int slot, ItemStack stack) {

@Override
public ItemStackTransfer copy() {
return new WrappedItemStackTransfer(inventory, true);
var copy = new UnlimitedItemStackTransfer(getSlots());
for (int i = 0; i < inventory.length; i++) {
copy.setStackInSlot(i, getStackInSlot(i));
}
return copy;
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -235,18 +235,11 @@ public ManagedFieldHolder getFieldHolder() {

private static class WrappedFluidStorage extends FluidStorage {

private final boolean isCopy;

private final ExportOnlyAEFluid fluid;

public WrappedFluidStorage(ExportOnlyAEFluid fluid) {
this(fluid, false);
}

public WrappedFluidStorage(ExportOnlyAEFluid fluid, boolean isCopy) {
super(0L);
this.fluid = fluid;
this.isCopy = isCopy;
}

@Override
Expand Down Expand Up @@ -303,7 +296,7 @@ public FluidStack drain(FluidStack resource, boolean doDrain, boolean notifyChan

@Override
public FluidStack drain(long maxDrain, boolean simulate, boolean notifyChanges) {
return fluid.drain(maxDrain, isCopy || simulate);
return fluid.drain(maxDrain, simulate);
}

@Override
Expand All @@ -318,7 +311,7 @@ public boolean isFluidValid(FluidStack stack) {

@Override
public FluidStorage copy() {
return new WrappedFluidStorage(fluid, true);
return new FluidStorage(getFluid());
}
}
}
Expand Down

0 comments on commit 0845a58

Please sign in to comment.