From e7efbe193a99b76b58c3ff44657678717d239280 Mon Sep 17 00:00:00 2001 From: Mike Primm Date: Mon, 22 Apr 2013 23:03:07 -0500 Subject: [PATCH] Add Custom Colors support for texture packs --- .../org/dynmap/bukkit/NewMapChunkCache.java | 59 +++++++++++-------- src/main/resources/configuration.txt | 5 ++ 2 files changed, 39 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/dynmap/bukkit/NewMapChunkCache.java b/src/main/java/org/dynmap/bukkit/NewMapChunkCache.java index ec5de49b..7e43d65b 100644 --- a/src/main/java/org/dynmap/bukkit/NewMapChunkCache.java +++ b/src/main/java/org/dynmap/bukkit/NewMapChunkCache.java @@ -88,6 +88,7 @@ public class NewMapChunkCache implements MapChunkCache { initialize(x0, y0, z0); worldheight = w.getMaxHeight(); } + @Override public final void initialize(int x0, int y0, int z0) { this.x = x0; this.y = y0; @@ -108,18 +109,21 @@ public class NewMapChunkCache implements MapChunkCache { else typeid = blkdata = 0; } + @Override public final int getBlockTypeID() { if(typeid < 0) { typeid = snap.getBlockTypeId(bx, y, bz); } return typeid; } + @Override public final int getBlockData() { if(blkdata < 0) { blkdata = snap.getBlockData(bx, y, bz); } return blkdata; } + @Override public int getBlockSkyLight() { try { return snap.getBlockSkyLight(bx, y, bz); @@ -127,6 +131,7 @@ public class NewMapChunkCache implements MapChunkCache { return 15; } } + @Override public final int getBlockEmittedLight() { try { return snap.getBlockEmittedLight(bx, y, bz); @@ -196,7 +201,7 @@ public class NewMapChunkCache implements MapChunkCache { } } } - + @Override public final BiomeMap getBiome() { try { return biomemap[x - x_base][z - z_base]; @@ -205,15 +210,15 @@ public class NewMapChunkCache implements MapChunkCache { return BiomeMap.NULL; } } - - public final int getSmoothGrassColorMultiplier(int[] colormap, int width) { + @Override + public final int getSmoothGrassColorMultiplier(int[] colormap) { int mult = 0xFFFFFF; try { int rx = x - x_base; int rz = z - z_base; BiomeMap bm = biomemap[rx][rz]; if(sameneighborbiomecnt[rx][rz] >= (byte)8) { /* All neighbors same? */ - mult = bm.getModifiedGrassMultiplier(colormap[bm.biomeLookup(width)]); + mult = bm.getModifiedGrassMultiplier(colormap[bm.biomeLookup()]); } else { int raccum = 0; @@ -222,7 +227,7 @@ public class NewMapChunkCache implements MapChunkCache { for(int xoff = -1; xoff < 2; xoff++) { for(int zoff = -1; zoff < 2; zoff++) { bm = biomemap[rx+xoff][rz+zoff]; - int rmult = bm.getModifiedGrassMultiplier(colormap[bm.biomeLookup(width)]); + int rmult = bm.getModifiedGrassMultiplier(colormap[bm.biomeLookup()]); raccum += (rmult >> 16) & 0xFF; gaccum += (rmult >> 8) & 0xFF; baccum += rmult & 0xFF; @@ -236,14 +241,15 @@ public class NewMapChunkCache implements MapChunkCache { } return mult; } - public final int getSmoothFoliageColorMultiplier(int[] colormap, int width) { + @Override + public final int getSmoothFoliageColorMultiplier(int[] colormap) { int mult = 0xFFFFFF; try { int rx = x - x_base; int rz = z - z_base; BiomeMap bm = biomemap[rx][rz]; if(sameneighborbiomecnt[rx][rz] >= (byte)8) { /* All neighbors same? */ - mult = bm.getModifiedFoliageMultiplier(colormap[bm.biomeLookup(width)]); + mult = bm.getModifiedFoliageMultiplier(colormap[bm.biomeLookup()]); } else { int raccum = 0; @@ -252,7 +258,7 @@ public class NewMapChunkCache implements MapChunkCache { for(int xoff = -1; xoff < 2; xoff++) { for(int zoff = -1; zoff < 2; zoff++) { bm = biomemap[rx+xoff][rz+zoff]; - int rmult = bm.getModifiedFoliageMultiplier(colormap[bm.biomeLookup(width)]); + int rmult = bm.getModifiedFoliageMultiplier(colormap[bm.biomeLookup()]); raccum += (rmult >> 16) & 0xFF; gaccum += (rmult >> 8) & 0xFF; baccum += rmult & 0xFF; @@ -266,7 +272,8 @@ public class NewMapChunkCache implements MapChunkCache { } return mult; } - public final int getSmoothColorMultiplier(int[] colormap, int width, int[] swampmap, int swampwidth) { + @Override + public final int getSmoothColorMultiplier(int[] colormap, int[] swampmap) { int mult = 0xFFFFFF; try { int rx = x - x_base; @@ -274,10 +281,10 @@ public class NewMapChunkCache implements MapChunkCache { BiomeMap bm = biomemap[rx][rz]; if(sameneighborbiomecnt[rx][rz] >= (byte)8) { /* All neighbors same? */ if(bm == BiomeMap.SWAMPLAND) { - mult = swampmap[bm.biomeLookup(swampwidth)]; + mult = swampmap[bm.biomeLookup()]; } else { - mult = colormap[bm.biomeLookup(width)]; + mult = colormap[bm.biomeLookup()]; } } else { @@ -289,10 +296,10 @@ public class NewMapChunkCache implements MapChunkCache { bm = biomemap[rx+xoff][rz+zoff]; int rmult; if(bm == BiomeMap.SWAMPLAND) { - rmult = swampmap[bm.biomeLookup(swampwidth)]; + rmult = swampmap[bm.biomeLookup()]; } else { - rmult = colormap[bm.biomeLookup(width)]; + rmult = colormap[bm.biomeLookup()]; } raccum += (rmult >> 16) & 0xFF; gaccum += (rmult >> 8) & 0xFF; @@ -307,7 +314,7 @@ public class NewMapChunkCache implements MapChunkCache { } return mult; } - + @Override public final int getSmoothWaterColorMultiplier() { try { int rx = x - x_base; @@ -334,15 +341,15 @@ public class NewMapChunkCache implements MapChunkCache { return 0xFFFFFF; } } - - public final int getSmoothWaterColorMultiplier(int[] colormap, int width) { + @Override + public final int getSmoothWaterColorMultiplier(int[] colormap) { int mult = 0xFFFFFF; try { int rx = x - x_base; int rz = z - z_base; BiomeMap bm = biomemap[rx][rz]; if(sameneighborbiomecnt[rx][rz] >= (byte)8) { /* All neighbors same? */ - mult = colormap[bm.biomeLookup(width)]; + mult = colormap[bm.biomeLookup()]; } else { int raccum = 0; @@ -351,7 +358,7 @@ public class NewMapChunkCache implements MapChunkCache { for(int xoff = -1; xoff < 2; xoff++) { for(int zoff = -1; zoff < 2; zoff++) { bm = biomemap[rx+xoff][rz+zoff]; - int rmult = colormap[bm.biomeLookup(width)]; + int rmult = colormap[bm.biomeLookup()]; raccum += (rmult >> 16) & 0xFF; gaccum += (rmult >> 8) & 0xFF; baccum += rmult & 0xFF; @@ -365,16 +372,10 @@ public class NewMapChunkCache implements MapChunkCache { } return mult; } - - public final double getRawBiomeTemperature() { - return snap.getRawBiomeTemperature(bx, bz); - } - public final double getRawBiomeRainfall() { - return snap.getRawBiomeRainfall(bx, bz); - } /** * Step current position in given direction */ + @Override public final void stepPosition(BlockStep step) { typeid = -1; blkdata = -1; @@ -461,6 +462,7 @@ public class NewMapChunkCache implements MapChunkCache { /** * Unstep current position to previous position */ + @Override public BlockStep unstepPosition() { BlockStep ls = laststep; stepPosition(unstep[ls.ordinal()]); @@ -469,9 +471,11 @@ public class NewMapChunkCache implements MapChunkCache { /** * Unstep current position in oppisite director of given step */ + @Override public void unstepPosition(BlockStep s) { stepPosition(unstep[s.ordinal()]); } + @Override public final void setY(int y) { if(y > this.y) laststep = BlockStep.Y_PLUS; @@ -485,15 +489,19 @@ public class NewMapChunkCache implements MapChunkCache { typeid = blkdata = -1; } } + @Override public final int getX() { return x; } + @Override public final int getY() { return y; } + @Override public final int getZ() { return z; } + @Override public final int getBlockTypeIDAt(BlockStep s) { if(s == BlockStep.Y_MINUS) { if(y > 0) @@ -513,6 +521,7 @@ public class NewMapChunkCache implements MapChunkCache { } return 0; } + @Override public BlockStep getLastStep() { return laststep; } diff --git a/src/main/resources/configuration.txt b/src/main/resources/configuration.txt index df10b631..022da0d0 100644 --- a/src/main/resources/configuration.txt +++ b/src/main/resources/configuration.txt @@ -217,6 +217,11 @@ use-generated-textures: true correct-water-lighting: true transparent-leaves: true +# ctm-support: if true, Connected Texture Mod (CTM) in texture packs is enabled (default) +ctm-support: true +# custom-colors-support: if true, Custom Colors in texture packs is enabled (default) +custom-colors-support: true + # Control loading of player faces (if set to false, skins are never fetched) #fetchskins: false