Skip to content

Commit

Permalink
Fix drums can have acid liquid on interaction
Browse files Browse the repository at this point in the history
  • Loading branch information
DiFFoZ committed Jan 23, 2025
1 parent 3dfd0cb commit 8a1830b
Showing 1 changed file with 20 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
package com.gregtechceu.gtceu.api.capability;

import com.gregtechceu.gtceu.api.fluids.FluidConstants;
import com.gregtechceu.gtceu.api.fluids.FluidState;
import com.gregtechceu.gtceu.api.fluids.attribute.FluidAttribute;
import com.gregtechceu.gtceu.api.fluids.attribute.FluidAttributes;
import com.gregtechceu.gtceu.api.fluids.attribute.IAttributedFluid;

import net.minecraft.world.level.material.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidType;

import java.util.Collection;

/**
* Interface for FluidHandlerItemStacks which handle GT's unique fluid mechanics
*
Expand All @@ -24,22 +29,23 @@ public interface IThermalFluidHandlerItemStack {
default boolean canFillFluidType(FluidStack stack) {
if (stack == null || stack.getFluid() == null) return false;

FluidType fluidType = stack.getFluid().getFluidType();
var temp = fluidType.getTemperature();
if (temp > getMaxFluidTemperature()) return false;
// fluids less than 120K are cryogenic
if (temp < 120 && !isCryoProof()) return false;
Fluid fluid = stack.getFluid();

FluidType fluidType = fluid.getFluidType();
if (fluidType.isLighterThanAir() && !isGasProof()) return false;

// TODO custom fluid
// for (RegistryEntry<Fluid> entry : GTRegistries.REGISTRATE.getAll(Registry.FLUID_REGISTRY)) {
// if (entry.get() == fluid) {
// FluidType fluidType = ((MaterialFluid) fluid).getFluidType();
// if (fluidType == FluidTypes.ACID && !isAcidProof()) return false;
// if (fluidType == FluidTypes.PLASMA && !isPlasmaProof()) return false;
// }
// }
return true;
if (fluid instanceof IAttributedFluid attributedFluid) {
Collection<FluidAttribute> attributes = attributedFluid.getAttributes();
if (attributes.contains(FluidAttributes.ACID) && !isAcidProof()) return false;

FluidState fluidState = attributedFluid.getState();
if (fluidState == FluidState.PLASMA && !isPlasmaProof()) return false;
}

int temperature = fluidType.getTemperature(stack);
if (temperature < FluidConstants.CRYOGENIC_FLUID_THRESHOLD && !isCryoProof()) return false;

return temperature <= getMaxFluidTemperature();
}

/**
Expand Down

0 comments on commit 8a1830b

Please sign in to comment.