diff --git a/src/main/java/de/jottyfan/minecraft/gta/item/StubItem.java b/src/main/java/de/jottyfan/minecraft/gta/item/StubItem.java new file mode 100644 index 0000000..8614ff7 --- /dev/null +++ b/src/main/java/de/jottyfan/minecraft/gta/item/StubItem.java @@ -0,0 +1,51 @@ +package de.jottyfan.minecraft.gta.item; + +import java.util.Map; + +import org.joml.Random; + +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; + +public class StubItem extends Item { + + private static final Map SLASH_MAP = Map.of( + Blocks.HAY_BLOCK, Items.WHEAT, + Blocks.DRIED_KELP_BLOCK, Items.DRIED_KELP); + + public StubItem(Properties properties) { + super(properties); + SLASH_MAP.toString(); + } + + @Override + public InteractionResult useOn(UseOnContext context) { + Level level = context.getLevel(); + BlockPos pos = context.getClickedPos(); + Block clickedBlock = level.getBlockState(pos).getBlock(); + if (SLASH_MAP.containsKey(clickedBlock)) { + if (!level.isClientSide()) { + level.setBlockAndUpdate(pos, Blocks.AIR.defaultBlockState()); + level.playSound(null, pos, SoundEvents.HOE_TILL, SoundSource.BLOCKS); + for (int i = 0; i < 9; i++) { + ItemStack stack = new ItemStack(SLASH_MAP.get(clickedBlock)); + float scatter = new Random().nextFloat(); + ItemEntity entiry = new ItemEntity(level, pos.getX(), pos.getY(), pos.getZ(), + stack, scatter, scatter, 0.2); + level.addFreshEntity(entiry); + } + } + } + return InteractionResult.SUCCESS; + } +} diff --git a/src/main/java/de/jottyfan/minecraft/gta/item/UnoItems.java b/src/main/java/de/jottyfan/minecraft/gta/item/UnoItems.java index 96e3157..9503d66 100644 --- a/src/main/java/de/jottyfan/minecraft/gta/item/UnoItems.java +++ b/src/main/java/de/jottyfan/minecraft/gta/item/UnoItems.java @@ -12,9 +12,13 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.Item.Properties; public class UnoItems { - public static final Item STUB = registerItem(Identifier.fromNamespaceAndPath(Uno.MOD_ID, "stub")); + public static final Item STUB = registerStubItem(Identifier.fromNamespaceAndPath(Uno.MOD_ID, "stub")); public static final Item RUBY = registerItem(Identifier.fromNamespaceAndPath(Uno.MOD_ID, "ruby")); + private static final Item registerStubItem(Identifier identifier) { + return registerItem(identifier, new Item.Properties(), StubItem::new); + } + private static final Item registerItem(Identifier identifier) { return registerItem(identifier, new Item.Properties(), Item::new); }