From 5f17127ba519da83245c6867ff065b240f40264e Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 18 Mar 2022 14:44:27 +0100 Subject: [PATCH] New Interfaces to handle MineableTags for Blocks --- src/main/java/ru/bclib/api/PostInitAPI.java | 20 +++++++++++++++++++ .../java/ru/bclib/blocks/BaseLeavesBlock.java | 6 +++--- .../java/ru/bclib/blocks/BaseOreBlock.java | 5 +++++ .../java/ru/bclib/blocks/BasePlantBlock.java | 10 +++------- .../ru/bclib/blocks/SimpleLeavesBlock.java | 6 +++--- .../ru/bclib/blocks/UnderwaterPlantBlock.java | 11 ++++------ .../ru/bclib/blocks/UpDownPlantBlock.java | 10 +++------- .../interfaces/tools/AddMineableAxe.java | 4 ++++ .../interfaces/tools/AddMineableHoe.java | 4 ++++ .../interfaces/tools/AddMineablePickaxe.java | 4 ++++ .../interfaces/tools/AddMineableShears.java | 4 ++++ .../interfaces/tools/AddMineableShovel.java | 4 ++++ .../interfaces/tools/AddMineableSword.java | 4 ++++ 13 files changed, 65 insertions(+), 27 deletions(-) create mode 100644 src/main/java/ru/bclib/interfaces/tools/AddMineableAxe.java create mode 100644 src/main/java/ru/bclib/interfaces/tools/AddMineableHoe.java create mode 100644 src/main/java/ru/bclib/interfaces/tools/AddMineablePickaxe.java create mode 100644 src/main/java/ru/bclib/interfaces/tools/AddMineableShears.java create mode 100644 src/main/java/ru/bclib/interfaces/tools/AddMineableShovel.java create mode 100644 src/main/java/ru/bclib/interfaces/tools/AddMineableSword.java diff --git a/src/main/java/ru/bclib/api/PostInitAPI.java b/src/main/java/ru/bclib/api/PostInitAPI.java index c0066245..85080844 100644 --- a/src/main/java/ru/bclib/api/PostInitAPI.java +++ b/src/main/java/ru/bclib/api/PostInitAPI.java @@ -10,6 +10,7 @@ import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; import ru.bclib.BCLib; import ru.bclib.api.biomes.BiomeAPI; +import ru.bclib.api.tag.NamedMineableTags; import ru.bclib.api.tag.TagAPI; import ru.bclib.api.tag.TagAPI.TagLocation; import ru.bclib.blocks.BaseBarrelBlock; @@ -23,6 +24,7 @@ import ru.bclib.config.Configs; import ru.bclib.interfaces.PostInitable; import ru.bclib.interfaces.RenderLayerProvider; import ru.bclib.interfaces.TagProvider; +import ru.bclib.interfaces.tools.*; import ru.bclib.registry.BaseBlockEntities; import java.util.List; @@ -111,6 +113,24 @@ public class PostInitAPI { else if (block instanceof BaseFurnaceBlock) { BaseBlockEntities.FURNACE.registerBlock(block); } + if (block instanceof AddMineableShears){ + TagAPI.addBlockTags(block, NamedMineableTags.SHEARS); + } + if (block instanceof AddMineableAxe){ + TagAPI.addBlockTags(block, NamedMineableTags.AXE); + } + if (block instanceof AddMineablePickaxe){ + TagAPI.addBlockTags(block, NamedMineableTags.PICKAXE); + } + if (block instanceof AddMineableShovel){ + TagAPI.addBlockTags(block, NamedMineableTags.SHOVEL); + } + if (block instanceof AddMineableHoe){ + TagAPI.addBlockTags(block, NamedMineableTags.HOE); + } + if (block instanceof AddMineableSword){ + TagAPI.addBlockTags(block, NamedMineableTags.SWORD); + } if (block instanceof TagProvider) { TagProvider.class.cast(block).addTags(blockTags, itemTags); blockTags.forEach(tag -> TagAPI.addBlockTag(tag, block)); diff --git a/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java b/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java index 9955fbad..8daaee2f 100644 --- a/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseLeavesBlock.java @@ -24,6 +24,8 @@ import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.BlockModelProvider; import ru.bclib.interfaces.RenderLayerProvider; import ru.bclib.interfaces.TagProvider; +import ru.bclib.interfaces.tools.AddMineableHoe; +import ru.bclib.interfaces.tools.AddMineableShears; import ru.bclib.items.tool.BaseShearsItem; import ru.bclib.util.MHelper; @@ -31,7 +33,7 @@ import java.util.Collections; import java.util.List; import java.util.function.Consumer; -public class BaseLeavesBlock extends LeavesBlock implements BlockModelProvider, RenderLayerProvider, TagProvider { +public class BaseLeavesBlock extends LeavesBlock implements BlockModelProvider, RenderLayerProvider, TagProvider, AddMineableShears, AddMineableHoe { protected final Block sapling; private static FabricBlockSettings makeLeaves(MaterialColor color) { @@ -100,8 +102,6 @@ public class BaseLeavesBlock extends LeavesBlock implements BlockModelProvider, @Override public void addTags(List> blockTags, List> itemTags) { - blockTags.add(NamedMineableTags.SHEARS); - blockTags.add(NamedMineableTags.HOE); blockTags.add(NamedBlockTags.LEAVES); itemTags.add(NamedItemTags.LEAVES); } diff --git a/src/main/java/ru/bclib/blocks/BaseOreBlock.java b/src/main/java/ru/bclib/blocks/BaseOreBlock.java index 8b0573bf..5b3609d7 100644 --- a/src/main/java/ru/bclib/blocks/BaseOreBlock.java +++ b/src/main/java/ru/bclib/blocks/BaseOreBlock.java @@ -10,6 +10,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.OreBlock; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.block.state.BlockState; @@ -17,7 +18,11 @@ import net.minecraft.world.level.material.Material; import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; +import ru.bclib.api.tag.NamedCommonBlockTags; +import ru.bclib.api.tag.NamedMineableTags; +import ru.bclib.api.tag.TagAPI; import ru.bclib.interfaces.BlockModelProvider; +import ru.bclib.interfaces.TagProvider; import ru.bclib.util.LootUtil; import ru.bclib.util.MHelper; diff --git a/src/main/java/ru/bclib/blocks/BasePlantBlock.java b/src/main/java/ru/bclib/blocks/BasePlantBlock.java index a036fdc1..86c8a76d 100644 --- a/src/main/java/ru/bclib/blocks/BasePlantBlock.java +++ b/src/main/java/ru/bclib/blocks/BasePlantBlock.java @@ -39,13 +39,15 @@ import ru.bclib.client.models.PatternsHelper; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.RenderLayerProvider; import ru.bclib.interfaces.TagProvider; +import ru.bclib.interfaces.tools.AddMineableHoe; +import ru.bclib.interfaces.tools.AddMineableShears; import ru.bclib.items.tool.BaseShearsItem; import java.util.List; import java.util.Optional; import java.util.Random; -public abstract class BasePlantBlock extends BaseBlockNotFull implements RenderLayerProvider, BonemealableBlock, TagProvider { +public abstract class BasePlantBlock extends BaseBlockNotFull implements RenderLayerProvider, BonemealableBlock, AddMineableShears, AddMineableHoe { private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 14, 12); public BasePlantBlock() { @@ -170,10 +172,4 @@ public abstract class BasePlantBlock extends BaseBlockNotFull implements RenderL Optional pattern = PatternsHelper.createJson(BasePatterns.BLOCK_CROSS, resourceLocation); return ModelsHelper.fromPattern(pattern); } - - @Override - public void addTags(List> blockTags, List> itemTags) { - blockTags.add(NamedMineableTags.SHEARS); - blockTags.add(NamedMineableTags.HOE); - } } diff --git a/src/main/java/ru/bclib/blocks/SimpleLeavesBlock.java b/src/main/java/ru/bclib/blocks/SimpleLeavesBlock.java index 1862427f..7aca9c59 100644 --- a/src/main/java/ru/bclib/blocks/SimpleLeavesBlock.java +++ b/src/main/java/ru/bclib/blocks/SimpleLeavesBlock.java @@ -14,10 +14,12 @@ import ru.bclib.api.tag.TagAPI.TagLocation; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.RenderLayerProvider; import ru.bclib.interfaces.TagProvider; +import ru.bclib.interfaces.tools.AddMineableHoe; +import ru.bclib.interfaces.tools.AddMineableShears; import java.util.List; -public class SimpleLeavesBlock extends BaseBlockNotFull implements RenderLayerProvider, TagProvider { +public class SimpleLeavesBlock extends BaseBlockNotFull implements RenderLayerProvider, TagProvider, AddMineableShears, AddMineableHoe { public SimpleLeavesBlock(MaterialColor color) { this( FabricBlockSettings @@ -58,8 +60,6 @@ public class SimpleLeavesBlock extends BaseBlockNotFull implements RenderLayerPr @Override public void addTags(List> blockTags, List> itemTags) { - blockTags.add(NamedMineableTags.SHEARS); - blockTags.add(NamedMineableTags.HOE); blockTags.add(NamedBlockTags.LEAVES); itemTags.add(NamedItemTags.LEAVES); } diff --git a/src/main/java/ru/bclib/blocks/UnderwaterPlantBlock.java b/src/main/java/ru/bclib/blocks/UnderwaterPlantBlock.java index 746c6470..f7a6cedc 100644 --- a/src/main/java/ru/bclib/blocks/UnderwaterPlantBlock.java +++ b/src/main/java/ru/bclib/blocks/UnderwaterPlantBlock.java @@ -35,12 +35,14 @@ import ru.bclib.api.tag.TagAPI.TagLocation; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.RenderLayerProvider; import ru.bclib.interfaces.TagProvider; +import ru.bclib.interfaces.tools.AddMineableHoe; +import ru.bclib.interfaces.tools.AddMineableShears; import ru.bclib.items.tool.BaseShearsItem; import java.util.List; import java.util.Random; -public abstract class UnderwaterPlantBlock extends BaseBlockNotFull implements RenderLayerProvider, BonemealableBlock, LiquidBlockContainer, TagProvider { +public abstract class UnderwaterPlantBlock extends BaseBlockNotFull implements RenderLayerProvider, BonemealableBlock, LiquidBlockContainer, AddMineableShears, AddMineableHoe { private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 14, 12); public UnderwaterPlantBlock() { @@ -161,10 +163,5 @@ public abstract class UnderwaterPlantBlock extends BaseBlockNotFull implements R public FluidState getFluidState(BlockState state) { return Fluids.WATER.getSource(false); } - - @Override - public void addTags(List> blockTags, List> itemTags) { - blockTags.add(NamedMineableTags.SHEARS); - blockTags.add(NamedMineableTags.HOE); - } + } diff --git a/src/main/java/ru/bclib/blocks/UpDownPlantBlock.java b/src/main/java/ru/bclib/blocks/UpDownPlantBlock.java index cb60d0a6..2b31868e 100644 --- a/src/main/java/ru/bclib/blocks/UpDownPlantBlock.java +++ b/src/main/java/ru/bclib/blocks/UpDownPlantBlock.java @@ -29,11 +29,13 @@ import ru.bclib.api.tag.TagAPI.TagLocation; import ru.bclib.client.render.BCLRenderLayer; import ru.bclib.interfaces.RenderLayerProvider; import ru.bclib.interfaces.TagProvider; +import ru.bclib.interfaces.tools.AddMineableHoe; +import ru.bclib.interfaces.tools.AddMineableShears; import ru.bclib.items.tool.BaseShearsItem; import java.util.List; -public abstract class UpDownPlantBlock extends BaseBlockNotFull implements RenderLayerProvider, TagProvider { +public abstract class UpDownPlantBlock extends BaseBlockNotFull implements RenderLayerProvider, AddMineableShears, AddMineableHoe { private static final VoxelShape SHAPE = Block.box(4, 0, 4, 12, 16, 12); public UpDownPlantBlock() { @@ -106,10 +108,4 @@ public abstract class UpDownPlantBlock extends BaseBlockNotFull implements Rende super.playerDestroy(world, player, pos, state, blockEntity, stack); world.neighborChanged(pos, Blocks.AIR, pos.below()); } - - @Override - public void addTags(List> blockTags, List> itemTags) { - blockTags.add(NamedMineableTags.SHEARS); - blockTags.add(NamedMineableTags.HOE); - } } diff --git a/src/main/java/ru/bclib/interfaces/tools/AddMineableAxe.java b/src/main/java/ru/bclib/interfaces/tools/AddMineableAxe.java new file mode 100644 index 00000000..e82ee451 --- /dev/null +++ b/src/main/java/ru/bclib/interfaces/tools/AddMineableAxe.java @@ -0,0 +1,4 @@ +package ru.bclib.interfaces.tools; + +public interface AddMineableAxe { +} diff --git a/src/main/java/ru/bclib/interfaces/tools/AddMineableHoe.java b/src/main/java/ru/bclib/interfaces/tools/AddMineableHoe.java new file mode 100644 index 00000000..3bd60291 --- /dev/null +++ b/src/main/java/ru/bclib/interfaces/tools/AddMineableHoe.java @@ -0,0 +1,4 @@ +package ru.bclib.interfaces.tools; + +public interface AddMineableHoe { +} diff --git a/src/main/java/ru/bclib/interfaces/tools/AddMineablePickaxe.java b/src/main/java/ru/bclib/interfaces/tools/AddMineablePickaxe.java new file mode 100644 index 00000000..92fda1ea --- /dev/null +++ b/src/main/java/ru/bclib/interfaces/tools/AddMineablePickaxe.java @@ -0,0 +1,4 @@ +package ru.bclib.interfaces.tools; + +public interface AddMineablePickaxe { +} diff --git a/src/main/java/ru/bclib/interfaces/tools/AddMineableShears.java b/src/main/java/ru/bclib/interfaces/tools/AddMineableShears.java new file mode 100644 index 00000000..5a42b295 --- /dev/null +++ b/src/main/java/ru/bclib/interfaces/tools/AddMineableShears.java @@ -0,0 +1,4 @@ +package ru.bclib.interfaces.tools; + +public interface AddMineableShears { +} diff --git a/src/main/java/ru/bclib/interfaces/tools/AddMineableShovel.java b/src/main/java/ru/bclib/interfaces/tools/AddMineableShovel.java new file mode 100644 index 00000000..cdd601f7 --- /dev/null +++ b/src/main/java/ru/bclib/interfaces/tools/AddMineableShovel.java @@ -0,0 +1,4 @@ +package ru.bclib.interfaces.tools; + +public interface AddMineableShovel { +} diff --git a/src/main/java/ru/bclib/interfaces/tools/AddMineableSword.java b/src/main/java/ru/bclib/interfaces/tools/AddMineableSword.java new file mode 100644 index 00000000..f68e4500 --- /dev/null +++ b/src/main/java/ru/bclib/interfaces/tools/AddMineableSword.java @@ -0,0 +1,4 @@ +package ru.bclib.interfaces.tools; + +public interface AddMineableSword { +}