GeneratedBlockChunk class

Пакет: com.hypixel.hytale.server.core.universe.world.worldgen

Файл: com/hypixel/hytale/server/core/universe/world/worldgen/GeneratedBlockChunk.java

Поля (19)

МодификаторыТипИмя
final HytaleLogger LOGGER
break
break
return
ShortBytePalette var1
int var2
int var2
GeneratedChunkSection var3
GeneratedChunkSection var3
int var4
GeneratedChunkSection var4
GeneratedChunkSection var4
ShortBytePalette var4
int var5
var5
BlockType var6
GeneratedChunkSection var7
var7
int var8

Методы (29)

МодификаторыВозвратСигнатура
abstract return new BlockChunkreturn new BlockChunk(this.x, this.z, var4, this.tint, this.environments)
for for(int var2 = 0; var2 < 32; var2++)
for for(int var3 = 0; var3 < 32; var3++)
for for(int var2 = 0; var2 < this.chunkSections.length; var2++)
public int getBlockint getBlock(int var1, int var2, int var3)
public int getEnvironmentint getEnvironment(int var1, int var2, int var3)
public int getHeightint getHeight(int var1, int var2)
public long getIndexlong getIndex()
public int getRotationIndexint getRotationIndex(int var1, int var2, int var3)
public int getTintint getTint(int var1, int var2)
public int getXint getX()
public int getZint getZ()
if if(var3 == null)
if if(var5 == 0)
if if(var2 >= 0 && var2 < 320)
if if(var2 >= 0 && var2 < 320)
if if(var2 >= 0 && var2 < 320)
if if(var7 == null)
if if(var4 == 0)
if if(var2 >= 0 && var2 < this.chunkSections.length)
if if(var3 != null)
public void removeSectionvoid removeSection(int var1)
public void setBlockvoid setBlock(int var1, int var2, int var3, int var4, int var5, int var6)
public void setCoordinatesvoid setCoordinates(long var1, int var3, int var4)
public void setEnvironmentvoid setEnvironment(int var1, int var2, int var3, int var4)
public void setEnvironmentColumnvoid setEnvironmentColumn(int var1, int var2, int var3)
public void setTintvoid setTint(int var1, int var2, int var3)
abstract this this(0L, 0, 0)
while while(--var5 > 0)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.worldgen;

class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.protocol.Opacity;
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.environment.EnvironmentChunk;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.palette.IntBytePalette;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.palette.ShortBytePalette;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class GeneratedBlockChunk {
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
   class="kw">protected long index;
   class="kw">protected int x;
   class="kw">protected int z;
   class="kw">protected class="kw">final IntBytePalette tint;
   class="kw">protected class="kw">final EnvironmentChunk environments;
   class="kw">protected class="kw">final GeneratedChunkSection[] chunkSections;

   class="kw">public GeneratedBlockChunk() {
      this(0L, 0, 0);
   }

   class="kw">public GeneratedBlockChunk(long var1, int var3, int var4) {
      this(var1, var3, var4, new IntBytePalette(), new EnvironmentChunk(), new GeneratedChunkSection[10]);
   }

   class="kw">public GeneratedBlockChunk(long var1, int var3, int var4, IntBytePalette var5, EnvironmentChunk var6, GeneratedChunkSection[] var7) {
      this.index = var1;
      this.x = var3;
      this.z = var4;
      this.tint = var5;
      this.environments = var6;
      this.chunkSections = var7;
   }

   class="kw">public long getIndex() {
      class="kw">return this.index;
   }

   class="kw">public int getX() {
      class="kw">return this.x;
   }

   class="kw">public int getZ() {
      class="kw">return this.z;
   }

   class="kw">public void setCoordinates(long var1, int var3, int var4) {
      this.index = var1;
      this.x = var3;
      this.z = var4;
   }

   class="kw">public int getHeight(int var1, int var2) {
      int var5 = 320;

      while (--var5 > 0) {
         GeneratedChunkSection var3 = this.getSection(var5);
         if (var3 == null) {
            var5 = ChunkUtil.indexSection(var5) * 32;
            if (var5 == 0) {
               break;
            }
         } else {
            int var4 = var3.getBlock(var1, var5, var2);
            BlockType var6 = BlockType.getAssetMap().getAsset(var4);
            if (var4 != 0 && var6 != null && var6.getOpacity() != Opacity.Transparent) {
               break;
            }
         }
      }

      class="kw">return var5;
   }

   @Nonnull
   class="kw">public ShortBytePalette generateHeight() {
      ShortBytePalette var1 = new ShortBytePalette();

      for (int var2 = 0; var2 < 32; var2++) {
         for (int var3 = 0; var3 < 32; var3++) {
            var1.set(var2, var3, (short)this.getHeight(var2, var3));
         }
      }

      class="kw">return var1;
   }

   @Nonnull
   class="kw">public EnvironmentChunk getEnvironmentChunk() {
      class="kw">return this.environments;
   }

   @Nullable
   class="kw">public GeneratedChunkSection getSection(int var1) {
      int var2 = ChunkUtil.indexSection(var1);
      class="kw">return var2 >= 0 && var2 < this.chunkSections.length ? this.chunkSections[var2] : null;
   }

   class="kw">public int getTint(int var1, int var2) {
      class="kw">return this.tint.get(var1, var2);
   }

   class="kw">public void setTint(int var1, int var2, int var3) {
      this.tint.set(var1, var2, var3);
   }

   class="kw">public void setEnvironment(int var1, int var2, int var3, int var4) {
      this.environments.set(var1, var2, var3, var4);
   }

   class="kw">public void setEnvironmentColumn(int var1, int var2, int var3) {
      this.environments.setColumn(var1, var2, var3);
   }

   class="kw">public int getEnvironment(int var1, int var2, int var3) {
      class="kw">return this.environments.get(var1, var2, var3);
   }

   class="kw">public int getRotationIndex(int var1, int var2, int var3) {
      if (var2 >= 0 && var2 < 320) {
         GeneratedChunkSection var4 = this.getSection(var2);
         class="kw">return var4 == null ? 0 : var4.getRotationIndex(var1, var2, var3);
      } else {
         class="kw">return 0;
      }
   }

   class="kw">public int getBlock(int var1, int var2, int var3) {
      if (var2 >= 0 && var2 < 320) {
         GeneratedChunkSection var4 = this.getSection(var2);
         class="kw">return var4 == null ? 0 : var4.getBlock(var1, var2, var3);
      } else {
         class="kw">return 0;
      }
   }

   class="kw">public void setBlock(int var1, int var2, int var3, int var4, int var5, int var6) {
      if (var2 >= 0 && var2 < 320) {
         GeneratedChunkSection var7 = this.getSection(var2);
         int var8 = ChunkUtil.indexSection(var2);
         if (var7 == null) {
            if (var4 == 0) {
               class="kw">return;
            }

            var7 = this.initialize(var8);
         }

         var7.setBlock(var1, var2, var3, var4, var5, var6);
      } else {
         ((HytaleLogger.Api)LOGGER.at(Level.INFO).withCause(new Exception()))
            .log("Failed to set block %d, %d, %d to %d because it is outside the world bounds", var1, var2, var3, var4);
      }
   }

   @Nonnull
   class="kw">private GeneratedChunkSection initialize(int var1) {
      class="kw">return this.chunkSections[var1] = new GeneratedChunkSection();
   }

   class="kw">public void removeSection(int var1) {
      int var2 = ChunkUtil.indexSection(var1);
      if (var2 >= 0 && var2 < this.chunkSections.length) {
         this.chunkSections[var2] = null;
      }
   }

   @Nonnull
   class="kw">public BlockChunk toBlockChunk(Holder<ChunkStore>[] var1) {
      for (int var2 = 0; var2 < this.chunkSections.length; var2++) {
         GeneratedChunkSection var3 = this.chunkSections[var2];
         if (var3 != null) {
            var1[var2].putComponent(BlockSection.getComponentType(), var3.toChunkSection());
         }
      }

      ShortBytePalette var4 = this.generateHeight();
      this.environments.trim();
      class="kw">return new BlockChunk(this.x, this.z, var4, this.tint, this.environments);
   }
}