mirror of
https://github.com/GTNewHorizons/gendustry.git
synced 2026-11-12 08:27:39 +00:00
Added BeeModifiers (based on BeeHousingModifier)
This commit is contained in:
1 parent
882a3dc1f4
commit
44a86cd45f
2 files changed
+50
-3
No files matched your search
@@ -12,6 +12,7 @@ package net.bdew.gendustry.custom
|
||||
import forestry.api.apiculture._
|
||||
import forestry.api.core.{EnumHumidity, EnumTemperature}
|
||||
import forestry.api.genetics.{AlleleManager, IAllele}
|
||||
import net.bdew.gendustry.forestry.BeeModifiers
|
||||
import net.bdew.lib.Misc
|
||||
import net.minecraft.block.Block
|
||||
import net.minecraft.item.ItemStack
|
||||
@@ -55,9 +56,7 @@ class BeeMutation(parent1: IAlleleBeeSpecies, parent2: IAlleleBeeSpecies, result
|
||||
else {
|
||||
val bkm = getRoot.getBeekeepingMode(housing.getWorld)
|
||||
var processedChance = chance
|
||||
import scala.collection.JavaConversions._
|
||||
for (mod <- housing.getBeeModifiers)
|
||||
processedChance *= mod.getMutationModifier(genome0, genome1, processedChance)
|
||||
processedChance *= BeeModifiers.from(housing).getMutationModifier(genome0, genome1, processedChance)
|
||||
processedChance *= bkm.getBeeModifier.getMutationModifier(genome0, genome1, processedChance)
|
||||
processedChance
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (c) bdew, 2013 - 2015
|
||||
* https://github.com/bdew/gendustry
|
||||
*
|
||||
* This mod is distributed under the terms of the Minecraft Mod Public
|
||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||
* http://bdew.net/minecraft-mod-public-license/
|
||||
*/
|
||||
|
||||
package net.bdew.gendustry.forestry
|
||||
|
||||
import forestry.api.apiculture.{IBeeGenome, IBeeHousing, IBeeModifier}
|
||||
|
||||
import scala.collection.JavaConversions._
|
||||
|
||||
/**
|
||||
* Combines multiple IBeeModifier together
|
||||
* Conceptually based on BeeHousingModifier from Forestry
|
||||
* @param modifiers collection of modifiers
|
||||
*/
|
||||
case class BeeModifiers(modifiers: Traversable[IBeeModifier]) extends IBeeModifier {
|
||||
override def getTerritoryModifier(genome: IBeeGenome, currentModifier: Float): Float =
|
||||
modifiers.foldLeft(1F)((v, m) => m.getTerritoryModifier(genome, v * currentModifier))
|
||||
|
||||
override def getMutationModifier(genome: IBeeGenome, mate: IBeeGenome, currentModifier: Float): Float =
|
||||
modifiers.foldLeft(1F)((v, m) => m.getMutationModifier(genome, mate, v * currentModifier))
|
||||
|
||||
override def getLifespanModifier(genome: IBeeGenome, mate: IBeeGenome, currentModifier: Float): Float =
|
||||
modifiers.foldLeft(1F)((v, m) => m.getLifespanModifier(genome, mate, v * currentModifier))
|
||||
|
||||
override def getProductionModifier(genome: IBeeGenome, currentModifier: Float): Float =
|
||||
modifiers.foldLeft(1F)((v, m) => m.getProductionModifier(genome, v * currentModifier))
|
||||
|
||||
override def getFloweringModifier(genome: IBeeGenome, currentModifier: Float): Float =
|
||||
modifiers.foldLeft(1F)((v, m) => m.getFloweringModifier(genome, v * currentModifier))
|
||||
|
||||
override def getGeneticDecay(genome: IBeeGenome, currentModifier: Float): Float =
|
||||
modifiers.foldLeft(1F)((v, m) => m.getGeneticDecay(genome, v * currentModifier))
|
||||
|
||||
override def isSealed: Boolean = modifiers.exists(_.isSealed)
|
||||
override def isSelfLighted: Boolean = modifiers.exists(_.isSelfLighted)
|
||||
override def isSunlightSimulated: Boolean = modifiers.exists(_.isSunlightSimulated)
|
||||
override def isHellish: Boolean = modifiers.exists(_.isHellish)
|
||||
}
|
||||
|
||||
object BeeModifiers {
|
||||
def from(beeHousing: IBeeHousing) = BeeModifiers(beeHousing.getBeeModifiers)
|
||||
}
|
||||
Reference in new issue
Block a user