@Override @Nullable public IIndividual getIndividual(ItemStack stack) { ISpeciesRoot root = getSpeciesRoot(stack); if (root == null) { return null; } return root.getMember(stack); }
public Collection<EnumFacing> getValidDirections(ItemStack itemStack, EnumFacing from) { ISpeciesRoot root = AlleleManager.alleleRegistry.getSpeciesRoot(itemStack); IIndividual individual = null; ISpeciesType type = null; if (root != null) { individual = root.getMember(itemStack); type = root.getType(itemStack); } IFilterData filterData = new FilterData(root, individual, type); List<EnumFacing> validFacings = new LinkedList<>(); for (EnumFacing facing : EnumFacing.VALUES) { if (facing == from) { continue; } if (isValidFacing(facing, itemStack, filterData)) { validFacings.add(facing); } } return validFacings; }
public Collection<EnumFacing> getValidDirections(ItemStack itemStack, EnumFacing from) { ISpeciesRoot root = AlleleManager.alleleRegistry.getSpeciesRoot(itemStack); IIndividual individual = null; ISpeciesType type = null; if (root != null) { individual = root.getMember(itemStack); type = root.getType(itemStack); } IFilterData filterData = new FilterData(root, individual, type); List<EnumFacing> validFacings = new LinkedList<>(); for (EnumFacing facing : EnumFacing.VALUES) { if (facing == from) { continue; } if (isValid(facing, itemStack, filterData)) { validFacings.add(facing); } } return validFacings; }
@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)); }
private int getSpecimenSlot() { for (int k = ItemInventoryAlyzer.SLOT_SPECIMEN; k <= ItemInventoryAlyzer.SLOT_ANALYZE_5; k++) { ItemStack stackInSlot = itemInventory.getStackInSlot(k); if (stackInSlot.isEmpty()) { continue; } ISpeciesRoot speciesRoot = AlleleManager.alleleRegistry.getSpeciesRoot(stackInSlot); if (speciesRoot == null) { continue; } IIndividual individual = speciesRoot.getMember(stackInSlot); if (!individual.isAnalyzed()) { continue; } return k; } return -1; }
@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()); }
IIndividual member = speciesRoot.getMember(item); if (member == null) { return false;
@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; }
@Nonnull private ItemStack setItem(int slot, @Nonnull ItemStack itemStack) { if (slot < 0 || slot >= items.size()) { return ItemStack.EMPTY; } ItemStack prevStack = items.get(slot); if (!prevStack.isEmpty()) { this.primarySpeciesUids[slot] = null; this.secondarySpeciesUids[slot] = null; } items.set(slot, itemStack); ISpeciesRoot speciesRoot = AlleleManager.alleleRegistry.getSpeciesRoot(itemStack); if (speciesRoot != null) { IIndividual member = speciesRoot.getMember(itemStack); if (member != null) { IGenome genome = member.getGenome(); primarySpeciesUids[slot] = genome.getPrimary().getUID(); secondarySpeciesUids[slot] = genome.getSecondary().getUID(); } } return prevStack; }
@Override public boolean canSlotAccept(int slotIndex, ItemStack itemStack) { if (slotIndex == SLOT_ENERGY) { return isAlyzingFuel(itemStack); } // only allow one slot to be used at a time if (hasSpecimen() && getStackInSlot(slotIndex).isEmpty()) { return false; } itemStack = GeneticsUtil.convertToGeneticEquivalent(itemStack); ISpeciesRoot speciesRoot = AlleleManager.alleleRegistry.getSpeciesRoot(itemStack); if (speciesRoot == null) { return false; } if (slotIndex == SLOT_SPECIMEN) { return true; } IIndividual individual = speciesRoot.getMember(itemStack); return individual != null && individual.isAnalyzed(); }
@Override protected void onFinishTask() { super.onFinishTask(); final Random rand = this.getMachine().getWorld().rand; MachineUtil util = this.getUtil(); final ISpeciesRoot root = AlleleManager.alleleRegistry.getSpeciesRoot(util.getStack(Isolator.SLOT_TARGET)); if (root == null) { return; } final IIndividual individual = root.getMember(util.getStack(Isolator.SLOT_TARGET)); if (individual == null) { return; } IChromosomeType[] karyotype = root.getKaryotype(); IChromosomeType chromosome = karyotype[rand.nextInt(karyotype.length)]; IGenome genome = individual.getGenome(); IAllele allele = rand.nextBoolean() ? genome.getActiveAllele(chromosome) : genome.getInactiveAllele(chromosome); Gene gene = Gene.create(allele, chromosome, root); final ItemStack serum = ItemSequence.create(gene); util.setStack(Isolator.SLOT_RESULUT, serum); util.decreaseStack(Isolator.SLOT_SEQUENCER_VIAL, 1); if (rand.nextFloat() < TARGET_LOSS_CHANCE) { util.decreaseStack(Isolator.SLOT_TARGET, 1); } util.drainTank(Isolator.TANK_ETHANOL, ETHANOL_PER_PROCESS); }
@Nullable public ErrorState isValidSerum() { final ItemStack serum = this.getUtil().getStack(Inoculator.SLOT_SERUM_VIAL); final ItemStack target = this.getUtil().getStack(Inoculator.SLOT_TARGET); final IGene[] genes = Engineering.getGenes(serum); if (genes.length == 0) { return new ErrorState(GeneticsErrorCode.INVALID_SERUM_NO); } if (!genes[0].getSpeciesRoot().isMember(target)) { return new ErrorState(GeneticsErrorCode.INVALID_SERUM_MISMATCH); } final IIndividual individual = genes[0].getSpeciesRoot().getMember(target); if (individual != null) { final IGenome genome = individual.getGenome(); for (final IGene gene : genes) { final IAllele a = genome.getActiveAllele(gene.getChromosome()); final IAllele b = genome.getInactiveAllele(gene.getChromosome()); if (!a.getUID().equals(gene.getAllele().getUID()) || !b.getUID().equals(gene.getAllele().getUID())) { return null; } } } return new ErrorState(GeneticsErrorCode.DEFUNCT_SERUM); }
@Nullable public ErrorState isValidSerum() { final ItemStack serum = this.getUtil().getStack(Splicer.SLOT_SERUM_VIAL); if (serum.isEmpty()) { return null; } final ItemStack target = this.getUtil().getStack(Splicer.SLOT_TARGET); final IGene[] genes = Engineering.getGenes(serum); if (genes.length == 0) { return new ErrorState(GeneticsErrorCode.INVALID_SERUM_NO); } if (!genes[0].getSpeciesRoot().isMember(target)) { return new ErrorState(GeneticsErrorCode.INVALID_SERUM_MISMATCH); } final IIndividual individual = genes[0].getSpeciesRoot().getMember(target); boolean hasAll = true; for (final IGene gene : genes) { if (hasAll) { final IAllele a = individual.getGenome().getActiveAllele(gene.getChromosome()); final IAllele b = individual.getGenome().getInactiveAllele(gene.getChromosome()); hasAll = (hasAll && a.getUID().equals(gene.getAllele().getUID()) && b.getUID().equals(gene.getAllele().getUID())); } } if (hasAll) { return new ErrorState(GeneticsErrorCode.DEFUNCT_SERUM); } return null; }
IIndividual original = speciesRoot.getMember(target); Preconditions.checkNotNull(original); IChromosome[] chromosomes = original.getGenome().getChromosomes();
@Override public void readEntityFromNBT(NBTTagCompound nbttagcompound) { super.readEntityFromNBT(nbttagcompound); IButterfly butterfly = null; if (nbttagcompound.hasKey("BTFLY")) { butterfly = new Butterfly((NBTTagCompound) nbttagcompound.getTag("BTFLY")); } setIndividual(butterfly); if (nbttagcompound.hasKey("PLN")) { NBTTagCompound pollenNBT = nbttagcompound.getCompoundTag("PLN"); ISpeciesRoot root; if (pollenNBT.hasKey("Root")) { root = AlleleManager.alleleRegistry.getSpeciesRoot(pollenNBT.getString("Root")); } else { root = TreeManager.treeRoot; } pollen = root.getMember(pollenNBT); } EnumButterflyState state = EnumButterflyState.VALUES[nbttagcompound.getByte("STATE")]; setState(state); exhaustion = nbttagcompound.getInteger("EXH"); BlockPos home = new BlockPos(nbttagcompound.getInteger("homeX"), nbttagcompound.getInteger("homeY"), nbttagcompound.getInteger("homeZ")); setHomePosAndDistance(home, ModuleLepidopterology.maxDistance); }
public static ItemStack analyse(ItemStack stack, World world, GameProfile username) { if (!stack.isEmpty()) { ItemStack conv = Binnie.GENETICS.getConversionStack(stack).copy(); if (!conv.isEmpty()) { conv.setCount(stack.getCount()); stack = conv; } ISpeciesRoot root = AlleleManager.alleleRegistry.getSpeciesRoot(stack); if (root != null) { final IIndividual ind = root.getMember(stack); ind.analyze(); IBreedingTracker breedingTracker = ind.getGenome().getSpeciesRoot().getBreedingTracker(world, username); breedingTracker.registerBirth(ind); final NBTTagCompound nbttagcompound = new NBTTagCompound(); ind.writeToNBT(nbttagcompound); stack.setTagCompound(nbttagcompound); return stack; } if (stack.getItem() instanceof IItemAnalysable) { return ((IItemAnalysable) stack.getItem()).analyse(stack); } } return stack; }
IIndividual individual = speciesRoot.getMember(specimen);
IDatabasePlugin databasePlugin = root.getSpeciesPlugin(); if (databasePlugin != null) { IIndividual individual = root.getMember(stack); if (individual != null) { if (individual.isAnalyzed()) {
IIndividual individual = speciesRoot.getMember(specimen);