Fix boat detection for player waves, fix dropped blocks interacting with floodfill

This commit is contained in:
Merlin1809
2025-10-10 14:52:11 +02:00
parent 4e5158a419
commit 5c67cd312a
6 changed files with 22 additions and 14 deletions
+5 -5
View File
@@ -439,7 +439,7 @@ void main() {
uint blockTop = 0;
#endif
if(blockTop == 12 || blockTop > 2400) {
if(blockTop == 12 || blockTop > 4000) {
vgrassSideCheck = vec4(2.0);
}
#if REPLACE_SHORT_GRASS < 2
@@ -449,25 +449,25 @@ void main() {
uint blockSouth = GetVoxelBlock(ivec3(LPVpos.x, LPVpos.y + 0.6, LPVpos.z + 1.0));
uint blockNorth = GetVoxelBlock(ivec3(LPVpos.x, LPVpos.y + 0.6, LPVpos.z - 1.0));
if(blockEast > 2400 || blockEast == 12 || (blockEast > 80 && blockEast < 86) || blockEast == 503 || (blockEast > 406 && blockEast < 440)) {vgrassSideCheck.x = 1.0;} else {
if(blockEast > 4000 || blockEast == 12 || (blockEast > 80 && blockEast < 86) || blockEast == 503 || (blockEast > 406 && blockEast < 440)) {vgrassSideCheck.x = 1.0;} else {
#ifdef GRASS_DETECT_FALLOFF
blockEast = GetVoxelBlock(ivec3(LPVpos.x + 1.0, LPVpos.y, LPVpos.z));
if(blockEast != 85) {vgrassSideCheck.x = -1.0;}
#endif
}
if(blockWest > 2400 || blockWest == 12 || (blockWest > 80 && blockWest < 86) || blockWest == 503 || (blockWest > 406 && blockWest < 440)) {vgrassSideCheck.y = 1.0;} else {
if(blockWest > 4000 || blockWest == 12 || (blockWest > 80 && blockWest < 86) || blockWest == 503 || (blockWest > 406 && blockWest < 440)) {vgrassSideCheck.y = 1.0;} else {
#ifdef GRASS_DETECT_FALLOFF
blockWest = GetVoxelBlock(ivec3(LPVpos.x - 1.0, LPVpos.y, LPVpos.z));
if(blockWest != 85) {vgrassSideCheck.y = -1.0;}
#endif
}
if(blockSouth > 2400 || blockSouth == 12 || (blockSouth > 80 && blockSouth < 86) || blockSouth == 503 || (blockSouth > 406 && blockSouth < 440)) {vgrassSideCheck.z = 1.0;} else {
if(blockSouth > 4000 || blockSouth == 12 || (blockSouth > 80 && blockSouth < 86) || blockSouth == 503 || (blockSouth > 406 && blockSouth < 440)) {vgrassSideCheck.z = 1.0;} else {
#ifdef GRASS_DETECT_FALLOFF
blockSouth = GetVoxelBlock(ivec3(LPVpos.x, LPVpos.y, LPVpos.z+ 1.0));
if(blockSouth != 85) {vgrassSideCheck.z = -1.0;}
#endif
}
if(blockNorth > 2400 || blockNorth == 12 || (blockNorth > 80 && blockNorth < 86) || blockNorth == 503 || (blockNorth > 406 && blockNorth < 440)) {vgrassSideCheck.w = 1.0;} else {
if(blockNorth > 4000 || blockNorth == 12 || (blockNorth > 80 && blockNorth < 86) || blockNorth == 503 || (blockNorth > 406 && blockNorth < 440)) {vgrassSideCheck.w = 1.0;} else {
#ifdef GRASS_DETECT_FALLOFF
blockNorth = GetVoxelBlock(ivec3(LPVpos.x, LPVpos.y, LPVpos.z - 1.0));
if(blockNorth != 85) {vgrassSideCheck.w = -1.0;}
+1 -1
View File
@@ -18,7 +18,7 @@ uint GetVoxelBlock(const in ivec3 voxelPos) {
if (clamp(voxelPos, ivec3(0), ivec3(VoxelSize3-1u)) != voxelPos)
return BLOCK_EMPTY;
return imageLoad(imgVoxelMask, voxelPos).r;
return imageLoad(imgVoxelMask, voxelPos).r % 2000u;
}
#include "/lib/SSBOs.glsl"
+1 -1
View File
@@ -55,7 +55,7 @@ layout (local_size_x = 8, local_size_y = 8, local_size_z = 8) in;
uint blockId = imageLoad(imgVoxelMask, voxelPos).r;
blockId = blockId % 1200;
blockId = blockId % 2000u;
return blockId;
}
+1 -1
View File
@@ -1,6 +1,6 @@
option.SHADER_VERSION_LABEL = §d§lECLIPSE§r - A Bliss Edit
prefix.SHADER_VERSION_LABEL = V
value.SHADER_VERSION_LABEL.482 = 4.1.1
value.SHADER_VERSION_LABEL.482 = 4.1.2
# if you're here to translate, this is not a joke, these do what they say
profile.POTATO=§4Potato
+3
View File
@@ -1029,6 +1029,9 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631)
#ifdef LPV_ENABLED
#endif
#ifdef LPV_ENTITY_LIGHTS
#endif
#if defined CUSTOM_MOON_ROTATION || defined IS_LPV_ENABLED
const float voxelDistance = 64.0;
#endif
+11 -6
View File
@@ -57,12 +57,17 @@ void PopulateShadowVoxel(const in vec3 playerPos) {
if (blockEntityId > 0 && blockEntityId < 500)
voxelId = uint(blockEntityId);
}
else if (currentRenderedItemId > 0 && currentRenderedItemId < 1200) {
else if (currentRenderedItemId > 100 && currentRenderedItemId < 300) {
if (entityId != ENTITY_ITEM_FRAME && entityId != ENTITY_PLAYER) {
uint oldID = imageLoad(imgVoxelMask, voxelPos).r;
voxelId = uint(currentRenderedItemId);
// offset by a random number that came into my head to make entities and items not interact with grass
voxelId = uint(currentRenderedItemId)+1200u;
if(oldID == 12u) voxelId += 1200u;
voxelId += 2000u;
#if defined SHADER_GRASS && REPLACE_SHORT_GRASS < 2
uint oldID = imageLoad(imgVoxelMask, voxelPos).r;
if(oldID == 12u) voxelId += 2000u;
#endif
}
}
else {
@@ -74,7 +79,7 @@ void PopulateShadowVoxel(const in vec3 playerPos) {
case ENTITY_MAGMA_CUBE:
case ENTITY_SPECTRAL_ARROW:
case ENTITY_TNT:
voxelId = uint(entityId)+1200u;
voxelId = uint(entityId)+2000u;
break;
}
}
@@ -88,7 +93,7 @@ void PopulateShadowVoxel(const in vec3 playerPos) {
switch (entityId) {
case ENTITY_BOAT:
case ENTITY_SMALLSHIPS:
voxelId = uint(entityId)+1200u;
voxelId = uint(entityId)+2000u;
break;
}
}