GeneratedChunkSection class

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

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

Поля (6)

МодификаторыТипИмя
int var1
int var2
int var3
short var4
AbstractSectionPalette.SetResult var5
var5

Методы (15)

МодификаторыВозвратСигнатура
for for(int var1 = 0; var1 < this.data.length; var1++)
public int getBlockint getBlock(int var1, int var2, int var3)
private int getBlockint getBlock(int var1)
public int[] getDataint[] getData()
public int getFillerint getFiller(int var1, int var2, int var3)
public int getRotationIndexint getRotationIndex(int var1, int var2, int var3)
private int getRotationIndexint getRotationIndex(int var1)
if if(var5 == AbstractSectionPalette.SetResult.REQUIRES_PROMOTE)
if if(var5 == AbstractSectionPalette.SetResult.REQUIRES_PROMOTE)
if if(this.data[var1] != 0)
public boolean isSolidAirboolean isSolidAir()
public void resetvoid reset()
public void setBlockvoid setBlock(int var1, int var2, int var3, int var4, int var5, int var6)
public void setBlockvoid setBlock(int var1, int var2, int var3, int var4)
while while(var1 < this.data.length)

Исходный код

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

class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.math.util.NumberUtil;
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.palette.AbstractSectionPalette;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.palette.EmptySectionPalette;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ShortOpenHashMap;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;

class="kw">public class GeneratedChunkSection {
   @Nonnull
   class="kw">private class="kw">final int[] data;
   @Nonnull
   class="kw">private class="kw">final class="kw">transient Int2ShortOpenHashMap tempIdCounts = new Int2ShortOpenHashMap();
   class="kw">private AbstractSectionPalette fillers;
   class="kw">private AbstractSectionPalette rotations;

   class="kw">public GeneratedChunkSection() {
      this.data = new int[32768];
      this.fillers = EmptySectionPalette.INSTANCE;
      this.rotations = EmptySectionPalette.INSTANCE;
   }

   class="kw">public int getRotationIndex(int var1, int var2, int var3) {
      class="kw">return this.getRotationIndex(ChunkUtil.indexBlock(var1, var2, var3));
   }

   class="kw">private int getRotationIndex(int var1) {
      class="kw">return this.rotations.get(var1);
   }

   class="kw">public int getBlock(int var1, int var2, int var3) {
      class="kw">return this.getBlock(ChunkUtil.indexBlock(var1, var2, var3));
   }

   class="kw">public int getFiller(int var1, int var2, int var3) {
      class="kw">return this.fillers.get(ChunkUtil.indexBlock(var1, var2, var3));
   }

   class="kw">private int getBlock(int var1) {
      class="kw">return this.data[var1];
   }

   class="kw">public void setBlock(int var1, int var2, int var3, int var4, int var5, int var6) {
      this.setBlock(ChunkUtil.indexBlock(var1, var2, var3), var4, var5, var6);
   }

   class="kw">public void setBlock(int var1, int var2, int var3, int var4) {
      this.data[var1] = var2;
      AbstractSectionPalette.SetResult var5 = this.fillers.set(var1, var4);
      if (var5 == AbstractSectionPalette.SetResult.REQUIRES_PROMOTE) {
         this.fillers = this.fillers.promote();
         this.fillers.set(var1, var4);
      } else if (var5 == AbstractSectionPalette.SetResult.ADDED_OR_REMOVED && this.fillers.shouldDemote()) {
         this.fillers = this.fillers.demote();
      }

      var5 = this.rotations.set(var1, var3);
      if (var5 == AbstractSectionPalette.SetResult.REQUIRES_PROMOTE) {
         this.rotations = this.rotations.promote();
         this.rotations.set(var1, var3);
      } else if (var5 == AbstractSectionPalette.SetResult.ADDED_OR_REMOVED && this.rotations.shouldDemote()) {
         this.rotations = this.rotations.demote();
      }
   }

   class="kw">public int[] getData() {
      class="kw">return this.data;
   }

   class="kw">public void reset() {
      Arrays.fill(this.data, 0);
      this.fillers = EmptySectionPalette.INSTANCE;
      this.rotations = EmptySectionPalette.INSTANCE;
   }

   class="kw">public boolean isSolidAir() {
      for (int var1 = 0; var1 < this.data.length; var1++) {
         if (this.data[var1] != 0) {
            class="kw">return false;
         }
      }

      class="kw">return true;
   }

   @Nonnull
   class="kw">public BlockSection toChunkSection() {
      this.tempIdCounts.clear();
      int var1 = 0;

      while (var1 < this.data.length) {
         int var2 = this.data[var1];
         int var3 = var1;

         do {
            var1++;
         } while (var1 < this.data.length && this.data[var1] == var2);

         short var4 = (short)(var1 - var3);
         this.tempIdCounts.mergeShort(var2, var4, NumberUtil::sum);
      }

      class="kw">return new BlockSection(AbstractSectionPalette.from(this.data, this.tempIdCounts), this.fillers, this.rotations);
   }
}