Added Behaviours for all relevant Blocks

This commit is contained in:
Frank 2023-05-23 19:47:00 +02:00
parent 3b2a2d4294
commit 6cb70dd35f
83 changed files with 1317 additions and 395 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;
@ -29,15 +38,11 @@ import java.util.Map;
import java.util.Optional;
import org.jetbrains.annotations.Nullable;
public class BaseSlabBlock extends SlabBlock implements BlockModelProvider, CustomItemProvider {
public abstract class BaseSlabBlock extends SlabBlock implements BlockModelProvider, CustomItemProvider, TagProvider {
private final Block parent;
public final boolean fireproof;
public BaseSlabBlock(Block source) {
this(source, false);
}
public BaseSlabBlock(Block source, boolean fireproof) {
protected BaseSlabBlock(Block source, boolean fireproof) {
super(Properties.copy(source));
this.parent = source;
this.fireproof = fireproof;
@ -88,9 +93,73 @@ public class BaseSlabBlock extends SlabBlock implements BlockModelProvider, Cust
return ModelsHelper.createBlockSimple(modelId);
}
@Override
public void addTags(List<TagKey<Block>> blockTags, List<TagKey<Item>> itemTags) {
blockTags.add(BlockTags.SLABS);
itemTags.add(ItemTags.SLABS);
}
@Override
public BlockItem getCustomItem(ResourceLocation blockID, Item.Properties settings) {
if (fireproof) settings = settings.fireResistant();
return new BlockItem(this, settings);
}
public static class Stone extends BaseSlabBlock implements BehaviourStone {
public Stone(Block source) {
this(source, true);
}
public Stone(Block source, boolean fireproof) {
super(source, fireproof);
}
}
public static class Metal extends BaseSlabBlock implements BehaviourMetal {
public Metal(Block source) {
this(source, true);
}
public Metal(Block source, boolean fireproof) {
super(source, fireproof);
}
}
public static class Wood extends BaseSlabBlock 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_SLABS);
itemTags.add(ItemTags.WOODEN_SLABS);
}
}
public static class Obsidian extends BaseSlabBlock implements BehaviourObsidian {
public Obsidian(Block source) {
super(source, true);
}
public Obsidian(Block source, boolean fireproof) {
super(source, fireproof);
}
}
public static BaseSlabBlock from(Block source, boolean flammable) {
return BehaviourHelper.from(
source,
(s) -> new BaseSlabBlock.Wood(s, !flammable),
(s) -> new BaseSlabBlock.Stone(s, !flammable),
(s) -> new BaseSlabBlock.Metal(s, !flammable),
(s) -> new BaseSlabBlock.Obsidian(s, !flammable),
null
);
}
}