mirror of
https://github.com/GTNewHorizons/MagicBees.git
synced 2026-11-12 16:27:34 +00:00
add prod multiplier based on industrial apiary speed
This commit is contained in:
1 parent
06571c1eb4
commit
edf3ff7423
3 files changed
+41
-18
No files matched your search
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user