62 lines
2.3 KiB
Java
62 lines
2.3 KiB
Java
package carpet.mixins;
|
|
|
|
import carpet.fakes.ServerLightingProviderInterface;
|
|
import net.minecraft.core.BlockPos;
|
|
import net.minecraft.core.SectionPos;
|
|
import net.minecraft.server.level.ThreadedLevelLightEngine;
|
|
import net.minecraft.world.level.ChunkPos;
|
|
import net.minecraft.world.level.LightLayer;
|
|
import net.minecraft.world.level.chunk.ChunkAccess;
|
|
import net.minecraft.world.level.chunk.DataLayer;
|
|
import net.minecraft.world.level.chunk.LightChunkGetter;
|
|
import net.minecraft.world.level.lighting.LevelLightEngine;
|
|
import org.spongepowered.asm.mixin.Mixin;
|
|
import org.spongepowered.asm.mixin.Shadow;
|
|
|
|
@Mixin(ThreadedLevelLightEngine.class)
|
|
public abstract class ThreadedLevelLightEngine_scarpetMixin extends LevelLightEngine implements ServerLightingProviderInterface
|
|
{
|
|
//@Shadow public abstract void checkBlock(BlockPos pos);
|
|
|
|
//@Shadow public abstract void setLightEnabled(final ChunkPos chunkPos, final boolean bl);
|
|
|
|
//@Shadow public abstract void propagateLightSources(final ChunkPos chunkPos);
|
|
|
|
public ThreadedLevelLightEngine_scarpetMixin(LightChunkGetter chunkProvider, boolean hasBlockLight, boolean hasSkyLight)
|
|
{
|
|
super(chunkProvider, hasBlockLight, hasSkyLight);
|
|
}
|
|
|
|
@Override
|
|
public void resetLight(ChunkAccess chunk, ChunkPos pos)
|
|
{
|
|
//super.setRetainData(pos, false);
|
|
//super.setLightEnabled(pos, false);
|
|
//for (int x = chpos.x-1; x <= chpos.x+1; x++ )
|
|
// for (int z = chpos.z-1; z <= chpos.z+1; z++ )
|
|
{
|
|
//ChunkPos pos = new ChunkPos(x, z);
|
|
int j;
|
|
for(j = -1; j < 17; ++j) { // skip some recomp
|
|
super.queueSectionData(LightLayer.BLOCK, SectionPos.of(pos, j), new DataLayer());
|
|
super.queueSectionData(LightLayer.SKY, SectionPos.of(pos, j), new DataLayer());
|
|
}
|
|
for(j = 0; j < 16; ++j) {
|
|
super.updateSectionStatus(SectionPos.of(pos, j), true);
|
|
}
|
|
|
|
setLightEnabled(pos, true);
|
|
|
|
propagateLightSources(pos);
|
|
// chunk.getLights().forEach((blockPos) -> {
|
|
// super.onBlockEmissionIncrease(blockPos, chunk.getLightEmission(blockPos));
|
|
// });
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|