- 103
- 2
- 2
Как проверить находится ли предмет в руке у игрока, если он выбран в руке, то возпроизводится звук адского портала, если не в руке, то звук перестаёт возпроизводится.
getHeldItem()
у игрока вернет тебе итемстак с предметом, который держит игрок. А дальше просто пишешь логику работы.@Override
public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) {
ItemStack itemstack = playerIn.getHeldItem(handIn);
if (!worldIn.isRemote) {
//playerIn.playSound(ModSounds.portal_enter.get(), 1, 1);
if (playerIn.world.dimension.isNether()) {
playerIn.setPortal(playerIn.getPosition());
playerIn.changeDimension(DimensionType.OVERWORLD);
}else{
playerIn.setPortal(playerIn.getPosition());
playerIn.changeDimension(DimensionType.THE_NETHER);
}
}
return ActionResult.resultPass(itemstack);
}
@Override
public int getUseDuration(ItemStack stack) {
return 80;
}
@Override
public ItemStack onItemUseFinish(ItemStack stack, World worldIn, LivingEntity entityLiving) {
//Тут должен был юзатся предмет
return stack;
}
@SubscribeEvent
public static void checkPortalInMainHand(final LivingEvent.LivingUpdateEvent event)
{
if(event.getEntity() instanceof PlayerEntity) {
PlayerEntity player = (PlayerEntity) event.getEntity();
ItemStack heldItem = player.getHeldItem(Hand.MAIN_HAND);
ItemStack portal = new ItemStack(ModItems.PORTABLE_NETHER_PORTAL.get());
if (heldItem.getItem() == portal.getItem()){
System.out.print("Item in main hand");
player.playSound(SoundEvents.BLOCK_PORTAL_AMBIENT, 1, 1);
}
}
}
new SPlaySoundPacket(new ResourceLocation("block.portal.trigger"), SoundCategory.BLOCKS,playerIn.getPositionVec(),1,1);
new SStopSoundPacket(new ResourceLocation("block.portal.trigger"),SoundCategory.BLOCKS);