Skip to content

Commit

Permalink
Merge pull request #33 from GlodBlock/bugfix
Browse files Browse the repository at this point in the history
fix 4096k int overflow and drops
  • Loading branch information
GlodBlock authored Jul 30, 2022
2 parents dc6445b + ec9f55d commit 2b94b20
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -389,19 +389,19 @@ public IAEFluidStack injectItems(IAEFluidStack input, Actionable mode, BaseActio

if( this.canHoldNewFluid() ) // room for new type, and for at least one item!
{
final int remainingItemCount = (int) this.getRemainingFluidCount() - this.getBytesPerType() * 8;
final long remainingItemCount = this.getRemainingFluidCount() - this.getBytesPerType() * 8;

if( remainingItemCount > 0 )
{
if( input.getStackSize() > remainingItemCount )
{
final FluidStack toReturn = Util.cloneFluidStack(sharedFluidStack);
toReturn.amount = sharedFluidStack.amount - remainingItemCount;
toReturn.amount = (int) (sharedFluidStack.amount - remainingItemCount);

if( mode == Actionable.MODULATE )
{
final FluidStack toWrite = Util.cloneFluidStack( sharedFluidStack );
toWrite.amount = remainingItemCount;
toWrite.amount = (int) remainingItemCount;

this.cellItems.add( AEFluidStack.create( toWrite ) );
this.updateFluidCount( toWrite.amount );
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.glodblock.github.common.tile;

import appeng.api.AEApi;
import appeng.api.config.Actionable;
import appeng.api.networking.GridFlags;
import appeng.api.networking.crafting.ICraftingGrid;
Expand All @@ -19,7 +20,6 @@
import appeng.me.cache.CraftingGridCache;
import appeng.me.storage.MEInventoryHandler;
import appeng.tile.grid.AENetworkTile;
import appeng.util.Platform;
import com.glodblock.github.common.item.ItemFluidDrop;

import java.util.ArrayList;
Expand Down Expand Up @@ -48,8 +48,6 @@ public boolean canBeRotated() {
@Override
@SuppressWarnings("rawtypes")
public List<IMEInventoryHandler> getCellArray(StorageChannel channel) {
/*conflict = !checkDiscreatizer();
if (conflict) return Collections.emptyList();*/
if (getProxy().isActive()) {
if (channel == StorageChannel.ITEMS) {
return Collections.singletonList(fluidDropInv.invHandler);
Expand Down Expand Up @@ -131,6 +129,25 @@ public void onStorageUpdate(MENetworkStorageEvent event) {
updateState();
}

@MENetworkEventSubscribe
public void onBootUp(MENetworkBootingStatusChange event) {
try {
IMEInventory<IAEItemStack> inventory = this.getProxy().getStorage().getItemInventory();
IItemList<IAEItemStack> items = inventory.getAvailableItems(AEApi.instance().storage().createItemList());
IItemList<IAEItemStack> drops = AEApi.instance().storage().createItemList();
for (IAEItemStack item : items) {
if (item != null && item.getItem() instanceof ItemFluidDrop) {
drops.add(item);
}
}
for (IAEItemStack drop : drops) {
inventory.extractItems(drop, Actionable.MODULATE, ownActionSource);
inventory.injectItems(drop, Actionable.MODULATE, ownActionSource);
}
} catch (GridAccessException ignored) {
}
}

private class FluidDiscretizingInventory implements IMEInventory<IAEItemStack>, IMEMonitorHandlerReceiver<IAEFluidStack> {

private final MEInventoryHandler<IAEItemStack> invHandler = new MEInventoryHandler<>(this, getChannel());
Expand All @@ -142,7 +159,6 @@ private class FluidDiscretizingInventory implements IMEInventory<IAEItemStack>,

@Override
public IAEItemStack injectItems(IAEItemStack request, Actionable type, BaseActionSource src) {
/*if (conflict) return request;*/
IAEFluidStack fluidStack = ItemFluidDrop.getAeFluidStack(request);
if (fluidStack == null) {
return request;
Expand All @@ -165,7 +181,6 @@ public IAEItemStack injectItems(IAEItemStack request, Actionable type, BaseActio

@Override
public IAEItemStack extractItems(IAEItemStack request, Actionable mode, BaseActionSource src) {
/*if (conflict) return null;*/
IAEFluidStack fluidStack = ItemFluidDrop.getAeFluidStack(request);
if (fluidStack == null) {
return null;
Expand All @@ -188,7 +203,6 @@ public IAEItemStack extractItems(IAEItemStack request, Actionable mode, BaseActi

@Override
public IItemList<IAEItemStack> getAvailableItems(IItemList<IAEItemStack> out) {
/*if (conflict) return out;*/
if (itemCache == null) {
itemCache = new ArrayList<>();
IMEMonitor<IAEFluidStack> fluidGrid = getFluidGrid();
Expand Down Expand Up @@ -253,7 +267,6 @@ private class FluidCraftingInventory implements IMEInventory<IAEFluidStack> {
@Override
@SuppressWarnings("rawtypes")
public IAEFluidStack injectItems(IAEFluidStack input, Actionable type, BaseActionSource src) {
/*if (conflict) return null;*/
ICraftingGrid craftingGrid;
try {
craftingGrid = getProxy().getGrid().getCache(ICraftingGrid.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,12 @@

import appeng.api.config.Upgrades;
import appeng.api.networking.IGridNode;
import appeng.api.networking.energy.IEnergyGrid;
import appeng.api.networking.events.MENetworkChannelsChanged;
import appeng.api.networking.events.MENetworkEventSubscribe;
import appeng.api.networking.events.MENetworkPowerStatusChange;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.networking.security.MachineSource;
import appeng.api.networking.storage.IStorageGrid;
import appeng.api.networking.ticking.TickRateModulation;
import appeng.api.networking.ticking.TickingRequest;
import appeng.api.storage.IMEMonitor;
import appeng.api.storage.data.IAEFluidStack;
import appeng.me.GridAccessException;
import appeng.tile.TileEvent;
import appeng.tile.events.TileEventType;
import appeng.tile.inventory.AppEngInternalAEInventory;
Expand Down

0 comments on commit 2b94b20

Please sign in to comment.