Lazy monitor updates (#150)

* Update buildscript and dependencies

* Implement getAvailableItem for faster network updates

* Use findPrecise
This commit is contained in:
Raven Szewczyk authored and GitHub committed 2023-08-05 09:39:12 +02:00
1 parent dd842a182c
commit 64977b87a9
8 files changed
+196 -75

No files matched your search

@@ -3,6 +3,8 @@ package com.glodblock.github.common.storage;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nonnull;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@@ -385,6 +387,11 @@ public class FluidCellInventory implements IFluidCellInventory {
return out;
}
@Override
public IAEFluidStack getAvailableItem(@Nonnull IAEFluidStack request) {
return this.getCellFluids().findPrecise(request);
}
@Override
public List<IAEFluidStack> getContents() {
List<IAEFluidStack> ret = new ArrayList<>();
@@ -4,6 +4,8 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.annotation.Nonnull;
import com.glodblock.github.api.FluidCraftAPI;
import com.glodblock.github.common.item.ItemFluidDrop;
@@ -203,6 +205,24 @@ public class TileFluidDiscretizer extends AENetworkTile implements IPriorityHost
return out;
}
@Override
public IAEItemStack getAvailableItem(@Nonnull IAEItemStack request) {
IMEMonitor<IAEFluidStack> fluidGrid = getFluidGrid();
if (fluidGrid == null) {
return null;
}
IAEFluidStack fluidRequest = ItemFluidDrop.getAeFluidStack(request);
if (fluidRequest == null) {
return null;
}
IAEFluidStack availableFluid = fluidGrid.getAvailableItem(fluidRequest);
if (availableFluid == null || availableFluid.getFluid() == null
|| FluidCraftAPI.instance().isBlacklistedInDisplay(availableFluid.getFluid().getClass())) {
return null;
}
return ItemFluidDrop.newAeStack(availableFluid);
}
@Override
public StorageChannel getChannel() {
return StorageChannel.ITEMS;
@@ -277,6 +297,11 @@ public class TileFluidDiscretizer extends AENetworkTile implements IPriorityHost
return out;
}
@Override
public IAEFluidStack getAvailableItem(@Nonnull IAEFluidStack request) {
return null;
}
@Override
public StorageChannel getChannel() {
return StorageChannel.FLUIDS;
@@ -2,6 +2,8 @@ package com.glodblock.github.inventory;
import java.util.*;
import javax.annotation.Nonnull;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
@@ -189,6 +191,11 @@ public class MEMonitorIFluidHandler implements IMEMonitor<IAEFluidStack> {
return out;
}
@Override
public IAEFluidStack getAvailableItem(@Nonnull IAEFluidStack request) {
return this.cache.findPrecise(request);
}
public IItemList<IAEFluidStack> getStorageList() {
return this.cache;
}