From dc59bb5d2eb41ad4d8c92fb3fbcdae970e5fc1dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Thu, 2 Jun 2022 23:40:30 -0400 Subject: [PATCH 01/10] Fix fabric config the config.yml in the fabric implementation is outdated and presumably unneeded --- platforms/fabric/src/main/resources/config.yml | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 platforms/fabric/src/main/resources/config.yml diff --git a/platforms/fabric/src/main/resources/config.yml b/platforms/fabric/src/main/resources/config.yml deleted file mode 100644 index b13793a3f..000000000 --- a/platforms/fabric/src/main/resources/config.yml +++ /dev/null @@ -1,9 +0,0 @@ -debug: false -data-save: PT6M -language: "en_us" -fail-type: SHUTDOWN -dump-default: true -biome-search-resolution: 4 -cache-size: 384 -master-disable: - caves: false \ No newline at end of file From c7f6e34647cb3ea9975315ae317947bb3ee3f769 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zo=C3=AB?= Date: Thu, 2 Jun 2022 23:44:05 -0400 Subject: [PATCH 02/10] fix new lines in PULL_REQUEST_TEMPLATE.md so that check boxes render correctly on github --- .github/PULL_REQUEST_TEMPLATE.md | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 6d34c7720..35418fc93 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -72,19 +72,15 @@ - [ ] Bug Fix - [ ] Build system -- [ ] - Documentation +- [ ] Documentation - [ ] New Feature - [ ] Performance -- [ ] - Refactoring -- [ ] - Repository +- [ ] Refactoring +- [ ] Repository - [ ] Revert - [ ] Style - [ ] Tests -- [ ] - Translation +- [ ] Translation #### Compatiblity @@ -119,4 +115,4 @@ \ No newline at end of file + --> From 6f41d164082aa8d53dc4d3a933988209a327dccb Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 7 Jun 2022 18:36:41 -0700 Subject: [PATCH 03/10] bump version --- build.gradle.kts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index b99cab6db..39cee7e68 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,8 +1,8 @@ preRelease(true) -versionProjects(":common:api", version("6.1.0")) -versionProjects(":common:implementation", version("6.1.0")) -versionProjects(":platforms", version("6.1.0")) +versionProjects(":common:api", version("6.1.1")) +versionProjects(":common:implementation", version("6.1.1")) +versionProjects(":platforms", version("6.1.1")) allprojects { From d93f11b5f2f59a1d9bf4908ee8e1fc2d45966c68 Mon Sep 17 00:00:00 2001 From: dfsek Date: Tue, 7 Jun 2022 18:39:43 -0700 Subject: [PATCH 04/10] fix resource dumping on windows --- .../base/src/main/java/com/dfsek/terra/AbstractPlatform.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java index 101ca6dcb..fe04ef97e 100644 --- a/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java +++ b/common/implementation/base/src/main/java/com/dfsek/terra/AbstractPlatform.java @@ -244,12 +244,13 @@ public abstract class AbstractPlatform implements Platform { String resourceYaml = IOUtils.toString(resourcesConfig, StandardCharsets.UTF_8); Map> resources = new Yaml().load(resourceYaml); resources.forEach((dir, entries) -> entries.forEach(entry -> { - String resourcePath = dir + File.separatorChar + entry; + String resourceClassPath = dir + "/" + entry; + String resourcePath = resourceClassPath.replace('/', File.separatorChar); File resource = new File(getDataFolder(), resourcePath); if(resource.exists()) return; // dont overwrite - try(InputStream is = getClass().getResourceAsStream("/" + resourcePath)) { + try(InputStream is = getClass().getResourceAsStream("/" + resourceClassPath)) { if(is == null) { logger.error("Resource {} doesn't exist on the classpath!", resourcePath); return; From c46f84a00e02e1736a2398920673a2598ff6b4c0 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 8 Jun 2022 18:27:08 -0700 Subject: [PATCH 05/10] create Column interface --- .../java/com/dfsek/terra/api/util/Column.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/Column.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/Column.java b/common/api/src/main/java/com/dfsek/terra/api/util/Column.java new file mode 100644 index 000000000..99d929ba4 --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/util/Column.java @@ -0,0 +1,18 @@ +package com.dfsek.terra.api.util; + +import java.util.function.Consumer; + + +public interface Column { + int getMinY(); + + int getMaxY(); + + T get(int y); + + default void forEach(Consumer consumer) { + for(int y = getMinY(); y < getMaxY(); y++) { + consumer.accept(get(y)); + } + } +} From 84cb428b6c5ac696df7c64fd6c9ef4dcf03fea0c Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 8 Jun 2022 18:33:31 -0700 Subject: [PATCH 06/10] add BiomeProvider#getColumn --- .../java/com/dfsek/terra/api/util/Column.java | 10 +++++ .../world/biome/generation/BiomeColumn.java | 39 +++++++++++++++++++ .../world/biome/generation/BiomeProvider.java | 9 +++++ 3 files changed, 58 insertions(+) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeColumn.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/Column.java b/common/api/src/main/java/com/dfsek/terra/api/util/Column.java index 99d929ba4..dadceebe6 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/Column.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/Column.java @@ -1,5 +1,9 @@ package com.dfsek.terra.api.util; +import com.google.common.collect.ImmutableList; + +import java.util.ArrayList; +import java.util.List; import java.util.function.Consumer; @@ -15,4 +19,10 @@ public interface Column { consumer.accept(get(y)); } } + + default List asList() { + List list = new ArrayList<>(); + forEach(list::add); + return list; + } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeColumn.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeColumn.java new file mode 100644 index 000000000..22b19767b --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeColumn.java @@ -0,0 +1,39 @@ +package com.dfsek.terra.api.world.biome.generation; + +import com.dfsek.terra.api.util.Column; +import com.dfsek.terra.api.world.biome.Biome; + + +class BiomeColumn implements Column { + private final BiomeProvider biomeProvider; + private final int min; + private final int max; + + private final int x; + private final int z; + private final long seed; + + protected BiomeColumn(BiomeProvider biomeProvider, int min, int max, int x, int z, long seed) { + this.biomeProvider = biomeProvider; + this.min = min; + this.max = max; + this.x = x; + this.z = z; + this.seed = seed; + } + + @Override + public int getMinY() { + return min; + } + + @Override + public int getMaxY() { + return max; + } + + @Override + public Biome get(int y) { + return biomeProvider.getBiome(x, y, z, seed); + } +} diff --git a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java index 282541720..cdba21f31 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java +++ b/common/api/src/main/java/com/dfsek/terra/api/world/biome/generation/BiomeProvider.java @@ -7,6 +7,7 @@ package com.dfsek.terra.api.world.biome.generation; +import com.dfsek.terra.api.util.Column; import com.dfsek.terra.api.util.vector.Vector3; import com.dfsek.terra.api.util.vector.Vector3Int; import com.dfsek.terra.api.world.biome.Biome; @@ -62,6 +63,14 @@ public interface BiomeProvider { return getBiome(vector3.getX(), vector3.getY(), vector3.getZ(), seed); } + default Column getColumn(int x, int z, int min, int max, long seed) { + return new BiomeColumn(this, min, max, x, z, seed); + } + + default Column getColumn(int x, int z, WorldProperties properties) { + return getColumn(x, z, properties.getMinHeight(), properties.getMaxHeight(), properties.getSeed()); + } + /** * Get all biomes this {@link BiomeProvider} is capable of generating in the world. *

From 2307138fa8239733b918827d6a73cf18f3291896 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 8 Jun 2022 18:35:49 -0700 Subject: [PATCH 07/10] add IntObjConsumer and forEach implementation in Column --- .../src/main/java/com/dfsek/terra/api/util/Column.java | 10 +++++++++- .../dfsek/terra/api/util/function/IntObjConsumer.java | 6 ++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 common/api/src/main/java/com/dfsek/terra/api/util/function/IntObjConsumer.java diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/Column.java b/common/api/src/main/java/com/dfsek/terra/api/util/Column.java index dadceebe6..87c1d1416 100644 --- a/common/api/src/main/java/com/dfsek/terra/api/util/Column.java +++ b/common/api/src/main/java/com/dfsek/terra/api/util/Column.java @@ -1,5 +1,7 @@ package com.dfsek.terra.api.util; +import com.dfsek.terra.api.util.function.IntObjConsumer; + import com.google.common.collect.ImmutableList; import java.util.ArrayList; @@ -20,9 +22,15 @@ public interface Column { } } + default void forEach(IntObjConsumer consumer) { + for(int y = getMinY(); y < getMaxY(); y++) { + consumer.accept(y, get(y)); + } + } + default List asList() { List list = new ArrayList<>(); - forEach(list::add); + forEach((Consumer) list::add); return list; } } diff --git a/common/api/src/main/java/com/dfsek/terra/api/util/function/IntObjConsumer.java b/common/api/src/main/java/com/dfsek/terra/api/util/function/IntObjConsumer.java new file mode 100644 index 000000000..4e9c9e54b --- /dev/null +++ b/common/api/src/main/java/com/dfsek/terra/api/util/function/IntObjConsumer.java @@ -0,0 +1,6 @@ +package com.dfsek.terra.api.util.function; + +@FunctionalInterface +public interface IntObjConsumer { + void accept(int i, T obj); +} From 8a1d329fd930589b72d123e8a7c2a99fad56c855 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 8 Jun 2022 18:39:19 -0700 Subject: [PATCH 08/10] use biome y-level for palette in NoiseChunkGenerator3D --- .../generation/NoiseChunkGenerator3D.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/NoiseChunkGenerator3D.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/NoiseChunkGenerator3D.java index 300cdbfcc..199540bab 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/NoiseChunkGenerator3D.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/NoiseChunkGenerator3D.java @@ -73,15 +73,17 @@ public class NoiseChunkGenerator3D implements ChunkGenerator { int cx = xOrig + x; int cz = zOrig + z; - Biome biome = biomeProvider.getBiome(cx, 0, cz, seed); - PaletteInfo paletteInfo = biome.getContext().get(PaletteInfo.class); - - int sea = paletteInfo.seaLevel(); - Palette seaPalette = paletteInfo.ocean(); BlockState data; for(int y = world.getMaxHeight() - 1; y >= world.getMinHeight(); y--) { + Biome biome = biomeProvider.getBiome(cx, y, cz, seed); + + PaletteInfo paletteInfo = biome.getContext().get(PaletteInfo.class); + + int sea = paletteInfo.seaLevel(); + Palette seaPalette = paletteInfo.ocean(); + if(sampler.sample(x, y, z) > 0) { if(carver.sample(x, y, z) <= 0) { data = PaletteUtil.getPalette(x, y, z, sampler, paletteInfo, paletteLevel).get(paletteLevel, cx, y, cz, From 111470c9f44706b944b7e103fea2ebbd37a9cac8 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 8 Jun 2022 18:39:45 -0700 Subject: [PATCH 09/10] bump noise-chunk-generator-3d addon version --- common/addons/chunk-generator-noise-3d/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/addons/chunk-generator-noise-3d/build.gradle.kts b/common/addons/chunk-generator-noise-3d/build.gradle.kts index 36e6012d7..685cc848c 100644 --- a/common/addons/chunk-generator-noise-3d/build.gradle.kts +++ b/common/addons/chunk-generator-noise-3d/build.gradle.kts @@ -1,4 +1,4 @@ -version = version("1.0.0") +version = version("1.1.0") dependencies { compileOnlyApi(project(":common:addons:manifest-addon-loader")) From 3d4e2e4263463c9b08640b224445b94dc6fce891 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 8 Jun 2022 18:53:57 -0700 Subject: [PATCH 10/10] use y-level in ChunkInterpolator --- .../math/interpolation/ChunkInterpolator.java | 43 +++++++++---------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator.java b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator.java index 9f8cb782f..26fbb16b4 100644 --- a/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator.java +++ b/common/addons/chunk-generator-noise-3d/src/main/java/com/dfsek/terra/addons/chunkgenerator/generation/math/interpolation/ChunkInterpolator.java @@ -7,15 +7,15 @@ package com.dfsek.terra.addons.chunkgenerator.generation.math.interpolation; +import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties; +import com.dfsek.terra.api.util.mutable.MutableInteger; +import com.dfsek.terra.api.world.biome.generation.BiomeProvider; + import net.jafama.FastMath; import java.util.HashMap; import java.util.Map; -import com.dfsek.terra.addons.chunkgenerator.config.noise.BiomeNoiseProperties; -import com.dfsek.terra.api.util.mutable.MutableInteger; -import com.dfsek.terra.api.world.biome.generation.BiomeProvider; - /** * Class to abstract away the Interpolators needed to generate a chunk.
@@ -55,25 +55,24 @@ public class ChunkInterpolator { for(int x = 0; x < 5; x++) { for(int z = 0; z < 5; z++) { - BiomeNoiseProperties generationSettings = provider.getBiome(xOrigin + (x << 2), 0, zOrigin + (z << 2), seed) - .getContext() - .get(BiomeNoiseProperties.class); - Map genMap = new HashMap<>(); - - int step = generationSettings.blendStep(); - int blend = generationSettings.blendDistance(); - - for(int xi = -blend; xi <= blend; xi++) { - for(int zi = -blend; zi <= blend; zi++) { - genMap.computeIfAbsent( - provider.getBiome(xOrigin + (x << 2) + (xi * step), 0, zOrigin + (z << 2) + (zi * step), seed) - .getContext() - .get(BiomeNoiseProperties.class), - g -> new MutableInteger(0)).increment(); // Increment by 1 - } - } - for(int y = 0; y < size + 1; y++) { + BiomeNoiseProperties generationSettings = provider.getBiome(xOrigin + (x << 2), (y << 2) + min, zOrigin + (z << 2), seed) + .getContext() + .get(BiomeNoiseProperties.class); + Map genMap = new HashMap<>(); + + int step = generationSettings.blendStep(); + int blend = generationSettings.blendDistance(); + + for(int xi = -blend; xi <= blend; xi++) { + for(int zi = -blend; zi <= blend; zi++) { + genMap.computeIfAbsent( + provider.getBiome(xOrigin + (x << 2) + (xi * step), 0, zOrigin + (z << 2) + (zi * step), seed) + .getContext() + .get(BiomeNoiseProperties.class), + g -> new MutableInteger(0)).increment(); // Increment by 1 + } + } noiseStorage[x][z][y] = computeNoise(genMap, (x << 2) + xOrigin, (y << 2) + this.min, (z << 2) + zOrigin); } }