Вопрос Написал рейкаст, но не работает проверка на то что кооординаты находятся в хитбоксе

Cipa

Пользователь
Сообщения
7
Хочу реализовать оружие из которого выходит луч партиклов и что-либо делает с мобом, но проверка находится ли точка рейкаста в хитбоксе не срабатывает, хотя луч проходит через моба

Вам необходимо зарегистрироваться для просмотра изображений-вложений


Код:
Java:
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Particle;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.util.BoundingBox;
import org.bukkit.util.Vector;

import java.util.ArrayList;
import java.util.Collection;

public class EventListener implements Listener {
    private boolean isInRange(Location location, BoundingBox boundingBox) {
        double x = location.getX();
        double y = location.getY();
        double z = location.getZ();
        return boundingBox.contains(x, y, z);

    }

    @EventHandler
    public void onItemClick(PlayerInteractEvent e) {
        Player p = e.getPlayer();
        p.sendMessage("Click");
        Location startPosition = p.getLocation();
        startPosition.setY(startPosition.getY() + 1.4);
        Vector direction = p.getLocation().getDirection();

        ArrayList<Location> locationList = new ArrayList<Location>();

        int distance = 10;
        double accuracy = 0.1;

        for (double i = accuracy; i < distance; i += accuracy) {
            direction.multiply(i);
            startPosition.add(direction);
            p.spawnParticle(Particle.VILLAGER_HAPPY, startPosition, 1);
            locationList.add(startPosition);
            startPosition.subtract(direction);
            direction.normalize();
        }
        int rayDistanceCast = 10;

        Collection<Entity> entityCollection = startPosition.getWorld().getNearbyEntities(startPosition, rayDistanceCast , rayDistanceCast , rayDistanceCast );
        for (Entity entity : entityCollection) {
            for (Location location : locationList) {
                if (isInRange(location, entity.getBoundingBox()) & entity.getType() != EntityType.PLAYER){
                    entity.setGlowing(true);
                    p.sendMessage(ChatColor.BLUE + entity.getName());

                }
            }
        }
    }
}
 
Назад
Сверху Снизу