Minestom/src/test/java/net/minestom/server/entity/EntityLineOfSightIntegratio...

106 lines
3.4 KiB
Java

package net.minestom.server.entity;
import net.minestom.server.api.Env;
import net.minestom.server.api.EnvTest;
import net.minestom.server.coordinate.Pos;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
@EnvTest
public class EntityLineOfSightIntegrationTest {
@Test
public void entityPhysicsCheckLineOfSight(Env env) {
var instance = env.createFlatInstance();
var entity = new Entity(EntityTypes.ZOMBIE);
entity.setInstance(instance, new Pos(0, 42, 0)).join();
entity.setView(-90, 0);
var entity2 = new Entity(EntityTypes.ZOMBIE);
entity2.setInstance(instance, new Pos(10, 42, 0)).join();
Entity res = entity.getLineOfSightEntity(20, (e) -> true);
assertEquals(res, entity2);
}
@Test
public void entityPhysicsCheckLineOfSightBehind(Env env) {
var instance = env.createFlatInstance();
var entity = new Entity(EntityTypes.ZOMBIE);
entity.setInstance(instance, new Pos(0, 42, 0)).join();
entity.setView(-90, 0);
var entity2 = new Entity(EntityTypes.ZOMBIE);
entity2.setInstance(instance, new Pos(-10, 42, 0)).join();
Entity res = entity.getLineOfSightEntity(20, (e) -> true);
assertNull(res);
}
@Test
public void entityPhysicsCheckLineOfSightNearMiss(Env env) {
var instance = env.createFlatInstance();
var entity = new Entity(EntityTypes.ZOMBIE);
entity.setInstance(instance, new Pos(0, 42, 0)).join();
entity.setView(-90, 0);
var entity2 = new Entity(EntityTypes.ZOMBIE);
entity2.setInstance(instance, new Pos(10, 42, 0.31)).join();
Entity res = entity.getLineOfSightEntity(20, (e) -> true);
assertNull(res);
}
@Test
public void entityPhysicsCheckLineOfSightNearHit(Env env) {
var instance = env.createFlatInstance();
var entity = new Entity(EntityTypes.ZOMBIE);
entity.setInstance(instance, new Pos(0, 42, 0)).join();
entity.setView(-90, 0);
var entity2 = new Entity(EntityTypes.ZOMBIE);
entity2.setInstance(instance, new Pos(10, 42, 0.3)).join();
Entity res = entity.getLineOfSightEntity(20, (e) -> true);
assertEquals(res, entity2);
}
@Test
public void entityPhysicsCheckLineOfSightCorrectOrder(Env env) {
var instance = env.createFlatInstance();
var entity = new Entity(EntityTypes.ZOMBIE);
entity.setInstance(instance, new Pos(0, 42, 0)).join();
entity.setView(-90, 0);
var entity2 = new Entity(EntityTypes.ZOMBIE);
entity2.setInstance(instance, new Pos(10, 42, 0)).join();
var entity3 = new Entity(EntityTypes.ZOMBIE);
entity3.setInstance(instance, new Pos(5, 42, 0)).join();
Entity res = entity.getLineOfSightEntity(20, (e) -> true);
assertEquals(res, entity3);
}
@Test
public void entityPhysicsCheckLineOfSightBigMiss(Env env) {
var instance = env.createFlatInstance();
var entity = new Entity(EntityTypes.ZOMBIE);
entity.setInstance(instance, new Pos(0, 42, 0)).join();
entity.setView(-90, 0);
var entity2 = new Entity(EntityTypes.ZOMBIE);
entity2.setInstance(instance, new Pos(10, 42, 10)).join();
Entity res = entity.getLineOfSightEntity(20, (e) -> true);
assertNull(res);
}
}