diff --git a/src/main/java/net/krituximon/stalinium/block/ModBlocks.java b/src/main/java/net/krituximon/stalinium/block/ModBlocks.java index d1c2a23..d897cb4 100644 --- a/src/main/java/net/krituximon/stalinium/block/ModBlocks.java +++ b/src/main/java/net/krituximon/stalinium/block/ModBlocks.java @@ -18,13 +18,13 @@ public class ModBlocks { DeferredRegister.createBlocks(Stalinium.MODID); public static final DeferredBlock COMPRESSED_BEDROCK = registerBlock("compressed_bedrock", - () -> new Block(BlockBehaviour.Properties.of() + () -> new NetheriteOnlyBlock(BlockBehaviour.Properties.of() .strength(50f, 1200f) .requiresCorrectToolForDrops() .sound(SoundType.STONE))); public static final DeferredBlock STALINIUM_ORE = registerBlock("stalinium_ore", - () -> new Block(BlockBehaviour.Properties.of() + () -> new NetheriteOnlyBlock(BlockBehaviour.Properties.of() .strength(5f, 6f) .requiresCorrectToolForDrops() .sound(SoundType.NETHER_ORE))); @@ -35,6 +35,8 @@ public class ModBlocks { .requiresCorrectToolForDrops() .sound(SoundType.NETHERITE_BLOCK))); + + private static DeferredBlock registerBlock(String name, Supplier block) { DeferredBlock toReturn = BLOCKS.register(name, block); registerBlockItem(name, toReturn); diff --git a/src/main/java/net/krituximon/stalinium/block/NetheriteOnlyBlock.java b/src/main/java/net/krituximon/stalinium/block/NetheriteOnlyBlock.java new file mode 100644 index 0000000..a1de819 --- /dev/null +++ b/src/main/java/net/krituximon/stalinium/block/NetheriteOnlyBlock.java @@ -0,0 +1,26 @@ +package net.krituximon.stalinium.block; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.PickaxeItem; +import net.minecraft.world.item.Tiers; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.BlockBehaviour; + +public class NetheriteOnlyBlock extends Block { + public NetheriteOnlyBlock(BlockBehaviour.Properties props) { + super(props); + } + + @Override + public boolean canHarvestBlock(BlockState state, BlockGetter world, BlockPos pos, Player player) { + ItemStack stack = player.getMainHandItem(); + if (!(stack.getItem() instanceof PickaxeItem)) { + return false; + } + return ((PickaxeItem) stack.getItem()).getTier() == Tiers.NETHERITE; + } +} diff --git a/src/main/java/net/krituximon/stalinium/datagen/ModBlockTagProvider.java b/src/main/java/net/krituximon/stalinium/datagen/ModBlockTagProvider.java index 62329ef..536ca74 100644 --- a/src/main/java/net/krituximon/stalinium/datagen/ModBlockTagProvider.java +++ b/src/main/java/net/krituximon/stalinium/datagen/ModBlockTagProvider.java @@ -22,9 +22,13 @@ public class ModBlockTagProvider extends BlockTagsProvider { protected void addTags(HolderLookup.Provider provider) { tag(Tags.Blocks.STORAGE_BLOCKS) .add(ModBlocks.STALINIUM_BLOCK.get()); - - tag(BlockTags.MINEABLE_WITH_PICKAXE) + tag(BlockTags.NEEDS_DIAMOND_TOOL) .add(ModBlocks.STALINIUM_BLOCK.get()); - + tag(BlockTags.MINEABLE_WITH_PICKAXE) + .add( + ModBlocks.STALINIUM_BLOCK.get(), + ModBlocks.STALINIUM_ORE.get(), + ModBlocks.COMPRESSED_BEDROCK.get() + ); } }