more misc fluid work, gonna leave most of this untill we have an offical or new api

This commit is contained in:
modmuss50 2019-07-24 19:06:21 +01:00
parent 0742abb840
commit 6a93c3fd46
28 changed files with 147 additions and 404 deletions

View file

@ -26,11 +26,18 @@ package techreborn.utils;
import io.github.prospector.silk.fluid.FluidInstance;
import net.minecraft.block.Block;
import net.minecraft.block.FluidBlock;
import net.minecraft.fluid.Fluids;
import net.minecraft.inventory.Inventory;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.Direction;
import net.minecraft.util.registry.Registry;
import reborncore.common.fluid.container.GenericFluidContainer;
import reborncore.common.util.ItemUtils;
import reborncore.common.util.RebornInventory;
import reborncore.common.util.Tank;
import net.minecraft.fluid.Fluid;
import reborncore.mixin.extensions.FluidBlockExtensions;
import java.util.Collections;
import java.util.List;
@ -38,24 +45,62 @@ import java.util.stream.Collectors;
public class FluidUtils {
public static Fluid fluidFromBlock(Block bLock){
throw new UnsupportedOperationException("needs coding");
public static Fluid fluidFromBlock(Block block){
if(block instanceof FluidBlockExtensions){
return ((FluidBlockExtensions) block).getFluid();
}
return Fluids.EMPTY;
}
public static List<Fluid> getAllFluids() {
return Registry.FLUID.stream().collect(Collectors.toList());
}
public static Fluid getFluid(String name){
return null;
public static boolean drainContainers(GenericFluidContainer<Direction> target, Inventory inventory, int inputSlot, int outputSlot) {
ItemStack inputStack = inventory.getInvStack(inputSlot);
ItemStack outputStack = inventory.getInvStack(outputSlot);
if (inputStack.isEmpty()) return false;
if(inputStack.getCount() > 1){
System.out.println("TODO make this support more than 1 item");
return false;
}
if (outputStack.getCount() >= outputStack.getMaxCount()) return false;
GenericFluidContainer<ItemStack> source = GenericFluidContainer.fromStack(inputStack);
if(source == null || source.getFluidInstance(inputStack).isEmpty()){
return false;
}
Fluid fluidType = source.getFluidInstance(inputStack).getFluid();
FluidInstance contained = target.getFluidInstance(null);
if(!contained.isEmpty()){
//Check that the fluid we are trying to insert into is the same
if(contained.getFluid() != fluidType){
return false;
}
}
int transferAmount = 10;
if(source.canExtractFluid(inputStack, fluidType, transferAmount) && target.canInsertFluid(null, fluidType, transferAmount)){
target.insertFluid(null, fluidType, transferAmount);
source.extractFluid(inputStack, fluidType, transferAmount);
if(source.getCurrentFluidAmount(inputStack) < 1){
inventory.setInvStack(outputSlot, inputStack);
inventory.setInvStack(inputSlot, ItemStack.EMPTY);
}
return true;
}
return false;
}
public static void drainContainers(Tank tank, RebornInventory<?> inventory, int i, int i1) {
}
public static void fillContainers(Tank tank, RebornInventory<?> inventory, int i, int i1, Fluid fluidType) {
public static boolean fillContainers(GenericFluidContainer<Direction> source, Inventory inventory, int inputSlot, int outputSlot, Fluid fluidToFill) {
return false;
}
public static boolean fluidEquals(Fluid fluid, Fluid fluid1) {