ClientboundLightUpdatePacketData.java
net.minecraft.network.protocol.game.ClientboundLightUpdatePacketData
信息
- 全限定名:net.minecraft.network.protocol.game.ClientboundLightUpdatePacketData
- 类型:public class
- 包:net.minecraft.network.protocol.game
- 源码路径:src/main/java/net/minecraft/network/protocol/game/ClientboundLightUpdatePacketData.java
- 起始行号:L17
- 职责:
TODO
字段/常量
-
DATA_LAYER_STREAM_CODEC- 类型:
StreamCodec<ByteBuf,byte[]> - 修饰符:
private static final - 源码定位:
L18 - 说明:
TODO
- 类型:
-
skyYMask- 类型:
BitSet - 修饰符:
private final - 源码定位:
L19 - 说明:
TODO
- 类型:
-
blockYMask- 类型:
BitSet - 修饰符:
private final - 源码定位:
L20 - 说明:
TODO
- 类型:
-
emptySkyYMask- 类型:
BitSet - 修饰符:
private final - 源码定位:
L21 - 说明:
TODO
- 类型:
-
emptyBlockYMask- 类型:
BitSet - 修饰符:
private final - 源码定位:
L22 - 说明:
TODO
- 类型:
-
skyUpdates- 类型:
List<byte[]> - 修饰符:
private final - 源码定位:
L23 - 说明:
TODO
- 类型:
-
blockUpdates- 类型:
List<byte[]> - 修饰符:
private final - 源码定位:
L24 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public ClientboundLightUpdatePacketData(ChunkPos chunkPos, LevelLightEngine lightEngine, BitSet skyChangedLightSectionFilter, BitSet blockChangedLightSectionFilter) @ L26
- 构造器名:ClientboundLightUpdatePacketData
- 源码定位:L26
- 修饰符:public
参数:
- chunkPos: ChunkPos
- lightEngine: LevelLightEngine
- skyChangedLightSectionFilter: BitSet
- blockChangedLightSectionFilter: BitSet
说明:
TODO
public ClientboundLightUpdatePacketData(FriendlyByteBuf input, int x, int z) @ L47
- 构造器名:ClientboundLightUpdatePacketData
- 源码定位:L47
- 修饰符:public
参数:
- input: FriendlyByteBuf
- x: int
- z: int
说明:
TODO
方法
下面的方法块按源码顺序生成。
public void write(FriendlyByteBuf output) @ L56
- 方法名:write
- 源码定位:L56
- 返回类型:void
- 修饰符:public
参数:
- output: FriendlyByteBuf
说明:
TODO
private void prepareSectionData(ChunkPos pos, LevelLightEngine lightEngine, LightLayer layer, int sectionIndex, BitSet mask, BitSet emptyMask, List<byte[]> updates) @ L65
- 方法名:prepareSectionData
- 源码定位:L65
- 返回类型:void
- 修饰符:private
参数:
- pos: ChunkPos
- lightEngine: LevelLightEngine
- layer: LightLayer
- sectionIndex: int
- mask: BitSet
- emptyMask: BitSet
- updates: List<byte[]>
说明:
TODO
public BitSet getSkyYMask() @ L79
- 方法名:getSkyYMask
- 源码定位:L79
- 返回类型:BitSet
- 修饰符:public
参数:
- 无
说明:
TODO
public BitSet getEmptySkyYMask() @ L83
- 方法名:getEmptySkyYMask
- 源码定位:L83
- 返回类型:BitSet
- 修饰符:public
参数:
- 无
说明:
TODO
public List<byte[]> getSkyUpdates() @ L87
- 方法名:getSkyUpdates
- 源码定位:L87
- 返回类型:List<byte[]>
- 修饰符:public
参数:
- 无
说明:
TODO
public BitSet getBlockYMask() @ L91
- 方法名:getBlockYMask
- 源码定位:L91
- 返回类型:BitSet
- 修饰符:public
参数:
- 无
说明:
TODO
public BitSet getEmptyBlockYMask() @ L95
- 方法名:getEmptyBlockYMask
- 源码定位:L95
- 返回类型:BitSet
- 修饰符:public
参数:
- 无
说明:
TODO
public List<byte[]> getBlockUpdates() @ L99
- 方法名:getBlockUpdates
- 源码定位:L99
- 返回类型:List<byte[]>
- 修饰符:public
参数:
- 无
说明:
TODO
代码
public class ClientboundLightUpdatePacketData {
private static final StreamCodec<ByteBuf, byte[]> DATA_LAYER_STREAM_CODEC = ByteBufCodecs.byteArray(2048);
private final BitSet skyYMask;
private final BitSet blockYMask;
private final BitSet emptySkyYMask;
private final BitSet emptyBlockYMask;
private final List<byte[]> skyUpdates;
private final List<byte[]> blockUpdates;
public ClientboundLightUpdatePacketData(
ChunkPos chunkPos, LevelLightEngine lightEngine, @Nullable BitSet skyChangedLightSectionFilter, @Nullable BitSet blockChangedLightSectionFilter
) {
this.skyYMask = new BitSet();
this.blockYMask = new BitSet();
this.emptySkyYMask = new BitSet();
this.emptyBlockYMask = new BitSet();
this.skyUpdates = Lists.newArrayList();
this.blockUpdates = Lists.newArrayList();
for (int sectionIndex = 0; sectionIndex < lightEngine.getLightSectionCount(); sectionIndex++) {
if (skyChangedLightSectionFilter == null || skyChangedLightSectionFilter.get(sectionIndex)) {
this.prepareSectionData(chunkPos, lightEngine, LightLayer.SKY, sectionIndex, this.skyYMask, this.emptySkyYMask, this.skyUpdates);
}
if (blockChangedLightSectionFilter == null || blockChangedLightSectionFilter.get(sectionIndex)) {
this.prepareSectionData(chunkPos, lightEngine, LightLayer.BLOCK, sectionIndex, this.blockYMask, this.emptyBlockYMask, this.blockUpdates);
}
}
}
public ClientboundLightUpdatePacketData(FriendlyByteBuf input, int x, int z) {
this.skyYMask = input.readBitSet();
this.blockYMask = input.readBitSet();
this.emptySkyYMask = input.readBitSet();
this.emptyBlockYMask = input.readBitSet();
this.skyUpdates = input.readList(DATA_LAYER_STREAM_CODEC);
this.blockUpdates = input.readList(DATA_LAYER_STREAM_CODEC);
}
public void write(FriendlyByteBuf output) {
output.writeBitSet(this.skyYMask);
output.writeBitSet(this.blockYMask);
output.writeBitSet(this.emptySkyYMask);
output.writeBitSet(this.emptyBlockYMask);
output.writeCollection(this.skyUpdates, DATA_LAYER_STREAM_CODEC);
output.writeCollection(this.blockUpdates, DATA_LAYER_STREAM_CODEC);
}
private void prepareSectionData(
ChunkPos pos, LevelLightEngine lightEngine, LightLayer layer, int sectionIndex, BitSet mask, BitSet emptyMask, List<byte[]> updates
) {
DataLayer data = lightEngine.getLayerListener(layer).getDataLayerData(SectionPos.of(pos, lightEngine.getMinLightSection() + sectionIndex));
if (data != null) {
if (data.isEmpty()) {
emptyMask.set(sectionIndex);
} else {
mask.set(sectionIndex);
updates.add(data.copy().getData());
}
}
}
public BitSet getSkyYMask() {
return this.skyYMask;
}
public BitSet getEmptySkyYMask() {
return this.emptySkyYMask;
}
public List<byte[]> getSkyUpdates() {
return this.skyUpdates;
}
public BitSet getBlockYMask() {
return this.blockYMask;
}
public BitSet getEmptyBlockYMask() {
return this.emptyBlockYMask;
}
public List<byte[]> getBlockUpdates() {
return this.blockUpdates;
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
SectionPos.of()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ByteBufCodecs.byteArray()
- 引用位置:
-
- 引用位置:
字段
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置: