Files
ForestryMC/src/main/java/forestry/apiculture/BeeHousingModifier.java
T
Jakub 661a5598ea New bees formula (#45)
* New formula

* Make production modifier globally additive
2023-03-29 17:26:15 +02:00

127 lines
4.2 KiB
Java

/*******************************************************************************
* Copyright (c) 2011-2014 SirSengir. All rights reserved. This program and the accompanying materials are made
* available under the terms of the GNU Lesser Public License v3 which accompanies this distribution, and is available
* at http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Various Contributors including, but not limited to: SirSengir (original work), CovertJaguar, Player, Binnie,
* MysteriousAges
******************************************************************************/
package forestry.apiculture;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.apiculture.IBeeModifier;
public class BeeHousingModifier implements IBeeModifier {
private final IBeeHousing beeHousing;
public BeeHousingModifier(IBeeHousing beeHousing) {
this.beeHousing = beeHousing;
}
@Override
public float getTerritoryModifier(IBeeGenome genome, final float currentModifier) {
float modifierValue = 1.0f;
for (IBeeModifier modifier : beeHousing.getBeeModifiers()) {
modifierValue *= modifier.getTerritoryModifier(genome, modifierValue * currentModifier);
}
return modifierValue;
}
@Override
public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, final float currentModifier) {
float modifierValue = 1.0f;
for (IBeeModifier modifier : beeHousing.getBeeModifiers()) {
modifierValue *= modifier.getMutationModifier(genome, mate, modifierValue * currentModifier);
}
return modifierValue;
}
@Override
public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, final float currentModifier) {
float modifierValue = 1.0f;
for (IBeeModifier modifier : beeHousing.getBeeModifiers()) {
modifierValue *= modifier.getLifespanModifier(genome, mate, modifierValue * currentModifier);
}
return modifierValue;
}
@Override
public float getProductionModifier(IBeeGenome genome, final float currentModifier) {
float modifierValue = 1.0f;
for (IBeeModifier modifier : beeHousing.getBeeModifiers()) {
modifierValue += modifier.getProductionModifier(genome, modifierValue + currentModifier);
}
return modifierValue;
}
@Override
public float getFloweringModifier(IBeeGenome genome, final float currentModifier) {
float modifierValue = 1.0f;
for (IBeeModifier modifier : beeHousing.getBeeModifiers()) {
modifierValue *= modifier.getFloweringModifier(genome, modifierValue * currentModifier);
}
return modifierValue;
}
@Override
public float getGeneticDecay(IBeeGenome genome, final float currentModifier) {
float modifierValue = 1.0f;
for (IBeeModifier modifier : beeHousing.getBeeModifiers()) {
modifierValue *= modifier.getGeneticDecay(genome, modifierValue * currentModifier);
}
return modifierValue;
}
@Override
public boolean isSealed() {
for (IBeeModifier modifier : beeHousing.getBeeModifiers()) {
if (modifier.isSealed()) {
return true;
}
}
return false;
}
@Override
public boolean isSelfLighted() {
for (IBeeModifier modifier : beeHousing.getBeeModifiers()) {
if (modifier.isSelfLighted()) {
return true;
}
}
return false;
}
@Override
public boolean isSelfUnlighted() {
for (IBeeModifier modifier : beeHousing.getBeeModifiers()) {
if (modifier.isSelfUnlighted()) {
return true;
}
}
return false;
}
@Override
public boolean isSunlightSimulated() {
for (IBeeModifier modifier : beeHousing.getBeeModifiers()) {
if (modifier.isSunlightSimulated()) {
return true;
}
}
return false;
}
@Override
public boolean isHellish() {
for (IBeeModifier modifier : beeHousing.getBeeModifiers()) {
if (modifier.isHellish()) {
return true;
}
}
return false;
}
}