From c2d3d991b187a1e953c9737eff204ad5d77660ba Mon Sep 17 00:00:00 2001 From: Steven Date: Sun, 1 Oct 2023 22:39:26 -0400 Subject: [PATCH] VolcanicGlassRing addded right click logic, Added Curios --- .../util_rings/items/VolcanicGlassRing.java | 27 ++++++++++++++++--- .../util_rings/curios/entities/player.json | 4 +++ .../data/util_rings/curios/slots/ring.json | 3 +++ .../data/util_rings/recipes/iron_ring.json | 7 +++-- 4 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/data/util_rings/curios/entities/player.json create mode 100644 src/main/resources/data/util_rings/curios/slots/ring.json diff --git a/src/main/java/com/skdevstudios/util_rings/items/VolcanicGlassRing.java b/src/main/java/com/skdevstudios/util_rings/items/VolcanicGlassRing.java index 517336d..3e1902c 100644 --- a/src/main/java/com/skdevstudios/util_rings/items/VolcanicGlassRing.java +++ b/src/main/java/com/skdevstudios/util_rings/items/VolcanicGlassRing.java @@ -1,9 +1,15 @@ package com.skdevstudios.util_rings.items; +import net.minecraft.core.BlockPos; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; import top.theillusivec4.curios.api.SlotContext; import top.theillusivec4.curios.api.type.capability.ICurioItem; @@ -13,9 +19,24 @@ public class VolcanicGlassRing extends Item implements ICurioItem { } @Override - public InteractionResult useOn(UseOnContext context){ - return null; - //TODO: Add right click spawns obsidian block + public InteractionResult useOn(UseOnContext context) { + Level world = context.getLevel(); + BlockPos pos = context.getClickedPos().relative(context.getClickedFace()); + + BlockState targetState = world.getBlockState(pos); + + if (targetState.isAir() && !world.isClientSide()) { + // Check if the target block is air and place obsidian + BlockState obsidian = Blocks.OBSIDIAN.defaultBlockState(); + world.setBlockAndUpdate(pos, obsidian); + + // Play a sound effect at the placed block position + world.playSound(null, pos, SoundEvents.STONE_PLACE, SoundSource.BLOCKS, 1.0F, 1.0F); + + return InteractionResult.SUCCESS; + } + + return InteractionResult.FAIL; } @Override public void curioTick(SlotContext slotContext, ItemStack stack) { diff --git a/src/main/resources/data/util_rings/curios/entities/player.json b/src/main/resources/data/util_rings/curios/entities/player.json new file mode 100644 index 0000000..007f8fb --- /dev/null +++ b/src/main/resources/data/util_rings/curios/entities/player.json @@ -0,0 +1,4 @@ +{ + "entities": ["player"], + "slots": ["ring"] +} \ No newline at end of file diff --git a/src/main/resources/data/util_rings/curios/slots/ring.json b/src/main/resources/data/util_rings/curios/slots/ring.json new file mode 100644 index 0000000..0fcce4b --- /dev/null +++ b/src/main/resources/data/util_rings/curios/slots/ring.json @@ -0,0 +1,3 @@ +{ + "size": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/util_rings/recipes/iron_ring.json b/src/main/resources/data/util_rings/recipes/iron_ring.json index cccbc40..8b088cd 100644 --- a/src/main/resources/data/util_rings/recipes/iron_ring.json +++ b/src/main/resources/data/util_rings/recipes/iron_ring.json @@ -1,12 +1,15 @@ { "type": "minecraft:crafting_shaped", "pattern": [ - " # ", + "@#@", "# #", - " # " + "@#@" ], "key": { "#": { + "item": "minecraft:iron_ingot" + }, + "@": { "item": "minecraft:iron_nugget" } },