mirror of https://github.com/Minestom/Minestom.git
109 lines
4.2 KiB
Java
109 lines
4.2 KiB
Java
package net.minestom.server.instance;
|
|
|
|
import net.minestom.testing.Env;
|
|
import net.minestom.testing.EnvTest;
|
|
import net.minestom.server.coordinate.Point;
|
|
import net.minestom.server.instance.block.Block;
|
|
import net.minestom.server.instance.generator.GenerationUnit;
|
|
import net.minestom.server.world.biomes.Biome;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
@EnvTest
|
|
public class GeneratorForkIntegrationTest {
|
|
|
|
@Test
|
|
public void local(Env env) {
|
|
var manager = env.process().instance();
|
|
var instance = manager.createInstanceContainer();
|
|
var block = Block.STONE;
|
|
instance.setGenerator(unit -> {
|
|
var u = unit.fork(unit.absoluteStart(), unit.absoluteEnd());
|
|
assertEquals(unit.absoluteStart(), u.absoluteStart());
|
|
assertEquals(unit.absoluteEnd(), u.absoluteEnd());
|
|
u.modifier().setRelative(0, 0, 0, Block.STONE);
|
|
});
|
|
instance.loadChunk(0, 0).join();
|
|
assertEquals(block, instance.getBlock(0, -64, 0));
|
|
}
|
|
|
|
@Test
|
|
public void size(Env env) {
|
|
var manager = env.process().instance();
|
|
var instance = manager.createInstanceContainer();
|
|
// Set the Generator
|
|
instance.setGenerator(unit -> {
|
|
Point start = unit.absoluteStart();
|
|
GenerationUnit fork = unit.fork(start, start.add(18, 18, 18));
|
|
assertDoesNotThrow(() -> fork.modifier().setBlock(start.add(17, 17, 17), Block.STONE));
|
|
});
|
|
// Load the chunks
|
|
instance.loadChunk(0, 0).join();
|
|
instance.setGenerator(null);
|
|
instance.loadChunk(1, 1).join();
|
|
assertEquals(Block.STONE, instance.getBlock(17, -64 + 17, 17));
|
|
}
|
|
|
|
@Test
|
|
public void signal(Env env) {
|
|
var manager = env.process().instance();
|
|
var instance = manager.createInstanceContainer();
|
|
var block = Block.STONE;
|
|
instance.setGenerator(unit -> {
|
|
var u = unit.fork(unit.absoluteStart(), unit.absoluteEnd().add(16, 0, 16));
|
|
assertEquals(unit.absoluteStart(), u.absoluteStart());
|
|
assertEquals(unit.absoluteEnd().add(16, 0, 16), u.absoluteEnd());
|
|
u.modifier().setRelative(16, 0, 0, Block.STONE);
|
|
u.modifier().setRelative(16, 33, 0, Block.STONE);
|
|
});
|
|
instance.loadChunk(0, 0).join();
|
|
instance.setGenerator(null);
|
|
instance.loadChunk(1, 0).join();
|
|
assertEquals(block, instance.getBlock(16, -64, 0));
|
|
assertEquals(block, instance.getBlock(16, -31, 0));
|
|
}
|
|
|
|
@Test
|
|
public void air(Env env) {
|
|
var manager = env.process().instance();
|
|
var instance = manager.createInstanceContainer();
|
|
instance.setGenerator(unit -> {
|
|
var u = unit.fork(unit.absoluteStart(), unit.absoluteEnd().add(16, 0, 16));
|
|
u.modifier().setRelative(16, 39 + 64, 0, Block.AIR);
|
|
});
|
|
instance.loadChunk(0, 0).join();
|
|
instance.setGenerator(unit -> unit.modifier().fillHeight(0, 40, Block.STONE));
|
|
instance.loadChunk(1, 0).join();
|
|
assertEquals(Block.AIR, instance.getBlock(16, 39, 0));
|
|
}
|
|
|
|
@Test
|
|
public void fillHeight(Env env) {
|
|
var manager = env.process().instance();
|
|
var instance = manager.createInstanceContainer();
|
|
instance.setGenerator(unit -> {
|
|
var u = unit.fork(unit.absoluteStart(), unit.absoluteEnd().add(16, 0, 16));
|
|
u.modifier().fillHeight(0, 40, Block.STONE);
|
|
});
|
|
instance.loadChunk(0, 0).join();
|
|
instance.setGenerator(null);
|
|
instance.loadChunk(1, 0).join();
|
|
for (int y = 0; y < 40; y++) {
|
|
assertEquals(Block.STONE, instance.getBlock(16, y, 0), "y=" + y);
|
|
}
|
|
}
|
|
|
|
@Test
|
|
public void biome(Env env) {
|
|
var manager = env.process().instance();
|
|
var instance = manager.createInstanceContainer();
|
|
instance.setGenerator(unit -> {
|
|
var u = unit.fork(unit.absoluteStart(), unit.absoluteEnd().add(16, 0, 16));
|
|
assertThrows(IllegalStateException.class, () -> u.modifier().setBiome(16, 0, 0, Biome.PLAINS));
|
|
assertThrows(IllegalStateException.class, () -> u.modifier().fillBiome(Biome.PLAINS));
|
|
});
|
|
instance.loadChunk(0, 0).join();
|
|
}
|
|
}
|