diff --git a/src/main/java/me/jonasjones/nec/block/ModBlocks.java b/src/main/java/me/jonasjones/nec/block/ModBlocks.java index efbc2b0..1a92a46 100644 --- a/src/main/java/me/jonasjones/nec/block/ModBlocks.java +++ b/src/main/java/me/jonasjones/nec/block/ModBlocks.java @@ -8,6 +8,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.BlockItem; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.RotatedPillarBlock; +import net.minecraft.world.level.block.CraftingTableBlock; import net.minecraft.world.level.material.Material; import static me.jonasjones.nec.NotEnoughCursedness.MOD_ID; @@ -22,6 +23,7 @@ public class ModBlocks { public static final Block DEEPSLATE_DIAMOND_ORE_ORE = new Block(FabricBlockSettings.of(Material.STONE).strength(4.0F)); public static final Block JAVA_BLOCK = new Block(FabricBlockSettings.of(Material.STONE).strength(5.0F)); public static final Block POCKET_BLOCK = new Block(FabricBlockSettings.of(Material.STONE).strength(5.0F)); + public static final RecaptchaTableBlock RECAPTCHA_TABLE_BLOCK = new RecaptchaTableBlock(FabricBlockSettings.of(Material.WOOD).strength(1.0f)); private static BlockItem GUN_BLOCK_ITEM; private static Block GUN_BLOCK_BLOCK; private static BlockItem BLAZE_BLOCK_ITEM; @@ -36,6 +38,8 @@ public class ModBlocks { public static Block JAVA_BLOCK_BLOCK; public static BlockItem POCKET_BLOCK_ITEM; public static Block POCKET_BLOCK_BLOCK; + public static BlockItem RECAPTCHA_TABLE_ITEM; + public static RecaptchaTableBlock RECAPTCHA_TABLE_BLOCK_BLOCK; //public static final Block GREEN_BIRCH_WOOD = new PillarBlock(FabricBlockSettings.of(Material.WOOD).strength(4.0f)); //public static final Block STRIPPED_GREEN_BIRCH_LOG = new PillarBlock(FabricBlockSettings.of(Material.WOOD).strength(4.0f)); //public static final Block STRIPPED_GREEN_BIRCH_WOOD = new PillarBlock(FabricBlockSettings.of(Material.WOOD).strength(4.0f)); @@ -68,5 +72,9 @@ public class ModBlocks { POCKET_BLOCK_BLOCK = Registry.register(BLOCK, new ResourceLocation(MOD_ID, "pocket_block"), POCKET_BLOCK); POCKET_BLOCK_ITEM = Registry.register(ITEM, new ResourceLocation(MOD_ID, "pocket_block"), new BlockItem(POCKET_BLOCK, new FabricItemSettings())); ModRegistries.register_item(POCKET_BLOCK_ITEM); + + RECAPTCHA_TABLE_BLOCK_BLOCK = Registry.register(BLOCK, new ResourceLocation(MOD_ID, "recaptcha_table"), RECAPTCHA_TABLE_BLOCK); + RECAPTCHA_TABLE_ITEM = Registry.register(ITEM, new ResourceLocation(MOD_ID, "recaptcha_table"), new BlockItem(RECAPTCHA_TABLE_BLOCK, new FabricItemSettings())); + ModRegistries.register_item(RECAPTCHA_TABLE_ITEM); } } diff --git a/src/main/java/me/jonasjones/nec/block/RecaptchaTableBlock.java b/src/main/java/me/jonasjones/nec/block/RecaptchaTableBlock.java new file mode 100644 index 0000000..3bb406d --- /dev/null +++ b/src/main/java/me/jonasjones/nec/block/RecaptchaTableBlock.java @@ -0,0 +1,41 @@ +package me.jonasjones.nec.block; + +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.SimpleMenuProvider; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.ContainerLevelAccess; +import net.minecraft.world.inventory.CraftingMenu; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; + +public class RecaptchaTableBlock extends Block { + private static final Component CONTAINER_TITLE = Component.translatable("container.crafting"); + + public RecaptchaTableBlock(BlockBehaviour.Properties properties) { + super(properties); + } + + public InteractionResult use(BlockState blockState, Level level, BlockPos blockPos, Player player, InteractionHand interactionHand, BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } else { + player.openMenu(blockState.getMenuProvider(level, blockPos)); + player.awardStat(Stats.INTERACT_WITH_CRAFTING_TABLE); + return InteractionResult.CONSUME; + } + } + + public MenuProvider getMenuProvider(BlockState blockState, Level level, BlockPos blockPos) { + return new SimpleMenuProvider((i, inventory, player) -> { + return new CraftingMenu(i, inventory, ContainerLevelAccess.create(level, blockPos)); + }, CONTAINER_TITLE); + } +}