@Override public boolean canBearFruit() { return genome.getPrimary().getSuitableFruit().contains(genome.getFruitProvider().getFamily()); }
@SideOnly(Side.CLIENT) private ILeafSpriteProvider getLeafSpriteProvider() { if (species != null) { return species.getLeafSpriteProvider(); } else { IAlleleTreeSpecies oakSpecies = TreeDefinition.Oak.getIndividual().getGenome().getPrimary(); return oakSpecies.getLeafSpriteProvider(); } }
@Override public EnumPlantType getPlantType(IBlockAccess world, BlockPos pos) { return genome.getPrimary().getPlantType(); }
public static void parse(LocalizedConfiguration config) { config.setCategoryComment(CONFIG_CATEGORY_TREE, CONFIG_COMMENT); config.setCategoryComment(CONFIG_CATEGORY_TREE + ".global", "All options defined in the global category are used for all trees."); GLOBAL.parseConfig(config); for (IAllele treeAllele : AlleleManager.alleleRegistry.getRegisteredAlleles(EnumTreeChromosome.SPECIES)) { if (!(treeAllele instanceof IAlleleTreeSpecies)) { continue; } IAlleleTreeSpecies treeSpecies = (IAlleleTreeSpecies) treeAllele; configs.put(treeSpecies.getUID(), new TreeConfig(treeSpecies.getUID(), treeSpecies.getRarity()).parseConfig(config)); } }
private static void generateBiomeCache(World world, Random rand) { for (IAlleleTreeSpecies species : getSpecies()) { IAllele[] template = TreeManager.treeRoot.getTemplate(species); ITreeGenome genome = TreeManager.treeRoot.templateAsGenome(template); ITree tree = TreeManager.treeRoot.getTree(world, genome); String treeUID = genome.getPrimary().getUID(); IGrowthProvider growthProvider = species.getGrowthProvider(); for (Biome biome : Biome.REGISTRY) { Set<ITree> trees = biomeCache.computeIfAbsent(biome.getRegistryName(), k -> new HashSet<>()); if (growthProvider.isBiomeValid(tree, biome) && TreeConfig.isValidBiome(treeUID, biome)) { trees.add(tree); } } } } }
final int th2 = 18; final IBreedingSystem syst = Binnie.GENETICS.getSystem(TreeManager.treeRoot); new ControlText(contents, new Area(w2, y, w3, th), treeSpecies.getPlantType().toString(), TextJustification.MIDDLE_LEFT); y += th; new ControlText(contents, new Area(0, y, w2, th), I18N.localise("binniecore.gui.temperature.short") + " : ", TextJustification.MIDDLE_RIGHT); new ControlText(contents, new Area(w2, y, w3, th), treeSpecies.getTemperature().getName(), TextJustification.MIDDLE_LEFT); y += th; Minecraft minecraft = Minecraft.getMinecraft(); World world = minecraft.world; TextureMap map = minecraft.getTextureMapBlocks(); ILeafSpriteProvider spriteProvider = treeSpecies.getLeafSpriteProvider(); TextureAtlasSprite leaf = map.getAtlasSprite(spriteProvider.getSprite(false, false).toString()); int leafColour = spriteProvider.getColor(false); if (fruitSprite != null && !treeSpecies.getUID().equals("forestry.treeOak")) { TextureAtlasSprite fruit = map.getAtlasSprite(fruitSprite.toString()); int fruitColour = fruitProvider.getColour(genome, world, BlockPos.ORIGIN, 100); ItemStack log = treeSpecies.getWoodProvider().getWoodStack(); if (log.isEmpty()) { new ControlText(contents, new Area(0, y, w2, th2), I18N.localise("extratrees.gui.database.log") + " : ", TextJustification.MIDDLE_RIGHT);
IAlleleTreeSpecies primarySpecies = tree.getGenome().getPrimary(); IAlleleTreeSpecies species = mode == DatabaseMode.ACTIVE ? primarySpecies : tree.getGenome().getSecondary(); ITextStyle speciesStyle = GuiElementFactory.INSTANCE.getStateStyle(species.isDominant()); container.addLine(Translator.translateToLocal("for.gui.native"), Translator.translateToLocal("for.gui." + tree.getGenome().getPrimary().getPlantType().toString().toLowerCase(Locale.ENGLISH)), species.isDominant()); List<IFruitFamily> families = new ArrayList<>(tree.getGenome().getPrimary().getSuitableFruit()); if (!species.getSuitableFruit().contains(fruit.getProvider().getFamily()) && fruit != AlleleFruits.fruitNone) { strike = TextFormatting.STRIKETHROUGH.toString();
public final String getUID() { return species.getUID(); }
@Override public Collection<IAlleleSpecies> getTreesThatHaveWood(final ItemStack wood, final boolean master, final World world, final GameProfile player) { final Collection<IAlleleSpecies> set = master ? this.getAllSpecies() : this.getDiscoveredSpecies(world, player); final List<IAlleleSpecies> found = new ArrayList<>(); for (final IAlleleSpecies species : set) { IAlleleTreeSpecies tSpecies = (IAlleleTreeSpecies) species; ITreeGenome genome = TreeManager.treeRoot.templateAsGenome(TreeManager.treeRoot.getTemplate(tSpecies)); IAlleleTreeSpecies treeSpecies = genome.getPrimary(); final ItemStack woodStack = treeSpecies.getWoodProvider().getWoodStack(); if (woodStack.isItemEqual(wood)) { found.add(species); } } return found; }
public final String getUnlocalizedName() { return species.getUnlocalizedName(); }
@Override public boolean isBiomeValid(ITree tree, Biome biome) { EnumTemperature biomeTemperature = EnumTemperature.getFromBiome(biome); EnumHumidity biomeHumidity = EnumHumidity.getFromValue(biome.getRainfall()); ITreeGenome genome = tree.getGenome(); if (temperature == null) { temperature = genome.getPrimary().getTemperature(); } if (humidity == null) { humidity = genome.getPrimary().getHumidity(); } return AlleleManager.climateHelper.isWithinLimits(biomeTemperature, biomeHumidity, temperature, temperatureTolerance, humidity, humidityTolerance); }
IBlockState defaultLeaves = null; if (isFruitLeaf) { defaultLeaves = ModuleArboriculture.getBlocks().getDefaultLeavesFruit(primary.getUID()); defaultLeaves = ModuleArboriculture.getBlocks().getDefaultLeaves(primary.getUID()); for (ILeafTickHandler tickHandler : primary.getRoot().getLeafTickHandlers()) { if (tickHandler.onRandomLeafTick(tree, world, rand, getPos(), isDestroyed)) { return;
@Override public boolean setLeaves(World world, @Nullable GameProfile owner, BlockPos pos, Random rand) { return genome.getPrimary().getGenerator().setLeaves(genome, world, owner, pos, rand); }
IAlleleTreeSpecies secondary = genome.getSecondary(); if (!isPureBred(EnumTreeChromosome.SPECIES)) { list.add(TextFormatting.BLUE + Translator.translateToLocal("for.trees.hybrid").replaceAll("%PRIMARY", primary.getAlleleName()).replaceAll("%SECONDARY", secondary.getAlleleName()));
int speciesDominance0 = guiAlyzer.getColorCoding(tree.getGenome().getPrimary().isDominant()); int speciesDominance1 = guiAlyzer.getColorCoding(tree.getGenome().getSecondary().isDominant()); textLayout.drawLine(Translator.translateToLocal("for.gui." + tree.getGenome().getPrimary().getPlantType().toString().toLowerCase(Locale.ENGLISH)), GuiAlyzer.COLUMN_1, speciesDominance0); textLayout.drawLine(Translator.translateToLocal("for.gui." + tree.getGenome().getSecondary().getPlantType().toString().toLowerCase(Locale.ENGLISH)), GuiAlyzer.COLUMN_2, speciesDominance1); List<IFruitFamily> families0 = new ArrayList<>(tree.getGenome().getPrimary().getSuitableFruit()); List<IFruitFamily> families1 = new ArrayList<>(tree.getGenome().getSecondary().getSuitableFruit()); if (!tree.getGenome().getSecondary().getSuitableFruit().contains(fruit1.getProvider().getFamily()) && fruit1 != AlleleFruits.fruitNone) { strike = TextFormatting.STRIKETHROUGH.toString();
@Nullable public String getSpeciesUID() { if (species == null) { return null; } return species.getUID(); }
private static Collection<IAlleleSpecies> getTreesThatMakePlanks(ItemStack fruit, boolean master, World world, GameProfile player) { if (fruit == null) { return new ArrayList<>(); } ITreeRoot treeRoot = TreeManager.treeRoot; IBreedingSystem system = Binnie.GENETICS.getSystem(treeRoot); final Collection<IAlleleSpecies> set = master ? system.getAllSpecies() : system.getDiscoveredSpecies(world, player); final List<IAlleleSpecies> found = new ArrayList<>(); for (final IAlleleSpecies species : set) { final IAlleleTreeSpecies tSpecies = (IAlleleTreeSpecies) species; ITreeGenome genome = treeRoot.templateAsGenome(treeRoot.getTemplate(tSpecies)); IAlleleTreeSpecies treeSpecies = genome.getPrimary(); final ItemStack woodStack = treeSpecies.getWoodProvider().getWoodStack(); ItemStack plankProduct = LumbermillRecipeManager.getPlankProduct(woodStack, world); if (!plankProduct.isEmpty() && fruit.isItemEqual(plankProduct)) { found.add(species); } } return found; } }
Set<ITree> trees = biomeCache.computeIfAbsent(biome.getRegistryName(), k -> new HashSet<>()); for (ITree tree : trees) { String treeUID = tree.getGenome().getPrimary().getUID(); if (!TreeConfig.isValidDimension(treeUID, world.provider.getDimension())) { continue; if (TreeConfig.getSpawnRarity(species.getUID()) * globalRarity >= rand.nextFloat()) { pos = getValidPos(world, x, z, tree); if (species.getGrowthProvider().canSpawn(tree, world, pos)) { if (TreeGenHelper.generateTree(tree, world, pos)) { return;
public String getUnlocalizedName() { ITree tree = getTree(); if (tree == null) { return "for.leaves.corrupted"; } return tree.getGenome().getPrimary().getUnlocalizedName(); }
@Override public WorldGenerator getTreeGenerator(World world, BlockPos pos, boolean wasBonemealed) { return genome.getPrimary().getGenerator().getWorldGenerator(this); }