diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..475d1433 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,22 @@ +name: Build + +on: [ push, pull_request ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 16 + uses: actions/setup-java@v1 + with: + java-version: 16 + - name: Build artifacts + run: ./gradlew build + - name: Upload build artifacts + uses: actions/upload-artifact@v1 + with: + name: build-artifacts + path: build/libs diff --git a/src/main/java/com/bespectacled/modernbeta/api/world/biome/BetaClimateResolver.java b/src/main/java/com/bespectacled/modernbeta/api/world/biome/BetaClimateResolver.java index 6131bf15..2678159e 100644 --- a/src/main/java/com/bespectacled/modernbeta/api/world/biome/BetaClimateResolver.java +++ b/src/main/java/com/bespectacled/modernbeta/api/world/biome/BetaClimateResolver.java @@ -1,5 +1,7 @@ package com.bespectacled.modernbeta.api.world.biome; +import com.bespectacled.modernbeta.api.world.biome.BetaClimateSampler.Clime; + /** * Exposes Beta climate sampler as a 'trait' to be implemented by whatever needs it, * without exposing the climate sampler singleton completely. @@ -22,6 +24,10 @@ public interface BetaClimateResolver { return BetaClimateSampler.INSTANCE.sampleRain(x, z); } + default Clime sampleClime(int x, int z) { + return BetaClimateSampler.INSTANCE.sampleClime(x, z); + } + default double sampleSkyTemp(int x, int z) { return BetaClimateSampler.INSTANCE.sampleSkyTemp(x, z); } diff --git a/src/main/java/com/bespectacled/modernbeta/api/world/biome/BetaClimateSampler.java b/src/main/java/com/bespectacled/modernbeta/api/world/biome/BetaClimateSampler.java index 710cd8c9..811db6cf 100644 --- a/src/main/java/com/bespectacled/modernbeta/api/world/biome/BetaClimateSampler.java +++ b/src/main/java/com/bespectacled/modernbeta/api/world/biome/BetaClimateSampler.java @@ -9,8 +9,10 @@ import net.minecraft.util.math.MathHelper; public enum BetaClimateSampler { INSTANCE; - private final ChunkCache climateCache = new ChunkCache<>("climate", 1024, false, ClimateCacheChunk::new); - private final ChunkCache skyCache = new ChunkCache<>("sky", 256, true, SkyCacheChunk::new); + public record Clime(double temp, double rain) {} + + private final ChunkCache climateCache = new ChunkCache<>("climate", 1536, false, ClimateChunk::new); + private final ChunkCache skyCache = new ChunkCache<>("sky", 256, true, SkyChunk::new); private SimplexOctaveNoise tempNoiseOctaves = new SimplexOctaveNoise(new Random(1 * 9871L), 4); private SimplexOctaveNoise rainNoiseOctaves = new SimplexOctaveNoise(new Random(1 * 39811L), 4); @@ -51,6 +53,13 @@ public enum BetaClimateSampler { this.climateCache.get(chunkX, chunkZ).sampleClime(arr, x, z); } + protected Clime sampleClime(int x, int z) { + int chunkX = x >> 4; + int chunkZ = z >> 4; + + return this.climateCache.get(chunkX, chunkZ).sampleClime(x, z); + } + protected double sampleSkyTemp(int x, int z) { int chunkX = x >> 4; int chunkZ = z >> 4; @@ -99,11 +108,11 @@ public enum BetaClimateSampler { this.noiseOctaves = new SimplexOctaveNoise(new Random(seed * 543321L), 2); } - private class ClimateCacheChunk { + private class ClimateChunk { private final double temp[] = new double[256]; private final double rain[] = new double [256]; - private ClimateCacheChunk(int chunkX, int chunkZ) { + private ClimateChunk(int chunkX, int chunkZ) { int startX = chunkX << 4; int startZ = chunkZ << 4; double[] tempRain = new double[2]; @@ -130,15 +139,23 @@ public enum BetaClimateSampler { } private void sampleClime(double[] tempRain, int x, int z) { - tempRain[0] = temp[(z & 0xF) + (x & 0xF) * 16]; - tempRain[1] = rain[(z & 0xF) + (x & 0xF) * 16]; + int ndx = (z & 0xF) + (x & 0xF) * 16; + + tempRain[0] = temp[ndx]; + tempRain[1] = rain[ndx]; + } + + private Clime sampleClime(int x, int z) { + int ndx = (z & 0xF) + (x & 0xF) * 16; + + return new Clime(temp[ndx], rain[ndx]); } } - private class SkyCacheChunk { + private class SkyChunk { private final double temp[] = new double[256]; - private SkyCacheChunk(int chunkX, int chunkZ) { + private SkyChunk(int chunkX, int chunkZ) { int startX = chunkX << 4; int startZ = chunkZ << 4; diff --git a/src/main/java/com/bespectacled/modernbeta/api/world/gen/NoiseChunkProvider.java b/src/main/java/com/bespectacled/modernbeta/api/world/gen/NoiseChunkProvider.java index 51312e75..ad0cabdb 100644 --- a/src/main/java/com/bespectacled/modernbeta/api/world/gen/NoiseChunkProvider.java +++ b/src/main/java/com/bespectacled/modernbeta/api/world/gen/NoiseChunkProvider.java @@ -7,12 +7,12 @@ import java.util.function.DoubleFunction; import java.util.stream.IntStream; import com.bespectacled.modernbeta.mixin.MixinChunkGeneratorSettingsInvoker; +import com.bespectacled.modernbeta.util.BlockStates; import com.bespectacled.modernbeta.util.ChunkCache; import com.bespectacled.modernbeta.util.pool.DoubleArrayPool; import com.bespectacled.modernbeta.world.gen.OldChunkGenerator; import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; import net.minecraft.util.math.MathHelper; @@ -93,7 +93,7 @@ public abstract class NoiseChunkProvider extends BaseChunkProvider { chunkGenerator.getWorldSeed(), chunkGenerator.getGeneratorSettings().get().getDefaultBlock(), ((MixinChunkGeneratorSettingsInvoker)(Object)chunkGenerator.getGeneratorSettings().get()).invokeHasDeepslate() ? - Blocks.DEEPSLATE.getDefaultState() : + BlockStates.DEEPSLATE : chunkGenerator.getGeneratorSettings().get().getDefaultBlock(), chunkGenerator.getGeneratorSettings().get() ), chunkGenerator.getGeneratorSettings().get().getGenerationShapeConfig().getSizeVertical(), @@ -179,14 +179,14 @@ public abstract class NoiseChunkProvider extends BaseChunkProvider { // Chunk caches this.noiseChunkCache = new ChunkCache<>( "noise", - 1024, + 1536, true, - (cX, cZ) -> this.generateNoiseArr(cX * this.noiseSizeX, cZ * this.noiseSizeZ) + (chunkX, chunkZ) -> this.generateNoiseArr(chunkX * this.noiseSizeX, chunkZ * this.noiseSizeZ) ); this.heightmapChunkCache = new ChunkCache<>( "heightmap", - 1024, + 1536, true, this::sampleHeightmap ); @@ -245,9 +245,7 @@ public abstract class NoiseChunkProvider extends BaseChunkProvider { int chunkX = x >> 4; int chunkZ = z >> 4; - HeightmapChunk cachedChunk = this.heightmapChunkCache.get(chunkX, chunkZ); - - int groundHeight = cachedChunk.getHeight(x, z); + int groundHeight = this.heightmapChunkCache.get(chunkX, chunkZ).getHeight(x, z); // Not ideal if (type == Heightmap.Type.WORLD_SURFACE_WG && groundHeight < this.seaLevel) diff --git a/src/main/java/com/bespectacled/modernbeta/util/BlockStates.java b/src/main/java/com/bespectacled/modernbeta/util/BlockStates.java index 12f3bcd3..f98b59f1 100644 --- a/src/main/java/com/bespectacled/modernbeta/util/BlockStates.java +++ b/src/main/java/com/bespectacled/modernbeta/util/BlockStates.java @@ -19,6 +19,7 @@ public class BlockStates { public static final BlockState SNOW = Blocks.SNOW.getDefaultState(); public static final BlockState LAVA = Blocks.LAVA.getDefaultState(); public static final BlockState BEDROCK = Blocks.BEDROCK.getDefaultState(); + public static final BlockState DEEPSLATE = Blocks.DEEPSLATE.getDefaultState(); public static final BlockState GRASS = Blocks.GRASS.getDefaultState(); public static final BlockState FERN = Blocks.FERN.getDefaultState(); diff --git a/src/main/java/com/bespectacled/modernbeta/util/ChunkCache.java b/src/main/java/com/bespectacled/modernbeta/util/ChunkCache.java index 9bff7e53..a12579ef 100644 --- a/src/main/java/com/bespectacled/modernbeta/util/ChunkCache.java +++ b/src/main/java/com/bespectacled/modernbeta/util/ChunkCache.java @@ -1,6 +1,8 @@ package com.bespectacled.modernbeta.util; import java.util.concurrent.locks.ReentrantReadWriteLock; +import java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock; +import java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock; import java.util.function.BiFunction; import org.apache.logging.log4j.Level; @@ -19,8 +21,11 @@ public class ChunkCache { private final int capacity; private final boolean evictOldChunks; private final BiFunction chunkFunc; - private final Long2ObjectLinkedOpenHashMap cache; + private final Long2ObjectLinkedOpenHashMap chunkMap; + private final ReentrantReadWriteLock lock; + private final WriteLock writeLock; + private final ReadLock readLock; private int hits; private int misses; @@ -31,8 +36,11 @@ public class ChunkCache { this.capacity = capacity; this.evictOldChunks = evictOldChunks; this.chunkFunc = chunkFunc; - this.cache = new Long2ObjectLinkedOpenHashMap<>(capacity); + this.chunkMap = new Long2ObjectLinkedOpenHashMap<>(capacity); + this.lock = new ReentrantReadWriteLock(); + this.writeLock = this.lock.writeLock(); + this.readLock = this.lock.readLock(); this.hits = 0; this.misses = 0; @@ -48,12 +56,12 @@ public class ChunkCache { } public void clear() { - this.lock.writeLock().lock(); + this.writeLock.lock(); try { - this.cache.clear(); - this.cache.trim(); + this.chunkMap.clear(); + this.chunkMap.trim(); } finally { - this.lock.writeLock().unlock(); + this.writeLock.unlock(); } } @@ -61,26 +69,26 @@ public class ChunkCache { long hashedCoord = ChunkPos.toLong(chunkX, chunkZ); T item; - this.lock.readLock().lock(); + this.readLock.lock(); try { - item = this.cache.get(hashedCoord); + item = this.chunkMap.get(hashedCoord); } finally { - this.lock.readLock().unlock(); + this.readLock.unlock(); } if (item == null) { - this.lock.writeLock().lock(); + this.writeLock.lock(); try { item = this.chunkFunc.apply(chunkX, chunkZ); // Ensure cache size remains below capacity - if (this.evictOldChunks && this.cache.size() >= this.capacity) { - this.cache.removeFirst(); + if (this.evictOldChunks && this.chunkMap.size() >= this.capacity) { + this.chunkMap.removeFirst(); } - this.cache.put(hashedCoord, item); + this.chunkMap.put(hashedCoord, item); } finally { - this.lock.writeLock().unlock(); + this.writeLock.unlock(); } misses++; @@ -88,7 +96,7 @@ public class ChunkCache { hits++; } - if (this.debug == true && hits != 0 && hits % 512 == 0) { + if (this.debug && hits % 512 == 0) { float hitMissRate = hits / (float)(hits + misses) * 100F; ModernBeta.log(Level.INFO, String.format("Cache '%s' hit/miss rate: %.2f", this.name, hitMissRate)); } diff --git a/src/main/java/com/bespectacled/modernbeta/world/biome/beta/Forest.java b/src/main/java/com/bespectacled/modernbeta/world/biome/beta/Forest.java index 0f21f370..09cf5cd3 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/biome/beta/Forest.java +++ b/src/main/java/com/bespectacled/modernbeta/world/biome/beta/Forest.java @@ -41,6 +41,7 @@ public class Forest { DefaultBiomeFeatures.addDefaultOres(genSettings); DefaultBiomeFeatures.addDefaultMushrooms(genSettings); DefaultBiomeFeatures.addSprings(genSettings); + DefaultBiomeFeatures.addAmethystGeodes(genSettings); genSettings.structureFeature(ConfiguredStructureFeatures.MANSION); genSettings.structureFeature(ConfiguredStructureFeatures.RUINED_PORTAL); diff --git a/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Alpha.java b/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Alpha.java index 152718fa..5668d813 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Alpha.java +++ b/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Alpha.java @@ -38,6 +38,7 @@ public class Alpha { DefaultBiomeFeatures.addDefaultMushrooms(genSettings); DefaultBiomeFeatures.addSprings(genSettings); DefaultBiomeFeatures.addFrozenTopLayer(genSettings); + DefaultBiomeFeatures.addAmethystGeodes(genSettings); genSettings.structureFeature(ConfiguredStructureFeatures.VILLAGE_PLAINS); genSettings.structureFeature(ConfiguredStructureFeatures.PILLAGER_OUTPOST); diff --git a/src/main/java/com/bespectacled/modernbeta/world/biome/classic/AlphaWinter.java b/src/main/java/com/bespectacled/modernbeta/world/biome/classic/AlphaWinter.java index c2059483..6135362b 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/biome/classic/AlphaWinter.java +++ b/src/main/java/com/bespectacled/modernbeta/world/biome/classic/AlphaWinter.java @@ -38,6 +38,7 @@ public class AlphaWinter { DefaultBiomeFeatures.addDefaultMushrooms(genSettings); DefaultBiomeFeatures.addSprings(genSettings); DefaultBiomeFeatures.addFrozenTopLayer(genSettings); + DefaultBiomeFeatures.addAmethystGeodes(genSettings); genSettings.structureFeature(ConfiguredStructureFeatures.VILLAGE_PLAINS); genSettings.structureFeature(ConfiguredStructureFeatures.PILLAGER_OUTPOST); diff --git a/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Infdev227.java b/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Infdev227.java index c57b791c..e4270e03 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Infdev227.java +++ b/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Infdev227.java @@ -38,6 +38,7 @@ public class Infdev227 { DefaultBiomeFeatures.addDefaultMushrooms(genSettings); DefaultBiomeFeatures.addSprings(genSettings); DefaultBiomeFeatures.addFrozenTopLayer(genSettings); + DefaultBiomeFeatures.addAmethystGeodes(genSettings); genSettings.structureFeature(ConfiguredStructureFeatures.VILLAGE_PLAINS); genSettings.structureFeature(ConfiguredStructureFeatures.PILLAGER_OUTPOST); diff --git a/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Infdev227Winter.java b/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Infdev227Winter.java index 058d1055..3e207158 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Infdev227Winter.java +++ b/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Infdev227Winter.java @@ -38,6 +38,7 @@ public class Infdev227Winter { DefaultBiomeFeatures.addDefaultMushrooms(genSettings); DefaultBiomeFeatures.addSprings(genSettings); DefaultBiomeFeatures.addFrozenTopLayer(genSettings); + DefaultBiomeFeatures.addAmethystGeodes(genSettings); genSettings.structureFeature(ConfiguredStructureFeatures.VILLAGE_PLAINS); genSettings.structureFeature(ConfiguredStructureFeatures.PILLAGER_OUTPOST); diff --git a/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Infdev415.java b/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Infdev415.java index 4313db44..cbea5be8 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Infdev415.java +++ b/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Infdev415.java @@ -38,6 +38,7 @@ public class Infdev415 { DefaultBiomeFeatures.addDefaultMushrooms(genSettings); DefaultBiomeFeatures.addSprings(genSettings); DefaultBiomeFeatures.addFrozenTopLayer(genSettings); + DefaultBiomeFeatures.addAmethystGeodes(genSettings); genSettings.structureFeature(ConfiguredStructureFeatures.VILLAGE_PLAINS); genSettings.structureFeature(ConfiguredStructureFeatures.PILLAGER_OUTPOST); diff --git a/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Infdev415Winter.java b/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Infdev415Winter.java index b53cd6cb..2959275a 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Infdev415Winter.java +++ b/src/main/java/com/bespectacled/modernbeta/world/biome/classic/Infdev415Winter.java @@ -38,6 +38,7 @@ public class Infdev415Winter { DefaultBiomeFeatures.addDefaultMushrooms(genSettings); DefaultBiomeFeatures.addSprings(genSettings); DefaultBiomeFeatures.addFrozenTopLayer(genSettings); + DefaultBiomeFeatures.addAmethystGeodes(genSettings); genSettings.structureFeature(ConfiguredStructureFeatures.VILLAGE_PLAINS); genSettings.structureFeature(ConfiguredStructureFeatures.PILLAGER_OUTPOST); diff --git a/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevHell.java b/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevHell.java index 45664a54..859374a5 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevHell.java +++ b/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevHell.java @@ -33,6 +33,7 @@ public class IndevHell { DefaultBiomeFeatures.addDefaultOres(genSettings); DefaultBiomeFeatures.addDefaultMushrooms(genSettings); DefaultBiomeFeatures.addSprings(genSettings); + DefaultBiomeFeatures.addAmethystGeodes(genSettings); genSettings.structureFeature(ConfiguredStructureFeatures.VILLAGE_PLAINS); genSettings.structureFeature(ConfiguredStructureFeatures.PILLAGER_OUTPOST); diff --git a/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevNormal.java b/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevNormal.java index f226624b..827ee7d8 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevNormal.java +++ b/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevNormal.java @@ -39,6 +39,7 @@ public class IndevNormal { DefaultBiomeFeatures.addDefaultOres(genSettings); DefaultBiomeFeatures.addDefaultMushrooms(genSettings); DefaultBiomeFeatures.addSprings(genSettings); + DefaultBiomeFeatures.addAmethystGeodes(genSettings); genSettings.structureFeature(ConfiguredStructureFeatures.VILLAGE_PLAINS); genSettings.structureFeature(ConfiguredStructureFeatures.PILLAGER_OUTPOST); diff --git a/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevParadise.java b/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevParadise.java index da13b623..45c3896f 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevParadise.java +++ b/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevParadise.java @@ -36,6 +36,7 @@ public class IndevParadise { DefaultBiomeFeatures.addDefaultOres(genSettings); DefaultBiomeFeatures.addDefaultMushrooms(genSettings); DefaultBiomeFeatures.addSprings(genSettings); + DefaultBiomeFeatures.addAmethystGeodes(genSettings); genSettings.structureFeature(ConfiguredStructureFeatures.VILLAGE_PLAINS); genSettings.structureFeature(ConfiguredStructureFeatures.PILLAGER_OUTPOST); diff --git a/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevSnowy.java b/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevSnowy.java index 758e6d82..1d1bee24 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevSnowy.java +++ b/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevSnowy.java @@ -39,6 +39,7 @@ public class IndevSnowy { DefaultBiomeFeatures.addDefaultMushrooms(genSettings); DefaultBiomeFeatures.addSprings(genSettings); DefaultBiomeFeatures.addFrozenTopLayer(genSettings); + DefaultBiomeFeatures.addAmethystGeodes(genSettings); genSettings.structureFeature(ConfiguredStructureFeatures.VILLAGE_PLAINS); genSettings.structureFeature(ConfiguredStructureFeatures.PILLAGER_OUTPOST); diff --git a/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevWoods.java b/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevWoods.java index db3a2cd8..6a89f36f 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevWoods.java +++ b/src/main/java/com/bespectacled/modernbeta/world/biome/indev/IndevWoods.java @@ -38,6 +38,7 @@ public class IndevWoods { DefaultBiomeFeatures.addDefaultOres(genSettings); DefaultBiomeFeatures.addDefaultMushrooms(genSettings); DefaultBiomeFeatures.addSprings(genSettings); + DefaultBiomeFeatures.addAmethystGeodes(genSettings); genSettings.structureFeature(ConfiguredStructureFeatures.VILLAGE_PLAINS); genSettings.structureFeature(ConfiguredStructureFeatures.PILLAGER_OUTPOST); diff --git a/src/main/java/com/bespectacled/modernbeta/world/gen/provider/AlphaChunkProvider.java b/src/main/java/com/bespectacled/modernbeta/world/gen/provider/AlphaChunkProvider.java index 3d6fde08..b162f531 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/gen/provider/AlphaChunkProvider.java +++ b/src/main/java/com/bespectacled/modernbeta/world/gen/provider/AlphaChunkProvider.java @@ -53,9 +53,7 @@ public class AlphaChunkProvider extends NoiseChunkProvider implements BeachSpawn int bedrockFloor = this.minY + this.bedrockFloor; - // TODO: Really should be pooled or something ChunkRandom rand = this.createChunkRand(chunkX, chunkZ); - ChunkRandom sandstoneRand = this.createChunkRand(chunkX, chunkZ); BlockPos.Mutable mutable = new BlockPos.Mutable(); double[] sandNoise = this.surfaceNoisePool.borrowObj(); @@ -164,12 +162,6 @@ public class AlphaChunkProvider extends NoiseChunkProvider implements BeachSpawn flag--; chunk.setBlockState(mutable.set(x, y, z), fillerBlock, false); } - - // Beta backport, adds layer of sandstone starting at lowest block of sand, of height 1 to 4. - if (flag == 0 && fillerBlock.equals(BlockStates.SAND)) { - flag = sandstoneRand.nextInt(4); - fillerBlock = BlockStates.SANDSTONE; - } } } } diff --git a/src/main/java/com/bespectacled/modernbeta/world/gen/provider/BetaChunkProvider.java b/src/main/java/com/bespectacled/modernbeta/world/gen/provider/BetaChunkProvider.java index d1431217..099c9394 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/gen/provider/BetaChunkProvider.java +++ b/src/main/java/com/bespectacled/modernbeta/world/gen/provider/BetaChunkProvider.java @@ -56,7 +56,6 @@ public class BetaChunkProvider extends NoiseChunkProvider implements BetaClimate int bedrockFloor = this.minY + this.bedrockFloor; - // TODO: Really should be pooled or something ChunkRandom rand = this.createChunkRand(chunkX, chunkZ); BlockPos.Mutable mutable = new BlockPos.Mutable(); diff --git a/src/main/java/com/bespectacled/modernbeta/world/gen/provider/BetaIslandsChunkProvider.java b/src/main/java/com/bespectacled/modernbeta/world/gen/provider/BetaIslandsChunkProvider.java index deb1735b..2bf1813e 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/gen/provider/BetaIslandsChunkProvider.java +++ b/src/main/java/com/bespectacled/modernbeta/world/gen/provider/BetaIslandsChunkProvider.java @@ -77,7 +77,6 @@ public class BetaIslandsChunkProvider extends NoiseChunkProvider implements Beta int bedrockFloor = this.minY + this.bedrockFloor; - // TODO: Really should be pooled or something ChunkRandom rand = this.createChunkRand(chunkX, chunkZ); BlockPos.Mutable mutable = new BlockPos.Mutable(); diff --git a/src/main/java/com/bespectacled/modernbeta/world/gen/provider/IndevChunkProvider.java b/src/main/java/com/bespectacled/modernbeta/world/gen/provider/IndevChunkProvider.java index 882737ce..7c65c1b6 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/gen/provider/IndevChunkProvider.java +++ b/src/main/java/com/bespectacled/modernbeta/world/gen/provider/IndevChunkProvider.java @@ -116,11 +116,12 @@ public class IndevChunkProvider extends BaseChunkProvider implements NoiseChunkI this.pregenerateTerrainOrWait(); this.generateTerrain(chunk, structureAccessor); - } else if (this.levelType != IndevType.FLOATING) { - if (this.levelType == IndevType.ISLAND) - this.generateWaterBorder(chunk); - else { - this.generateWorldBorder(chunk); + } else { + switch(this.levelType) { + case ISLAND -> this.generateWaterBorder(chunk); + case INLAND -> this.generateWorldBorder(chunk); + case FLOATING -> {} + default -> {} } } @@ -721,10 +722,10 @@ public class IndevChunkProvider extends BaseChunkProvider implements NoiseChunkI if (block == Blocks.AIR) { blockArr[x][y][z] = toFill; - if (y - 1 >= 0) positions.add(new Vec3d(x, y - 1, z)); - if (x - 1 >= 0) positions.add(new Vec3d(x - 1, y, z)); + if (y - 1 >= 0) positions.add(new Vec3d(x, y - 1, z)); + if (x - 1 >= 0) positions.add(new Vec3d(x - 1, y, z)); if (x + 1 < this.levelWidth) positions.add(new Vec3d(x + 1, y, z)); - if (z - 1 >= 0) positions.add(new Vec3d(x, y, z - 1)); + if (z - 1 >= 0) positions.add(new Vec3d(x, y, z - 1)); if (z + 1 < this.levelLength) positions.add(new Vec3d(x, y, z + 1)); } } diff --git a/src/main/java/com/bespectacled/modernbeta/world/gen/provider/Infdev415ChunkProvider.java b/src/main/java/com/bespectacled/modernbeta/world/gen/provider/Infdev415ChunkProvider.java index 52e92009..ece64f06 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/gen/provider/Infdev415ChunkProvider.java +++ b/src/main/java/com/bespectacled/modernbeta/world/gen/provider/Infdev415ChunkProvider.java @@ -52,9 +52,7 @@ public class Infdev415ChunkProvider extends NoiseChunkProvider implements BeachS int bedrockFloor = this.minY + this.bedrockFloor; - // TODO: Really should be pooled or something ChunkRandom rand = this.createChunkRand(chunkX, chunkZ); - ChunkRandom sandstoneRand = this.createChunkRand(chunkX, chunkZ); BlockPos.Mutable mutable = new BlockPos.Mutable(); for (int x = 0; x < 16; ++x) { @@ -143,12 +141,6 @@ public class Infdev415ChunkProvider extends NoiseChunkProvider implements BeachS } else if (flag > 0) { --flag; chunk.setBlockState(mutable, fillerBlock, false); - - // Beta backport, adds layer of sandstone starting at lowest block of sand, of height 1 to 4. - if (flag == 0 && fillerBlock.equals(BlockStates.SAND)) { - flag = sandstoneRand.nextInt(4); - fillerBlock = BlockStates.SANDSTONE; - } } } } diff --git a/src/main/java/com/bespectacled/modernbeta/world/gen/provider/Infdev611ChunkProvider.java b/src/main/java/com/bespectacled/modernbeta/world/gen/provider/Infdev611ChunkProvider.java index d330d5b5..6367fac2 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/gen/provider/Infdev611ChunkProvider.java +++ b/src/main/java/com/bespectacled/modernbeta/world/gen/provider/Infdev611ChunkProvider.java @@ -53,9 +53,7 @@ public class Infdev611ChunkProvider extends NoiseChunkProvider implements BeachS int bedrockFloor = this.minY + this.bedrockFloor; - // TODO: Really should be pooled or something ChunkRandom rand = this.createChunkRand(chunkX, chunkZ); - ChunkRandom sandstoneRand = this.createChunkRand(chunkX, chunkZ); BlockPos.Mutable mutable = new BlockPos.Mutable(); // Accurate beach/terrain patterns depend on z iterating before x, @@ -86,7 +84,7 @@ public class Infdev611ChunkProvider extends NoiseChunkProvider implements BeachS for (int y = this.worldTopY - 1; y >= this.minY; y--) { // Randomly place bedrock from y=0 to y=5 - if (y <= bedrockFloor + sandstoneRand.nextInt(6) - 1) { + if (y <= bedrockFloor + rand.nextInt(6) - 1) { chunk.setBlockState(mutable.set(x, y, z), BlockStates.BEDROCK, false); continue; } @@ -147,12 +145,6 @@ public class Infdev611ChunkProvider extends NoiseChunkProvider implements BeachS flag--; chunk.setBlockState(mutable.set(x, y, z), fillerBlock, false); } - - // Beta backport, adds layer of sandstone starting at lowest block of sand, of height 1 to 4. - if (flag == 0 && fillerBlock.equals(BlockStates.SAND)) { - flag = sandstoneRand.nextInt(4); - fillerBlock = BlockStates.SANDSTONE; - } } } } diff --git a/src/main/java/com/bespectacled/modernbeta/world/gen/provider/SkylandsChunkProvider.java b/src/main/java/com/bespectacled/modernbeta/world/gen/provider/SkylandsChunkProvider.java index ecfd7fcb..607bc119 100644 --- a/src/main/java/com/bespectacled/modernbeta/world/gen/provider/SkylandsChunkProvider.java +++ b/src/main/java/com/bespectacled/modernbeta/world/gen/provider/SkylandsChunkProvider.java @@ -45,7 +45,6 @@ public class SkylandsChunkProvider extends NoiseChunkProvider { int chunkX = chunk.getPos().x; int chunkZ = chunk.getPos().z; - // TODO: Really should be pooled or something ChunkRandom rand = this.createChunkRand(chunkX, chunkZ); BlockPos.Mutable mutable = new BlockPos.Mutable();