@Override public ItemStack apply(ItemStack stack, Random rand, LootContext context) { ISpeciesRoot speciesRoot = AlleleManager.alleleRegistry.getSpeciesRoot(stack); if (speciesRoot != null) { ISpeciesType speciesType = speciesRoot.getType(stack); if (speciesType != null) { IAllele[] template = speciesRoot.getTemplate(speciesUid); if (template != null) { IIndividual individual = speciesRoot.templateAsIndividual(template); return speciesRoot.getMemberStack(individual, speciesType); } } } return stack; }
private String chromosomesToString(IChromosome[] chromosomes) { StringBuilder stringBuilder = new StringBuilder(); IChromosomeType[] karyotype = getSpeciesRoot().getKaryotype(); for (int i = 0; i < chromosomes.length; i++) { IChromosomeType chromosomeType = karyotype[i]; IChromosome chromosome = chromosomes[i]; stringBuilder.append(chromosomeType.getName()).append(": ").append(chromosome).append("\n"); } return stringBuilder.toString(); }
@Override public boolean isValid(ItemStack itemStack, EnumFacing facing) { ISpeciesRoot root = AlleleManager.alleleRegistry.getSpeciesRoot(itemStack); IIndividual individual = null; ISpeciesType type = null; if (root != null) { individual = root.getMember(itemStack); type = root.getType(itemStack); } return isValid(facing, itemStack, new FilterData(root, individual, type)); }
default ItemStack getMemberStack(IAlleleSpecies species, ISpeciesType type) { return getMemberStack(getTemplate(species), type); }
default ItemStack getMemberStack(IAllele[] template, ISpeciesType type) { return getMemberStack(templateAsIndividual(template), type); }
private void setTokenSpecies(String speciesUid) { IAllele allele = AlleleManager.alleleRegistry.getAllele(speciesUid); if (allele instanceof IAlleleSpecies) { IAlleleSpecies species = (IAlleleSpecies) allele; ISpeciesRoot root = species.getRoot(); IAllele[] template = root.getTemplate(species); this.tokenIndividual = root.templateAsIndividual(template); this.tokenStack = root.getMemberStack(this.tokenIndividual, root.getIconType()); } }
public static List<GenepoolRecipeWrapper> create() { List<GenepoolRecipeWrapper> recipes = new ArrayList<>(); Collection<ISpeciesRoot> roots = AlleleManager.alleleRegistry.getSpeciesRoot().values(); for (ISpeciesRoot root : roots) { ISpeciesType[] speciesTypes = root.getIconType().getClass().getEnumConstants(); IAllele[] defaultTemplate = root.getDefaultTemplate(); IIndividual individual = root.templateAsIndividual(defaultTemplate); for (ISpeciesType speciesType : speciesTypes) { ItemStack memberStack = root.getMemberStack(individual, speciesType); memberStack.setItemDamage(OreDictionary.WILDCARD_VALUE); GenepoolRecipeWrapper recipeWrapper = new GenepoolRecipeWrapper(memberStack); recipes.add(recipeWrapper); } } return recipes; } }
IChromosomeType speciesChromosomeType = root.getSpeciesChromosomeType(); IAllele[] defaultTemplate = root.getDefaultTemplate(); IIndividual individual = root.templateAsIndividual(defaultTemplate); for (ISpeciesType speciesType : system.getActiveTypes()) { if (system.isDNAManipulable(speciesType)) { ItemStack memberStack = root.getMemberStack(individual, speciesType); memberStack.setItemDamage(OreDictionary.WILDCARD_VALUE); for (IChromosomeType chromosomeType : root.getKaryotype()) { if (chromosomeType != speciesChromosomeType) { IAllele allele = defaultTemplate[chromosomeType.ordinal()];
@Override public float getChance(final IMutation mutation, final EntityPlayer player, final IAlleleSpecies firstSpecies, final IAlleleSpecies secondSpecies) { ISpeciesRoot speciesRoot = this.getSpeciesRoot(); final ITreeGenome genome0 = (ITreeGenome) speciesRoot.templateAsGenome(speciesRoot.getTemplate(firstSpecies)); final ITreeGenome genome2 = (ITreeGenome) speciesRoot.templateAsGenome(speciesRoot.getTemplate(secondSpecies)); return ((ITreeMutation) mutation).getChance(player.world, player.getPosition(), (IAlleleTreeSpecies) firstSpecies, (IAlleleTreeSpecies) secondSpecies, genome0, genome2); }
public GuiNaturalistInventory(ISpeciesRoot speciesRoot, EntityPlayer player, Container container, int page, int maxPages) { super(Constants.TEXTURE_PATH_GUI + "/apiaristinventory.png", container); this.speciesRoot = speciesRoot; this.pageCurrent = page; this.pageMax = maxPages; xSize = 196; ySize = 202; for (IIndividual individual : speciesRoot.getIndividualTemplates()) { iconStacks.put(individual.getIdent(), speciesRoot.getMemberStack(individual, speciesRoot.getIconType())); } breedingTracker = speciesRoot.getBreedingTracker(player.world, player.getGameProfile()); }
private void checkChromosomes(IChromosome[] chromosomes) { if (chromosomes.length != getDefaultTemplate().length) { String message = String.format("Tried to create a genome for '%s' from an invalid chromosome template.\n%s", getSpeciesRoot().getUID(), chromosomesToString(chromosomes)); throw new IllegalArgumentException(message); IChromosomeType[] karyotype = getSpeciesRoot().getKaryotype(); for (int i = 0; i < karyotype.length; i++) { IChromosomeType chromosomeType = karyotype[i]; if (chromosome == null) { String message = String.format("Tried to create a genome for '%s' from an invalid chromosome template. " + "Missing chromosome '%s'.\n%s", getSpeciesRoot().getUID(), chromosomeType.getName(), chromosomesToString(chromosomes)); throw new IllegalArgumentException(message); if (primary == null) { String message = String.format("Tried to create a genome for '%s' from an invalid chromosome template. " + "Missing primary allele for '%s'.\n%s", getSpeciesRoot().getUID(), chromosomeType.getName(), chromosomesToString(chromosomes)); throw new IllegalArgumentException(message); if (secondary == null) { String message = String.format("Tried to create a genome for '%s' from an invalid chromosome template. " + "Missing secondary allele for '%s'.\n%s", getSpeciesRoot().getUID(), chromosomeType.getName(), chromosomesToString(chromosomes)); throw new IllegalArgumentException(message); if (!chromosomeAlleleClass.isAssignableFrom(primary.getClass())) { String message = String.format("Tried to create a genome for '%s' from an invalid chromosome template. " + "Incorrect type for primary allele '%s'.\n%s.", getSpeciesRoot().getUID(), chromosomeType.getName(), chromosomesToString(chromosomes)); throw new IllegalArgumentException(message); "Incorrect type for secondary allele '%s'.\n%s.", getSpeciesRoot().getUID(), chromosomeType.getName(), chromosomesToString(chromosomes));
@Override public boolean onItemPickup(EntityPlayer entityPlayer, EntityItem entityitem) { ItemStack itemstack = entityitem.getItem(); if (itemstack.isEmpty()) { return false; } ISpeciesRoot root = AlleleManager.alleleRegistry.getSpeciesRoot(itemstack); if (root != null) { IIndividual individual = root.getMember(itemstack); if (individual != null) { IBreedingTracker tracker = root.getBreedingTracker(entityitem.world, entityPlayer.getGameProfile()); tracker.registerPickup(individual); } } return false; }
private static IChromosome[] getChromosomes(NBTTagCompound genomeNBT, ISpeciesRoot speciesRoot) { NBTTagList chromosomesNBT = genomeNBT.getTagList("Chromosomes", 10); IChromosome[] chromosomes = new IChromosome[speciesRoot.getDefaultTemplate().length]; String primarySpeciesUid = null; String secondarySpeciesUid = null; for (int i = 0; i < chromosomesNBT.tagCount(); i++) { NBTTagCompound chromosomeNBT = chromosomesNBT.getCompoundTagAt(i); byte chromosomeOrdinal = chromosomeNBT.getByte(SLOT_TAG); if (chromosomeOrdinal >= 0 && chromosomeOrdinal < chromosomes.length) { IChromosomeType chromosomeType = speciesRoot.getKaryotype()[chromosomeOrdinal]; Chromosome chromosome = Chromosome.create(primarySpeciesUid, secondarySpeciesUid, chromosomeType, chromosomeNBT); chromosomes[chromosomeOrdinal] = chromosome; if (chromosomeOrdinal == speciesRoot.getSpeciesChromosomeType().ordinal()) { primarySpeciesUid = chromosome.getPrimaryAllele().getUID(); secondarySpeciesUid = chromosome.getSecondaryAllele().getUID(); } } } return chromosomes; }
@Override public boolean isDNAManipulable(final ItemStack member) { ISpeciesType type = this.getSpeciesRoot().getType(member); return isDNAManipulable(type); }
final ControlTabBar<IBreedingSystem> tabSystems = new GenesisTabSystems(this); this.root = Binnie.GENETICS.getActiveSystems().iterator().next().getSpeciesRoot(); this.template = this.root.getDefaultTemplate(); final Area one = new Area(32, 28, 170, 100); final Area two = new Area(214, 28, 100, 100); template = root.getDefaultTemplate(); refreshTemplate(null); }); ISpeciesRoot speciesRoot = gene.getSpeciesRoot(); IAllele allele = gene.getAllele(); if (chromosomeType == speciesRoot.getSpeciesChromosomeType()) { template = speciesRoot.getTemplate(allele.getUID()); } else { template[chromosomeType.ordinal()] = allele;
@Override public void registerSpeciesRoot(ISpeciesRoot root) { rootMap.put(root.getUID(), root); }
public void setSpecies(final IAlleleSpecies species, EnumDiscoveryState state) { final ISpeciesRoot speciesRoot = Binnie.GENETICS.getSpeciesRoot(species); final IBreedingSystem system = Binnie.GENETICS.getSystem(speciesRoot); final IAllele[] template = system.getSpeciesRoot().getTemplate(species); final IIndividual ind = system.getSpeciesRoot().templateAsIndividual(template); super.setItemStack(system.getSpeciesRoot().getMemberStack(ind, system.getDefaultType())); this.species = species; final GameProfile username = Window.get(this).getUsername(); if (state == EnumDiscoveryState.UNDETERMINED) { state = (system.isSpeciesDiscovered(species, Window.get(this).getWorld(), username) ? EnumDiscoveryState.DISCOVERED : EnumDiscoveryState.UNDISCOVERED); } if (Window.get(this) instanceof WindowAbstractDatabase && ((WindowAbstractDatabase) Window.get(this)).isMaster()) { state = EnumDiscoveryState.SHOW; } this.discovered = state; this.addAttribute(Attribute.MOUSE_OVER); }
@Override public ItemStack getConversionStack(final ItemStack stack) { IIndividual conversion = this.getConversion(stack); if (conversion == null) { return ItemStack.EMPTY; } ISpeciesType type = this.getSpeciesRoot().getType(stack); if (type == null) { type = this.getDefaultType(); } return this.getSpeciesRoot().getMemberStack(conversion, type); }
@Nullable private IIndividual getIndividualAtPosition(int x, int y) { Slot slot = getSlotAtPosition(x, y); if (slot == null) { return null; } if (!slot.getHasStack()) { return null; } if (!slot.getStack().hasTagCompound()) { return null; } if (!speciesRoot.isMember(slot.getStack())) { return null; } return speciesRoot.getMember(slot.getStack()); }
@Override @Nullable public IIndividual getIndividual(String uid) { IAllele[] template = this.getSpeciesRoot().getTemplate(uid); if (template == null) { return null; } return this.getSpeciesRoot().templateAsIndividual(template); }