@Override public EnumPlantType getPlantType(IBlockAccess world, BlockPos pos) { return genome.getPrimary().getPlantType(); }
@Override public boolean setLeaves(World world, @Nullable GameProfile owner, BlockPos pos, Random rand) { return genome.getPrimary().getGenerator().setLeaves(genome, world, owner, pos, rand); }
@Override public WorldGenerator getTreeGenerator(World world, BlockPos pos, boolean wasBonemealed) { return genome.getPrimary().getGenerator().getWorldGenerator(this); }
@Override public EnumPlantType getPlantType() { return tree.getGenome().getPrimary().getPlantType(); }
@Override public boolean setLogBlock(World world, BlockPos pos, EnumFacing facing) { return genome.getPrimary().getGenerator().setLogBlock(genome, world, pos, facing); }
@Override public boolean canBearFruit() { return genome.getPrimary().getSuitableFruit().contains(genome.getFruitProvider().getFamily()); }
public String getUnlocalizedName() { ITree tree = getTree(); if (tree == null) { return "for.leaves.corrupted"; } return tree.getGenome().getPrimary().getUnlocalizedName(); }
@Override @SideOnly(Side.CLIENT) public int colorMultiplier(IBlockState state, @Nullable IBlockAccess worldIn, @Nullable BlockPos pos, int tintIndex) { TreeDefinition treeDefinition = getTreeDefinition(state); if (treeDefinition == null) { treeDefinition = TreeDefinition.Oak; } ITreeGenome genome = treeDefinition.getGenome(); ILeafSpriteProvider spriteProvider = genome.getPrimary().getLeafSpriteProvider(); return spriteProvider.getColor(false); } }
@Override public EnumPlantType getPlantType() { ITree tree = getTree(); if (tree == null) { return EnumPlantType.Plains; } return tree.getGenome().getPrimary().getPlantType(); }
@Override @SideOnly(Side.CLIENT) public int colorMultiplier(IBlockState state, @Nullable IBlockAccess worldIn, @Nullable BlockPos pos, int tintIndex) { ETTreeDefinition treeDefinition = getTreeDefinition(state); if (treeDefinition == null) { treeDefinition = ETTreeDefinition.OrchardApple; } ITreeGenome genome = treeDefinition.getGenome(); ILeafSpriteProvider spriteProvider = genome.getPrimary().getLeafSpriteProvider(); return spriteProvider.getColor(false); } }
@Override public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos) { TileSapling sapling = TileUtil.getTile(world, pos, TileSapling.class); if (sapling != null && sapling.getTree() != null) { state = state.withProperty(TREE, sapling.getTree().getGenome().getPrimary()); } else { state = state.withProperty(TREE, TreeDefinition.Oak.getGenome().getPrimary()); } return state; }
@Override public boolean allowsFruitBlocks() { IFruitProvider provider = getGenome().getFruitProvider(); if (!provider.requiresFruitBlocks()) { return false; } Collection<IFruitFamily> suitable = genome.getPrimary().getSuitableFruit(); return suitable.contains(provider.getFamily()); }
@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); }
@Override public ModelResourceLocation getModelLocation(ItemStack stack) { IAlleleTreeSpecies treeSpecies; if (!stack.hasTagCompound()) { treeSpecies = TreeDefinition.Oak.getGenome().getPrimary(); } else { treeSpecies = getSpecies(stack); } return treeSpecies.getGermlingModel(type); } }
@Override public boolean trySpawnFruitBlock(World world, Random rand, BlockPos pos) { IFruitProvider provider = getGenome().getFruitProvider(); Collection<IFruitFamily> suitable = genome.getPrimary().getSuitableFruit(); return suitable.contains(provider.getFamily()) && provider.trySpawnFruitBlock(getGenome(), world, rand, pos); }
@Override @SideOnly(Side.CLIENT) public int colorMultiplier(IBlockState state, @Nullable IBlockAccess worldIn, @Nullable BlockPos pos, int tintIndex) { TreeDefinition treeDefinition = state.getValue(getVariant()); ITreeGenome genome = treeDefinition.getGenome(); if (tintIndex == BlockAbstractLeaves.FRUIT_COLOR_INDEX) { IFruitProvider fruitProvider = genome.getFruitProvider(); return fruitProvider.getDecorativeColor(); } ILeafSpriteProvider spriteProvider = genome.getPrimary().getLeafSpriteProvider(); return spriteProvider.getColor(false); } }
@SideOnly(Side.CLIENT) private ILeafSpriteProvider getLeafSpriteProvider() { if (species != null) { return species.getLeafSpriteProvider(); } else { IAlleleTreeSpecies oakSpecies = TreeDefinition.Oak.getIndividual().getGenome().getPrimary(); return oakSpecies.getLeafSpriteProvider(); } }
private Key createEmptyKey(TextureMap map, boolean fancy) { IAlleleTreeSpecies oakSpecies = TreeDefinition.Oak.getIndividual().getGenome().getPrimary(); ResourceLocation spriteLocation = oakSpecies.getLeafSpriteProvider().getSprite(false, fancy); TextureAtlasSprite sprite = map.getAtlasSprite(spriteLocation.toString()); return new Key(sprite, null, fancy); }
@Override public String getItemStackDisplayName(ItemStack itemStack) { int meta = itemStack.getMetadata(); BlockETDecorativeLeaves block = getBlock(); ETTreeDefinition treeDefinition = block.getTreeType(meta); if (treeDefinition == null || treeDefinition.getGenome() == null) { return I18N.localise(ModId.EXTRA_TREES, "grammar.leaves.type"); } String unlocalizedSpeciesName = treeDefinition.getGenome().getPrimary().getUnlocalizedName(); return ItemBlockLeaves.getDisplayName(unlocalizedSpeciesName); }
@Override protected void bakeBlock(BlockDefaultLeaves block, Key key, IModelBaker baker, boolean inventory) { TreeDefinition treeDefinition = key.definition; TextureMap map = Minecraft.getMinecraft().getTextureMapBlocks(); ITreeGenome genome = treeDefinition.getGenome(); IAlleleTreeSpecies species = genome.getPrimary(); ILeafSpriteProvider leafSpriteProvider = species.getLeafSpriteProvider(); ResourceLocation leafSpriteLocation = leafSpriteProvider.getSprite(false, key.fancy); TextureAtlasSprite leafSprite = map.getAtlasSprite(leafSpriteLocation.toString()); // Render the plain leaf block. baker.addBlockModel(null, leafSprite, BlockAbstractLeaves.FOLIAGE_COLOR_INDEX); // Set the particle sprite baker.setParticleSprite(leafSprite); }