Search in sources :

Example 1 with LeavesProperties

use of com.ferreusveritas.dynamictrees.blocks.LeavesProperties in project Bewitchment by Um-Mitternacht.

the class DynamicTreesCompat method preInit.

public static void preInit() {
    IForgeRegistry<Block> blockRegistry = ForgeRegistries.BLOCKS;
    cypressLeavesProperties = new LeavesProperties(ModObjects.cypress_leaves.getDefaultState(), new ItemStack(ModObjects.cypress_leaves), TreeRegistry.findCellKit(new ResourceLocation("dynamictrees", "conifer")));
    elderLeavesProperties = new LeavesProperties(ModObjects.elder_leaves.getDefaultState(), new ItemStack(ModObjects.elder_leaves));
    juniperLeavesProperties = new LeavesProperties(ModObjects.juniper_leaves.getDefaultState(), new ItemStack(ModObjects.juniper_leaves), TreeRegistry.findCellKit(new ResourceLocation("dynamictrees", "acacia")));
    dragonsbloodLeavesProperties = new LeavesProperties(ModObjects.dragons_blood_leaves.getDefaultState(), new ItemStack(ModObjects.dragons_blood_leaves));
    LeavesPaging.getLeavesBlockForSequence(Bewitchment.MODID, 0, cypressLeavesProperties);
    LeavesPaging.getLeavesBlockForSequence(Bewitchment.MODID, 1, elderLeavesProperties);
    LeavesPaging.getLeavesBlockForSequence(Bewitchment.MODID, 2, juniperLeavesProperties);
    LeavesPaging.getLeavesBlockForSequence(Bewitchment.MODID, 3, dragonsbloodLeavesProperties);
    cypressTree = new TreeCypress();
    elderTree = new TreeElder();
    juniperTree = new TreeJuniper();
    dragonsbloodTree = new TreeDragonsBlood();
    cypressTree.registerSpecies(Species.REGISTRY);
    elderTree.registerSpecies(Species.REGISTRY);
    juniperTree.registerSpecies(Species.REGISTRY);
    dragonsbloodTree.registerSpecies(Species.REGISTRY);
    Species.REGISTRY.getValue(new ResourceLocation("dynamictrees", "oak")).addDropCreator(new DropCreatorFruit(ModObjects.oak_apple_gall, 20));
    ArrayList<Block> treeBlocks = new ArrayList<>();
    cypressTree.getRegisterableBlocks(treeBlocks);
    elderTree.getRegisterableBlocks(treeBlocks);
    juniperTree.getRegisterableBlocks(treeBlocks);
    dragonsbloodTree.getRegisterableBlocks(treeBlocks);
    treeBlocks.addAll(LeavesPaging.getLeavesMapForModId(Bewitchment.MODID).values());
    blockRegistry.registerAll(treeBlocks.toArray(new Block[treeBlocks.size()]));
    ArrayList<Item> treeItems = new ArrayList<>();
    cypressTree.getRegisterableItems(treeItems);
    dragonsbloodTree.getRegisterableItems(treeItems);
    elderTree.getRegisterableItems(treeItems);
    juniperTree.getRegisterableItems(treeItems);
    for (Item toRegister : treeItems) {
        toRegister.setTranslationKey(toRegister.getRegistryName().toString().replace(":", "."));
        ForgeRegistries.ITEMS.register(toRegister);
        Bewitchment.proxy.registerTexture(toRegister, "normal");
    }
    if (ModConfig.compat.replaceSapling) {
        MinecraftForge.EVENT_BUS.register(new SaplingReplacer());
    }
    ResourceLocation seedConvertion = new ResourceLocation(Bewitchment.MODID, "seeds");
    GameRegistry.addShapelessRecipe(new ResourceLocation(Bewitchment.MODID, "cypress"), seedConvertion, cypressTree.getCommonSpecies().getSeedStack(1), Util.get(ModObjects.cypress_sapling), Util.get(ModItems.dirtBucket));
    GameRegistry.addShapelessRecipe(new ResourceLocation(Bewitchment.MODID, "dragonsblood"), seedConvertion, dragonsbloodTree.getCommonSpecies().getSeedStack(1), Util.get(ModObjects.dragons_blood_sapling), Util.get(ModItems.dirtBucket));
}
Also used : ArrayList(java.util.ArrayList) ILeavesProperties(com.ferreusveritas.dynamictrees.api.treedata.ILeavesProperties) LeavesProperties(com.ferreusveritas.dynamictrees.blocks.LeavesProperties) Item(net.minecraft.item.Item) ResourceLocation(net.minecraft.util.ResourceLocation) Block(net.minecraft.block.Block) ItemStack(net.minecraft.item.ItemStack)

Example 2 with LeavesProperties

use of com.ferreusveritas.dynamictrees.blocks.LeavesProperties in project DynamicTrees by DynamicTreesTeam.

the class TreeBuilder method build.

/**
 * Builds a {@link TreeFamily} according to the specs provided. Called last in the builder chain. Repeated calls can
 * be made but be sure to change the Name and Sequence for the tree before creating multiple trees.
 *
 * @return The newly built {@link TreeFamily}
 */
public TreeFamily build() {
    if (name == null) {
        System.err.println("Error: Attempted to build an nameless tree");
        return TreeFamily.NULLFAMILY;
    }
    if (seqNum == -1 && dynamicLeavesProperties == null) {
        System.err.println("Error: Attempted to build an unsequenced tree(or a tree without dynamic leaves properties)");
        return TreeFamily.NULLFAMILY;
    }
    TreeFamily treeFamily = new TreeFamily(name) {

        {
            if (dynamicLeavesProperties == null) {
                dynamicLeavesProperties = new LeavesProperties(primitiveLeavesBlockState) {

                    @Override
                    public int getLightRequirement() {
                        return dynamicLeavesLightRequirement;
                    }

                    public int getSmotherLeavesMax() {
                        return dynamicLeavesSmotherMax;
                    }

                    @Override
                    public ICellKit getCellKit() {
                        return TreeRegistry.findCellKit(dynamicLeavesCellKit);
                    }
                };
                LeavesPaging.getLeavesBlockForSequence(ModConstants.MODID, seqNum, dynamicLeavesProperties);
            }
            this.setPrimitiveLog(primitiveLogBlockState);
            dynamicLeavesProperties.setTree(this);
            if (stickItemStack != null) {
                setStick(stickItemStack);
            }
        }

        @Override
        public void createSpecies() {
            setCommonSpecies(speciesCreator != null ? speciesCreator.create(this) : new Species(name, this, dynamicLeavesProperties));
            if (speciesCreateSeed) {
                getCommonSpecies().generateSeed();
                getCommonSpecies().setupStandardSeedDropping();
            }
            for (ISpeciesCreator creator : extraSpeciesCreators) {
                Species species = creator.create(this);
                extraSpecies.put(species.getRegistryName().getResourcePath(), species);
            }
        }

        @Override
        public void registerSpecies(IForgeRegistry<Species> speciesRegistry) {
            super.registerSpecies(speciesRegistry);
            extraSpecies.values().forEach(s -> speciesRegistry.register(s));
        }

        @Override
        public List<Item> getRegisterableItems(List<Item> itemList) {
            for (Species species : extraSpecies.values()) {
                // Since we generated the species internally we need to let the seed out to be registered.
                Seed seed = species.getSeed();
                if (seed != Seed.NULLSEED) {
                    itemList.add(seed);
                }
            }
            return super.getRegisterableItems(itemList);
        }
    };
    return treeFamily;
}
Also used : LeavesProperties(com.ferreusveritas.dynamictrees.blocks.LeavesProperties) ILeavesProperties(com.ferreusveritas.dynamictrees.api.treedata.ILeavesProperties) Item(net.minecraft.item.Item) Seed(com.ferreusveritas.dynamictrees.items.Seed) IForgeRegistry(net.minecraftforge.registries.IForgeRegistry) TreeFamily(com.ferreusveritas.dynamictrees.trees.TreeFamily) ArrayList(java.util.ArrayList) List(java.util.List) Species(com.ferreusveritas.dynamictrees.trees.Species) ICellKit(com.ferreusveritas.dynamictrees.api.cells.ICellKit)

Aggregations

ILeavesProperties (com.ferreusveritas.dynamictrees.api.treedata.ILeavesProperties)2 LeavesProperties (com.ferreusveritas.dynamictrees.blocks.LeavesProperties)2 ArrayList (java.util.ArrayList)2 Item (net.minecraft.item.Item)2 ICellKit (com.ferreusveritas.dynamictrees.api.cells.ICellKit)1 Seed (com.ferreusveritas.dynamictrees.items.Seed)1 Species (com.ferreusveritas.dynamictrees.trees.Species)1 TreeFamily (com.ferreusveritas.dynamictrees.trees.TreeFamily)1 List (java.util.List)1 Block (net.minecraft.block.Block)1 ItemStack (net.minecraft.item.ItemStack)1 ResourceLocation (net.minecraft.util.ResourceLocation)1 IForgeRegistry (net.minecraftforge.registries.IForgeRegistry)1