package net.minestom.server.entity; import net.minestom.server.coordinate.Pos; import net.minestom.server.instance.block.Block; import net.minestom.testing.Env; import net.minestom.testing.EnvTest; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; @EnvTest public class EntityPhysicsIntegrationTest { @Test public void onGround(Env env) { var instance = env.createFlatInstance(); instance.setBlock(1, 40, 1, Block.STONE); var entity = new Entity(EntityTypes.ZOMBIE); entity.setInstance(instance, new Pos(1, 41, 1)).join(); env.tick(); // Entity shouldn't be on ground because it intitially spawns in with onGround = false // and a velocity of 0, it'll take 1 entity tick for gravity to be applied to their velocity // and a downward block collision to occur assertFalse(entity.onGround); for (int i = 0; i < 10; i++) { env.tick(); assertTrue(entity.onGround, "entity needs to be grounded on tick: " + entity.getAliveTicks()); } } }