Получение ENTITY из RayTraceResult

Версия Minecraft
1.16.5
API
Forge
28
6
Я хочу получить первого попавшегося ENTITY из RayTraceResult. Проблема заключается в том, что я не могу "заставить" луч провзаимодействовать с ENTITY, он взаимодействует либо с блоком, либо промахивается:
1705828568140.png
Однако в самом классе RayTraceResult есть ENTITY
1705828620100.png

Этим простейшим кодом я получал данные о том, куда попал луч:
RayTrace:
@Override
    public ActionResult<ItemStack> use(World pLevel, PlayerEntity pPlayer, Hand pHand) {
        RayTraceResult ray = pPlayer.pick(50,1,false);
        pPlayer.sendMessage(new StringTextComponent("you`re looking on " + ray.getType()), pPlayer.getUUID());
        return super.use(pLevel, pPlayer, pHand);
    }
Также я пытался реализовать EntityRayTraceResult, однако он всегда выдаёт моего игрока. Если отфильтровать всех игроков, то на выходе будет пустота, даже если наводиться вплотную на слизней, например.
 
28
6
В поиске можешь поискать. Не первый раз про такое спрашивают

Держи первое попавшееся. Мб поможет тебе
Если я задал вопрос на форуме, значит я потратил как минимум часа три на попытки загуглить эту проблему. Потом ещё два часа на изучение классов, которые реализуют данный функционал.
Итог : конкретной реализации не найдено. Найден лишь вопрос почему RayTraceResult игнорирует ENTITY.
То, что Вы скинули не отвечает на мой вопрос, потому что на версии 1.12.2 множество методов были переименованы (как именно я не знаю) или вообще удалены (entityHit например). Следовательно реализация будет другой.
 
28
6
Java:
Description: Unexpected error

java.lang.NullPointerException: Unexpected error
    at com.quark.magicwand.Item.Custom.HealStaff.onItemRightClick(HealStaff.java:33) ~[main/:?] {re:classloading}
    at net.minecraft.item.ItemStack.useItemRightClick(ItemStack.java:226) ~[forge-1.16.5-36.2.34_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,xf:fml:forge:filled_map.4,xf:fml:forge:itemstack}
    at net.minecraft.client.multiplayer.PlayerController.processRightClick(PlayerController.java:346) ~[forge-1.16.5-36.2.34_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.rightClickMouse(Minecraft.java:1432) ~[forge-1.16.5-36.2.34_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.processKeyBinds(Minecraft.java:1694) ~[forge-1.16.5-36.2.34_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:1509) ~[forge-1.16.5-36.2.34_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:980) ~[forge-1.16.5-36.2.34_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.Minecraft.run(Minecraft.java:612) ~[forge-1.16.5-36.2.34_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
    at net.minecraft.client.main.Main.main(Main.java:184) ~[forge-1.16.5-36.2.34_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {re:classloading,pl:runtimedistcleaner:A}
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_372] {}
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_372] {}
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_372] {}
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_372] {}
    at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.5-36.2.34_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.1.3.jar:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.1.3.jar:?] {}
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.1.3.jar:?] {}
    at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.1.3.jar:?] {}
    at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.1.3.jar:?] {}
    at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:108) [forge-1.16.5-36.2.34_mapped_snapshot_20210309-1.16.5-recomp.jar:?] {}
К сожалению данное решение крашит клиент:
Java:
@Override
    public ActionResult<ItemStack> onItemRightClick(World world, PlayerEntity player, Hand hand) {
        RayTrace ray = new RayTrace();
        LivingEntity entity = ray.getEntityInCrosshair(1,10);
        entity.addPotionEffect(new EffectInstance(Effects.GLOWING,2,10));
        return super.onItemRightClick(world, player, hand);
    }
 
28
6
Смотри класс ProjectileUtil
Только в ArrowEntity есть метод setPotionEffect. Однако хотелось бы разобраться почему LivingEntity, который содержит в себе entity, не хочет получать эффект зелья. При этом можно удалить модель, переместить по координатам и другое, кроме addPotionEffect.
 
Сверху