diff options
author | Kevin Chabowski <kevin@kch42.de> | 2013-10-26 00:40:19 +0200 |
---|---|---|
committer | Kevin Chabowski <kevin@kch42.de> | 2013-10-26 00:40:19 +0200 |
commit | 36c05c623cfc2d5933f9cf8567f9bf800b635ed0 (patch) | |
tree | 3830c185e969829627166e4bd366c0ae269ca09f /region_wrapper.go | |
parent | 75ee4c47af30002a5c3513696f2ae1c728f16979 (diff) | |
parent | c8931d629b76d6a379f7e46819fb4616d1bf795c (diff) | |
download | biomed-36c05c623cfc2d5933f9cf8567f9bf800b635ed0.tar.gz biomed-36c05c623cfc2d5933f9cf8567f9bf800b635ed0.tar.bz2 biomed-36c05c623cfc2d5933f9cf8567f9bf800b635ed0.zip |
Merge branch 'minecraft-1.7'
Diffstat (limited to 'region_wrapper.go')
-rw-r--r-- | region_wrapper.go | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/region_wrapper.go b/region_wrapper.go index 2f8abe4..bf23913 100644 --- a/region_wrapper.go +++ b/region_wrapper.go @@ -242,9 +242,18 @@ func (rw *RegionWrapper) GetBiomeAt(x, z int) (mcmap.Biome, bool) { return chunk.Biome(bx, bz), true } -func fixFreeze(bx, bz int, chunk *mcmap.Chunk) (newcol *gdk.Color) { - for y := mcmap.ChunkSizeY - 1; y >= 0; y-- { - if blk := chunk.Block(bx, y, bz); blk.ID != mcmap.BlkAir { +func fixWeather(bio mcmap.Biome, bx, bz int, chunk *mcmap.Chunk) (newcol *gdk.Color) { + snowLine := snowLines[bio] + + for y := mcmap.ChunkSizeY; y >= 0; y-- { + blk := chunk.Block(bx, y, bz) + + if blk.ID == mcmap.BlkAir { + continue + } + + if y >= snowLine { + // Freeze water and cover blocks with snow if (blk.ID == mcmap.BlkStationaryWater) || (blk.ID == mcmap.BlkWater) { blk.ID = mcmap.BlkIce newcol = blockColors[mcmap.BlkIce] @@ -256,17 +265,8 @@ func fixFreeze(bx, bz int, chunk *mcmap.Chunk) (newcol *gdk.Color) { newcol = blockColors[mcmap.BlkSnow] } } - - break - } - } - - return -} - -func fixMelt(bx, bz int, chunk *mcmap.Chunk) (newcol *gdk.Color) { - for y := mcmap.ChunkSizeY - 1; y >= 0; y-- { - if blk := chunk.Block(bx, y, bz); blk.ID != mcmap.BlkAir { + } else { + // Melt ice and remove snow cover if blk.ID == mcmap.BlkIce { blk.ID = mcmap.BlkStationaryWater blk.Data = 0x0 @@ -280,9 +280,9 @@ func fixMelt(bx, bz int, chunk *mcmap.Chunk) (newcol *gdk.Color) { } } } - - break } + + break } return @@ -306,11 +306,7 @@ func (rw *RegionWrapper) SetBiomeAt(x, z int, bio mcmap.Biome) { var newcol *gdk.Color if rw.fixSnowIce { - if coldBiome[bio] { - newcol = fixFreeze(bx, bz, chunk) - } else { - newcol = fixMelt(bx, bz, chunk) - } + newcol = fixWeather(bio, bx, bz, chunk) } chunk.MarkModified() |