0

updated biome rendering to use latest Biome Extractor format

This commit is contained in:
Aaron Griffith
2011-03-03 12:27:47 -05:00
parent 1bb6d03c90
commit a6805c2e0c
4 changed files with 19 additions and 16 deletions

View File

@@ -92,10 +92,10 @@ biome-accurate tinting, the Overviewer can use biome data produced by the
Minecraft Biome Extractor tool. This tool can be downloaded from:
http://www.minecraftforum.net/viewtopic.php?f=25&t=80902
If the EXTRACTEDBIOMES folder is present in the world directory, then the
Overviewer will use the biome data to tint grass and leaves automatically --
there is no command line option to turn this feature on. If this folder does
not exist, then the Overviewer will use a static tinting for grass and leaves.
If the "biomes" folder is present in the world directory, then the Overviewer
will use the biome data to tint grass and leaves automatically -- there is no
command line option to turn this feature on. If this folder does not exist,
then the Overviewer will use a static tinting for grass and leaves.
Compiling the C Extension (optional)
------------------------------------

View File

@@ -675,9 +675,9 @@ class ChunkRenderer(object):
if self.world.useBiomeData:
biomeColorData = textures.getBiomeData(self.world.worlddir,
self.chunkX, self.chunkY)
# in the 8x8 block of biome data, what chunk is this?l
startX = (self.chunkX - int(math.floor(self.chunkX/8)*8))
startY = (self.chunkY - int(math.floor(self.chunkY/8)*8))
# in the 32x32 block of biome data, what chunk is this?l
startX = (self.chunkX - int(math.floor(self.chunkX/32)*32))
startY = (self.chunkY - int(math.floor(self.chunkY/32)*32))
# Each block is 24x24
# The next block on the X axis adds 12px to x and subtracts 6px from y in the image
@@ -717,14 +717,17 @@ class ChunkRenderer(object):
continue
if self.world.useBiomeData:
# 16 : number of blocks in a chunk (in one direction)
# 32 : number of chunks in a region (and biome file) in one direction
# so 16 * 32 == 512 : number of blocks in biome file, in one direction
if blockid == 2: #grass
index = biomeColorData[ ((startY*16)+y) * 128 + (startX*16) + x]
index = biomeColorData[ ((startY*16)+y) * 512 + (startX*16) + x]
c = textures.grasscolor[index]
# only tint the top texture
t = textures.prepareGrassTexture(c)
elif blockid == 18: # leaves
index = biomeColorData[ ((startY*16)+y) * 128 + (startX*16) + x]
index = biomeColorData[ ((startY*16)+y) * 512 + (startX*16) + x]
c = textures.foliagecolor[index]
t = textures.prepareLeafTexture(c)

View File

@@ -134,7 +134,7 @@ def main():
if not composite.extension_alpha_over:
logging.info("Notice: alpha_over extension not found; using default PIL paste()")
useBiomeData = os.path.exists(os.path.join(worlddir, 'EXTRACTEDBIOMES'))
useBiomeData = os.path.exists(os.path.join(worlddir, 'biomes'))
if not useBiomeData:
logging.info("Notice: Not using biome data for tinting")

View File

@@ -824,9 +824,9 @@ def prepareBiomeData(worlddir):
if grasscolor and foliagecolor:
return
biomeDir = os.path.join(worlddir, "EXTRACTEDBIOMES")
biomeDir = os.path.join(worlddir, "biomes")
if not os.path.exists(biomeDir):
raise Exception("EXTRACTEDBIOMES not found")
raise Exception("biomes not found")
# try to find the biome color images. If _find_file can't locate them
# then try looking in the EXTRACTEDBIOMES folder
@@ -850,16 +850,16 @@ def getBiomeData(worlddir, chunkX, chunkY):
global currentBiomeFile, currentBiomeData
biomeFile = "%d.%d.biome" % (
int(math.floor(chunkX/8)*8),
int(math.floor(chunkY/8)*8)
biomeFile = "b.%d.%d.biome" % (
int(math.floor(chunkX/32)),
int(math.floor(chunkY/32))
)
if biomeFile == currentBiomeFile:
return currentBiomeData
currentBiomeFile = biomeFile
f = open(os.path.join(worlddir, "EXTRACTEDBIOMES", biomeFile), "rb")
f = open(os.path.join(worlddir, "biomes", biomeFile), "rb")
rawdata = f.read()
f.close()