diff --git a/src/main/java/org/betterx/bclib/complexmaterials/StoneComplexMaterial.java b/src/main/java/org/betterx/bclib/complexmaterials/StoneComplexMaterial.java new file mode 100644 index 00000000..8257c465 --- /dev/null +++ b/src/main/java/org/betterx/bclib/complexmaterials/StoneComplexMaterial.java @@ -0,0 +1,50 @@ +package org.betterx.bclib.complexmaterials; + +import org.betterx.bclib.BCLib; +import org.betterx.bclib.behaviours.BehaviourBuilders; +import org.betterx.bclib.complexmaterials.entry.SlotMap; +import org.betterx.bclib.complexmaterials.set.stone.StoneSlots; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.material.MapColor; + +public class StoneComplexMaterial extends ComplexMaterialSet { + public static final ResourceLocation MATERIAL_ID = BCLib.makeID("stone_material"); + public final MapColor color; + public final Block sourceBlock; + + protected StoneComplexMaterial( + String modID, + String baseName, + String receipGroupPrefix, + Block sourceBlock, + MapColor color + ) { + super(modID, baseName, receipGroupPrefix); + this.color = color; + this.sourceBlock = sourceBlock; + } + + @Override + protected BlockBehaviour.Properties getBlockSettings() { + return BehaviourBuilders.createStone(color); + } + + @Override + public ResourceLocation getMaterialID() { + return MATERIAL_ID; + } + + @Override + protected SlotMap createMaterialSlots() { + return SlotMap.of( + StoneSlots.SOURCE, + StoneSlots.SLAB, + StoneSlots.STAIRS, + StoneSlots.WALL + ); + } + +} diff --git a/src/main/java/org/betterx/bclib/complexmaterials/entry/BlockEntry.java b/src/main/java/org/betterx/bclib/complexmaterials/entry/BlockEntry.java index 56a33c8a..353fa0c8 100644 --- a/src/main/java/org/betterx/bclib/complexmaterials/entry/BlockEntry.java +++ b/src/main/java/org/betterx/bclib/complexmaterials/entry/BlockEntry.java @@ -15,22 +15,33 @@ import java.util.function.BiFunction; public class BlockEntry extends ComplexMaterialEntry { final BiFunction initFunction; final boolean hasItem; + final boolean isPseudoEntry; TagKey[] blockTags; TagKey[] itemTags; public BlockEntry(String suffix, BiFunction initFunction) { - this(suffix, true, initFunction); + this(suffix, true, false, initFunction); } public BlockEntry( String suffix, boolean hasItem, BiFunction initFunction + ) { + this(suffix, hasItem, false, initFunction); + } + + public BlockEntry( + String suffix, + boolean hasItem, + boolean isPseudoEntry, + BiFunction initFunction ) { super(suffix); this.initFunction = initFunction; this.hasItem = hasItem; + this.isPseudoEntry = isPseudoEntry; } @SafeVarargs @@ -49,17 +60,22 @@ public class BlockEntry extends ComplexMaterialEntry { ResourceLocation location = getLocation(material.getModID(), material.getBaseName()); Block block = initFunction.apply(material, blockSettings); if (block == null) return null; - if (hasItem) { - registry.register(location, block); - if (itemTags != null) { - TagManager.ITEMS.add(block.asItem(), itemTags); + + if (!isPseudoEntry) { + if (hasItem) { + registry.register(location, block); + + } else { + registry.registerBlockOnly(location, block); } - } else { - registry.registerBlockOnly(location, block); + } + if (hasItem && itemTags != null) { + TagManager.ITEMS.add(block.asItem(), itemTags); } if (blockTags != null) { TagManager.BLOCKS.add(block, blockTags); } + return block; } } diff --git a/src/main/java/org/betterx/bclib/complexmaterials/set/common/AbstractSlab.java b/src/main/java/org/betterx/bclib/complexmaterials/set/common/AbstractSlab.java new file mode 100644 index 00000000..f701ad0a --- /dev/null +++ b/src/main/java/org/betterx/bclib/complexmaterials/set/common/AbstractSlab.java @@ -0,0 +1,37 @@ +package org.betterx.bclib.complexmaterials.set.common; + +import org.betterx.bclib.complexmaterials.ComplexMaterial; +import org.betterx.bclib.complexmaterials.entry.MaterialSlot; +import org.betterx.bclib.complexmaterials.entry.SimpleMaterialSlot; +import org.betterx.bclib.recipes.BCLRecipeBuilder; + +import net.minecraft.data.recipes.RecipeCategory; +import net.minecraft.resources.ResourceLocation; + +import org.jetbrains.annotations.Nullable; + +public abstract class AbstractSlab extends SimpleMaterialSlot { + public AbstractSlab() { + super("slab"); + } + + protected AbstractSlab(String prefix) { + super(prefix + "_slab"); + } + + + @Override + protected @Nullable void makeRecipe(ComplexMaterial parentMaterial, ResourceLocation id) { + BCLRecipeBuilder + .crafting(id, parentMaterial.getBlock(suffix)) + .setOutputCount(6) + .setShape("###") + .addMaterial('#', parentMaterial.getBlock(getSourceBlockSlot())) + .setGroup("slab") + .setCategory(RecipeCategory.BUILDING_BLOCKS) + .build(); + } + + @Nullable + protected abstract MaterialSlot getSourceBlockSlot(); +} diff --git a/src/main/java/org/betterx/bclib/complexmaterials/set/common/AbstractStairs.java b/src/main/java/org/betterx/bclib/complexmaterials/set/common/AbstractStairs.java new file mode 100644 index 00000000..ac9e13dd --- /dev/null +++ b/src/main/java/org/betterx/bclib/complexmaterials/set/common/AbstractStairs.java @@ -0,0 +1,37 @@ +package org.betterx.bclib.complexmaterials.set.common; + +import org.betterx.bclib.complexmaterials.ComplexMaterial; +import org.betterx.bclib.complexmaterials.entry.MaterialSlot; +import org.betterx.bclib.complexmaterials.entry.SimpleMaterialSlot; +import org.betterx.bclib.recipes.BCLRecipeBuilder; + +import net.minecraft.data.recipes.RecipeCategory; +import net.minecraft.resources.ResourceLocation; + +import org.jetbrains.annotations.Nullable; + +public abstract class AbstractStairs extends SimpleMaterialSlot { + public AbstractStairs() { + super("stairs"); + } + + protected AbstractStairs(String prefix) { + super(prefix + "_stairs"); + } + + + @Override + protected @Nullable void makeRecipe(ComplexMaterial parentMaterial, ResourceLocation id) { + BCLRecipeBuilder + .crafting(id, parentMaterial.getBlock(suffix)) + .setOutputCount(4) + .setShape("# ", "## ", "###") + .addMaterial('#', parentMaterial.getBlock(getSourceBlockSlot())) + .setGroup("stairs") + .setCategory(RecipeCategory.BUILDING_BLOCKS) + .build(); + } + + @Nullable + protected abstract MaterialSlot getSourceBlockSlot(); +} diff --git a/src/main/java/org/betterx/bclib/complexmaterials/set/common/AbstractWall.java b/src/main/java/org/betterx/bclib/complexmaterials/set/common/AbstractWall.java new file mode 100644 index 00000000..66f73a39 --- /dev/null +++ b/src/main/java/org/betterx/bclib/complexmaterials/set/common/AbstractWall.java @@ -0,0 +1,35 @@ +package org.betterx.bclib.complexmaterials.set.common; + +import org.betterx.bclib.complexmaterials.ComplexMaterial; +import org.betterx.bclib.complexmaterials.entry.MaterialSlot; +import org.betterx.bclib.complexmaterials.entry.SimpleMaterialSlot; +import org.betterx.bclib.complexmaterials.set.stone.StoneSlots; +import org.betterx.bclib.recipes.BCLRecipeBuilder; + +import net.minecraft.resources.ResourceLocation; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public abstract class AbstractWall extends SimpleMaterialSlot { + public AbstractWall() { + super("wall"); + } + + protected AbstractWall(@NotNull String postfix) { + super(postfix + "_wall"); + } + + @Override + protected @Nullable void makeRecipe(ComplexMaterial parentMaterial, ResourceLocation id) { + BCLRecipeBuilder.crafting(id, parentMaterial.getBlock(suffix)) + .setOutputCount(6) + .setShape("###", "###") + .addMaterial('#', parentMaterial.getBlock(StoneSlots.SOURCE)) + .setGroup("wall") + .build(); + } + + @Nullable + protected abstract MaterialSlot getSourceBlockSlot(); +} diff --git a/src/main/java/org/betterx/bclib/complexmaterials/set/stone/CrackedBlock.java b/src/main/java/org/betterx/bclib/complexmaterials/set/stone/CrackedBlock.java new file mode 100644 index 00000000..31119f52 --- /dev/null +++ b/src/main/java/org/betterx/bclib/complexmaterials/set/stone/CrackedBlock.java @@ -0,0 +1,32 @@ +package org.betterx.bclib.complexmaterials.set.stone; + +import org.betterx.bclib.blocks.BaseBlock; +import org.betterx.bclib.complexmaterials.ComplexMaterial; +import org.betterx.bclib.complexmaterials.StoneComplexMaterial; +import org.betterx.bclib.complexmaterials.entry.SimpleMaterialSlot; +import org.betterx.bclib.recipes.BCLRecipeBuilder; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class CrackedBlock extends SimpleMaterialSlot { + public CrackedBlock() { + super("cracked"); + } + + @Override + protected @NotNull Block createBlock(StoneComplexMaterial parentMaterial, BlockBehaviour.Properties settings) { + return new BaseBlock.Stone(settings); + } + + @Override + protected @Nullable void makeRecipe(ComplexMaterial parentMaterial, ResourceLocation id) { + BCLRecipeBuilder.smelting(id, parentMaterial.getBlock(suffix)) + .setPrimaryInputAndUnlock(parentMaterial.getBlock(StoneSlots.SOURCE)) + .build(false, false, false); + } +} diff --git a/src/main/java/org/betterx/bclib/complexmaterials/set/stone/Slab.java b/src/main/java/org/betterx/bclib/complexmaterials/set/stone/Slab.java new file mode 100644 index 00000000..3fa56298 --- /dev/null +++ b/src/main/java/org/betterx/bclib/complexmaterials/set/stone/Slab.java @@ -0,0 +1,57 @@ +package org.betterx.bclib.complexmaterials.set.stone; + +import org.betterx.bclib.blocks.BaseSlabBlock; +import org.betterx.bclib.complexmaterials.ComplexMaterial; +import org.betterx.bclib.complexmaterials.StoneComplexMaterial; +import org.betterx.bclib.complexmaterials.entry.MaterialSlot; +import org.betterx.bclib.complexmaterials.set.common.AbstractSlab; +import org.betterx.bclib.recipes.BCLRecipeBuilder; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class Slab extends AbstractSlab { + private final MaterialSlot base; + + public Slab() { + super(); + this.base = StoneSlots.SOURCE; + } + + public Slab(MaterialSlot base) { + super(base.suffix); + this.base = base; + } + + @Override + protected @NotNull Block createBlock( + StoneComplexMaterial parentMaterial, BlockBehaviour.Properties settings + ) { + return new BaseSlabBlock.Stone(parentMaterial.getBlock(getSourceBlockSlot())); + } + + @Override + protected @Nullable void makeRecipe(ComplexMaterial parentMaterial, ResourceLocation id) { + super.makeRecipe(parentMaterial, id); + + BCLRecipeBuilder + .stonecutting( + new ResourceLocation(id.getNamespace(), "stonecutter_" + id.getPath()), + parentMaterial.getBlock(suffix) + ) + .setPrimaryInputAndUnlock(parentMaterial.getBlock(getSourceBlockSlot())) + .setOutputCount(2) + .setGroup("slab") + .build(); + } + + @Nullable + @Override + protected MaterialSlot getSourceBlockSlot() { + return base; + } +} diff --git a/src/main/java/org/betterx/bclib/complexmaterials/set/stone/Source.java b/src/main/java/org/betterx/bclib/complexmaterials/set/stone/Source.java new file mode 100644 index 00000000..0ed134d5 --- /dev/null +++ b/src/main/java/org/betterx/bclib/complexmaterials/set/stone/Source.java @@ -0,0 +1,25 @@ +package org.betterx.bclib.complexmaterials.set.stone; + +import org.betterx.bclib.complexmaterials.StoneComplexMaterial; +import org.betterx.bclib.complexmaterials.entry.BlockEntry; +import org.betterx.bclib.complexmaterials.entry.MaterialSlot; +import org.betterx.bclib.complexmaterials.entry.RecipeEntry; + +import java.util.function.Consumer; + +public class Source extends MaterialSlot { + public Source() { + super("source"); + } + + + @Override + public void addBlockEntry(StoneComplexMaterial parentMaterial, Consumer adder) { + adder.accept(new BlockEntry(suffix, true, true, (c, p) -> parentMaterial.sourceBlock)); + } + + @Override + public void addRecipeEntry(StoneComplexMaterial parentMaterial, Consumer adder) { + + } +} diff --git a/src/main/java/org/betterx/bclib/complexmaterials/set/stone/Stairs.java b/src/main/java/org/betterx/bclib/complexmaterials/set/stone/Stairs.java new file mode 100644 index 00000000..fd1be0e5 --- /dev/null +++ b/src/main/java/org/betterx/bclib/complexmaterials/set/stone/Stairs.java @@ -0,0 +1,56 @@ +package org.betterx.bclib.complexmaterials.set.stone; + +import org.betterx.bclib.blocks.BaseStairsBlock; +import org.betterx.bclib.complexmaterials.ComplexMaterial; +import org.betterx.bclib.complexmaterials.StoneComplexMaterial; +import org.betterx.bclib.complexmaterials.entry.MaterialSlot; +import org.betterx.bclib.complexmaterials.set.common.AbstractStairs; +import org.betterx.bclib.recipes.BCLRecipeBuilder; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class Stairs extends AbstractStairs { + private final MaterialSlot base; + + public Stairs() { + super(); + this.base = StoneSlots.SOURCE; + } + + public Stairs(MaterialSlot base) { + super(base.suffix); + this.base = base; + } + + @Override + protected @NotNull Block createBlock( + StoneComplexMaterial parentMaterial, BlockBehaviour.Properties settings + ) { + return new BaseStairsBlock.Stone(parentMaterial.getBlock(getSourceBlockSlot())); + } + + @Override + protected @Nullable void makeRecipe(ComplexMaterial parentMaterial, ResourceLocation id) { + super.makeRecipe(parentMaterial, id); + + BCLRecipeBuilder + .stonecutting( + new ResourceLocation(id.getNamespace(), "stonecutter_" + id.getPath()), + parentMaterial.getBlock(suffix) + ) + .setPrimaryInputAndUnlock(parentMaterial.getBlock(getSourceBlockSlot())) + .setOutputCount(1) + .setGroup("stairs") + .build(); + } + + @Override + protected @Nullable MaterialSlot getSourceBlockSlot() { + return base; + } +} diff --git a/src/main/java/org/betterx/bclib/complexmaterials/set/stone/StoneSlots.java b/src/main/java/org/betterx/bclib/complexmaterials/set/stone/StoneSlots.java new file mode 100644 index 00000000..6163e61e --- /dev/null +++ b/src/main/java/org/betterx/bclib/complexmaterials/set/stone/StoneSlots.java @@ -0,0 +1,21 @@ +package org.betterx.bclib.complexmaterials.set.stone; + +import org.betterx.bclib.complexmaterials.StoneComplexMaterial; +import org.betterx.bclib.complexmaterials.entry.MaterialSlot; + +public class StoneSlots { + public static final MaterialSlot SOURCE = new Source(); + public static final MaterialSlot SLAB = new Slab(); + public static final MaterialSlot STAIRS = new Stairs(); + public static final MaterialSlot WALL = new Wall(); + + public static final MaterialSlot CRACKED = new CrackedBlock(); + public static final MaterialSlot CRACKED_SLAB = new Slab(CRACKED); + public static final MaterialSlot CRACKED_STAIRS = new Stairs(CRACKED); + public static final MaterialSlot CRACKED_WALL = new Wall(CRACKED); + + public static final MaterialSlot WEATHERED = new WeatheredBlock(); + public static final MaterialSlot WEATHERED_SLAB = new Slab(WEATHERED); + public static final MaterialSlot WEATHERED_STAIRS = new Stairs(WEATHERED); + public static final MaterialSlot WEATHERED_WALL = new Wall(WEATHERED); +} diff --git a/src/main/java/org/betterx/bclib/complexmaterials/set/stone/Wall.java b/src/main/java/org/betterx/bclib/complexmaterials/set/stone/Wall.java new file mode 100644 index 00000000..719bdbb8 --- /dev/null +++ b/src/main/java/org/betterx/bclib/complexmaterials/set/stone/Wall.java @@ -0,0 +1,54 @@ +package org.betterx.bclib.complexmaterials.set.stone; + +import org.betterx.bclib.blocks.BaseWallBlock; +import org.betterx.bclib.complexmaterials.ComplexMaterial; +import org.betterx.bclib.complexmaterials.StoneComplexMaterial; +import org.betterx.bclib.complexmaterials.entry.MaterialSlot; +import org.betterx.bclib.complexmaterials.set.common.AbstractWall; +import org.betterx.bclib.recipes.BCLRecipeBuilder; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class Wall extends AbstractWall { + private final MaterialSlot base; + + public Wall() { + super(); + this.base = StoneSlots.SOURCE; + } + + public Wall(MaterialSlot base) { + super(base.suffix); + this.base = base; + } + + @Override + protected @NotNull Block createBlock(StoneComplexMaterial parentMaterial, BlockBehaviour.Properties settings) { + return new BaseWallBlock.Stone(parentMaterial.getBlock(getSourceBlockSlot())); + } + + @Override + protected @Nullable void makeRecipe(ComplexMaterial parentMaterial, ResourceLocation id) { + super.makeRecipe(parentMaterial, id); + + BCLRecipeBuilder + .stonecutting( + new ResourceLocation(id.getNamespace(), "stonecutter_" + id.getPath()), + parentMaterial.getBlock(suffix) + ) + .setPrimaryInputAndUnlock(parentMaterial.getBlock(getSourceBlockSlot())) + .setOutputCount(1) + .setGroup("wall") + .build(); + } + + @Override + protected @Nullable MaterialSlot getSourceBlockSlot() { + return base; + } +} diff --git a/src/main/java/org/betterx/bclib/complexmaterials/set/stone/WeatheredBlock.java b/src/main/java/org/betterx/bclib/complexmaterials/set/stone/WeatheredBlock.java new file mode 100644 index 00000000..785c2bdc --- /dev/null +++ b/src/main/java/org/betterx/bclib/complexmaterials/set/stone/WeatheredBlock.java @@ -0,0 +1,47 @@ +package org.betterx.bclib.complexmaterials.set.stone; + +import org.betterx.bclib.blocks.BaseBlock; +import org.betterx.bclib.complexmaterials.ComplexMaterial; +import org.betterx.bclib.complexmaterials.StoneComplexMaterial; +import org.betterx.bclib.complexmaterials.entry.SimpleMaterialSlot; +import org.betterx.bclib.recipes.BCLRecipeBuilder; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockBehaviour; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public class WeatheredBlock extends SimpleMaterialSlot { + public WeatheredBlock() { + super("weathered"); + } + + @Override + protected @NotNull Block createBlock(StoneComplexMaterial parentMaterial, BlockBehaviour.Properties settings) { + return new BaseBlock.Stone(settings); + } + + @Override + protected @Nullable void makeRecipe(ComplexMaterial parentMaterial, ResourceLocation id) { + BCLRecipeBuilder.crafting( + new ResourceLocation(id.getNamespace(), id.getPath() + "_from_moss"), + parentMaterial.getBlock(suffix) + ) + .shapeless() + .addMaterial('#', parentMaterial.getBlock(StoneSlots.SOURCE)) + .addMaterial('+', Blocks.MOSS_BLOCK) + .build(); + + BCLRecipeBuilder.crafting( + new ResourceLocation(id.getNamespace(), id.getPath() + "_from_vine"), + parentMaterial.getBlock(suffix) + ) + .shapeless() + .addMaterial('#', parentMaterial.getBlock(StoneSlots.SOURCE)) + .addMaterial('+', Blocks.VINE) + .build(); + } +} diff --git a/src/main/java/org/betterx/bclib/complexmaterials/set/wood/Slab.java b/src/main/java/org/betterx/bclib/complexmaterials/set/wood/Slab.java index 251336af..d6104c6a 100644 --- a/src/main/java/org/betterx/bclib/complexmaterials/set/wood/Slab.java +++ b/src/main/java/org/betterx/bclib/complexmaterials/set/wood/Slab.java @@ -1,23 +1,17 @@ package org.betterx.bclib.complexmaterials.set.wood; import org.betterx.bclib.blocks.BaseSlabBlock; -import org.betterx.bclib.complexmaterials.ComplexMaterial; import org.betterx.bclib.complexmaterials.WoodenComplexMaterial; -import org.betterx.bclib.complexmaterials.entry.SimpleMaterialSlot; -import org.betterx.bclib.recipes.BCLRecipeBuilder; +import org.betterx.bclib.complexmaterials.entry.MaterialSlot; +import org.betterx.bclib.complexmaterials.set.common.AbstractSlab; -import net.minecraft.data.recipes.RecipeCategory; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockBehaviour; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class Slab extends SimpleMaterialSlot { - public Slab() { - super("slab"); - } +public class Slab extends AbstractSlab { @Override protected @NotNull Block createBlock( @@ -26,15 +20,9 @@ public class Slab extends SimpleMaterialSlot { return new BaseSlabBlock.Wood(parentMaterial.getBlock(WoodSlots.PLANKS), !parentMaterial.woodType.flammable); } + @Override - protected @Nullable void makeRecipe(ComplexMaterial parentMaterial, ResourceLocation id) { - BCLRecipeBuilder - .crafting(id, parentMaterial.getBlock(suffix)) - .setOutputCount(6) - .setShape("###") - .addMaterial('#', parentMaterial.getBlock(WoodSlots.PLANKS)) - .setGroup("slab") - .setCategory(RecipeCategory.BUILDING_BLOCKS) - .build(); + protected @Nullable MaterialSlot getSourceBlockSlot() { + return WoodSlots.PLANKS; } } diff --git a/src/main/java/org/betterx/bclib/complexmaterials/set/wood/Stairs.java b/src/main/java/org/betterx/bclib/complexmaterials/set/wood/Stairs.java index 3a7fe50f..b814fc3f 100644 --- a/src/main/java/org/betterx/bclib/complexmaterials/set/wood/Stairs.java +++ b/src/main/java/org/betterx/bclib/complexmaterials/set/wood/Stairs.java @@ -1,23 +1,17 @@ package org.betterx.bclib.complexmaterials.set.wood; import org.betterx.bclib.blocks.BaseStairsBlock; -import org.betterx.bclib.complexmaterials.ComplexMaterial; import org.betterx.bclib.complexmaterials.WoodenComplexMaterial; -import org.betterx.bclib.complexmaterials.entry.SimpleMaterialSlot; -import org.betterx.bclib.recipes.BCLRecipeBuilder; +import org.betterx.bclib.complexmaterials.entry.MaterialSlot; +import org.betterx.bclib.complexmaterials.set.common.AbstractStairs; -import net.minecraft.data.recipes.RecipeCategory; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockBehaviour; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class Stairs extends SimpleMaterialSlot { - public Stairs() { - super("stairs"); - } +public class Stairs extends AbstractStairs { @Override protected @NotNull Block createBlock( @@ -27,14 +21,7 @@ public class Stairs extends SimpleMaterialSlot { } @Override - protected @Nullable void makeRecipe(ComplexMaterial parentMaterial, ResourceLocation id) { - BCLRecipeBuilder - .crafting(id, parentMaterial.getBlock(suffix)) - .setOutputCount(4) - .setShape("# ", "## ", "###") - .addMaterial('#', parentMaterial.getBlock(WoodSlots.PLANKS)) - .setGroup("stairs") - .setCategory(RecipeCategory.BUILDING_BLOCKS) - .build(); + protected @Nullable MaterialSlot getSourceBlockSlot() { + return WoodSlots.PLANKS; } } diff --git a/src/main/java/org/betterx/bclib/complexmaterials/set/wood/WoodSlots.java b/src/main/java/org/betterx/bclib/complexmaterials/set/wood/WoodSlots.java index 1738e863..121ef114 100644 --- a/src/main/java/org/betterx/bclib/complexmaterials/set/wood/WoodSlots.java +++ b/src/main/java/org/betterx/bclib/complexmaterials/set/wood/WoodSlots.java @@ -34,6 +34,7 @@ public class WoodSlots { public static final MaterialSlot TABURET = new Taburet(); public static final MaterialSlot CHAIR = new Chair(); public static final MaterialSlot BAR_STOOL = new BarStool(); + public static final MaterialSlot WALL = new Wall(); }