mirror of
https://github.com/webbukkit/dynmap.git
synced 2024-09-29 14:17:26 +02:00
Fix translucent tiles being dropped (water edges), improve biome workaround
This commit is contained in:
parent
6348fbe789
commit
7d79301293
@ -1088,19 +1088,22 @@ public class IsoHDPerspective implements HDPerspective {
|
|||||||
rendered[i] = true;
|
rendered[i] = true;
|
||||||
}
|
}
|
||||||
shaderstate[i].getRayColor(rslt, 0);
|
shaderstate[i].getRayColor(rslt, 0);
|
||||||
if(isjpg[i] && rslt.isTransparent()) {
|
int c_argb = rslt.getARGB();
|
||||||
|
if(c_argb != 0) rendered[i] = true;
|
||||||
|
if(isjpg[i] && (c_argb == 0)) {
|
||||||
argb_buf[i][(tileHeight-y-1)*tileWidth + x] = bgnight[i];
|
argb_buf[i][(tileHeight-y-1)*tileWidth + x] = bgnight[i];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
argb_buf[i][(tileHeight-y-1)*tileWidth + x] = rslt.getARGB();
|
argb_buf[i][(tileHeight-y-1)*tileWidth + x] = c_argb;
|
||||||
}
|
}
|
||||||
if(day_argb_buf[i] != null) {
|
if(day_argb_buf[i] != null) {
|
||||||
shaderstate[i].getRayColor(rslt, 1);
|
shaderstate[i].getRayColor(rslt, 1);
|
||||||
if(isjpg[i] && rslt.isTransparent()) {
|
c_argb = rslt.getARGB();
|
||||||
|
if(isjpg[i] && (c_argb == 0)) {
|
||||||
day_argb_buf[i][(tileHeight-y-1)*tileWidth + x] = bgday[i];
|
day_argb_buf[i][(tileHeight-y-1)*tileWidth + x] = bgday[i];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
day_argb_buf[i][(tileHeight-y-1)*tileWidth + x] = rslt.getARGB();
|
day_argb_buf[i][(tileHeight-y-1)*tileWidth + x] = c_argb;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ public class TexturePackHDShader implements HDShader {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBiomeDataNeeded() {
|
public boolean isBiomeDataNeeded() {
|
||||||
return true;
|
return swamp_shaded;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -41,7 +41,7 @@ public class NewMapChunkCache implements MapChunkCache {
|
|||||||
private boolean do_generate = false;
|
private boolean do_generate = false;
|
||||||
private boolean do_save = false;
|
private boolean do_save = false;
|
||||||
private boolean isempty = true;
|
private boolean isempty = true;
|
||||||
|
private static final Biome[] EMPTYBIOME = new Biome[256];
|
||||||
private ChunkSnapshot[] snaparray; /* Index = (x-x_min) + ((z-z_min)*x_dim) */
|
private ChunkSnapshot[] snaparray; /* Index = (x-x_min) + ((z-z_min)*x_dim) */
|
||||||
private Biome[][] biomess; /* Biome snapshots (workaround) - same index as snaparray */
|
private Biome[][] biomess; /* Biome snapshots (workaround) - same index as snaparray */
|
||||||
|
|
||||||
@ -54,6 +54,7 @@ public class NewMapChunkCache implements MapChunkCache {
|
|||||||
public class OurMapIterator implements MapIterator {
|
public class OurMapIterator implements MapIterator {
|
||||||
private int x, y, z, chunkindex, bx, bz;
|
private int x, y, z, chunkindex, bx, bz;
|
||||||
private ChunkSnapshot snap;
|
private ChunkSnapshot snap;
|
||||||
|
private Biome[] bio;
|
||||||
private BlockStep laststep;
|
private BlockStep laststep;
|
||||||
private int typeid = -1;
|
private int typeid = -1;
|
||||||
private int blkdata = -1;
|
private int blkdata = -1;
|
||||||
@ -70,8 +71,10 @@ public class NewMapChunkCache implements MapChunkCache {
|
|||||||
this.bz = z & 0xF;
|
this.bz = z & 0xF;
|
||||||
try {
|
try {
|
||||||
snap = snaparray[chunkindex];
|
snap = snaparray[chunkindex];
|
||||||
|
bio = biomess[chunkindex];
|
||||||
} catch (ArrayIndexOutOfBoundsException aioobx) {
|
} catch (ArrayIndexOutOfBoundsException aioobx) {
|
||||||
snap = EMPTY;
|
snap = EMPTY;
|
||||||
|
bio = EMPTYBIOME;
|
||||||
}
|
}
|
||||||
laststep = BlockStep.Y_MINUS;
|
laststep = BlockStep.Y_MINUS;
|
||||||
typeid = blkdata = -1;
|
typeid = blkdata = -1;
|
||||||
@ -96,7 +99,7 @@ public class NewMapChunkCache implements MapChunkCache {
|
|||||||
return snap.getBlockEmittedLight(bx, y, bz);
|
return snap.getBlockEmittedLight(bx, y, bz);
|
||||||
}
|
}
|
||||||
public Biome getBiome() {
|
public Biome getBiome() {
|
||||||
return biomess[chunkindex][bx | (bz<<4)];
|
return bio[bx | (bz<<4)];
|
||||||
}
|
}
|
||||||
public double getRawBiomeTemperature() {
|
public double getRawBiomeTemperature() {
|
||||||
return snap.getRawBiomeTemperature(bx, bz);
|
return snap.getRawBiomeTemperature(bx, bz);
|
||||||
@ -117,8 +120,10 @@ public class NewMapChunkCache implements MapChunkCache {
|
|||||||
bx = 0;
|
bx = 0;
|
||||||
chunkindex++;
|
chunkindex++;
|
||||||
snap = snaparray[chunkindex];
|
snap = snaparray[chunkindex];
|
||||||
|
bio = biomess[chunkindex];
|
||||||
} catch (ArrayIndexOutOfBoundsException aioobx) {
|
} catch (ArrayIndexOutOfBoundsException aioobx) {
|
||||||
snap = EMPTY;
|
snap = EMPTY;
|
||||||
|
bio = EMPTYBIOME;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -133,8 +138,10 @@ public class NewMapChunkCache implements MapChunkCache {
|
|||||||
bz = 0;
|
bz = 0;
|
||||||
chunkindex += x_dim;
|
chunkindex += x_dim;
|
||||||
snap = snaparray[chunkindex];
|
snap = snaparray[chunkindex];
|
||||||
|
bio = biomess[chunkindex];
|
||||||
} catch (ArrayIndexOutOfBoundsException aioobx) {
|
} catch (ArrayIndexOutOfBoundsException aioobx) {
|
||||||
snap = EMPTY;
|
snap = EMPTY;
|
||||||
|
bio = EMPTYBIOME;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -146,8 +153,10 @@ public class NewMapChunkCache implements MapChunkCache {
|
|||||||
bx = 15;
|
bx = 15;
|
||||||
chunkindex--;
|
chunkindex--;
|
||||||
snap = snaparray[chunkindex];
|
snap = snaparray[chunkindex];
|
||||||
|
bio = biomess[chunkindex];
|
||||||
} catch (ArrayIndexOutOfBoundsException aioobx) {
|
} catch (ArrayIndexOutOfBoundsException aioobx) {
|
||||||
snap = EMPTY;
|
snap = EMPTY;
|
||||||
|
bio = EMPTYBIOME;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -162,8 +171,10 @@ public class NewMapChunkCache implements MapChunkCache {
|
|||||||
bz = 15;
|
bz = 15;
|
||||||
chunkindex -= x_dim;
|
chunkindex -= x_dim;
|
||||||
snap = snaparray[chunkindex];
|
snap = snaparray[chunkindex];
|
||||||
|
bio = biomess[chunkindex];
|
||||||
} catch (ArrayIndexOutOfBoundsException aioobx) {
|
} catch (ArrayIndexOutOfBoundsException aioobx) {
|
||||||
snap = EMPTY;
|
snap = EMPTY;
|
||||||
|
bio = EMPTYBIOME;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -375,6 +386,7 @@ public class NewMapChunkCache implements MapChunkCache {
|
|||||||
}
|
}
|
||||||
|
|
||||||
snaparray = new ChunkSnapshot[x_dim * (z_max-z_min+1)];
|
snaparray = new ChunkSnapshot[x_dim * (z_max-z_min+1)];
|
||||||
|
biomess = new Biome[snaparray.length][];
|
||||||
}
|
}
|
||||||
|
|
||||||
public int loadChunks(int max_to_load) {
|
public int loadChunks(int max_to_load) {
|
||||||
@ -410,7 +422,6 @@ public class NewMapChunkCache implements MapChunkCache {
|
|||||||
for(int ii = 0; ii < 256; ii++) {
|
for(int ii = 0; ii < 256; ii++) {
|
||||||
b[ii] = w.getBiome((chunk.x<<4)+(ii & 0xF), (chunk.z<<4) + (ii >> 4));
|
b[ii] = w.getBiome((chunk.x<<4)+(ii & 0xF), (chunk.z<<4) + (ii >> 4));
|
||||||
}
|
}
|
||||||
if(biomess == null) biomess = new Biome[snaparray.length][];
|
|
||||||
biomess[(chunk.x-x_min) + (chunk.z - z_min)*x_dim] = b;
|
biomess[(chunk.x-x_min) + (chunk.z - z_min)*x_dim] = b;
|
||||||
}
|
}
|
||||||
/* Check if cached chunk snapshot found */
|
/* Check if cached chunk snapshot found */
|
||||||
|
Loading…
Reference in New Issue
Block a user