Fluid replicator
This commit is contained in:
parent
4645c365c2
commit
83483ce8d3
11 changed files with 343 additions and 895 deletions
|
@ -0,0 +1,56 @@
|
|||
package techreborn.api.recipe.recipes;
|
||||
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
import net.minecraft.fluid.Fluid;
|
||||
import net.minecraft.fluid.Fluids;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import reborncore.common.crafting.RebornFluidRecipe;
|
||||
import reborncore.common.crafting.RebornRecipeType;
|
||||
import reborncore.common.util.Tank;
|
||||
import techreborn.blockentity.machine.multiblock.FluidReplicatorBlockEntity;
|
||||
import techreborn.utils.FluidUtils;
|
||||
|
||||
public class FluidReplicatorRecipe extends RebornFluidRecipe {
|
||||
|
||||
public FluidReplicatorRecipe(RebornRecipeType<?> type, Identifier name) {
|
||||
super(type, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tank getTank(BlockEntity be) {
|
||||
FluidReplicatorBlockEntity blockEntity = (FluidReplicatorBlockEntity) be;
|
||||
return blockEntity.getTank();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canCraft(BlockEntity be) {
|
||||
FluidReplicatorBlockEntity blockEntity = (FluidReplicatorBlockEntity) be;
|
||||
if (!blockEntity.getMultiBlock()) {
|
||||
return false;
|
||||
}
|
||||
final BlockPos hole = blockEntity.getPos().offset(blockEntity.getFacing().getOpposite(), 2);
|
||||
final Fluid fluid = techreborn.utils.FluidUtils.fluidFromBlock(blockEntity.getWorld().getBlockState(hole).getBlock());
|
||||
if (fluid == Fluids.EMPTY) {
|
||||
return true;
|
||||
}
|
||||
if (!FluidUtils.fluidEquals(fluid, getFluidInstance().getFluid())) {
|
||||
return false;
|
||||
}
|
||||
final Fluid tankFluid = blockEntity.tank.getFluid();
|
||||
if (tankFluid != Fluids.EMPTY && !FluidUtils.fluidEquals(tankFluid, fluid)) {
|
||||
return false;
|
||||
}
|
||||
return blockEntity.tank.canFit(getFluidInstance().getFluid(), getFluidInstance().getAmount());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCraft(BlockEntity be) {
|
||||
FluidReplicatorBlockEntity blockEntity = (FluidReplicatorBlockEntity) be;
|
||||
if (blockEntity.tank.canFit(getFluidInstance().getFluid(), getFluidInstance().getAmount())) {
|
||||
blockEntity.tank.setFluid(getFluidInstance().getFluid());
|
||||
blockEntity.tank.getFluidInstance().addAmount(getFluidInstance().getAmount());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue