private static void syncBreedingTrackers(EntityPlayer player) { IAlleleRegistry alleleRegistry = AlleleManager.alleleRegistry; Collection<ISpeciesRoot> speciesRoots = alleleRegistry.getSpeciesRoot().values(); for (ISpeciesRoot speciesRoot : speciesRoots) { IBreedingTracker breedingTracker = speciesRoot.getBreedingTracker(player.getEntityWorld(), player.getGameProfile()); breedingTracker.synchToPlayer(player); } }
@Override public final boolean isMutationDiscovered(final IMutation mutation, final IBreedingTracker tracker) { return tracker.isDiscovered(mutation); }
public SpeciesWidget(WidgetManager manager, int xPos, int yPos, EnumFacing facing, int index, boolean active, GuiGeneticFilter gui) { super(manager, xPos, yPos); this.facing = facing; this.index = index; this.active = active; this.gui = gui; ImmutableSet.Builder<IAlleleSpecies> entries = ImmutableSet.builder(); for (ISpeciesRoot root : AlleleManager.alleleRegistry.getSpeciesRoot().values()) { IBreedingTracker tracker = root.getBreedingTracker(manager.minecraft.world, manager.minecraft.player.getGameProfile()); for (String uid : tracker.getDiscoveredSpecies()) { IAllele allele = AlleleManager.alleleRegistry.getAllele(uid); if (allele instanceof IAlleleSpecies) { IAlleleSpecies species = (IAlleleSpecies) allele; entries.add(species); } } } this.entries = entries.build(); }
if (tracker.isResearched(encoded)) { player.sendMessage(new TextComponentTranslation("for.chat.cannotmemorizeagain")); return false; IAlleleSpecies speciesResult = (IAlleleSpecies) encoded.getTemplate()[root.getSpeciesChromosomeType().ordinal()]; tracker.registerSpecies(species0); tracker.registerSpecies(species1); tracker.registerSpecies(speciesResult); tracker.researchMutation(encoded); player.sendMessage(new TextComponentTranslation("for.chat.memorizednote"));
public void tryGrow(Random random, boolean bonemealed) { ITree tree = getTree(); if (tree == null) { return; } int maturity = getRequiredMaturity(world, tree); if (timesTicked < maturity) { if (bonemealed) { timesTicked = maturity; } return; } WorldGenerator generator = tree.getTreeGenerator(world, getPos(), bonemealed); final boolean generated; if (generator instanceof WorldGenBase) { generated = ((WorldGenBase) generator).generate(world, random, getPos(), false); } else { generated = generator.generate(world, random, getPos()); } if (generated) { IBreedingTracker breedingTracker = TreeManager.treeRoot.getBreedingTracker(world, getOwnerHandler().getOwner()); breedingTracker.registerBirth(tree); } }
@Override public NonNullList<ItemStack> getResearchBounty(World world, GameProfile researcher, IIndividual individual, int bountyLevel) { if (world.rand.nextFloat() < bountyLevel / 16.0f) { List<? extends IMutation> allMutations = getRoot().getCombinations(this); if (!allMutations.isEmpty()) { List<IMutation> unresearchedMutations = new ArrayList<>(); IBreedingTracker tracker = individual.getGenome().getSpeciesRoot().getBreedingTracker(world, researcher); for (IMutation mutation : allMutations) { if (!tracker.isResearched(mutation)) { unresearchedMutations.add(mutation); } } IMutation chosenMutation; if (!unresearchedMutations.isEmpty()) { chosenMutation = unresearchedMutations.get(world.rand.nextInt(unresearchedMutations.size())); } else { chosenMutation = allMutations.get(world.rand.nextInt(allMutations.size())); } ItemStack researchNote = AlleleManager.alleleRegistry.getMutationNoteStack(researcher, chosenMutation); NonNullList<ItemStack> bounty = NonNullList.create(); bounty.add(researchNote); return bounty; } } return NonNullList.create(); }
@Override public void synchToPlayer(EntityPlayer player) { if (player instanceof EntityPlayerMP && !(player instanceof FakePlayer)) { IBreedingTracker breedingTracker = getBreedingTracker(player); String modeName = breedingTracker.getModeName(); setModeName(modeName); NBTTagCompound nbttagcompound = new NBTTagCompound(); encodeToNBT(nbttagcompound); PacketGenomeTrackerSync packet = new PacketGenomeTrackerSync(nbttagcompound); NetworkUtil.sendToPlayer(packet, player); } }
@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; }
@Override public void onPacketData(PacketBufferForestry data, EntityPlayer player) throws IOException { NBTTagCompound nbt = data.readCompoundTag(); if (nbt != null) { String type = nbt.getString(BreedingTracker.TYPE_KEY); ISpeciesRoot root = AlleleManager.alleleRegistry.getSpeciesRoot(type); if (root != null) { IBreedingTracker tracker = root.getBreedingTracker(player.getEntityWorld(), player.getGameProfile()); tracker.decodeFromNBT(nbt); MinecraftForge.EVENT_BUS.post(new ForestryEvent.SyncedBreedingTracker(tracker, player)); } } } }
private void displayBreedingStatistics(int x) { textLayout.startPage(); textLayout.drawLine(Translator.translateToLocal("for.gui.speciescount") + ": " + breedingTracker.getSpeciesBred() + "/" + speciesRoot.getSpeciesCount(), x); textLayout.newLine(); textLayout.newLine(); if (breedingTracker instanceof IApiaristTracker) { IApiaristTracker tracker = (IApiaristTracker) breedingTracker; textLayout.drawLine(Translator.translateToLocal("for.gui.queens") + ": " + tracker.getQueenCount(), x); textLayout.newLine(); textLayout.drawLine(Translator.translateToLocal("for.gui.princesses") + ": " + tracker.getPrincessCount(), x); textLayout.newLine(); textLayout.drawLine(Translator.translateToLocal("for.gui.drones") + ": " + tracker.getDroneCount(), x); textLayout.newLine(); } textLayout.endPage(); }
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; }
boolean researched = breedingTracker.isResearched(combination); if (researched) { element.label("+", x + 9, y + 1, 10, 10, GuiElementAlignment.TOP_LEFT, GuiConstants.DEFAULT_STYLE);
private void syncToPlayer(Collection<String> discoveredSpecies, Collection<String> discoveredMutations, Collection<String> researchedMutations) { if (world != null && username != null && username.getName() != null) { EntityPlayer player = world.getPlayerEntityByName(username.getName()); if (player instanceof EntityPlayerMP && !(player instanceof FakePlayer)) { IBreedingTracker breedingTracker = getBreedingTracker(player); String modeName = breedingTracker.getModeName(); setModeName(modeName); NBTTagCompound nbtTagCompound = new NBTTagCompound(); writeToNBT(nbtTagCompound, discoveredSpecies, discoveredMutations, researchedMutations); PacketGenomeTrackerSync packet = new PacketGenomeTrackerSync(nbtTagCompound); NetworkUtil.sendToPlayer(packet, player); for (String species : discoveredSpecies) { SpeciesDiscoveredTrigger.INSTANCE.trigger((EntityPlayerMP) player, AlleleManager.alleleRegistry.getAllele(species)); } } } }
@Override public final boolean isSpeciesDiscovered(final IAlleleSpecies species, final IBreedingTracker tracker) { return tracker.isDiscovered(species); }
@Override public void initialiseServer() { final IBreedingTracker tracker = this.system.getSpeciesRoot().getBreedingTracker(this.getWorld(), this.getUsername()); if (tracker != null) { tracker.synchToPlayer(this.getPlayer()); } }
drawTexturedModalRect(x, y, column, line, 15, 9); boolean researched = breedingTracker.isResearched(combination); if (researched) { fontRenderer.drawString("+", x + 9, y + 1, 0);
@Nullable public IElementGroup createMutationResultant(int x, int y, int width, int height, IMutation mutation, IBreedingTracker breedingTracker) { if (breedingTracker.isDiscovered(mutation)) { IElementGroup element = new PaneLayout(x, y, width, height); IAlyzerPlugin plugin = mutation.getRoot().getAlyzerPlugin(); Map<String, ItemStack> iconStacks = plugin.getIconStacks(); ItemStack firstPartner = iconStacks.get(mutation.getAllele0().getUID()); ItemStack secondPartner = iconStacks.get(mutation.getAllele1().getUID()); element.add(new ItemElement(0, 0, firstPartner), createProbabilityAdd(mutation, 21, 4), new ItemElement(33, 0, secondPartner)); return element; } // Do not display secret undiscovered mutations. if (mutation.isSecret()) { return null; } return createUnknownMutationGroup(x, y, width, height, mutation); }
@Override public void initialiseServer() { for (IBreedingSystem system : Binnie.GENETICS.getActiveSystems()) { ISpeciesRoot root = system.getSpeciesRoot(); if (root != null) { IBreedingTracker tracker = root.getBreedingTracker(getWorld(), getUsername()); if (tracker != null) { tracker.synchToPlayer(getPlayer()); } } } //create slots getWindowInventory().createSlot(0); getWindowInventory().createSlot(1); setupValidators(); }
private static String generateSpeciesListEntry(IAlleleSpecies species, IBreedingTracker tracker) { String discovered = ""; if (tracker.isDiscovered(species)) { discovered = discoveredSymbol; } String blacklisted = ""; if (AlleleManager.alleleRegistry.isBlacklisted(species.getUID())) { blacklisted = blacklistedSymbol; } String notCounted = ""; if (!species.isCounted()) { notCounted = notCountedSymbol; } return speciesListEntry(discovered, blacklisted, notCounted, species.getUID(), species.getAlleleName(), species.getAuthority()); }
@Nullable public IElementGroup createMutation(int x, int y, int width, int height, IMutation mutation, IAllele species, IBreedingTracker breedingTracker) { if (breedingTracker.isDiscovered(mutation)) { PaneLayout element = new PaneLayout(x, y, width, height); ISpeciesRoot speciesRoot = mutation.getRoot(); int speciesIndex = speciesRoot.getSpeciesChromosomeType().ordinal(); IDatabasePlugin plugin = mutation.getRoot().getSpeciesPlugin(); Map<String, ItemStack> iconStacks = plugin.getIndividualStacks(); ItemStack partner = iconStacks.get(mutation.getPartner(species).getUID()); IAllele resultAllele = mutation.getTemplate()[speciesIndex]; ItemStack result = iconStacks.get(resultAllele.getUID()); element.add(new ItemElement(0, 0, partner), new ItemElement(33, 0, result)); createProbabilityArrow(element, mutation, 18, 4, breedingTracker); return element; } // Do not display secret undiscovered mutations. if (mutation.isSecret()) { return null; } return createUnknownMutationGroup(x, y, width, height, mutation, breedingTracker); }