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();
                  }
               }
            })
      );
   }
}