@@ -48,6 +48,7 @@ public abstract class RecipeMapMultiblockController extends MultiblockWithDispla
4848 protected IItemHandlerModifiable outputInventory ;
4949 protected IMultipleTankHandler inputFluidInventory ;
5050 protected IMultipleTankHandler outputFluidInventory ;
51+ protected IMultipleTankHandler extendedFluidInputs ;
5152 protected IEnergyContainer energyContainer ;
5253
5354 private boolean isDistinct = false ;
@@ -74,7 +75,10 @@ public IItemHandlerModifiable getOutputInventory() {
7475 }
7576
7677 public IMultipleTankHandler getInputFluidInventory () {
77- return inputFluidInventory ;
78+ // if distinct, return the normal input fluid inventory,
79+ // as recipe logic handles gathering extra fluids
80+ // if not distinct, return all the fluids instead
81+ return isDistinct () ? inputFluidInventory : extendedFluidInputs ;
7882 }
7983
8084 public IMultipleTankHandler getOutputFluidInventory () {
@@ -120,9 +124,12 @@ public boolean isActive() {
120124
121125 protected void initializeAbilities () {
122126 this .inputInventory = new ItemHandlerList (getAbilities (MultiblockAbility .IMPORT_ITEMS ));
123- this .inputFluidInventory = createFluidList (MultiblockAbility .IMPORT_ITEMS , MultiblockAbility .IMPORT_FLUIDS );
127+ this .inputFluidInventory = new FluidTankList (allowSameFluidFillForOutputs (),
128+ getAbilities (MultiblockAbility .IMPORT_FLUIDS ));
129+ this .extendedFluidInputs = extendedImportFluidList (this .inputFluidInventory );
124130 this .outputInventory = new ItemHandlerList (getAbilities (MultiblockAbility .EXPORT_ITEMS ));
125- this .outputFluidInventory = createFluidList (MultiblockAbility .EXPORT_ITEMS , MultiblockAbility .EXPORT_FLUIDS );
131+ this .outputFluidInventory = new FluidTankList (allowSameFluidFillForOutputs (),
132+ getAbilities (MultiblockAbility .EXPORT_FLUIDS ));
126133
127134 List <IEnergyContainer > inputEnergy = new ArrayList <>(getAbilities (MultiblockAbility .INPUT_ENERGY ));
128135 inputEnergy .addAll (getAbilities (MultiblockAbility .SUBSTATION_INPUT_ENERGY ));
@@ -138,19 +145,17 @@ private void resetTileAbilities() {
138145 this .energyContainer = new EnergyContainerList (Lists .newArrayList ());
139146 }
140147
141- protected IMultipleTankHandler createFluidList (MultiblockAbility <IItemHandlerModifiable > items ,
142- MultiblockAbility <IFluidTank > fluids ) {
143- var tanks = new AbilityInstances (fluids );
144- tanks .addAll (getAbilities (fluids ));
145- for (var handler : getAbilities (items )) {
148+ protected IMultipleTankHandler extendedImportFluidList (IMultipleTankHandler fluids ) {
149+ List <IFluidTank > tanks = new ArrayList <>(fluids .getFluidTanks ());
150+ for (var handler : getAbilities (MultiblockAbility .IMPORT_ITEMS )) {
146151 if (handler instanceof IFluidTank tank ) {
147152 tanks .add (tank );
148153 } else if (handler instanceof IMultipleTankHandler multipleTankHandler ) {
149154 tanks .addAll (multipleTankHandler .getFluidTanks ());
150155 }
151156 }
152157
153- return new FluidTankList (allowSameFluidFillForOutputs (), tanks . cast () );
158+ return new FluidTankList (allowSameFluidFillForOutputs (), tanks );
154159 }
155160
156161 protected boolean allowSameFluidFillForOutputs () {
0 commit comments