Guest User

Untitled

a guest
Mar 28th, 2021
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. class TestChunkGenerator : ChunkGenerator() {
  2. val chunkSize = 16
  3. val sectorSize = 3
  4.  
  5. private fun skyCast(chunkData: ChunkData, x: Int, z: Int): Int {
  6. var max = 128
  7. while (chunkData.getType(x, max, z) == Material.AIR) {
  8. max--
  9. if (max < 0) return 0
  10. }
  11. return max + 1
  12. }
  13.  
  14. override fun generateChunkData(world: World, random: Random, x: Int, z: Int, biome: BiomeGrid) = createChunkData(world).apply {
  15. val noiseGen = SimplexOctaveGenerator(random, 5)
  16.  
  17. for (practicalX in x..x + 15) {
  18. for (practicalZ in z..z + 15) {
  19. val noise = ((noiseGen.noise(practicalX.toDouble(), practicalZ.toDouble(), 0.5, 0.5, true) + 1) * 5.0 + 50.0)
  20. .toInt()
  21. setBlock(practicalX, 0, practicalZ, Material.BEDROCK)
  22. for (practicalY in 1 until noise) {
  23. setBlock(practicalX, practicalY, practicalZ, Material.DIRT)
  24. }
  25. setBlock(practicalX, noise, practicalZ, Material.GRASS_BLOCK)
  26. }
  27. }
  28.  
  29. if (x % sectorSize == 0) {
  30. // why does the x need to be a multiple of 5?
  31. for (practicalX in 0 until chunkSize) {
  32. setRegion(0, 0, practicalX, 1, skyCast(this, practicalX, 0), x + 1, Material.WHITE_CONCRETE)
  33. }
  34. }
  35.  
  36. if (z % sectorSize == 0) {
  37. for (practicalZ in 0 until chunkSize) {
  38. setRegion(z, 0, 0, z + 1, skyCast(this, 0, z), 1, Material.WHITE_CONCRETE)
  39. }
  40. }
  41. }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment