Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.togachan.cultivationmod.events;
- import net.minecraft.server.level.ServerLevel;
- import net.minecraft.sounds.SoundEvents;
- import net.minecraft.sounds.SoundSource;
- import net.minecraft.tags.ItemTags;
- import net.minecraft.util.RandomSource;
- import net.minecraft.world.InteractionHand;
- import net.minecraft.world.InteractionResult;
- import net.minecraft.world.entity.EquipmentSlot;
- import net.minecraft.world.entity.item.ItemEntity;
- import net.minecraft.world.entity.player.Player;
- import net.minecraft.world.item.ItemStack;
- import net.neoforged.bus.api.SubscribeEvent;
- import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent;
- import net.togachan.cultivationmod.item.CultivationItems;
- import org.slf4j.Logger;
- import com.mojang.logging.LogUtils;
- public class CuttingJadeEvent {
- private static final Logger LOGGER = LogUtils.getLogger();
- // Registering the event with the event bus
- @SubscribeEvent
- public static void onRightClickItemEntity(PlayerInteractEvent.EntityInteract event) {
- if (!(event.getTarget() instanceof ItemEntity itemEntity)) {
- return;
- }
- Player player = event.getEntity();
- if (!(player.level() instanceof ServerLevel level)) {
- return; // Ensure server-side execution
- }
- ItemStack heldItem = player.getItemInHand(event.getHand());
- ItemStack entityStack = itemEntity.getItem();
- LOGGER.info("Player {} interacted with item {} using {}", player.getName().getString(), entityStack.getItem(), heldItem.getItem());
- // Check if the item is Uncut Jade and the player is holding a sword
- if (entityStack.is(CultivationItems.UNCUTJADE.get()) && heldItem.is(ItemTags.SWORDS)) {
- LOGGER.info("Uncut Jade detected! Transforming it...");
- // Damage the sword (subtracts durability)
- heldItem.hurtAndBreak(10, player,
- event.getHand() == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND);
- // Replace Uncut Jade with Cut Jade
- itemEntity.setItem(new ItemStack(CultivationItems.CUTJADE.get()));
- // Play anvil sound effect
- level.playSound(null, player.getX(), player.getY(), player.getZ(),
- SoundEvents.ANVIL_USE, SoundSource.PLAYERS, 1.0f, 1.0f);
- // Drop Jade Flakes (1-5 pieces)
- int jadeFlakesAmount = RandomSource.create().nextIntBetweenInclusive(1, 5);
- ItemEntity jadeFlakesDrop = new ItemEntity(level, itemEntity.getX(), itemEntity.getY(), itemEntity.getZ(),
- new ItemStack(CultivationItems.JADEFLAKES.get(), jadeFlakesAmount));
- level.addFreshEntity(jadeFlakesDrop);
- LOGGER.info("Transformation complete! Dropped {} Jade Flakes.", jadeFlakesAmount);
- // Cancel event so no other interactions occur
- event.setCancellationResult(InteractionResult.SUCCESS);
- event.setCanceled(true);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment