diff --git a/src/main/java/gregtech/api/GTValues.java b/src/main/java/gregtech/api/GTValues.java index 0c029c7927c..523360d53e8 100644 --- a/src/main/java/gregtech/api/GTValues.java +++ b/src/main/java/gregtech/api/GTValues.java @@ -201,4 +201,7 @@ public static boolean isDeobfEnvironment() { return ConfigHolder.misc.specialEvents && yearMonthDay[1].equals("12") && (yearMonthDay[2].equals("24") || yearMonthDay[2].equals("25")); }; + + // todo temp + public static double LOG_4 = Math.log(4); } diff --git a/src/main/java/gregtech/api/capability/impl/HeatingCoilRecipeLogic.java b/src/main/java/gregtech/api/capability/impl/HeatingCoilRecipeLogic.java index fc9bd216d55..31ddb9f9275 100644 --- a/src/main/java/gregtech/api/capability/impl/HeatingCoilRecipeLogic.java +++ b/src/main/java/gregtech/api/capability/impl/HeatingCoilRecipeLogic.java @@ -18,8 +18,8 @@ */ public class HeatingCoilRecipeLogic extends MultiblockRecipeLogic { - public HeatingCoilRecipeLogic(RecipeMapMultiblockController metaTileEntity) { - super(metaTileEntity); + public HeatingCoilRecipeLogic(RecipeMapMultiblockController metaTileEntity, int tierskipLimit_) { + super(metaTileEntity, tierskipLimit_); if (!(metaTileEntity instanceof IHeatingCoil)) { throw new IllegalArgumentException("MetaTileEntity must be instanceof IHeatingCoil"); } diff --git a/src/main/java/gregtech/api/capability/impl/MultiblockRecipeLogic.java b/src/main/java/gregtech/api/capability/impl/MultiblockRecipeLogic.java index 5ec88c42708..1fae8667fef 100644 --- a/src/main/java/gregtech/api/capability/impl/MultiblockRecipeLogic.java +++ b/src/main/java/gregtech/api/capability/impl/MultiblockRecipeLogic.java @@ -37,12 +37,26 @@ public class MultiblockRecipeLogic extends AbstractRecipeLogic { protected IItemHandlerModifiable currentDistinctInputBus; protected List invalidatedInputList = new ArrayList<>(); + protected int tierskipLimit; + public MultiblockRecipeLogic(RecipeMapMultiblockController tileEntity) { super(tileEntity, tileEntity.recipeMap); + this.tierskipLimit = 0; + } + + public MultiblockRecipeLogic(RecipeMapMultiblockController tileEntity, int tierskipLimit_) { + super(tileEntity, tileEntity.recipeMap); + this.tierskipLimit = tierskipLimit_; } public MultiblockRecipeLogic(RecipeMapMultiblockController tileEntity, boolean hasPerfectOC) { super(tileEntity, tileEntity.recipeMap, hasPerfectOC); + this.tierskipLimit = 0; + } + + public MultiblockRecipeLogic(RecipeMapMultiblockController tileEntity, int tierskipLimit_, boolean hasPerfectOC) { + super(tileEntity, tileEntity.recipeMap, hasPerfectOC); + this.tierskipLimit = tierskipLimit_; } @Override @@ -103,7 +117,7 @@ protected IMultipleTankHandler getInputTank() { /** * Overload of {@link #getInputTank()} to gather extra fluid tanks * that could exist in a distinct item handler (such as a {@link DualHandler}) - * + * * @param items Handler to gather fluid tanks from * @return a new FluidTankList with extra fluid tanks on top of the existing fluid tanks */ @@ -400,13 +414,14 @@ public long getMaxVoltage() { // Machine Multiblocks if (energyContainer instanceof EnergyContainerList energyList) { long highestVoltage = energyList.getHighestInputVoltage(); - if (energyList.getNumHighestInputContainers() > 1) { - // allow tier + 1 if there are multiple hatches present at the highest tier - int tier = GTUtility.getTierByVoltage(highestVoltage); - return GTValues.V[Math.min(tier + 1, GTValues.MAX)]; - } else { - return highestVoltage; - } + int tier = GTUtility.getTierByVoltage(highestVoltage); + + // todo fix (always returns 1) + long amps = energyList.getInputAmperage(); + + // todo log call can be replaced with something less intensive + int tierskip = (int) Math.min((Math.log(amps) / GTValues.LOG_4), tierskipLimit); + return GTValues.V[Math.min(tier + tierskip, GTValues.MAX)]; } else { return energyContainer.getInputVoltage(); } diff --git a/src/main/java/gregtech/api/metatileentity/multiblock/RecipeMapMultiblockController.java b/src/main/java/gregtech/api/metatileentity/multiblock/RecipeMapMultiblockController.java index 02ba5655857..8fe99dd3f03 100644 --- a/src/main/java/gregtech/api/metatileentity/multiblock/RecipeMapMultiblockController.java +++ b/src/main/java/gregtech/api/metatileentity/multiblock/RecipeMapMultiblockController.java @@ -203,8 +203,7 @@ public TraceabilityPredicate autoAbilities(boolean checkEnergyIn, if (checkEnergyIn) { predicate = predicate.or(abilities(MultiblockAbility.INPUT_ENERGY).setMinGlobalLimited(1) - .setMaxGlobalLimited(2) - .setPreviewCount(1)); + .setMaxGlobalLimited(1).setPreviewCount(1)); } if (checkItemIn) { diff --git a/src/main/java/gregtech/common/metatileentities/MetaTileEntityRegistration.java b/src/main/java/gregtech/common/metatileentities/MetaTileEntityRegistration.java index 55cd52e5cd4..8591887232a 100644 --- a/src/main/java/gregtech/common/metatileentities/MetaTileEntityRegistration.java +++ b/src/main/java/gregtech/common/metatileentities/MetaTileEntityRegistration.java @@ -917,9 +917,9 @@ private static void multiblockParts() { for (int i = 0; i < endPos; i++) { String voltageName = GTValues.VN[i].toLowerCase(); MetaTileEntities.ENERGY_INPUT_HATCH[i] = MetaTileEntities.registerMetaTileEntity(11120 + i, - new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.input." + voltageName), i, 2, false)); + new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.input." + voltageName), i, 1, false)); MetaTileEntities.ENERGY_OUTPUT_HATCH[i] = MetaTileEntities.registerMetaTileEntity(11135 + i, - new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.output." + voltageName), i, 2, true)); + new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.output." + voltageName), i, 1, true)); MetaTileEntities.ENERGY_INPUT_HATCH_4A[i] = MetaTileEntities.registerMetaTileEntity(11150 + i, new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.input_4a." + voltageName), i, 4, false)); diff --git a/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntityAssemblyLine.java b/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntityAssemblyLine.java index 69b648b41cb..4f8a908dcb7 100644 --- a/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntityAssemblyLine.java +++ b/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntityAssemblyLine.java @@ -92,7 +92,7 @@ protected BlockPattern createStructurePattern() { .where('Y', states(getCasingState()) .or(abilities(MultiblockAbility.INPUT_ENERGY) .setMinGlobalLimited(1) - .setMaxGlobalLimited(3))) + .setMaxGlobalLimited(1))) .where('I', metaTileEntities(MetaTileEntities.ITEM_IMPORT_BUS[GTValues.ULV])) .where('G', states(getGrateState())) .where('A', diff --git a/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntityElectricBlastFurnace.java b/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntityElectricBlastFurnace.java index 89c277d7c8d..4e7a9eb3aa4 100644 --- a/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntityElectricBlastFurnace.java +++ b/src/main/java/gregtech/common/metatileentities/multi/electric/MetaTileEntityElectricBlastFurnace.java @@ -60,7 +60,7 @@ public class MetaTileEntityElectricBlastFurnace extends RecipeMapMultiblockContr public MetaTileEntityElectricBlastFurnace(ResourceLocation metaTileEntityId) { super(metaTileEntityId, RecipeMaps.BLAST_RECIPES); - this.recipeMapWorkable = new HeatingCoilRecipeLogic(this); + this.recipeMapWorkable = new HeatingCoilRecipeLogic(this, 1); } @Override