Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
reobf committed Feb 19, 2025
1 parent ec54c20 commit 5b506d3
Show file tree
Hide file tree
Showing 7 changed files with 630 additions and 242 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map.Entry;
import java.util.Objects;
import java.util.Optional;
import java.util.Random;
import java.util.function.Consumer;
Expand Down Expand Up @@ -103,6 +104,7 @@
import mcp.mobius.waila.api.IWailaConfigHandler;
import mcp.mobius.waila.api.IWailaDataAccessor;
import reobf.proghatches.gt.metatileentity.BufferedDualInputHatch.Recipe;
import reobf.proghatches.gt.metatileentity.bufferutil.FluidTankG;
import reobf.proghatches.gt.metatileentity.bufferutil.ItemStackG;
import reobf.proghatches.gt.metatileentity.util.BaseSlotPatched;
import reobf.proghatches.gt.metatileentity.util.FirstObjectHolder;
Expand Down Expand Up @@ -258,7 +260,7 @@ public class DualInvBuffer implements INeoDualInputInventory {
public long tickFirstClassify = -1;
public void onChange(){}

protected FluidTank[] mStoredFluidInternal;
protected FluidTankG[] mStoredFluidInternal;
protected ItemStackG[] mStoredItemInternal;
protected FluidTank[] mStoredFluidInternalSingle;
protected ItemStack[] mStoredItemInternalSingle;
Expand Down Expand Up @@ -289,9 +291,9 @@ public boolean full() {
}

for (int index = 0; index < mStoredFluidInternalSingle.length; index++) {
FluidTank i = mStoredFluidInternal[index];
FluidTankG i = mStoredFluidInternal[index];
FluidTank si = mStoredFluidInternalSingle[index];
if (si != null && Integer.MAX_VALUE - i.getFluidAmount() < si.getFluidAmount()) {
if (si != null && Long.MAX_VALUE - i.getFluidAmount() < si.getFluidAmount()) {
return true;// over flow! count as full
}
if (i.getFluidAmount() >= fluidLimit()) {
Expand Down Expand Up @@ -392,7 +394,7 @@ public void fromTag(NBTTagCompound tag) {
public void init(int item, int fluid) {
i = item;
f = fluid;
mStoredFluidInternal = initFluidTack(new FluidTank[fluid]);
mStoredFluidInternal = initFluidTack(new FluidTankG[fluid]);
mStoredFluidInternalSingle = initFluidTack(new FluidTank[fluid]);
mStoredItemInternal = new ItemStackG[item + v];
mStoredItemInternalSingle = new ItemStack[item];
Expand All @@ -404,7 +406,12 @@ private FluidTank[] initFluidTack(FluidTank[] t) {
}
return t;
}

private FluidTankG[] initFluidTack(FluidTankG[] t) {
for (int i = 0; i < t.length; i++) {
t[i] = new FluidTankG();
}
return t;
}
public boolean isAccessibleForMulti() {

/*
Expand All @@ -421,7 +428,7 @@ public long currentTick() {

public boolean isEmpty() {

for (FluidTank f : mStoredFluidInternal) {
for (FluidTankG f : mStoredFluidInternal) {
if (f.getFluidAmount() > 0) {
return false;
}
Expand Down Expand Up @@ -497,7 +504,14 @@ private boolean fluidEqualsIngoreAmount(FluidTank a, FluidTank b) {

return true;
}
private boolean fluidEqualsIngoreAmount(FluidTankG a, FluidTank b) {

if (a.getFluid() == null && a.getFluid() == null) return true;
if (a.getFluid() != null && (!a.getFluid()
.equals(b.getFluid()))) return false;

return true;
}
public boolean areItemStacksEqualIngoreAmount(ItemStack p_77989_0_, ItemStack p_77989_1_) {
return p_77989_0_ == null && p_77989_1_ == null ? true
: (p_77989_0_ != null && p_77989_1_ != null ? isItemStackEqualIngoreAmount(p_77989_0_, p_77989_1_)
Expand Down Expand Up @@ -725,7 +739,7 @@ public int space() {
for (int ix = 0; ix < f; ix++) {

if (mStoredFluidInternalSingle[ix].getFluidAmount() > 0) {
int now = mStoredFluidInternal[ix].getFluidAmount();
long now = mStoredFluidInternal[ix].getFluidAmount();

long tmp = (fluidLimit() - now) / mStoredFluidInternalSingle[ix].getFluidAmount();
if (tmp < ret) {
Expand Down Expand Up @@ -1589,10 +1603,10 @@ public void program() {

public class LimitedFluidTank implements IFluidTank {

IFluidTank inner;
FluidTankG inner;

public LimitedFluidTank(IFluidTank i) {
inner = i;
public LimitedFluidTank(FluidTankG mStoredFluidInternal) {
inner = mStoredFluidInternal;
}

@Override
Expand All @@ -1604,7 +1618,7 @@ public FluidStack getFluid() {
@Override
public int getFluidAmount() {

return inner.getFluidAmount();
return (int) Math.min(inner.getFluidAmount(),Integer.MAX_VALUE);
}

@Override
Expand Down Expand Up @@ -1990,11 +2004,11 @@ public void track(@Nonnull ItemStack recipe, @Nullable ItemStackG mStoredItemInt
track(a, b, false);
}

public void track(@Nonnull FluidTank recipe, @Nonnull FluidTank storage) {
public void track(@Nonnull FluidTank recipe, @Nonnull FluidTankG storage) {
if (recipe.getFluid()
.getFluid()
!= Optional.of(storage)
.map(FluidTank::getFluid)
.map(FluidTankG::getFluid)
.map(FluidStack::getFluid)
.orElse(null)) {
broken = true;
Expand All @@ -2003,7 +2017,7 @@ public void track(@Nonnull FluidTank recipe, @Nonnull FluidTank storage) {
}

int a = recipe.getFluidAmount();
int b = storage.getFluidAmount();
long b = storage.getFluidAmount();
track(a, b, false);
}

Expand Down Expand Up @@ -2858,7 +2872,15 @@ public static ItemStackG loadItemStackFromNBTG(NBTTagCompound tag) {
}
public static ItemStack[] flat(ItemStackG[] mStoredItemInternal2) {

return Arrays.asList(mStoredItemInternal2).stream().flatMap(s->Arrays.stream(s.flat())).toArray(ItemStack[]::new);
return Arrays.asList(mStoredItemInternal2).stream().filter(Objects::nonNull).flatMap(s->Arrays.stream(s.flat())).toArray(ItemStack[]::new);




}
public static FluidStack[] flat(FluidTankG[] mStoredItemInternal2) {

return Arrays.asList(mStoredItemInternal2).stream().flatMap(s->Arrays.stream(s.flat())).toArray(FluidStack[]::new);



Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import static gregtech.api.objects.XSTR.XSTR_INSTANCE;

import java.util.Arrays;
import java.util.EnumSet;
import java.util.List;
import java.util.Optional;
Expand Down Expand Up @@ -319,7 +320,7 @@ abstract class Inv {

abstract ItemStack[] geti();

abstract FluidTank[] getf();
abstract FluidStack[] getf();
}
Consumer<Inv> consumer = inv -> {
try {
Expand All @@ -336,19 +337,16 @@ abstract class Inv {
}
IMEMonitor<IAEFluidStack> fsg = getProxy().getStorage()
.getFluidInventory();
for (FluidTank fluidStack : inv.getf()) {
if (fluidStack == null || fluidStack.getFluidAmount() == 0) continue;
for (FluidStack fluidStack : inv.getf()) {
if (fluidStack == null || fluidStack.amount == 0) continue;
IAEFluidStack rest = Platform.poweredInsert(
getProxy().getEnergy(),
fsg,
AEApi.instance()
.storage()
.createFluidStack(fluidStack.getFluid()),
.createFluidStack(fluidStack),
src);
fluidStack.setFluid(
Optional.ofNullable(rest)
.map(IAEFluidStack::getFluidStack)
.orElse(null));
fluidStack.amount=0;
} ;
} catch (Exception e) {
throw new RuntimeException(e);
Expand All @@ -364,8 +362,8 @@ ItemStack[] geti() {
}

@Override
FluidTank[] getf() {
return s.mStoredFluidInternal;
FluidStack[] getf() {
return flat(s.mStoredFluidInternal);
}
})
.forEach(consumer);;
Expand All @@ -378,9 +376,9 @@ ItemStack[] geti() {
}

@Override
FluidTank[] getf() {
FluidStack[] getf() {

return mStoredFluid;
return Arrays.stream(mStoredFluid).map(s->s.getFluid()).toArray(FluidStack[]::new);
}
});

Expand Down
Loading

0 comments on commit 5b506d3

Please sign in to comment.