From 073b4738401ae7a6343e6c62eeebe75c28fc2950 Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 18 Oct 2021 19:38:31 +0200 Subject: [PATCH] Preparing common Tags (paulevsGitch/BetterEnd#303) --- src/main/java/ru/bclib/api/TagAPI.java | 26 +- .../WoodenComplexMaterial.java | 722 +++++++++--------- 2 files changed, 387 insertions(+), 361 deletions(-) diff --git a/src/main/java/ru/bclib/api/TagAPI.java b/src/main/java/ru/bclib/api/TagAPI.java index c3b04638..215c060b 100644 --- a/src/main/java/ru/bclib/api/TagAPI.java +++ b/src/main/java/ru/bclib/api/TagAPI.java @@ -1,7 +1,12 @@ package ru.bclib.api; +import java.util.Map; +import java.util.Set; +import java.util.function.Supplier; + import com.google.common.collect.Maps; import com.google.common.collect.Sets; + import net.fabricmc.fabric.api.tag.TagRegistry; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; @@ -18,10 +23,6 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import ru.bclib.BCLib; -import java.util.Map; -import java.util.Set; -import java.util.function.Supplier; - public class TagAPI { private static final Map> TAGS_BLOCK = Maps.newConcurrentMap(); private static final Map> TAGS_ITEM = Maps.newConcurrentMap(); @@ -33,9 +34,14 @@ public class TagAPI { public static final Tag.Named BLOCK_END_GROUND = makeBlockTag(BCLib.MOD_ID, "end_ground"); public static final Tag.Named BLOCK_CHEST = makeCommonBlockTag("chest"); + public static final Tag.Named BLOCK_WOODEN_CHEST = makeCommonBlockTag("wooden_chests"); + public static final Tag.Named BLOCK_BARREL = makeCommonBlockTag("barrel"); + public static final Tag.Named BLOCK_WOODEN_BARREL = makeCommonBlockTag("wooden_barrels"); public static final Tag.Named BLOCK_END_STONES = makeCommonBlockTag("end_stones"); public static final Tag.Named BLOCK_NETHER_STONES = makeCommonBlockTag("nether_stones"); - public static final Tag.Named BLOCK_WORKBENCHES = makeCommonBlockTag("workbenches"); + public static final Tag.Named BLOCK_WORKBENCHES = makeCommonBlockTag("workbench"); + public static final Tag.Named BLOCK_SAPLINGS = makeCommonBlockTag("saplings"); + public static final Tag.Named BLOCK_LEAVES = makeCommonBlockTag("leaves"); public static final Tag.Named BLOCK_DRAGON_IMMUNE = getMCBlockTag("dragon_immune"); @@ -46,11 +52,17 @@ public class TagAPI { // Item Tags public static final Tag.Named ITEM_CHEST = makeCommonItemTag("chest"); + public static final Tag.Named ITEM_WOODEN_CHEST = makeCommonItemTag("wooden_chests"); + public static final Tag.Named ITEM_BARREL = makeCommonItemTag("barrel"); + public static final Tag.Named ITEM_WOODEN_BARREL = makeCommonItemTag("wooden_barrels"); public static final Tag.Named ITEM_IRON_INGOTS = makeCommonItemTag("iron_ingots"); public static final Tag.Named ITEM_FURNACES = makeCommonItemTag("furnaces"); - public static final Tag.Named ITEM_WORKBENCHES = makeCommonItemTag("workbenches"); + public static final Tag.Named ITEM_WORKBENCHES = makeCommonItemTag("workbench"); public final static Tag.Named ITEM_HAMMERS = makeCommonItemTag("hammers"); - + public static final Tag.Named ITEM_SAPLINGS = makeCommonItemTag("saplings"); + public static final Tag.Named ITEM_LEAVES = makeCommonItemTag("leaves"); + + /** * Get or create {@link Tag.Named}. * diff --git a/src/main/java/ru/bclib/complexmaterials/WoodenComplexMaterial.java b/src/main/java/ru/bclib/complexmaterials/WoodenComplexMaterial.java index 97a54004..ba329585 100644 --- a/src/main/java/ru/bclib/complexmaterials/WoodenComplexMaterial.java +++ b/src/main/java/ru/bclib/complexmaterials/WoodenComplexMaterial.java @@ -39,358 +39,372 @@ import ru.bclib.complexmaterials.entry.RecipeEntry; import ru.bclib.recipes.GridRecipe; public class WoodenComplexMaterial extends ComplexMaterial { - public static final ResourceLocation MATERIAL_ID = BCLib.makeID("wooden_material"); - - public static final String BLOCK_CRAFTING_TABLE = "crafting_table"; - public static final String BLOCK_STRIPPED_BARK = "stripped_bark"; - public static final String BLOCK_STRIPPED_LOG = "stripped_log"; - public static final String BLOCK_PRESSURE_PLATE = "plate"; - public static final String BLOCK_BOOKSHELF = "bookshelf"; - public static final String BLOCK_COMPOSTER = "composter"; - public static final String BLOCK_TRAPDOOR = "trapdoor"; - public static final String BLOCK_BARREL = "barrel"; - public static final String BLOCK_BUTTON = "button"; - public static final String BLOCK_LADDER = "ladder"; - public static final String BLOCK_PLANKS = "planks"; - public static final String BLOCK_STAIRS = "stairs"; - public static final String BLOCK_CHEST = "chest"; - public static final String BLOCK_FENCE = "fence"; - public static final String BLOCK_BARK = "bark"; - public static final String BLOCK_DOOR = "door"; - public static final String BLOCK_GATE = "gate"; - public static final String BLOCK_SIGN = "sign"; - public static final String BLOCK_SLAB = "slab"; - public static final String BLOCK_LOG = "log"; - - public static final String TAG_LOGS = "logs"; - - public final MaterialColor planksColor; - public final MaterialColor woodColor; - - public WoodenComplexMaterial(String modID, String baseName, String receipGroupPrefix, MaterialColor woodColor, MaterialColor planksColor) { - super(modID, baseName, receipGroupPrefix); - this.planksColor = planksColor; - this.woodColor = woodColor; - } - - @Override - protected FabricBlockSettings getBlockSettings() { - return FabricBlockSettings.copyOf(Blocks.OAK_PLANKS).materialColor(planksColor); - } - - @Override - public ResourceLocation getMaterialID() { - return MATERIAL_ID; - } - - @Override - protected void initTags() { - addBlockTag(TagAPI.makeBlockTag(getModID(), getBaseName() + "_logs")); - addItemTag(TagAPI.makeItemTag(getModID(), getBaseName() + "_logs")); - } - - @Override - protected void initDefault(FabricBlockSettings blockSettings, FabricItemSettings itemSettings) { - initBase(blockSettings, itemSettings); - initStorage(blockSettings, itemSettings); - initDecorations(blockSettings, itemSettings); - } - - final protected void initBase(FabricBlockSettings blockSettings, FabricItemSettings itemSettings) { - Tag.Named tagBlockLog = getBlockTag(TAG_LOGS); - Tag.Named tagItemLog = getItemTag(TAG_LOGS); - - addBlockEntry( - new BlockEntry(BLOCK_STRIPPED_LOG, (complexMaterial, settings) -> { - return new BaseRotatedPillarBlock(settings); - }) - .setBlockTags(BlockTags.LOGS, BlockTags.LOGS_THAT_BURN, tagBlockLog) - .setItemTags(ItemTags.LOGS, ItemTags.LOGS_THAT_BURN, tagItemLog) - ); - addBlockEntry( - new BlockEntry(BLOCK_STRIPPED_BARK, (complexMaterial, settings) -> { - return new BaseBarkBlock(settings); - }) - .setBlockTags(BlockTags.LOGS, BlockTags.LOGS_THAT_BURN, tagBlockLog) - .setItemTags(ItemTags.LOGS, ItemTags.LOGS_THAT_BURN, tagItemLog) - ); - - addBlockEntry( - new BlockEntry(BLOCK_LOG, (complexMaterial, settings) -> { - return new BaseStripableLogBlock(woodColor, getBlock(BLOCK_STRIPPED_LOG)); - }) - .setBlockTags(BlockTags.LOGS, BlockTags.LOGS_THAT_BURN, tagBlockLog) - .setItemTags(ItemTags.LOGS, ItemTags.LOGS_THAT_BURN, tagItemLog) - ); - addBlockEntry( - new BlockEntry(BLOCK_BARK, (complexMaterial, settings) -> { - return new StripableBarkBlock(woodColor, getBlock(BLOCK_STRIPPED_BARK)); - }) - .setBlockTags(BlockTags.LOGS, BlockTags.LOGS_THAT_BURN, tagBlockLog) - .setItemTags(ItemTags.LOGS, ItemTags.LOGS_THAT_BURN, tagItemLog) - ); - addBlockEntry(new BlockEntry(BLOCK_PLANKS, (complexMaterial, settings) -> { - return new BaseBlock(settings); - }).setBlockTags(BlockTags.PLANKS).setItemTags(ItemTags.PLANKS)); - - addBlockEntry(new BlockEntry(BLOCK_STAIRS, (complexMaterial, settings) -> { - return new BaseStairsBlock(getBlock(BLOCK_PLANKS)); - }).setBlockTags(BlockTags.WOODEN_STAIRS, BlockTags.STAIRS).setItemTags(ItemTags.WOODEN_STAIRS, ItemTags.STAIRS)); - addBlockEntry(new BlockEntry(BLOCK_SLAB, (complexMaterial, settings) -> { - return new BaseSlabBlock(getBlock(BLOCK_PLANKS)); - }).setBlockTags(BlockTags.WOODEN_SLABS, BlockTags.SLABS).setItemTags(ItemTags.WOODEN_SLABS, ItemTags.SLABS)); - addBlockEntry(new BlockEntry(BLOCK_FENCE, (complexMaterial, settings) -> { - return new BaseFenceBlock(getBlock(BLOCK_PLANKS)); - }).setBlockTags(BlockTags.FENCES, BlockTags.WOODEN_FENCES).setItemTags(ItemTags.FENCES, ItemTags.WOODEN_FENCES)); - addBlockEntry(new BlockEntry(BLOCK_GATE, (complexMaterial, settings) -> { - return new BaseGateBlock(getBlock(BLOCK_PLANKS)); - }).setBlockTags(BlockTags.FENCE_GATES)); - addBlockEntry(new BlockEntry(BLOCK_BUTTON, (complexMaterial, settings) -> { - return new BaseWoodenButtonBlock(getBlock(BLOCK_PLANKS)); - }).setBlockTags(BlockTags.BUTTONS, BlockTags.WOODEN_BUTTONS).setItemTags(ItemTags.BUTTONS, ItemTags.WOODEN_BUTTONS)); - addBlockEntry(new BlockEntry(BLOCK_PRESSURE_PLATE, (complexMaterial, settings) -> { - return new WoodenPressurePlateBlock(getBlock(BLOCK_PLANKS)); - }).setBlockTags(BlockTags.PRESSURE_PLATES, BlockTags.WOODEN_PRESSURE_PLATES).setItemTags(ItemTags.WOODEN_PRESSURE_PLATES)); - addBlockEntry(new BlockEntry(BLOCK_TRAPDOOR, (complexMaterial, settings) -> { - return new BaseTrapdoorBlock(getBlock(BLOCK_PLANKS)); - }).setBlockTags(BlockTags.TRAPDOORS, BlockTags.WOODEN_TRAPDOORS).setItemTags(ItemTags.TRAPDOORS, ItemTags.WOODEN_TRAPDOORS)); - addBlockEntry(new BlockEntry(BLOCK_DOOR, (complexMaterial, settings) -> { - return new BaseDoorBlock(getBlock(BLOCK_PLANKS)); - }).setBlockTags(BlockTags.DOORS, BlockTags.WOODEN_DOORS).setItemTags(ItemTags.DOORS, ItemTags.WOODEN_DOORS)); - - - addBlockEntry(new BlockEntry(BLOCK_LADDER, (complexMaterial, settings) -> { - return new BaseLadderBlock(getBlock(BLOCK_PLANKS)); - }).setBlockTags(BlockTags.CLIMBABLE)); - addBlockEntry(new BlockEntry(BLOCK_SIGN, (complexMaterial, settings) -> { - return new BaseSignBlock(getBlock(BLOCK_PLANKS)); - }).setBlockTags(BlockTags.SIGNS).setItemTags(ItemTags.SIGNS)); - - - } - - final protected void initStorage(FabricBlockSettings blockSettings, FabricItemSettings itemSettings){ - addBlockEntry(new BlockEntry(BLOCK_CHEST, (complexMaterial, settings) -> { - return new BaseChestBlock(getBlock(BLOCK_PLANKS)); - }).setBlockTags(TagAPI.BLOCK_CHEST).setItemTags(TagAPI.ITEM_CHEST)); - addBlockEntry(new BlockEntry(BLOCK_BARREL, (complexMaterial, settings) -> { - return new BaseBarrelBlock(getBlock(BLOCK_PLANKS)); - })); - } - - final protected void initDecorations(FabricBlockSettings blockSettings, FabricItemSettings itemSettings){ - addBlockEntry(new BlockEntry(BLOCK_CRAFTING_TABLE, (complexMaterial, settings) -> { - return new BaseCraftingTableBlock(getBlock(BLOCK_PLANKS)); - }).setBlockTags(TagAPI.BLOCK_WORKBENCHES).setItemTags(TagAPI.ITEM_WORKBENCHES)); - - addBlockEntry(new BlockEntry(BLOCK_BOOKSHELF, (complexMaterial, settings) -> { - return new BaseBookshelfBlock(getBlock(BLOCK_PLANKS)); - }).setBlockTags(TagAPI.BLOCK_BOOKSHELVES)); - - addBlockEntry(new BlockEntry(BLOCK_COMPOSTER, (complexMaterial, settings) -> { - return new BaseComposterBlock(getBlock(BLOCK_PLANKS)); - })); - } - - @Override - protected void initFlammable(FlammableBlockRegistry registry) { - getBlocks().forEach(block -> { - registry.add(block, 5, 20); - }); - - registry.add(getBlock(BLOCK_LOG), 5, 5); - registry.add(getBlock(BLOCK_BARK), 5, 5); - registry.add(getBlock(BLOCK_STRIPPED_LOG), 5, 5); - registry.add(getBlock(BLOCK_STRIPPED_BARK), 5, 5); - } - - @Override - public void initDefaultRecipes() { - Block planks = getBlock(BLOCK_PLANKS); - addRecipeEntry(new RecipeEntry("planks", (material, config, id) -> { - Block log_stripped = getBlock(BLOCK_STRIPPED_LOG); - Block bark_stripped = getBlock(BLOCK_STRIPPED_BARK); - Block log = getBlock(BLOCK_LOG); - Block bark = getBlock(BLOCK_BARK); - GridRecipe.make(id, planks) - .checkConfig(config) - .setOutputCount(4) - .setList("#") - .addMaterial('#', log, bark, log_stripped, bark_stripped) - .setGroup(receipGroupPrefix +"_planks") - .build(); - })); - addRecipeEntry(new RecipeEntry("stairs", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_STAIRS)) - .checkConfig(config) - .setOutputCount(4) - .setShape("# ", "## ", "###") - .addMaterial('#', planks) - .setGroup(receipGroupPrefix +"_planks_stairs") - .build(); - })); - addRecipeEntry(new RecipeEntry("slab", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_SLAB)) - .checkConfig(config) - .setOutputCount(6) - .setShape("###") - .addMaterial('#', planks) - .setGroup(receipGroupPrefix +"_planks_slabs") - .build(); - })); - addRecipeEntry(new RecipeEntry("fence", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_FENCE)) - .checkConfig(config) - .setOutputCount(3) - .setShape("#I#", "#I#") - .addMaterial('#', planks) - .addMaterial('I', Items.STICK) - .setGroup(receipGroupPrefix +"_planks_fences") - .build(); - })); - addRecipeEntry(new RecipeEntry("gate", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_GATE)) - .checkConfig(config) - .setShape("I#I", "I#I") - .addMaterial('#', planks) - .addMaterial('I', Items.STICK) - .setGroup(receipGroupPrefix +"_planks_gates") - .build(); - })); - addRecipeEntry(new RecipeEntry("button", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_BUTTON)) - .checkConfig(config) - .setList("#") - .addMaterial('#', planks) - .setGroup(receipGroupPrefix +"_planks_buttons") - .build(); - })); - addRecipeEntry(new RecipeEntry("pressure_plate", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_PRESSURE_PLATE)) - .checkConfig(config) - .setShape("##") - .addMaterial('#', planks) - .setGroup(receipGroupPrefix +"_planks_plates") - .build(); - })); - addRecipeEntry(new RecipeEntry("trapdoor", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_TRAPDOOR)) - .checkConfig(config) - .setOutputCount(2) - .setShape("###", "###") - .addMaterial('#', planks) - .setGroup(receipGroupPrefix +"_trapdoors") - .build(); - })); - addRecipeEntry(new RecipeEntry("door", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_DOOR)) - .checkConfig(config) - .setOutputCount(3) - .setShape("##", "##", "##") - .addMaterial('#', planks) - .setGroup(receipGroupPrefix +"_doors") - .build(); - })); - addRecipeEntry(new RecipeEntry("crafting_table", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_CRAFTING_TABLE)) - .checkConfig(config) - .setShape("##", "##") - .addMaterial('#', planks) - .setGroup(receipGroupPrefix +"_tables") - .build(); - })); - addRecipeEntry(new RecipeEntry("ladder", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_LADDER)) - .checkConfig(config) - .setOutputCount(3) - .setShape("I I", "I#I", "I I") - .addMaterial('#', planks) - .addMaterial('I', Items.STICK) - .setGroup(receipGroupPrefix +"_ladders") - .build(); - })); - addRecipeEntry(new RecipeEntry("sign", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_SIGN)) - .checkConfig(config) - .setOutputCount(3) - .setShape("###", "###", " I ") - .addMaterial('#', planks) - .addMaterial('I', Items.STICK) - .setGroup(receipGroupPrefix +"_signs") - .build(); - })); - addRecipeEntry(new RecipeEntry("chest", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_CHEST)) - .checkConfig(config) - .setShape("###", "# #", "###") - .addMaterial('#', planks) - .setGroup(receipGroupPrefix +"_chests") - .build(); - })); - addRecipeEntry(new RecipeEntry("barrel", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_BARREL)) - .checkConfig(config) - .setShape("#S#", "# #", "#S#") - .addMaterial('#', planks) - .addMaterial('S', getBlock(BLOCK_SLAB)) - .setGroup(receipGroupPrefix +"_barrels") - .build(); - })); - addRecipeEntry(new RecipeEntry("bookshelf", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_BOOKSHELF)) - .checkConfig(config) - .setShape("###", "PPP", "###") - .addMaterial('#', planks) - .addMaterial('P', Items.BOOK) - .setGroup(receipGroupPrefix +"_bookshelves") - .build(); - })); - addRecipeEntry(new RecipeEntry("bark", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_BARK)) - .checkConfig(config) - .setShape("##", "##") - .addMaterial('#', getBlock(BLOCK_LOG)) - .setOutputCount(3) - .build(); - })); - addRecipeEntry(new RecipeEntry("log", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_LOG)) - .checkConfig(config) - .setShape("##", "##") - .addMaterial('#', getBlock(BLOCK_BARK)) - .setOutputCount(3) - .build(); - })); - addRecipeEntry(new RecipeEntry("stripped_bark", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_STRIPPED_BARK)) - .checkConfig(config) - .setShape("##", "##") - .addMaterial('#', getBlock(BLOCK_STRIPPED_LOG)) - .setOutputCount(3) - .build(); - })); - addRecipeEntry(new RecipeEntry("stripped_log", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_STRIPPED_LOG)) - .checkConfig(config) - .setShape("##", "##") - .addMaterial('#', getBlock(BLOCK_STRIPPED_BARK)) - .setOutputCount(3) - .build(); - })); - addRecipeEntry(new RecipeEntry("composter", (material, config, id) -> { - GridRecipe.make(id, getBlock(BLOCK_COMPOSTER)) - .checkConfig(config) - .setShape("# #", "# #", "###") - .addMaterial('#', getBlock(BLOCK_SLAB)) - .build(); - })); - addRecipeEntry(new RecipeEntry("shulker", (material, config, id) -> { - GridRecipe.make(id, Blocks.SHULKER_BOX) - .checkConfig(config) - .setShape("S", "#", "S") - .addMaterial('S', Items.SHULKER_SHELL) - .addMaterial('#', getBlock(BLOCK_CHEST)) - .build(); - })); - } + public static final ResourceLocation MATERIAL_ID = BCLib.makeID("wooden_material"); + + public static final String BLOCK_CRAFTING_TABLE = "crafting_table"; + public static final String BLOCK_STRIPPED_BARK = "stripped_bark"; + public static final String BLOCK_STRIPPED_LOG = "stripped_log"; + public static final String BLOCK_PRESSURE_PLATE = "plate"; + public static final String BLOCK_BOOKSHELF = "bookshelf"; + public static final String BLOCK_COMPOSTER = "composter"; + public static final String BLOCK_TRAPDOOR = "trapdoor"; + public static final String BLOCK_BARREL = "barrel"; + public static final String BLOCK_BUTTON = "button"; + public static final String BLOCK_LADDER = "ladder"; + public static final String BLOCK_PLANKS = "planks"; + public static final String BLOCK_STAIRS = "stairs"; + public static final String BLOCK_CHEST = "chest"; + public static final String BLOCK_FENCE = "fence"; + public static final String BLOCK_BARK = "bark"; + public static final String BLOCK_DOOR = "door"; + public static final String BLOCK_GATE = "gate"; + public static final String BLOCK_SIGN = "sign"; + public static final String BLOCK_SLAB = "slab"; + public static final String BLOCK_LOG = "log"; + + public static final String TAG_LOGS = "logs"; + + public final MaterialColor planksColor; + public final MaterialColor woodColor; + + public WoodenComplexMaterial(String modID, String baseName, String receipGroupPrefix, MaterialColor woodColor, MaterialColor planksColor) { + super(modID, baseName, receipGroupPrefix); + this.planksColor = planksColor; + this.woodColor = woodColor; + } + + @Override + protected FabricBlockSettings getBlockSettings() { + return FabricBlockSettings.copyOf(Blocks.OAK_PLANKS) + .materialColor(planksColor); + } + + @Override + public ResourceLocation getMaterialID() { + return MATERIAL_ID; + } + + @Override + protected void initTags() { + addBlockTag(TagAPI.makeBlockTag(getModID(), getBaseName() + "_logs")); + addItemTag(TagAPI.makeItemTag(getModID(), getBaseName() + "_logs")); + } + + @Override + protected void initDefault(FabricBlockSettings blockSettings, FabricItemSettings itemSettings) { + initBase(blockSettings, itemSettings); + initStorage(blockSettings, itemSettings); + initDecorations(blockSettings, itemSettings); + } + + final protected void initBase(FabricBlockSettings blockSettings, FabricItemSettings itemSettings) { + Tag.Named tagBlockLog = getBlockTag(TAG_LOGS); + Tag.Named tagItemLog = getItemTag(TAG_LOGS); + + addBlockEntry( + new BlockEntry(BLOCK_STRIPPED_LOG, (complexMaterial, settings) -> { + return new BaseRotatedPillarBlock(settings); + }) + .setBlockTags(BlockTags.LOGS, BlockTags.LOGS_THAT_BURN, tagBlockLog) + .setItemTags(ItemTags.LOGS, ItemTags.LOGS_THAT_BURN, tagItemLog) + ); + addBlockEntry( + new BlockEntry(BLOCK_STRIPPED_BARK, (complexMaterial, settings) -> { + return new BaseBarkBlock(settings); + }) + .setBlockTags(BlockTags.LOGS, BlockTags.LOGS_THAT_BURN, tagBlockLog) + .setItemTags(ItemTags.LOGS, ItemTags.LOGS_THAT_BURN, tagItemLog) + ); + + addBlockEntry( + new BlockEntry(BLOCK_LOG, (complexMaterial, settings) -> { + return new BaseStripableLogBlock(woodColor, getBlock(BLOCK_STRIPPED_LOG)); + }) + .setBlockTags(BlockTags.LOGS, BlockTags.LOGS_THAT_BURN, tagBlockLog) + .setItemTags(ItemTags.LOGS, ItemTags.LOGS_THAT_BURN, tagItemLog) + ); + addBlockEntry( + new BlockEntry(BLOCK_BARK, (complexMaterial, settings) -> { + return new StripableBarkBlock(woodColor, getBlock(BLOCK_STRIPPED_BARK)); + }) + .setBlockTags(BlockTags.LOGS, BlockTags.LOGS_THAT_BURN, tagBlockLog) + .setItemTags(ItemTags.LOGS, ItemTags.LOGS_THAT_BURN, tagItemLog) + ); + addBlockEntry(new BlockEntry(BLOCK_PLANKS, (complexMaterial, settings) -> { + return new BaseBlock(settings); + }).setBlockTags(BlockTags.PLANKS) + .setItemTags(ItemTags.PLANKS)); + + addBlockEntry(new BlockEntry(BLOCK_STAIRS, (complexMaterial, settings) -> { + return new BaseStairsBlock(getBlock(BLOCK_PLANKS)); + }).setBlockTags(BlockTags.WOODEN_STAIRS, BlockTags.STAIRS) + .setItemTags(ItemTags.WOODEN_STAIRS, ItemTags.STAIRS)); + addBlockEntry(new BlockEntry(BLOCK_SLAB, (complexMaterial, settings) -> { + return new BaseSlabBlock(getBlock(BLOCK_PLANKS)); + }).setBlockTags(BlockTags.WOODEN_SLABS, BlockTags.SLABS) + .setItemTags(ItemTags.WOODEN_SLABS, ItemTags.SLABS)); + addBlockEntry(new BlockEntry(BLOCK_FENCE, (complexMaterial, settings) -> { + return new BaseFenceBlock(getBlock(BLOCK_PLANKS)); + }).setBlockTags(BlockTags.FENCES, BlockTags.WOODEN_FENCES) + .setItemTags(ItemTags.FENCES, ItemTags.WOODEN_FENCES)); + addBlockEntry(new BlockEntry(BLOCK_GATE, (complexMaterial, settings) -> { + return new BaseGateBlock(getBlock(BLOCK_PLANKS)); + }).setBlockTags(BlockTags.FENCE_GATES)); + addBlockEntry(new BlockEntry(BLOCK_BUTTON, (complexMaterial, settings) -> { + return new BaseWoodenButtonBlock(getBlock(BLOCK_PLANKS)); + }).setBlockTags(BlockTags.BUTTONS, BlockTags.WOODEN_BUTTONS) + .setItemTags(ItemTags.BUTTONS, ItemTags.WOODEN_BUTTONS)); + addBlockEntry(new BlockEntry(BLOCK_PRESSURE_PLATE, (complexMaterial, settings) -> { + return new WoodenPressurePlateBlock(getBlock(BLOCK_PLANKS)); + }).setBlockTags(BlockTags.PRESSURE_PLATES, BlockTags.WOODEN_PRESSURE_PLATES) + .setItemTags(ItemTags.WOODEN_PRESSURE_PLATES)); + addBlockEntry(new BlockEntry(BLOCK_TRAPDOOR, (complexMaterial, settings) -> { + return new BaseTrapdoorBlock(getBlock(BLOCK_PLANKS)); + }).setBlockTags(BlockTags.TRAPDOORS, BlockTags.WOODEN_TRAPDOORS) + .setItemTags(ItemTags.TRAPDOORS, ItemTags.WOODEN_TRAPDOORS)); + addBlockEntry(new BlockEntry(BLOCK_DOOR, (complexMaterial, settings) -> { + return new BaseDoorBlock(getBlock(BLOCK_PLANKS)); + }).setBlockTags(BlockTags.DOORS, BlockTags.WOODEN_DOORS) + .setItemTags(ItemTags.DOORS, ItemTags.WOODEN_DOORS)); + + + addBlockEntry(new BlockEntry(BLOCK_LADDER, (complexMaterial, settings) -> { + return new BaseLadderBlock(getBlock(BLOCK_PLANKS)); + }).setBlockTags(BlockTags.CLIMBABLE)); + addBlockEntry(new BlockEntry(BLOCK_SIGN, (complexMaterial, settings) -> { + return new BaseSignBlock(getBlock(BLOCK_PLANKS)); + }).setBlockTags(BlockTags.SIGNS) + .setItemTags(ItemTags.SIGNS)); + + + } + + final protected void initStorage(FabricBlockSettings blockSettings, FabricItemSettings itemSettings) { + addBlockEntry(new BlockEntry(BLOCK_CHEST, (complexMaterial, settings) -> { + return new BaseChestBlock(getBlock(BLOCK_PLANKS)); + }).setBlockTags(TagAPI.BLOCK_CHEST, TagAPI.BLOCK_WOODEN_CHEST) + .setItemTags(TagAPI.ITEM_CHEST, TagAPI.ITEM_WOODEN_CHEST)); + + addBlockEntry(new BlockEntry(BLOCK_BARREL, (complexMaterial, settings) -> { + return new BaseBarrelBlock(getBlock(BLOCK_PLANKS)); + }).setBlockTags(TagAPI.BLOCK_BARREL, TagAPI.BLOCK_WOODEN_BARREL) + .setItemTags(TagAPI.ITEM_BARREL, TagAPI.ITEM_WOODEN_BARREL)); + } + + final protected void initDecorations(FabricBlockSettings blockSettings, FabricItemSettings itemSettings) { + addBlockEntry(new BlockEntry(BLOCK_CRAFTING_TABLE, (complexMaterial, settings) -> { + return new BaseCraftingTableBlock(getBlock(BLOCK_PLANKS)); + }).setBlockTags(TagAPI.BLOCK_WORKBENCHES) + .setItemTags(TagAPI.ITEM_WORKBENCHES)); + + addBlockEntry(new BlockEntry(BLOCK_BOOKSHELF, (complexMaterial, settings) -> { + return new BaseBookshelfBlock(getBlock(BLOCK_PLANKS)); + }).setBlockTags(TagAPI.BLOCK_BOOKSHELVES)); + + addBlockEntry(new BlockEntry(BLOCK_COMPOSTER, (complexMaterial, settings) -> { + return new BaseComposterBlock(getBlock(BLOCK_PLANKS)); + })); + } + + @Override + protected void initFlammable(FlammableBlockRegistry registry) { + getBlocks().forEach(block -> { + registry.add(block, 5, 20); + }); + + registry.add(getBlock(BLOCK_LOG), 5, 5); + registry.add(getBlock(BLOCK_BARK), 5, 5); + registry.add(getBlock(BLOCK_STRIPPED_LOG), 5, 5); + registry.add(getBlock(BLOCK_STRIPPED_BARK), 5, 5); + } + + @Override + public void initDefaultRecipes() { + Block planks = getBlock(BLOCK_PLANKS); + addRecipeEntry(new RecipeEntry("planks", (material, config, id) -> { + Block log_stripped = getBlock(BLOCK_STRIPPED_LOG); + Block bark_stripped = getBlock(BLOCK_STRIPPED_BARK); + Block log = getBlock(BLOCK_LOG); + Block bark = getBlock(BLOCK_BARK); + GridRecipe.make(id, planks) + .checkConfig(config) + .setOutputCount(4) + .setList("#") + .addMaterial('#', log, bark, log_stripped, bark_stripped) + .setGroup(receipGroupPrefix + "_planks") + .build(); + })); + addRecipeEntry(new RecipeEntry("stairs", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_STAIRS)) + .checkConfig(config) + .setOutputCount(4) + .setShape("# ", "## ", "###") + .addMaterial('#', planks) + .setGroup(receipGroupPrefix + "_planks_stairs") + .build(); + })); + addRecipeEntry(new RecipeEntry("slab", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_SLAB)) + .checkConfig(config) + .setOutputCount(6) + .setShape("###") + .addMaterial('#', planks) + .setGroup(receipGroupPrefix + "_planks_slabs") + .build(); + })); + addRecipeEntry(new RecipeEntry("fence", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_FENCE)) + .checkConfig(config) + .setOutputCount(3) + .setShape("#I#", "#I#") + .addMaterial('#', planks) + .addMaterial('I', Items.STICK) + .setGroup(receipGroupPrefix + "_planks_fences") + .build(); + })); + addRecipeEntry(new RecipeEntry("gate", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_GATE)) + .checkConfig(config) + .setShape("I#I", "I#I") + .addMaterial('#', planks) + .addMaterial('I', Items.STICK) + .setGroup(receipGroupPrefix + "_planks_gates") + .build(); + })); + addRecipeEntry(new RecipeEntry("button", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_BUTTON)) + .checkConfig(config) + .setList("#") + .addMaterial('#', planks) + .setGroup(receipGroupPrefix + "_planks_buttons") + .build(); + })); + addRecipeEntry(new RecipeEntry("pressure_plate", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_PRESSURE_PLATE)) + .checkConfig(config) + .setShape("##") + .addMaterial('#', planks) + .setGroup(receipGroupPrefix + "_planks_plates") + .build(); + })); + addRecipeEntry(new RecipeEntry("trapdoor", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_TRAPDOOR)) + .checkConfig(config) + .setOutputCount(2) + .setShape("###", "###") + .addMaterial('#', planks) + .setGroup(receipGroupPrefix + "_trapdoors") + .build(); + })); + addRecipeEntry(new RecipeEntry("door", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_DOOR)) + .checkConfig(config) + .setOutputCount(3) + .setShape("##", "##", "##") + .addMaterial('#', planks) + .setGroup(receipGroupPrefix + "_doors") + .build(); + })); + addRecipeEntry(new RecipeEntry("crafting_table", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_CRAFTING_TABLE)) + .checkConfig(config) + .setShape("##", "##") + .addMaterial('#', planks) + .setGroup(receipGroupPrefix + "_tables") + .build(); + })); + addRecipeEntry(new RecipeEntry("ladder", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_LADDER)) + .checkConfig(config) + .setOutputCount(3) + .setShape("I I", "I#I", "I I") + .addMaterial('#', planks) + .addMaterial('I', Items.STICK) + .setGroup(receipGroupPrefix + "_ladders") + .build(); + })); + addRecipeEntry(new RecipeEntry("sign", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_SIGN)) + .checkConfig(config) + .setOutputCount(3) + .setShape("###", "###", " I ") + .addMaterial('#', planks) + .addMaterial('I', Items.STICK) + .setGroup(receipGroupPrefix + "_signs") + .build(); + })); + addRecipeEntry(new RecipeEntry("chest", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_CHEST)) + .checkConfig(config) + .setShape("###", "# #", "###") + .addMaterial('#', planks) + .setGroup(receipGroupPrefix + "_chests") + .build(); + })); + addRecipeEntry(new RecipeEntry("barrel", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_BARREL)) + .checkConfig(config) + .setShape("#S#", "# #", "#S#") + .addMaterial('#', planks) + .addMaterial('S', getBlock(BLOCK_SLAB)) + .setGroup(receipGroupPrefix + "_barrels") + .build(); + })); + addRecipeEntry(new RecipeEntry("bookshelf", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_BOOKSHELF)) + .checkConfig(config) + .setShape("###", "PPP", "###") + .addMaterial('#', planks) + .addMaterial('P', Items.BOOK) + .setGroup(receipGroupPrefix + "_bookshelves") + .build(); + })); + addRecipeEntry(new RecipeEntry("bark", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_BARK)) + .checkConfig(config) + .setShape("##", "##") + .addMaterial('#', getBlock(BLOCK_LOG)) + .setOutputCount(3) + .build(); + })); + addRecipeEntry(new RecipeEntry("log", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_LOG)) + .checkConfig(config) + .setShape("##", "##") + .addMaterial('#', getBlock(BLOCK_BARK)) + .setOutputCount(3) + .build(); + })); + addRecipeEntry(new RecipeEntry("stripped_bark", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_STRIPPED_BARK)) + .checkConfig(config) + .setShape("##", "##") + .addMaterial('#', getBlock(BLOCK_STRIPPED_LOG)) + .setOutputCount(3) + .build(); + })); + addRecipeEntry(new RecipeEntry("stripped_log", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_STRIPPED_LOG)) + .checkConfig(config) + .setShape("##", "##") + .addMaterial('#', getBlock(BLOCK_STRIPPED_BARK)) + .setOutputCount(3) + .build(); + })); + addRecipeEntry(new RecipeEntry("composter", (material, config, id) -> { + GridRecipe.make(id, getBlock(BLOCK_COMPOSTER)) + .checkConfig(config) + .setShape("# #", "# #", "###") + .addMaterial('#', getBlock(BLOCK_SLAB)) + .build(); + })); + addRecipeEntry(new RecipeEntry("shulker", (material, config, id) -> { + GridRecipe.make(id, Blocks.SHULKER_BOX) + .checkConfig(config) + .setShape("S", "#", "S") + .addMaterial('S', Items.SHULKER_SHELL) + .addMaterial('#', getBlock(BLOCK_CHEST)) + .build(); + })); + } } \ No newline at end of file