package com.acethewildfire.acesbs.block;

import com.acethewildfire.acesbs.world.tree.ModBlockSaplingGenerator;
import net.minecraft.block.*;
import net.minecraft.block.enums.NoteBlockInstrument;
import net.minecraft.block.piston.PistonBehavior;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.sound.BlockSoundGroup;

public class FireOakBlocks {
    public static final Block FIRE_OAK_LOG = ModBlocks.registerBlock("fire_oak_log",
            properties -> new PillarBlock(properties.mapColor(MapColor.DARK_RED).sounds(BlockSoundGroup.WOOD)));
    public static final Block FIRE_OAK_WOOD = ModBlocks.registerBlock("fire_oak_wood",
            properties -> new PillarBlock(properties.mapColor(MapColor.DARK_RED).instrument(NoteBlockInstrument.BASS).strength(2.0F).sounds(BlockSoundGroup.WOOD)));
    public static final Block STRIPPED_FIRE_OAK_LOG = ModBlocks.registerBlock("stripped_fire_oak_log",
            properties -> new PillarBlock(properties.mapColor(MapColor.DARK_RED).instrument(NoteBlockInstrument.BASS).strength(2.0F).sounds(BlockSoundGroup.WOOD)));
    public static final Block STRIPPED_FIRE_OAK_WOOD = ModBlocks.registerBlock("stripped_fire_oak_wood",
            properties -> new PillarBlock(properties.mapColor(MapColor.DARK_RED).instrument(NoteBlockInstrument.BASS).strength(2.0F).sounds(BlockSoundGroup.WOOD)));
    public static final Block FIRE_OAK_LEAVES = ModBlocks.registerBlock("fire_oak_leaves",
            properties -> new UntintedParticleLeavesBlock(0.02f, ParticleTypes.CRIMSON_SPORE, properties.mapColor(MapColor.DARK_RED).strength(0.2F).ticksRandomly().sounds(BlockSoundGroup.GRASS).nonOpaque().allowsSpawning(Blocks::canSpawnOnLeaves).suffocates(Blocks::never).blockVision(Blocks::never).pistonBehavior(PistonBehavior.DESTROY).solidBlock(Blocks::never)));
    public static final Block FIRE_OAK_SAPLING = ModBlocks.registerBlock("fire_oak_sapling",
            properties -> new SaplingBlock(ModBlockSaplingGenerator.FIRE_OAK, properties.mapColor(MapColor.DARK_RED).noCollision().ticksRandomly().breakInstantly().sounds(BlockSoundGroup.GRASS).pistonBehavior(PistonBehavior.DESTROY)));
    public static final Block POTTED_FIRE_OAK_SAPLING = ModBlocks.registerBlock("potted_fire_oak_sapling", properties -> new FlowerPotBlock(FIRE_OAK_SAPLING, properties.breakInstantly().nonOpaque().pistonBehavior(PistonBehavior.DESTROY)));
    public static final Block FIRE_OAK_PLANKS = ModBlocks.registerBlock("fire_oak_planks",
            properties -> new Block(
                    properties
                            .mapColor(MapColor.DARK_RED)
                            .instrument(NoteBlockInstrument.BASS)
                            .strength(2.0F, 3.0F)
                            .sounds(BlockSoundGroup.WOOD)
                            
            ));
    public static final Block FIRE_OAK_STAIRS = ModBlocks.registerBlock("fire_oak_stairs",
            properties -> new StairsBlock(FIRE_OAK_PLANKS.getDefaultState(),
                    properties
                            .mapColor(MapColor.DARK_RED)
                            .strength(2.0F, 3.0F)
                            .sounds(BlockSoundGroup.WOOD)
                            
            ));
    public static final Block FIRE_OAK_SLAB = ModBlocks.registerBlock("fire_oak_slab",
            properties -> new SlabBlock(
                    properties
                            .mapColor(MapColor.DARK_RED)
                            .strength(2.0F, 3.0F)
                            .sounds(BlockSoundGroup.WOOD)
                            
            ));
    public static final Block FIRE_OAK_BUTTON = ModBlocks.registerBlock("fire_oak_button",
            properties -> new ButtonBlock(BlockSetType.BIRCH, 10,
                    properties
                            .mapColor(MapColor.DARK_RED)
                            .strength(2.0F, 3.0F)
                            .sounds(BlockSoundGroup.WOOD)
                            .noCollision()
            ));
    public static final Block FIRE_OAK_PRESSURE_PLATE = ModBlocks.registerBlock("fire_oak_pressure_plate",
            properties -> new PressurePlateBlock(BlockSetType.BIRCH,
                    properties
                            .mapColor(MapColor.DARK_RED)
                            .strength(2.0F, 3.0F)
                            .sounds(BlockSoundGroup.WOOD)
                            
            ));
    public static final Block FIRE_OAK_FENCE = ModBlocks.registerBlock("fire_oak_fence",
            properties -> new FenceBlock(
                    properties
                            .mapColor(MapColor.DARK_RED)
                            .strength(2.0F, 3.0F)
                            .sounds(BlockSoundGroup.WOOD)
                            
            ));
    public static final Block FIRE_OAK_FENCE_GATE = ModBlocks.registerBlock("fire_oak_fence_gate",
            properties -> new FenceGateBlock(WoodType.BIRCH,
                    properties
                            .mapColor(MapColor.DARK_RED)
                            .strength(2.0F, 3.0F)
                            .sounds(BlockSoundGroup.WOOD)
                            
            ));
    public static final Block FIRE_OAK_WALL = ModBlocks.registerBlock("fire_oak_wall",
            properties -> new WallBlock(
                    properties
                            .mapColor(MapColor.DARK_RED)
                            .strength(2.0F, 3.0F)
                            .sounds(BlockSoundGroup.WOOD)
                            
            ));
    public static final Block FIRE_OAK_DOOR = ModBlocks.registerBlock("fire_oak_door",
            properties -> new DoorBlock(BlockSetType.BIRCH,
                    properties
                            .mapColor(MapColor.DARK_RED)
                            .strength(2.0F, 3.0F)
                            .sounds(BlockSoundGroup.WOOD)
                            .nonOpaque()
            ));
    public static final Block FIRE_OAK_TRAPDOOR = ModBlocks.registerBlock("fire_oak_trapdoor",
            properties -> new TrapdoorBlock(BlockSetType.BIRCH,
                    properties
                            .mapColor(MapColor.DARK_RED)
                            .strength(2.0F, 3.0F)
                            .sounds(BlockSoundGroup.WOOD)
                            .nonOpaque()
            ));

    public static void registerFireOakBlocks() {
        // Do nothing, this just makes sure the blocks get registered
    }
}
