Fabric Seasons

Fabric Seasons

16M Downloads

Snow Layers with 8 Layers Not Melting

solonovamax opened this issue ยท 0 comments

commented

Snow layers with 8 layers (minecraft:snow with layers=8, which is the max value) do not melt. (Further, minecraft:snow_block also can never melt, because it does not implement Meltable).
I am using version 2.4.2-BETA+1.21.

I am attempting to implement compat for another mod which accumulates snow layers, and this can lead to scenarios where the snow layers are 8 layers tall. However, after melting, you will be left with only the 8-layer tall snow blocks.

This is due to the following check:

public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random, CallbackInfo ci) {
if (world.getLightLevel(LightType.SKY, pos) > 0 && world.getBiome(pos).value().getTemperature(pos) >= 0.15F && !FabricSeasons.getPlacedMeltablesState(world).isManuallyPlaced(pos)) {
Block.dropStacks(state, world, pos);

More specifically,

world.getLightLevel(LightType.SKY, pos) > 0

This is because since once it reaches 8 layers it becomes a full non-transparent block, the light level will always be zero because light cannot penetrate a full block. The way to fix it would be to check the sky light level for the block above the current one. (which in all cases should always be identical to the light level of the current block, except in the case of the block being a full non-transparent block (eg. layers=8)