From cc29ab0cb9318cd1b2a78e3ab648fd559be4cd30 Mon Sep 17 00:00:00 2001 From: Bernhard Bonigl Date: Sun, 4 Oct 2015 13:53:26 +0200 Subject: [PATCH] Fix heightmap being broken in slimeisland chunks --- .../java/tconstruct/world/gen/SlimeIslandGen.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/tconstruct/world/gen/SlimeIslandGen.java b/src/main/java/tconstruct/world/gen/SlimeIslandGen.java index 9ae9f44d..f5722be7 100644 --- a/src/main/java/tconstruct/world/gen/SlimeIslandGen.java +++ b/src/main/java/tconstruct/world/gen/SlimeIslandGen.java @@ -1,12 +1,16 @@ package tconstruct.world.gen; +import com.google.common.collect.Sets; import cpw.mods.fml.common.IWorldGenerator; import java.awt.geom.Ellipse2D; import java.util.Random; +import java.util.Set; + import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.world.*; +import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.ChunkProviderFlat; import net.minecraft.world.gen.feature.WorldGenerator; @@ -57,6 +61,8 @@ public class SlimeIslandGen extends WorldGenerator implements IWorldGenerator int initialHeight = height; Ellipse2D.Double ellipse = new Ellipse2D.Double(0, 0, xRange, zRange); + Set chunks = Sets.newHashSet(); + // Basic shape for (int x = 0; x <= xRange; x++) { @@ -65,7 +71,10 @@ public class SlimeIslandGen extends WorldGenerator implements IWorldGenerator for (int y = 0; y <= height; y++) { if (ellipse.contains(x, z)) + { world.setBlock(x + xChunk, y + yCenter, z + zChunk, base, 5, 0); + chunks.add(world.getChunkFromBlockCoords(x + xChunk, z + zChunk)); + } } } } @@ -148,6 +157,11 @@ public class SlimeIslandGen extends WorldGenerator implements IWorldGenerator { trees.generate(world, random, xChunk + random.nextInt(xRange), yCenter + initialHeight + 3, zChunk + random.nextInt(zRange)); } + + // fix heightmap + for(Chunk chunk : chunks) { + chunk.generateSkylightMap(); + } } public void generateSlimePool (World world, Random rand, int x, int y, int z)