mirror of
https://github.com/Minestom/Minestom.git
synced 2024-06-29 07:55:07 +02:00
30aa3ac8f3
Signed-off-by: TheMode <themode@outlook.fr>
102 lines
3.7 KiB
Java
102 lines
3.7 KiB
Java
package net.minestom.server.instance;
|
|
|
|
import net.minestom.server.api.Env;
|
|
import net.minestom.server.api.EnvTest;
|
|
import net.minestom.server.instance.block.Block;
|
|
import org.jglrxavpok.hephaistos.nbt.NBT;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.junit.jupiter.params.ParameterizedTest;
|
|
import org.junit.jupiter.params.provider.ValueSource;
|
|
|
|
import java.util.Map;
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertSame;
|
|
|
|
@EnvTest
|
|
public class GeneratorIntegrationTest {
|
|
|
|
@ParameterizedTest
|
|
@ValueSource(booleans = {false, true})
|
|
public void loader(boolean data, Env env) {
|
|
var manager = env.process().instance();
|
|
var block = data ? Block.STONE.withNbt(NBT.Compound(Map.of("key", NBT.String("value")))) : Block.STONE;
|
|
var instance = manager.createInstanceContainer();
|
|
instance.setGenerator(unit -> unit.modifier().fill(block));
|
|
instance.loadChunk(0, 0).join();
|
|
assertEquals(block, instance.getBlock(0, 0, 0));
|
|
assertEquals(block, instance.getBlock(15, 0, 0));
|
|
assertEquals(block, instance.getBlock(0, 15, 0));
|
|
assertEquals(block, instance.getBlock(0, 0, 15));
|
|
}
|
|
|
|
@Test
|
|
public void exceptionCatch(Env env) {
|
|
var manager = env.process().instance();
|
|
var instance = manager.createInstanceContainer();
|
|
|
|
var ref = new AtomicReference<Throwable>();
|
|
env.process().exception().setExceptionHandler(ref::set);
|
|
|
|
var exception = new RuntimeException();
|
|
instance.setGenerator(unit -> {
|
|
unit.modifier().fill(Block.STONE);
|
|
throw exception;
|
|
});
|
|
instance.loadChunk(0, 0).join();
|
|
|
|
assertSame(exception, ref.get());
|
|
}
|
|
|
|
@Test
|
|
public void fillHeightNegative(Env env) {
|
|
var manager = env.process().instance();
|
|
var instance = manager.createInstanceContainer();
|
|
instance.setGenerator(unit -> unit.modifier().fillHeight(-64, -60, Block.STONE));
|
|
instance.loadChunk(0, 0).join();
|
|
for (int y = -64; y < -60; y++) {
|
|
assertEquals(Block.STONE, instance.getBlock(0, y, 0), "y=" + y);
|
|
}
|
|
for (int y = -60; y < 100; y++) {
|
|
assertEquals(Block.AIR, instance.getBlock(0, y, 0), "y=" + y);
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void fillHeightSingleSectionFull(Env env) {
|
|
var manager = env.process().instance();
|
|
var instance = manager.createInstanceContainer();
|
|
instance.setGenerator(unit -> unit.modifier().fillHeight(0, 16, Block.GRASS_BLOCK));
|
|
instance.loadChunk(0, 0).join();
|
|
for (int y = 0; y < 16; y++) {
|
|
assertEquals(Block.GRASS_BLOCK, instance.getBlock(0, y, 0), "y=" + y);
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void fillHeightSingleSection(Env env) {
|
|
var manager = env.process().instance();
|
|
var instance = manager.createInstanceContainer();
|
|
instance.setGenerator(unit -> unit.modifier().fillHeight(4, 5, Block.GRASS_BLOCK));
|
|
instance.loadChunk(0, 0).join();
|
|
for (int y = 0; y < 5; y++) {
|
|
assertEquals(y == 4 ? Block.GRASS_BLOCK : Block.AIR, instance.getBlock(0, y, 0), "y=" + y);
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void fillHeightOverride(Env env) {
|
|
var manager = env.process().instance();
|
|
var instance = manager.createInstanceContainer();
|
|
instance.setGenerator(unit -> {
|
|
unit.modifier().fillHeight(0, 39, Block.GRASS_BLOCK);
|
|
unit.modifier().fillHeight(39, 40, Block.STONE);
|
|
});
|
|
instance.loadChunk(0, 0).join();
|
|
for (int y = 0; y < 40; y++) {
|
|
assertEquals(y == 39 ? Block.STONE : Block.GRASS_BLOCK, instance.getBlock(0, y, 0), "y=" + y);
|
|
}
|
|
}
|
|
}
|