Fix cave renderer - handle different types of air in 1.13
This commit is contained in:
parent
1babea2ace
commit
d391d192d6
5 changed files with 59 additions and 29 deletions
|
|
@ -42,7 +42,13 @@ public class CaveHDShader implements HDShader {
|
|||
name = (String) configuration.get("name");
|
||||
iflit = configuration.getBoolean("onlyiflit", false);
|
||||
|
||||
setHidden(DynmapBlockState.AIR); /* Air is hidden always */
|
||||
for (int i = 0; i < DynmapBlockState.getGlobalIndexMax(); i++) {
|
||||
DynmapBlockState bs = DynmapBlockState.getStateByGlobalIndex(i);
|
||||
if (bs.isAir() || bs.isWater()) {
|
||||
setHidden(bs);
|
||||
}
|
||||
}
|
||||
|
||||
List<Object> hidden = configuration.getList("hiddennames");
|
||||
if(hidden != null) {
|
||||
for(Object o : hidden) {
|
||||
|
|
@ -60,6 +66,12 @@ public class CaveHDShader implements HDShader {
|
|||
setHidden(DynmapBlockState.SNOW_BLOCK);
|
||||
setHidden(DynmapBlockState.ICE_BLOCK);
|
||||
setHidden(DynmapBlockState.SNOW_LAYER_BLOCK);
|
||||
for (int i = 0; i < DynmapBlockState.getGlobalIndexMax(); i++) {
|
||||
DynmapBlockState bs = DynmapBlockState.getStateByGlobalIndex(i);
|
||||
if (bs.isLeaves() || bs.isSnow() || bs.isLog()) {
|
||||
setHidden(bs);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -166,7 +178,7 @@ public class CaveHDShader implements HDShader {
|
|||
if (isHidden(blocktype)) {
|
||||
blocktype = DynmapBlockState.AIR;
|
||||
}
|
||||
else {
|
||||
else if (blocktype.isNotAir()) {
|
||||
air = false;
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -512,18 +512,17 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
* Process visit of ray to block
|
||||
*/
|
||||
private final boolean visit_block(HDShaderState[] shaderstate, boolean[] shaderdone) {
|
||||
boolean done = false;
|
||||
lastblocktype = blocktype;
|
||||
blocktype = mapiter.getBlockType();
|
||||
if(skiptoair) { /* If skipping until we see air */
|
||||
if (skiptoair) { /* If skipping until we see air */
|
||||
if (blocktype.isAir()) { /* If air, we're done */
|
||||
skiptoair = false;
|
||||
}
|
||||
}
|
||||
else if(nonairhit || blocktype.isNotAir()) {
|
||||
done = true;
|
||||
// If waterlogged, start by rendering as if full water block
|
||||
if (blocktype.isWaterlogged()) {
|
||||
boolean done = true;
|
||||
DynmapBlockState saved_type = blocktype;
|
||||
if (full_water == null) {
|
||||
full_water = DynmapBlockState.getBaseStateByName(DynmapBlockState.WATER_BLOCK);
|
||||
|
|
@ -536,12 +535,12 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
}
|
||||
done = done && shaderdone[i];
|
||||
}
|
||||
// Restore block type
|
||||
blocktype = saved_type;
|
||||
/* If all are done, we're out */
|
||||
if (done) {
|
||||
return true;
|
||||
}
|
||||
// Restore block type
|
||||
blocktype = saved_type;
|
||||
nonairhit = true;
|
||||
}
|
||||
short[] model;
|
||||
|
|
@ -559,12 +558,13 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
}
|
||||
/* Look up to see if block is modelled */
|
||||
if(patches != null) {
|
||||
done = handlePatches(patches, shaderstate, shaderdone);
|
||||
return handlePatches(patches, shaderstate, shaderdone);
|
||||
}
|
||||
else if ((model = scalemodels.getScaledModel(blocktype)) != null) {
|
||||
done = handleSubModel(model, shaderstate, shaderdone);
|
||||
return handleSubModel(model, shaderstate, shaderdone);
|
||||
}
|
||||
else {
|
||||
boolean done = true;
|
||||
subalpha = -1;
|
||||
for(int i = 0; i < shaderstate.length; i++) {
|
||||
if(!shaderdone[i]) {
|
||||
|
|
@ -572,11 +572,12 @@ public class IsoHDPerspective implements HDPerspective {
|
|||
}
|
||||
done = done && shaderdone[i];
|
||||
}
|
||||
if (!done)
|
||||
nonairhit = true;
|
||||
if (done)
|
||||
return true;
|
||||
nonairhit = true;
|
||||
}
|
||||
}
|
||||
return done;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Skip empty : return false if exited */
|
||||
|
|
|
|||
|
|
@ -2143,12 +2143,6 @@ block:id=blue_ice,allfaces=0:blue_ice,stdrot=true
|
|||
# Conduit
|
||||
block:id=conduit,allfaces=0:conduit,transparency=TRANSPARENT
|
||||
|
||||
# Void air
|
||||
block:id=void_air,transparency=TRANSPARENT
|
||||
|
||||
# Cave air
|
||||
block:id=cave_air,transparency=TRANSPARENT
|
||||
|
||||
# Bubble column (taken care of due to being waterlogged)
|
||||
block:id=bubble_column,transparency=SEMITRANSPARENT
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue