src/main/java/org/spongepowered/mod/mixin/core/world/MixinChunk.java
@Overwrite
    private boolean checkLight(int x, int z) {
        int i = this.getTopFilledSegment();
        boolean flag = false;
        boolean flag1 = false;
        BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos((this.xPosition << 4) + x, 0, (this.zPosition << 4) + z);

        for (int j = i + 16 - 1; j > this.world.getSeaLevel() || j > 0 && !flag1; --j) {
            blockpos$mutableblockpos.setPos(blockpos$mutableblockpos.getX(), j, blockpos$mutableblockpos.getZ());
            int k = this.getBlockLightOpacity(blockpos$mutableblockpos);

            if (k == 255 && blockpos$mutableblockpos.getY() < this.world.getSeaLevel()) {
                flag1 = true;
            }

            if (!flag && k > 0) {
                flag = true;
            } else if (flag && k == 0 && !this.world.checkLight(blockpos$mutableblockpos)) {
                return false;
            }
        }

        for (int l = blockpos$mutableblockpos.getY(); l > 0; --l) {
            blockpos$mutableblockpos.setPos(blockpos$mutableblockpos.getX(), l, blockpos$mutableblockpos.getZ());

            // Sponge Start - Use SpongeImplHooks for forge optimization
            // if (this.getBlockState(blockpos$mutableblockpos).getLightValue() > 0) // Vanilla
            // if (this.getBlockState(blockpos$mutableblockpos).getLightValue(this.worldObj, blockpos$mutableblockpos) > 0) // Forge
            if (StaticMixinForgeHelper.getChunkPosLight(this.getBlockState(blockpos$mutableblockpos), this.world, blockpos$mutableblockpos) > 0) {
                // Sponge End
                this.world.checkLight(blockpos$mutableblockpos);
            }
        }

        return true;
    }
/**
     * @author gabizou - July 25th, 2016
     * @reason - Adds ignorance to blocks who do not perform any
     * location checks for their light values based on location
     *
     * @param x The x position
     * @param z The y position
     * @return whatever vanilla said
     */
@author gabizou - July 25th, 2016
@reason - Adds ignorance to blocks who do not perform any
location checks for their light values based on location

@param x The x position
@param z The y position
@return whatever vanilla said
@author gabizou - July 25th 2016 @reason - Adds ignorance to blocks who do not perform any location checks for their light values based on location @param x The x position @param z The y position @return whatever vanilla said
@Overwrite
    private boolean checkLight(int x, int z) {
        int i = this.getTopFilledSegment();
        boolean flag = false;
        boolean flag1 = false;
        BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos((this.xPosition << 4) + x, 0, (this.zPosition << 4) + z);
        for (int j = i + 16 - 1; j > this.world.getSeaLevel() || j > 0 && !flag1; --j) {
            blockpos$mutableblockpos.setPos(blockpos$mutableblockpos.getX(), j, blockpos$mutableblockpos.getZ());
            int k = this.getBlockLightOpacity(blockpos$mutableblockpos);
            if (k == 255 && blockpos$mutableblockpos.getY() < this.world.getSeaLevel()) {
                flag1 = true;
            }
            if (!flag && k > 0) {
                flag = true;
            } else if (flag && k == 0 && !this.world.checkLight(blockpos$mutableblockpos)) {
                return false;
            }
        }
        for (int l = blockpos$mutableblockpos.getY(); l > 0; --l) {
            blockpos$mutableblockpos.setPos(blockpos$mutableblockpos.getX(), l, blockpos$mutableblockpos.getZ());
            if (StaticMixinForgeHelper.getChunkPosLight(this.getBlockState(blockpos$mutableblockpos), this.world, blockpos$mutableblockpos) > 0) {
                this.world.checkLight(blockpos$mutableblockpos);
            }
        }
        return true;
    }
@ Overwrite private boolean checkLight ( int x , int z ) { int i = this . getTopFilledSegment ( ) ; boolean flag = false ; boolean flag1 = false ; BlockPos . MutableBlockPos blockpos$mutableblockpos = new BlockPos . MutableBlockPos ( ( this . xPosition << 4 ) + x , 0 , ( this . zPosition << 4 ) + z ) ; for ( int j = i + 16 - 1 ; j > this . world . getSeaLevel ( ) || j > 0 && ! flag1 ; -- j ) { blockpos$mutableblockpos . setPos ( blockpos$mutableblockpos . getX ( ) , j , blockpos$mutableblockpos . getZ ( ) ) ; int k = this . getBlockLightOpacity ( blockpos$mutableblockpos ) ; if ( k == 255 && blockpos$mutableblockpos . getY ( ) < this . world . getSeaLevel ( ) ) { flag1 = true ; } if ( ! flag && k > 0 ) { flag = true ; } else if ( flag && k == 0 && ! this . world . checkLight ( blockpos$mutableblockpos ) ) { return false ; } } for ( int l = blockpos$mutableblockpos . getY ( ) ; l > 0 ; -- l ) { blockpos$mutableblockpos . setPos ( blockpos$mutableblockpos . getX ( ) , l , blockpos$mutableblockpos . getZ ( ) ) ; if ( StaticMixinForgeHelper . getChunkPosLight ( this . getBlockState ( blockpos$mutableblockpos ) , this . world , blockpos$mutableblockpos ) > 0 ) { this . world . checkLight ( blockpos$mutableblockpos ) ; } } return true ; }
@author gabizou - July 25th, 2016
 @reason - Adds ignorance to blocks who do not perform any
 location checks for their light values based on location
@author gabizou - July 25th 2016 @reason - Adds ignorance to blocks who do not perform any location checks for their light values based on location
// Sponge Start - Use SpongeImplHooks for forge optimization // if (this.getBlockState(blockpos$mutableblockpos).getLightValue() > 0) // Vanilla // if (this.getBlockState(blockpos$mutableblockpos).getLightValue(this.worldObj, blockpos$mutableblockpos) > 0) // Forge // Sponge End