FullBrightLightCalculation class
Пакет: com.hypixel.hytale.server.core.universe.world.lighting
Файл: com/hypixel/hytale/server/core/universe/world/lighting/FullBrightLightCalculation.java
implements: LightCalculation
Поля (6)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
ChunkLightingManager |
chunkLightingManager |
|
ChunkLightDataBuilder |
var1 |
|
CalculationResult |
var2 |
|
WorldChunk |
var3 |
|
boolean |
var6 |
|
boolean |
var8 |
Методы (10)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(int var7 = var5 - 1; var7 >= var4; var7--) |
|
|
for for(int var2 = 0; var2 < 32768; var2++) |
|
|
if if(var2 == CalculationResult.DONE) |
|
|
if if(var3 == null) |
|
|
if if(var8) |
|
|
if if(var6) |
|
|
if if(var0x != null) |
|
|
if if(BlockChunk.SEND_LOCAL_LIGHTING_DATA || BlockChunk.SEND_GLOBAL_LIGHTING_DATA) |
static |
void |
setFullBrightvoid setFullBright(@Nonnull ChunkStore var0, int var1, int var2, int var3) |
abstract |
|
setFullBright setFullBright(var1, var2, var7, var3) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.lighting;
class="kw">import com.hypixel.hytale.common.util.CompletableFutureUtil;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.BlockChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.ChunkLightDataBuilder;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;
class="kw">public class FullBrightLightCalculation class="kw">implements LightCalculation {
class="kw">private class="kw">final ChunkLightingManager chunkLightingManager;
class="kw">private LightCalculation delegate;
class="kw">public FullBrightLightCalculation(ChunkLightingManager var1, LightCalculation var2) {
this.chunkLightingManager = var1;
this.delegate = var2;
}
@Override
class="kw">public void init(@Nonnull WorldChunk var1) {
this.delegate.init(var1);
}
@Nonnull
@Override
class="kw">public CalculationResult calculateLight(@Nonnull Vector3i var1) {
CalculationResult var2 = this.delegate.calculateLight(var1);
if (var2 == CalculationResult.DONE) {
WorldChunk var3 = this.chunkLightingManager.getWorld().getChunkIfInMemory(ChunkUtil.indexChunk(var1.x, var1.z));
if (var3 == null) {
class="kw">return CalculationResult.NOT_LOADED;
}
setFullBright(this.chunkLightingManager.getWorld().getChunkStore(), var1.x, var1.y, var1.z);
}
class="kw">return var2;
}
@Override
class="kw">public boolean invalidateLightAtBlock(@Nonnull ChunkStore var1, int var2, int var3, int var4, @Nonnull BlockType var5, int var6, int var7) {
boolean var8 = this.delegate.invalidateLightAtBlock(var1, var2, var3, var4, var5, var6, var7);
if (var8) {
setFullBright(var1, ChunkUtil.chunkCoordinate(var2), ChunkUtil.chunkCoordinate(var3), ChunkUtil.chunkCoordinate(var4));
}
class="kw">return var8;
}
@Override
class="kw">public boolean invalidateLightInChunkSections(@Nonnull ChunkStore var1, int var2, int var3, int var4, int var5) {
boolean var6 = this.delegate.invalidateLightInChunkSections(var1, var2, var3, var4, var5);
if (var6) {
for (int var7 = var5 - 1; var7 >= var4; var7--) {
setFullBright(var1, var2, var7, var3);
}
}
class="kw">return var6;
}
class="kw">public class="kw">static void setFullBright(@Nonnull ChunkStore var0, int var1, int var2, int var3) {
CompletableFutureUtil._catch(
var0.getChunkSectionReferenceAsync(var1, var2, var3)
.thenApplyAsync(
var0x -> var0x != null && var0x.isValid() ? var0x.getStore().getComponent((Ref<ChunkStore>)var0x, BlockSection.getComponentType()) : null,
var0.getWorld()
)
.thenAcceptAsync(var0x -> {
if (var0x != null) {
ChunkLightDataBuilder var1 = new ChunkLightDataBuilder(var0x.getGlobalChangeCounter());
for (int var2 = 0; var2 < 32768; var2++) {
var1.setSkyLight(var2, (byte)15);
}
var0x.setGlobalLight(var1);
if (BlockChunk.SEND_LOCAL_LIGHTING_DATA || BlockChunk.SEND_GLOBAL_LIGHTING_DATA) {
var0x.invalidate();
}
}
})
);
}
}