From dd96c907d98bb6a75d42c45a3fa318408cf97a5f Mon Sep 17 00:00:00 2001 From: themode Date: Sun, 18 Aug 2024 18:07:56 +0200 Subject: [PATCH] Convenient SECTION vec --- .../java/net/minestom/server/coordinate/Vec.java | 1 + .../server/instance/generator/GeneratorImpl.java | 16 +++++++--------- .../server/instance/generator/GeneratorTest.java | 8 ++++---- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/main/java/net/minestom/server/coordinate/Vec.java b/src/main/java/net/minestom/server/coordinate/Vec.java index d3ba7ce6b..4535890c6 100644 --- a/src/main/java/net/minestom/server/coordinate/Vec.java +++ b/src/main/java/net/minestom/server/coordinate/Vec.java @@ -15,6 +15,7 @@ import java.util.function.DoubleUnaryOperator; public record Vec(double x, double y, double z) implements Point { public static final Vec ZERO = new Vec(0); public static final Vec ONE = new Vec(1); + public static final Vec SECTION = new Vec(16); public static final double EPSILON = 0.000001; diff --git a/src/main/java/net/minestom/server/instance/generator/GeneratorImpl.java b/src/main/java/net/minestom/server/instance/generator/GeneratorImpl.java index 0e1fc1228..9d41bc7f2 100644 --- a/src/main/java/net/minestom/server/instance/generator/GeneratorImpl.java +++ b/src/main/java/net/minestom/server/instance/generator/GeneratorImpl.java @@ -22,8 +22,6 @@ import static net.minestom.server.utils.chunk.ChunkUtils.*; @ApiStatus.Internal public final class GeneratorImpl { - private static final Vec SECTION_SIZE = new Vec(16); - public record GenSection(Palette blocks, Palette biomes, Int2ObjectMap specials) { public GenSection(Palette blocks, Palette biomes) { this(blocks, biomes, new Int2ObjectOpenHashMap<>(0)); @@ -37,9 +35,9 @@ public final class GeneratorImpl { static GenerationUnit section(DynamicRegistry biomeRegistry, GenSection section, int sectionX, int sectionY, int sectionZ, boolean fork) { - final Vec start = SECTION_SIZE.mul(sectionX, sectionY, sectionZ); - final Vec end = start.add(SECTION_SIZE); - final UnitModifier modifier = new SectionModifierImpl(biomeRegistry, SECTION_SIZE, + final Vec start = Vec.SECTION.mul(sectionX, sectionY, sectionZ); + final Vec end = start.add(Vec.SECTION); + final UnitModifier modifier = new SectionModifierImpl(biomeRegistry, Vec.SECTION, start, end, section, fork); return unit(biomeRegistry, modifier, start, end, null); } @@ -49,7 +47,7 @@ public final class GeneratorImpl { } public static UnitImpl chunk(DynamicRegistry biomeRegistry, GenSection[] chunkSections, int chunkX, int minSection, int chunkZ) { - final Vec start = SECTION_SIZE.mul(chunkX, minSection, chunkZ); + final Vec start = Vec.SECTION.mul(chunkX, minSection, chunkZ); return area(biomeRegistry, start, 1, chunkSections.length, 1, chunkSections); } @@ -72,7 +70,7 @@ public final class GeneratorImpl { } sections = List.copyOf(sections); - final Point size = SECTION_SIZE.mul(width, height, depth); + final Point size = Vec.SECTION.mul(width, height, depth); final Point end = start.add(size); final UnitModifier modifier = new AreaModifierImpl(size, start, end, width, height, depth, sections); return unit(biomeRegistry, modifier, start, end, sections); @@ -119,7 +117,7 @@ public final class GeneratorImpl { final int sectionY = getChunkCoordinate(y); final int sectionZ = getChunkCoordinate(z); if (sections == null) { - this.minSection = SECTION_SIZE.mul(sectionX, sectionY, sectionZ); + this.minSection = Vec.SECTION.mul(sectionX, sectionY, sectionZ); this.width = 1; this.height = 1; this.depth = 1; @@ -200,7 +198,7 @@ public final class GeneratorImpl { } } final List sections = List.of(units); - final Point startSection = SECTION_SIZE.mul(minSectionX, minSectionY, minSectionZ); + final Point startSection = Vec.SECTION.mul(minSectionX, minSectionY, minSectionZ); return registerFork(startSection, sections, width, height, depth); } diff --git a/src/test/java/net/minestom/server/instance/generator/GeneratorTest.java b/src/test/java/net/minestom/server/instance/generator/GeneratorTest.java index 8b3c626b5..f961a8ead 100644 --- a/src/test/java/net/minestom/server/instance/generator/GeneratorTest.java +++ b/src/test/java/net/minestom/server/instance/generator/GeneratorTest.java @@ -25,8 +25,8 @@ import static org.junit.jupiter.api.Assertions.*; public class GeneratorTest { @Test public void unitSize() { - assertDoesNotThrow(() -> dummyUnit(Vec.ZERO, new Vec(16))); - assertDoesNotThrow(() -> dummyUnit(new Vec(16), new Vec(32))); + assertDoesNotThrow(() -> dummyUnit(Vec.ZERO, Vec.SECTION)); + assertDoesNotThrow(() -> dummyUnit(Vec.SECTION, new Vec(32))); assertThrows(IllegalArgumentException.class, () -> dummyUnit(new Vec(15), Vec.ZERO)); assertThrows(IllegalArgumentException.class, () -> dummyUnit(new Vec(15), new Vec(32))); assertThrows(IllegalArgumentException.class, () -> dummyUnit(new Vec(15), new Vec(31))); @@ -107,7 +107,7 @@ public class GeneratorTest { final int sectionY = -5; final int sectionZ = -2; GenerationUnit section = GeneratorImpl.section(null, new GenSection(), sectionX, sectionY, sectionZ); - assertEquals(new Vec(16), section.size()); + assertEquals(Vec.SECTION, section.size()); assertEquals(new Vec(sectionX * 16, sectionY * 16, sectionZ * 16), section.absoluteStart()); assertEquals(new Vec(sectionX * 16 + 16, sectionY * 16 + 16, sectionZ * 16 + 16), section.absoluteEnd()); } @@ -126,7 +126,7 @@ public class GeneratorTest { assertEquals(sectionCount, subUnits.size()); for (int i = 0; i < sectionCount; i++) { var subUnit = subUnits.get(i); - assertEquals(new Vec(16, 16, 16), subUnit.size()); + assertEquals(Vec.SECTION, subUnit.size()); assertEquals(new Vec(chunkX * 16, (i + minSection) * 16, chunkZ * 16), subUnit.absoluteStart()); assertEquals(subUnit.absoluteStart().add(16), subUnit.absoluteEnd()); }