Added Behaviours for all relevant Blocks

This commit is contained in:
Frank 2023-05-23 19:47:00 +02:00
parent 91fe9d5042
commit 4f7d9de7be
83 changed files with 1329 additions and 373 deletions

View file

@ -1,16 +1,25 @@
package org.betterx.bclib.blocks;
import org.betterx.bclib.behaviours.BehaviourHelper;
import org.betterx.bclib.behaviours.interfaces.BehaviourMetal;
import org.betterx.bclib.behaviours.interfaces.BehaviourObsidian;
import org.betterx.bclib.behaviours.interfaces.BehaviourStone;
import org.betterx.bclib.behaviours.interfaces.BehaviourWood;
import org.betterx.bclib.client.models.BasePatterns;
import org.betterx.bclib.client.models.ModelsHelper;
import org.betterx.bclib.client.models.PatternsHelper;
import org.betterx.bclib.interfaces.BlockModelProvider;
import org.betterx.bclib.interfaces.CustomItemProvider;
import org.betterx.bclib.interfaces.TagProvider;
import net.minecraft.client.renderer.block.model.BlockModel;
import net.minecraft.client.resources.model.BlockModelRotation;
import net.minecraft.client.resources.model.UnbakedModel;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.BlockTags;
import net.minecraft.tags.ItemTags;
import net.minecraft.tags.TagKey;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
@ -30,15 +39,13 @@ import java.util.Map;
import java.util.Optional;
import org.jetbrains.annotations.Nullable;
public class BaseStairsBlock extends StairBlock implements BlockModelProvider, CustomItemProvider {
public abstract class BaseStairsBlock extends StairBlock implements BlockModelProvider, CustomItemProvider, TagProvider {
private final Block parent;
public final boolean fireproof;
public BaseStairsBlock(Block source) {
this(source, false);
}
public BaseStairsBlock(Block source, boolean fireproof) {
protected BaseStairsBlock(Block source, boolean fireproof) {
super(source.defaultBlockState(), Properties.copy(source));
this.parent = source;
this.fireproof = fireproof;
@ -117,4 +124,69 @@ public class BaseStairsBlock extends StairBlock implements BlockModelProvider, C
if (fireproof) settings = settings.fireResistant();
return new BlockItem(this, settings);
}
@Override
public void addTags(List<TagKey<Block>> blockTags, List<TagKey<Item>> itemTags) {
blockTags.add(BlockTags.STAIRS);
itemTags.add(ItemTags.STAIRS);
}
public static class Stone extends BaseStairsBlock implements BehaviourStone {
public Stone(Block source) {
this(source, true);
}
public Stone(Block source, boolean fireproof) {
super(source, fireproof);
}
}
public static class Metal extends BaseStairsBlock implements BehaviourMetal {
public Metal(Block source) {
this(source, true);
}
public Metal(Block source, boolean fireproof) {
super(source, fireproof);
}
}
public static class Wood extends BaseStairsBlock implements BehaviourWood {
public Wood(Block source) {
this(source, false);
}
public Wood(Block source, boolean fireproof) {
super(source, fireproof);
}
@Override
public void addTags(List<TagKey<Block>> blockTags, List<TagKey<Item>> itemTags) {
super.addTags(blockTags, itemTags);
blockTags.add(BlockTags.WOODEN_STAIRS);
itemTags.add(ItemTags.WOODEN_STAIRS);
}
}
public static class Obsidian extends BaseStairsBlock implements BehaviourObsidian {
public Obsidian(Block source) {
this(source, true);
}
public Obsidian(Block source, boolean fireproof) {
super(source, fireproof);
}
}
public static BaseStairsBlock from(Block source, boolean flammable) {
return BehaviourHelper.from(
source,
(block) -> new Wood(block, flammable),
(block) -> new Stone(block, !flammable),
(block) -> new Metal(block, !flammable),
(block) -> new Obsidian(block, !flammable),
null
);
}
}