realtogachan

Untitled

Mar 30th, 2025
16
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. package net.togachan.cultivationmod.events;
  2.  
  3. import net.minecraft.server.level.ServerLevel;
  4. import net.minecraft.sounds.SoundEvents;
  5. import net.minecraft.sounds.SoundSource;
  6. import net.minecraft.tags.ItemTags;
  7. import net.minecraft.util.RandomSource;
  8. import net.minecraft.world.InteractionHand;
  9. import net.minecraft.world.InteractionResult;
  10. import net.minecraft.world.entity.EquipmentSlot;
  11. import net.minecraft.world.entity.item.ItemEntity;
  12. import net.minecraft.world.entity.player.Player;
  13. import net.minecraft.world.item.ItemStack;
  14. import net.neoforged.bus.api.SubscribeEvent;
  15. import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent;
  16. import net.togachan.cultivationmod.item.CultivationItems;
  17. import org.slf4j.Logger;
  18. import com.mojang.logging.LogUtils;
  19.  
  20. public class CuttingJadeEvent {
  21. private static final Logger LOGGER = LogUtils.getLogger();
  22.  
  23. // Registering the event with the event bus
  24. @SubscribeEvent
  25. public static void onRightClickItemEntity(PlayerInteractEvent.EntityInteract event) {
  26. if (!(event.getTarget() instanceof ItemEntity itemEntity)) {
  27. return;
  28. }
  29.  
  30. Player player = event.getEntity();
  31. if (!(player.level() instanceof ServerLevel level)) {
  32. return; // Ensure server-side execution
  33. }
  34.  
  35. ItemStack heldItem = player.getItemInHand(event.getHand());
  36. ItemStack entityStack = itemEntity.getItem();
  37.  
  38. LOGGER.info("Player {} interacted with item {} using {}", player.getName().getString(), entityStack.getItem(), heldItem.getItem());
  39.  
  40. // Check if the item is Uncut Jade and the player is holding a sword
  41. if (entityStack.is(CultivationItems.UNCUTJADE.get()) && heldItem.is(ItemTags.SWORDS)) {
  42. LOGGER.info("Uncut Jade detected! Transforming it...");
  43.  
  44. // Damage the sword (subtracts durability)
  45. heldItem.hurtAndBreak(10, player,
  46. event.getHand() == InteractionHand.MAIN_HAND ? EquipmentSlot.MAINHAND : EquipmentSlot.OFFHAND);
  47.  
  48. // Replace Uncut Jade with Cut Jade
  49. itemEntity.setItem(new ItemStack(CultivationItems.CUTJADE.get()));
  50.  
  51. // Play anvil sound effect
  52. level.playSound(null, player.getX(), player.getY(), player.getZ(),
  53. SoundEvents.ANVIL_USE, SoundSource.PLAYERS, 1.0f, 1.0f);
  54.  
  55. // Drop Jade Flakes (1-5 pieces)
  56. int jadeFlakesAmount = RandomSource.create().nextIntBetweenInclusive(1, 5);
  57. ItemEntity jadeFlakesDrop = new ItemEntity(level, itemEntity.getX(), itemEntity.getY(), itemEntity.getZ(),
  58. new ItemStack(CultivationItems.JADEFLAKES.get(), jadeFlakesAmount));
  59. level.addFreshEntity(jadeFlakesDrop);
  60.  
  61. LOGGER.info("Transformation complete! Dropped {} Jade Flakes.", jadeFlakesAmount);
  62.  
  63. // Cancel event so no other interactions occur
  64. event.setCancellationResult(InteractionResult.SUCCESS);
  65. event.setCanceled(true);
  66. }
  67. }
  68. }
  69.  
Advertisement
Add Comment
Please, Sign In to add comment