mirror of
https://github.com/GTNewHorizons/MagicBees.git
synced 2026-11-13 00:37:51 +00:00
check for queen in industrial apiary
This commit is contained in:
1 parent
4823e44793
commit
06571c1eb4
2 files changed
+26
-12
No files matched your search
@@ -18,7 +18,6 @@ import forestry.apiculture.genetics.BeeGenome;
|
||||
import magicbees.bees.BeeManager;
|
||||
import magicbees.bees.BeeSpecies;
|
||||
import magicbees.main.Config;
|
||||
import magicbees.main.utils.LogHelper;
|
||||
import thaumcraft.api.aspects.Aspect;
|
||||
import thaumcraft.api.aspects.AspectList;
|
||||
import thaumcraft.api.aspects.IAspectContainer;
|
||||
@@ -49,27 +48,24 @@ public class TileEntityApiamancersDrainerCommon extends TileEntity implements IA
|
||||
TileEntity above = worldObj.getTileEntity(this.xCoord, this.yCoord + 1, this.zCoord);
|
||||
IBeeHousing beeHousing = beeHousing(above);
|
||||
if (beeHousing != null) {
|
||||
LogHelper.warn("is housing");
|
||||
|
||||
// This performs all the checks to see if the bee is a living queen and if the species conditions
|
||||
// are met.
|
||||
if (!canWork(beeHousing, above)) return;
|
||||
LogHelper.warn("can work");
|
||||
|
||||
ItemStack queenStack = beeHousing.getBeeInventory().getQueen();
|
||||
// The beeRoot.isMember call will treat null the same as EnumBeeType.NONE which leads getSpecies to
|
||||
// return null.
|
||||
ItemStack queenStack = getQueen(beeHousing, above);
|
||||
IAlleleBeeSpecies queenSpecies = BeeGenome.getSpecies(queenStack);
|
||||
if (queenSpecies == null) return;
|
||||
LogHelper.warn("has species");
|
||||
|
||||
if (BeeManager.beeRoot.getType(queenStack) != EnumBeeType.QUEEN) return;
|
||||
LogHelper.warn("is queen");
|
||||
|
||||
if (Objects.equals(queenSpecies.getUID(), BeeSpecies.TC_ESSENTIA.getSpecies().getUID())) {
|
||||
LogHelper.warn("is essentia");
|
||||
IBeeModifier modifier = BeeManager.beeRoot.createBeeHousingModifier(beeHousing);
|
||||
IBee queen = BeeManager.beeRoot.getMember(queenStack);
|
||||
IBeeGenome queenGenome = queen.getGenome();
|
||||
float productionMultiplier = modifier.getProductionModifier(queenGenome, 1.0F);
|
||||
|
||||
float productionMultiplier = modifier.getProductionModifier(queenGenome, 1.0F);
|
||||
int amount = (int) Math.ceil(Config.drainerAmount * Math.max(productionMultiplier, 1.0F));
|
||||
|
||||
addToContainer(aspect, amount);
|
||||
@@ -91,6 +87,10 @@ public class TileEntityApiamancersDrainerCommon extends TileEntity implements IA
|
||||
return beekeepingLogic.canWork();
|
||||
}
|
||||
|
||||
protected ItemStack getQueen(IBeeHousing beeHousing, TileEntity te) {
|
||||
return beeHousing.getBeeInventory().getQueen();
|
||||
}
|
||||
|
||||
private void drainQueen(IBeeHousing housing, IBeeModifier modifier, IBee queen) {
|
||||
float lifespanModifier = modifier.getLifespanModifier(queen.getGenome(), queen.getMate(), 1.0f);
|
||||
queen.age(housing.getWorld(), lifespanModifier);
|
||||
|
||||
@@ -2,6 +2,7 @@ package magicbees.tileentity;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
|
||||
@@ -49,7 +50,6 @@ public class TileEntityApiamancersDrainerGT extends TileEntityApiamancersDrainer
|
||||
|
||||
if (GTMetaTileEntity != null) {
|
||||
IMetaTileEntity underlyingMetaTileEntity = GTMetaTileEntity.getMetaTileEntity();
|
||||
|
||||
if (!(underlyingMetaTileEntity instanceof GT_MetaTileEntity_IndustrialApiary)) return null;
|
||||
|
||||
return (IBeeHousing) underlyingMetaTileEntity;
|
||||
@@ -60,10 +60,24 @@ public class TileEntityApiamancersDrainerGT extends TileEntityApiamancersDrainer
|
||||
|
||||
@Override
|
||||
protected boolean canWork(IBeeHousing beeHousing, TileEntity te) {
|
||||
boolean canNormallyWork = super.canWork(beeHousing, te);
|
||||
BaseMetaTileEntity GTMetaTileEntity = GTTileEntity(te);
|
||||
|
||||
return GTMetaTileEntity != null ? GTMetaTileEntity.isActive() : canNormallyWork;
|
||||
return GTMetaTileEntity != null ? GTMetaTileEntity.isActive() : super.canWork(beeHousing, te);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ItemStack getQueen(IBeeHousing beeHousing, TileEntity te) {
|
||||
BaseMetaTileEntity GTMetaTileEntity = GTTileEntity(te);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
private BaseMetaTileEntity GTTileEntity(TileEntity te) {
|
||||
|
||||
Reference in new issue
Block a user