@Override public void registerSpeciesRoot(ISpeciesRoot root) { rootMap.put(root.getUID(), root); }
public IBreedingSystem getSystem(final ISpeciesRoot root) { String rootUID = root.getUID(); IBreedingSystem system = this.getSystem(rootUID); Preconditions.checkState(system != null, "Could not find system for species root %s", rootUID); return system; }
ToleranceSystem(final IChromosomeType chromosomeType, final IToleranceType type) { this.speciesRootUid = chromosomeType.getSpeciesRoot().getUID(); this.chromosomeType = chromosomeType; this.type = type; }
@Override public final String getIdent() { return this.getSpeciesRoot().getUID(); }
@Nullable public IBreedingSystem getBreedingSystem() { if (genes.isEmpty()) { return null; } IBreedingSystem system = Binnie.GENETICS.getSystem(genes.get(0).getSpeciesRoot().getUID()); return (system == null) ? Binnie.GENETICS.getActiveSystems().iterator().next() : system; }
@Override public String getName() { return I18N.localise("binniecore." + this.getSpeciesRoot().getUID() + ".shortName"); }
@Override public final String getDescriptor() { return I18N.localise("binniecore." + this.getSpeciesRoot().getUID() + ".descriptor"); }
@Nullable private static ToleranceSystem getToleranceSystem(final ItemStack stack, final ItemStack acclim) { final ISpeciesRoot root = AlleleManager.alleleRegistry.getSpeciesRoot(stack); if (root != null) { for (final ToleranceSystem system : Acclimatiser.toleranceSystems) { if (Objects.equals(root.getUID(), system.getSpeciesRootUid()) && system.getType().hasEffect(acclim)) { return system; } } } return null; }
@Override public final String getEpitome(final float discoveredPercentage) { int i = 0; if (discoveredPercentage == 1.0f) { i = 6; } else if (discoveredPercentage < 0.1f) { i = 0; } else if (discoveredPercentage < 0.3f) { i = 1; } else if (discoveredPercentage < 0.5f) { i = 2; } else if (discoveredPercentage < 0.7f) { i = 3; } else if (discoveredPercentage < 0.9f) { i = 4; } else if (discoveredPercentage < 1.0f) { i = 5; } return I18N.localise("binniecore." + this.getSpeciesRoot().getUID() + ".epitome." + i); }
@Override public String getChromosomeShortName(final IChromosomeType chromo) { return I18N.localise("binniecore." + this.getSpeciesRoot().getUID() + ".chromosome." + chromo.getName() + ".short"); }
@Override public String getChromosomeName(final IChromosomeType chromo) { return I18N.localise("binniecore." + this.getSpeciesRoot().getUID() + ".chromosome." + chromo.getName()); }
@Override public String apply(ItemStack itemStack) { Item item = itemStack.getItem(); if (item instanceof IItemChargeable) { IItemChargeable itemChargeable = (IItemChargeable) item; boolean fullyCharged = (itemChargeable.getCharges(itemStack) == itemChargeable.getMaxCharges(itemStack)); String info = fullyCharged ? "charged" : "uncharged"; ISpeciesRoot root = itemChargeable.getSpeciesRoot(itemStack); if (root != null) { return info + ':' + root.getUID(); } } return ISubtypeRegistry.ISubtypeInterpreter.NONE; } }
@Override public NBTTagCompound writeToNBT(final NBTTagCompound nbt) { nbt.setString("allele", this.allele.getUID()); nbt.setString("root", this.root.getUID()); nbt.setByte("chromo", (byte) this.chromosome.ordinal()); return nbt; }
@Override public void readFromNBT(NBTTagCompound nbt) { for (ISpeciesRoot root : AlleleManager.alleleRegistry.getSpeciesRoot().values()) { if (!nbt.hasKey(root.getUID())) { continue; } NBTTagCompound nbtRoot = nbt.getCompoundTag(root.getUID()); for (IChromosomeType chromo : root.getKaryotype()) { if (!nbtRoot.hasKey(String.valueOf(chromo.ordinal()))) { continue; } NBTTagList nbtChromo = nbtRoot.getTagList(String.valueOf(chromo.ordinal()), 8); for (int i = 0; i < nbtChromo.tagCount(); ++i) { String uid = nbtChromo.getStringTagAt(i); IAllele allele = AlleleManager.alleleRegistry.getAllele(uid); if (allele == null) { continue; } Gene gene = new Gene(allele, chromo, root); if (!discoveredGenes.contains(gene)) { discoveredGenes.add(gene); } } } } }
@Override public void registerPickup(IIndividual individual) { ISpeciesRoot speciesRoot = individual.getGenome().getPrimary().getRoot(); if (!speciesRoot.getUID().equals(speciesRootUID())) { return; } if (!individual.isPureBred(EnumBeeChromosome.SPECIES)) { return; } if (!speciesRoot.getCombinations(individual.getGenome().getPrimary()).isEmpty()) { return; } registerSpecies(individual.getGenome().getPrimary()); }
public static ResearchNote createSpeciesNote(GameProfile researcher, IAlleleSpecies species) { NBTTagCompound compound = new NBTTagCompound(); compound.setString("ROT", species.getRoot().getUID()); compound.setString("AL0", species.getUID()); return new ResearchNote(researcher, SPECIES, compound); }
@Override public NBTTagCompound writeToNBT(NBTTagCompound nbt) { for (ISpeciesRoot root : AlleleManager.alleleRegistry.getSpeciesRoot().values()) { NBTTagCompound nbtRoot = new NBTTagCompound(); for (IChromosomeType chromo : root.getKaryotype()) { NBTTagList nbtChromo = new NBTTagList(); for (IGene gene : discoveredGenes) { if (gene.getSpeciesRoot() == root && gene.getChromosome() == chromo) { nbtChromo.appendTag(new NBTTagString(gene.getAllele().getUID())); } } nbtRoot.setTag(String.valueOf(chromo.ordinal()), nbtChromo); } nbt.setTag(root.getUID(), nbtRoot); } return nbt; }
public static ResearchNote createMutationNote(GameProfile researcher, IMutation mutation) { NBTTagCompound compound = new NBTTagCompound(); compound.setString("ROT", mutation.getRoot().getUID()); compound.setString("AL0", mutation.getAllele0().getUID()); compound.setString("AL1", mutation.getAllele1().getUID()); compound.setString("RST", mutation.getTemplate()[0].getUID()); return new ResearchNote(researcher, MUTATION, compound); }
public boolean isValid(EnumFacing facing, ItemStack itemStack, IFilterData filterData) { IFilterRuleType rule = getRule(facing); if (rule == DefaultFilterRuleType.CLOSED) { return false; } if (rule == DefaultFilterRuleType.ITEM && !filterData.isPresent()) { return true; } String requiredRoot = rule.getRootUID(); if (requiredRoot != null && (!filterData.isPresent() || !filterData.getRoot().getUID().equals(requiredRoot))) { return false; } if (rule == DefaultFilterRuleType.ANYTHING || rule.isValid(itemStack, filterData)) { if (filterData.isPresent()) { IIndividual ind = filterData.getIndividual(); IGenome genome = ind.getGenome(); IAllele active = genome.getPrimary(); IAllele inactive = genome.getSecondary(); return isValidAllelePair(facing, active.getUID(), inactive.getUID()); } return true; } return false; }
@Override public void writeEntityToNBT(NBTTagCompound nbttagcompound) { super.writeEntityToNBT(nbttagcompound); NBTTagCompound bio = new NBTTagCompound(); contained.writeToNBT(bio); nbttagcompound.setTag("BTFLY", bio); if (pollen != null) { NBTTagCompound pln = new NBTTagCompound(); pln.setString("Root", pollen.getGenome().getSpeciesRoot().getUID()); pollen.writeToNBT(pln); nbttagcompound.setTag("PLN", pln); } nbttagcompound.setByte("STATE", (byte) getState().ordinal()); nbttagcompound.setInteger("EXH", exhaustion); nbttagcompound.setInteger("homeX", getHomePosition().getX()); nbttagcompound.setInteger("homeY", getHomePosition().getY()); nbttagcompound.setInteger("homeZ", getHomePosition().getZ()); }