add prod multiplier based on industrial apiary speed

This commit is contained in:
Quantumlyy committed 2023-12-14 07:39:02 +01:00
1 parent 06571c1eb4
commit edf3ff7423
3 files changed
+41 -18

No files matched your search

+2 -2
View File
@@ -353,11 +353,11 @@ public class Config {
p = configuration.get(
CATEGORY_GENERAL,
"drainerCapacity",
64,
512,
"The amount that the Apiamancer's Drainer can hold of each aspect",
1,
32767);
drainerCapacity = p.getInt(256);
drainerCapacity = p.getInt(512);
p = configuration.get(CATEGORY_GENERAL, "moonDialShowText", false);
p.comment = "set to true to show the current moon phase in mouse-over text.";
@@ -63,10 +63,8 @@ public class TileEntityApiamancersDrainerCommon extends TileEntity implements IA
if (Objects.equals(queenSpecies.getUID(), BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) {
IBeeModifier modifier = BeeManager.beeRoot.createBeeHousingModifier(beeHousing);
IBee queen = BeeManager.beeRoot.getMember(queenStack);
IBeeGenome queenGenome = queen.getGenome();
float productionMultiplier = modifier.getProductionModifier(queenGenome, 1.0F);
int amount = (int) Math.ceil(Config.drainerAmount * Math.max(productionMultiplier, 1.0F));
int amount = Config.drainerAmount * getProductionMultiplier(modifier, queen, above);
addToContainer(aspect, amount);
drainQueen(beeHousing, modifier, queen);
@@ -91,6 +89,14 @@ public class TileEntityApiamancersDrainerCommon extends TileEntity implements IA
return beeHousing.getBeeInventory().getQueen();
}
protected int getProductionMultiplier(IBeeModifier modifier, IBee queen, TileEntity te) {
IBeeGenome queenGenome = queen.getGenome();
float productionMultiplier = modifier.getProductionModifier(queenGenome, 1.0F);
float minimum = Math.max(productionMultiplier, 1.0F);
return (int) Math.ceil(minimum);
}
private void drainQueen(IBeeHousing housing, IBeeModifier modifier, IBee queen) {
float lifespanModifier = modifier.getLifespanModifier(queen.getGenome(), queen.getMate(), 1.0f);
queen.age(housing.getWorld(), lifespanModifier);
@@ -7,7 +7,9 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import cpw.mods.fml.common.Loader;
import forestry.api.apiculture.IBee;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.apiculture.IBeeModifier;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechDeviceInformation;
import gregtech.api.metatileentity.BaseMetaTileEntity;
@@ -46,7 +48,7 @@ public class TileEntityApiamancersDrainerGT extends TileEntityApiamancersDrainer
IBeeHousing regularCheck = super.beeHousing(above);
if (regularCheck != null) return regularCheck;
BaseMetaTileEntity GTMetaTileEntity = GTTileEntity(above);
BaseMetaTileEntity GTMetaTileEntity = getGTTileEntity(above);
if (GTMetaTileEntity != null) {
IMetaTileEntity underlyingMetaTileEntity = GTMetaTileEntity.getMetaTileEntity();
@@ -60,29 +62,44 @@ public class TileEntityApiamancersDrainerGT extends TileEntityApiamancersDrainer
@Override
protected boolean canWork(IBeeHousing beeHousing, TileEntity te) {
BaseMetaTileEntity GTMetaTileEntity = GTTileEntity(te);
BaseMetaTileEntity GTMetaTileEntity = getGTTileEntity(te);
return GTMetaTileEntity != null ? GTMetaTileEntity.isActive() : super.canWork(beeHousing, te);
}
@Override
protected ItemStack getQueen(IBeeHousing beeHousing, TileEntity te) {
BaseMetaTileEntity GTMetaTileEntity = GTTileEntity(te);
BaseMetaTileEntity GTMetaTileEntity = getGTTileEntity(te);
GT_MetaTileEntity_IndustrialApiary industrialApiary = getGTIndustrialApiary(GTMetaTileEntity);
if (GTMetaTileEntity != null) {
IMetaTileEntity underlyingMetaTileEntity = GTMetaTileEntity.getMetaTileEntity();
if (!(underlyingMetaTileEntity instanceof GT_MetaTileEntity_IndustrialApiary)) return null;
GT_MetaTileEntity_IndustrialApiary industrialApiary = (GT_MetaTileEntity_IndustrialApiary) underlyingMetaTileEntity;
return industrialApiary.getUsedQueen();
}
return super.getQueen(beeHousing, te);
return industrialApiary != null ? industrialApiary.getUsedQueen() : super.getQueen(beeHousing, te);
}
private BaseMetaTileEntity GTTileEntity(TileEntity te) {
@Override
protected int getProductionMultiplier(IBeeModifier modifier, IBee queen, TileEntity te) {
BaseMetaTileEntity GTMetaTileEntity = getGTTileEntity(te);
GT_MetaTileEntity_IndustrialApiary industrialApiary = getGTIndustrialApiary(GTMetaTileEntity);
int housingProductionMultiplier = super.getProductionMultiplier(modifier, queen, te);
return industrialApiary != null
? housingProductionMultiplier * (int) Math.ceil(Math.sqrt(industrialApiary.mSpeed))
: housingProductionMultiplier;
}
private BaseMetaTileEntity getGTTileEntity(TileEntity te) {
boolean isGTMetaTileEntity = te instanceof BaseMetaTileEntity;
return isGTMetaTileEntity ? (BaseMetaTileEntity) te : null;
}
private GT_MetaTileEntity_IndustrialApiary getGTIndustrialApiary(BaseMetaTileEntity bmte) {
if (bmte != null) {
IMetaTileEntity underlyingMetaTileEntity = bmte.getMetaTileEntity();
if (!(underlyingMetaTileEntity instanceof GT_MetaTileEntity_IndustrialApiary)) return null;
return (GT_MetaTileEntity_IndustrialApiary) underlyingMetaTileEntity;
}
return null;
}
}