diff --git a/src/main/java/forestry/apiculture/compat/ApicultureJeiPlugin.java b/src/main/java/forestry/apiculture/compat/ApicultureJeiPlugin.java index ab9aedd089..8d5071554c 100644 --- a/src/main/java/forestry/apiculture/compat/ApicultureJeiPlugin.java +++ b/src/main/java/forestry/apiculture/compat/ApicultureJeiPlugin.java @@ -1,6 +1,7 @@ package forestry.apiculture.compat; import com.google.common.base.Preconditions; +import forestry.api.apiculture.BeeManager; import forestry.api.genetics.IAlleleSpecies; import forestry.apiculture.ModuleApiculture; import forestry.apiculture.items.ItemRegistryApiculture; @@ -19,7 +20,7 @@ public void registerItemSubtypes(ISubtypeRegistry subtypeRegistry) { Preconditions.checkNotNull(items); ISubtypeRegistry.ISubtypeInterpreter beeSubtypeInterpreter = itemStack -> { - IAlleleSpecies species = Genome.getSpeciesDirectly(itemStack); + IAlleleSpecies species = Genome.getSpeciesDirectly(BeeManager.beeRoot, itemStack); return species == null ? ISubtypeRegistry.ISubtypeInterpreter.NONE : species.getUID(); }; diff --git a/src/main/java/forestry/apiculture/genetics/BeeGenome.java b/src/main/java/forestry/apiculture/genetics/BeeGenome.java index 01361e2902..39d7191965 100755 --- a/src/main/java/forestry/apiculture/genetics/BeeGenome.java +++ b/src/main/java/forestry/apiculture/genetics/BeeGenome.java @@ -84,7 +84,7 @@ public BeeGenome(IChromosome[] chromosomes) { public static IAlleleBeeSpecies getSpecies(ItemStack itemStack) { Preconditions.checkArgument(BeeManager.beeRoot.isMember(itemStack), "itemStack must be a bee"); - IAlleleSpecies species = getSpeciesDirectly(itemStack); + IAlleleSpecies species = getSpeciesDirectly(BeeManager.beeRoot, itemStack); if (species instanceof IAlleleBeeSpecies) { return (IAlleleBeeSpecies) species; } diff --git a/src/main/java/forestry/arboriculture/genetics/TreeGenome.java b/src/main/java/forestry/arboriculture/genetics/TreeGenome.java index 617311ce2d..306b3a0d35 100755 --- a/src/main/java/forestry/arboriculture/genetics/TreeGenome.java +++ b/src/main/java/forestry/arboriculture/genetics/TreeGenome.java @@ -48,7 +48,7 @@ public TreeGenome(NBTTagCompound nbttagcompound) { public static IAlleleTreeSpecies getSpecies(ItemStack itemStack) { Preconditions.checkArgument(TreeManager.treeRoot.isMember(itemStack), "ItemStack must be a tree"); - IAlleleSpecies species = getSpeciesDirectly(itemStack); + IAlleleSpecies species = getSpeciesDirectly(TreeManager.treeRoot, itemStack); if (species instanceof IAlleleTreeSpecies) { return (IAlleleTreeSpecies) species; } diff --git a/src/main/java/forestry/core/genetics/Chromosome.java b/src/main/java/forestry/core/genetics/Chromosome.java index a4a36394a4..fa6f0fb840 100755 --- a/src/main/java/forestry/core/genetics/Chromosome.java +++ b/src/main/java/forestry/core/genetics/Chromosome.java @@ -22,8 +22,8 @@ import forestry.api.genetics.ISpeciesRoot; public class Chromosome implements IChromosome { - public static final String UID0_TAG = "UID0"; - public static final String UID1_TAG = "UID1"; + private static final String UID0_TAG = "UID0"; + private static final String UID1_TAG = "UID1"; private final IAllele primary; private final IAllele secondary; diff --git a/src/main/java/forestry/core/genetics/Genome.java b/src/main/java/forestry/core/genetics/Genome.java index 91034378dc..9f5dd7f9ae 100755 --- a/src/main/java/forestry/core/genetics/Genome.java +++ b/src/main/java/forestry/core/genetics/Genome.java @@ -15,7 +15,6 @@ import javax.annotation.Nullable; import java.util.Arrays; -import forestry.api.genetics.AlleleManager; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; @@ -110,7 +109,7 @@ private IAllele[] getDefaultTemplate() { * We need this because the client uses the species for rendering. */ @Nullable - public static IAlleleSpecies getSpeciesDirectly(ItemStack itemStack) { + public static IAlleleSpecies getSpeciesDirectly(ISpeciesRoot speciesRoot, ItemStack itemStack) { NBTTagCompound nbtTagCompound = itemStack.getTagCompound(); if (nbtTagCompound == null) { return null; @@ -127,11 +126,13 @@ public static IAlleleSpecies getSpeciesDirectly(ItemStack itemStack) { } NBTTagCompound chromosomeNBT = chromosomesNBT.getCompoundTagAt(0); - String speciesUid = chromosomeNBT.getString(Chromosome.UID0_TAG); - IAllele activeAllele = AlleleManager.alleleRegistry.getAllele(speciesUid); + Chromosome chromosome = Chromosome.create(null, null, speciesRoot.getSpeciesChromosomeType(), chromosomeNBT); + + IAllele activeAllele = chromosome.getActiveAllele(); if (!(activeAllele instanceof IAlleleSpecies)) { return null; } + return (IAlleleSpecies) activeAllele; } diff --git a/src/main/java/forestry/lepidopterology/genetics/ButterflyGenome.java b/src/main/java/forestry/lepidopterology/genetics/ButterflyGenome.java index 367503728d..39ca1806b8 100755 --- a/src/main/java/forestry/lepidopterology/genetics/ButterflyGenome.java +++ b/src/main/java/forestry/lepidopterology/genetics/ButterflyGenome.java @@ -49,7 +49,7 @@ public ButterflyGenome(IChromosome[] chromosomes) { public static IAlleleButterflySpecies getSpecies(ItemStack itemStack) { Preconditions.checkArgument(ButterflyManager.butterflyRoot.isMember(itemStack), "Must be a butterfly"); - IAlleleSpecies species = getSpeciesDirectly(itemStack); + IAlleleSpecies species = getSpeciesDirectly(ButterflyManager.butterflyRoot, itemStack); if (species instanceof IAlleleButterflySpecies) { return (IAlleleButterflySpecies) species; }