minecraft-src/net/minecraft/world/level/lighting/BlockLightSectionStorage.java
2025-07-04 01:41:11 +03:00

37 lines
1.4 KiB
Java

package net.minecraft.world.level.lighting;
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
import net.minecraft.core.BlockPos;
import net.minecraft.core.SectionPos;
import net.minecraft.world.level.LightLayer;
import net.minecraft.world.level.chunk.DataLayer;
import net.minecraft.world.level.chunk.LightChunkGetter;
public class BlockLightSectionStorage extends LayerLightSectionStorage<BlockLightSectionStorage.BlockDataLayerStorageMap> {
protected BlockLightSectionStorage(LightChunkGetter chunkSource) {
super(LightLayer.BLOCK, chunkSource, new BlockLightSectionStorage.BlockDataLayerStorageMap(new Long2ObjectOpenHashMap<>()));
}
@Override
protected int getLightValue(long levelPos) {
long l = SectionPos.blockToSection(levelPos);
DataLayer dataLayer = this.getDataLayer(l, false);
return dataLayer == null
? 0
: dataLayer.get(
SectionPos.sectionRelative(BlockPos.getX(levelPos)),
SectionPos.sectionRelative(BlockPos.getY(levelPos)),
SectionPos.sectionRelative(BlockPos.getZ(levelPos))
);
}
protected static final class BlockDataLayerStorageMap extends DataLayerStorageMap<BlockLightSectionStorage.BlockDataLayerStorageMap> {
public BlockDataLayerStorageMap(Long2ObjectOpenHashMap<DataLayer> long2ObjectOpenHashMap) {
super(long2ObjectOpenHashMap);
}
public BlockLightSectionStorage.BlockDataLayerStorageMap copy() {
return new BlockLightSectionStorage.BlockDataLayerStorageMap(this.map.clone());
}
}
}