mirror of
https://github.com/GTNewHorizons/MagicBees.git
synced 2026-11-12 08:17:29 +00:00
99 lines
3.9 KiB
Java
99 lines
3.9 KiB
Java
package magicbees.tileentity;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.util.EnumChatFormatting;
|
|
|
|
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;
|
|
import gregtech.common.tileentities.machines.basic.GT_MetaTileEntity_IndustrialApiary;
|
|
|
|
public class TileEntityApiamancersDrainerGT extends TileEntityApiamancersDrainerCommon
|
|
implements IGregTechDeviceInformation {
|
|
|
|
@Override
|
|
public boolean isGivingInformation() {
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public String[] getInfoData() {
|
|
String aspects = essentia.aspects.entrySet().stream()
|
|
.map(
|
|
e -> EnumChatFormatting.LIGHT_PURPLE + e.getKey().getName()
|
|
+ ": "
|
|
+ EnumChatFormatting.GREEN
|
|
+ e.getValue())
|
|
.collect(Collectors.joining(EnumChatFormatting.RESET + ", " + EnumChatFormatting.RESET));
|
|
|
|
return new String[] { EnumChatFormatting.DARK_PURPLE + "Apiamancer's Drainer" + EnumChatFormatting.RESET,
|
|
aspect != null ? "Attuned: " + aspect.getName() : "Not attuned", "Stored Essentia:", aspects };
|
|
}
|
|
|
|
@Override
|
|
protected IBeeHousing beeHousing(TileEntity above) {
|
|
IBeeHousing regularCheck = super.beeHousing(above);
|
|
if (regularCheck != null) return regularCheck;
|
|
|
|
BaseMetaTileEntity GTMetaTileEntity = getGTTileEntity(above);
|
|
|
|
if (GTMetaTileEntity != null) {
|
|
IMetaTileEntity underlyingMetaTileEntity = GTMetaTileEntity.getMetaTileEntity();
|
|
if (!(underlyingMetaTileEntity instanceof GT_MetaTileEntity_IndustrialApiary)) return null;
|
|
|
|
return (IBeeHousing) underlyingMetaTileEntity;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
protected boolean canWork(IBeeHousing beeHousing, TileEntity te) {
|
|
BaseMetaTileEntity GTMetaTileEntity = getGTTileEntity(te);
|
|
|
|
return GTMetaTileEntity != null ? GTMetaTileEntity.isActive() : super.canWork(beeHousing, te);
|
|
}
|
|
|
|
@Override
|
|
protected ItemStack getQueen(IBeeHousing beeHousing, TileEntity te) {
|
|
BaseMetaTileEntity GTMetaTileEntity = getGTTileEntity(te);
|
|
GT_MetaTileEntity_IndustrialApiary industrialApiary = getGTIndustrialApiary(GTMetaTileEntity);
|
|
|
|
return industrialApiary != null ? industrialApiary.getUsedQueen() : super.getQueen(beeHousing, 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;
|
|
}
|
|
}
|