EnvironmentColumn class

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

Файл: com/hypixel/hytale/server/core/universe/world/chunk/environment/EnvironmentColumn.java

Поля (34)

МодификаторыТипИмя
final int MIN
int var1
int var2
int var2
int var2
EnvironmentColumn var2
int var3
var3
int var3
int var3
var3
int var3
int var3
int var3
int var4
var4
int var4
int var4
var4
int var4
int var4
int var4
int var5
var5
int var5
int var5
var5
int var5
int var6
int var6
var6
int var7
var7
int var7

Методы (32)

МодификаторыВозвратСигнатура
abstract throw new IllegalStateExceptionthrow new IllegalStateException("maxY + 1 != values")
public void copyFromvoid copyFrom(@Nonnull EnvironmentColumn var1)
public int deserializeint deserialize(@Nonnull MemorySegment var1, int var2, @Nonnull Int2IntMap var3)
for for(int var4 = var1; var4 <= var2; var4++)
for for(int var6 = 0; var6 < var4; var6++)
for for(int var6 = 0; var6 <= var5; var6++)
public int getint get(int var1)
public int getMaxint getMax(int var1)
public int getMinint getMin(int var1)
public int getValueint getValue(int var1)
public int getValueMaxint getValueMax(int var1)
public int getValueMinint getValueMin(int var1)
if if(var2 == 0)
if if(var4 != var2)
if if(var3 < var5)
if if(var3 > 0)
if if(var7 == var6)
if if(var3 == var5)
if if(var2 > 0)
if if(var2 < var3)
if if(this == var1)
public int indexOfint indexOf(int var1)
int maxys_sizeint maxys_size()
public void resetTovoid resetTo(@Nonnull int[] var1, @Nonnull int[] var2)
public int serializeint serialize(@Nonnull MemorySegment var1, int var2)
public int serializeProtocolint serializeProtocol(@Nonnull MemorySegment var1, int var2)
public void setvoid set(int var1)
public void setvoid set(int var1, int var2)
public void setvoid set(int var1, int var2, int var3)
public int sizeint size()
public void trimvoid trim()
while while(var3 <= var4)

Исходный код

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

class="kw">import com.hypixel.hytale.server.core.util.io.MemorySegmentUtil;
class="kw">import it.unimi.dsi.fastutil.ints.Int2IntMap;
class="kw">import it.unimi.dsi.fastutil.ints.IntArrayList;
class="kw">import java.lang.foreign.MemorySegment;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class EnvironmentColumn {
   class="kw">public class="kw">static class="kw">final int MIN = Integer.MIN_VALUE;
   class="kw">public class="kw">static class="kw">final int MAX = Integer.MAX_VALUE;
   @Nonnull
   class="kw">private IntArrayList maxYs;
   @Nonnull
   class="kw">private IntArrayList values;

   class="kw">public EnvironmentColumn(@Nonnull int[] var1, @Nonnull int[] var2) {
      this(new IntArrayList(var1), new IntArrayList(var2));
   }

   class="kw">public EnvironmentColumn(@Nonnull IntArrayList var1, @Nonnull IntArrayList var2) {
      if (var1.size() + 1 != var2.size()) {
         throw new IllegalStateException("maxY + 1 != values");
      }

      this.maxYs = var1;
      this.values = var2;
   }

   class="kw">public EnvironmentColumn(int var1) {
      this(new IntArrayList(0), new IntArrayList(new int[]{var1}));
   }

   int maxys_size() {
      class="kw">return this.maxYs.size();
   }

   class="kw">public int size() {
      class="kw">return this.values.size();
   }

   class="kw">public int getValue(int var1) {
      class="kw">return this.values.getInt(var1);
   }

   class="kw">public int getValueMin(int var1) {
      class="kw">return var1 <= 0 ? Integer.MIN_VALUE : this.maxYs.getInt(var1 - 1) + 1;
   }

   class="kw">public int getValueMax(int var1) {
      class="kw">return var1 >= this.maxYs.size() ? Integer.MAX_VALUE : this.maxYs.getInt(var1);
   }

   class="kw">public int indexOf(int var1) {
      int var2 = this.maxYs.size();
      if (var2 == 0) {
         class="kw">return 0;
      }

      int var3 = 0;
      int var4 = var2 - 1;
      int var5 = var2;

      while (var3 <= var4) {
         int var6 = (var3 + var4) / 2;
         if (this.maxYs.getInt(var6) < var1) {
            var3 = var6 + 1;
         } else {
            var5 = var6;
            var4 = var6 - 1;
         }
      }

      class="kw">return var5;
   }

   class="kw">public void set(int var1) {
      this.maxYs.clear();
      this.values.clear();
      this.values.add(var1);
   }

   class="kw">public int get(int var1) {
      class="kw">return this.values.getInt(this.indexOf(var1));
   }

   class="kw">public void set(int var1, int var2) {
      int var3 = this.indexOf(var1);
      int var4 = this.values.getInt(var3);
      if (var4 != var2) {
         int var5 = this.maxYs.size();
         int var6 = Integer.MAX_VALUE;
         if (var3 < var5) {
            var6 = this.maxYs.getInt(var3);
         }

         int var7 = Integer.MIN_VALUE;
         if (var3 > 0) {
            var7 = this.maxYs.getInt(var3 - 1) + 1;
         }

         if (var7 == var6) {
            if (var3 < var5 && this.values.getInt(var3 + 1) == var2) {
               this.maxYs.removeInt(var3);
               this.values.removeInt(var3);
            } else {
               this.values.set(var3, var2);
            }

            if (var3 != 0 && this.values.getInt(var3 - 1) == var2) {
               this.maxYs.removeInt(var3 - 1);
               this.values.removeInt(var3 - 1);
            }
         } else if (var7 == var1) {
            if (var3 != 0 && this.values.getInt(var3 - 1) == var2) {
               this.maxYs.set(var3 - 1, var1);
            } else {
               this.maxYs.add(var3, var1);
               this.values.add(var3, var2);
            }
         } else if (var6 == var1) {
            if (var3 == var5) {
               this.maxYs.add(var3, var1 - 1);
               this.values.add(var3 + 1, var2);
            } else {
               this.maxYs.set(var3, var1 - 1);
               if (this.values.getInt(var3 + 1) != var2) {
                  this.maxYs.add(var3 + 1, var1);
                  this.values.add(var3 + 1, var2);
               }
            }
         } else {
            this.maxYs.add(var3, var1);
            this.values.add(var3, var2);
            this.maxYs.add(var3, var1 - 1);
            this.values.add(var3, var4);
         }
      }
   }

   class="kw">public int getMin(int var1) {
      int var2 = this.indexOf(var1);
      int var3 = Integer.MIN_VALUE;
      if (var2 > 0) {
         var3 = this.maxYs.getInt(var2 - 1) + 1;
      }

      class="kw">return var3;
   }

   class="kw">public int getMax(int var1) {
      int var2 = this.indexOf(var1);
      int var3 = this.maxYs.size();
      int var4 = Integer.MAX_VALUE;
      if (var2 < var3) {
         var4 = this.maxYs.getInt(var2);
      }

      class="kw">return var4;
   }

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

   class="kw">public void resetTo(@Nonnull int[] var1, @Nonnull int[] var2) {
      assert var1.length == var2.length - 1;
      this.maxYs = new IntArrayList(var1);
      this.values = new IntArrayList(var2);
   }

   class="kw">public int serialize(@Nonnull MemorySegment var1, int var2) {
      int var3 = var2;
      int var4 = this.maxYs.size();
      var1.set(MemorySegmentUtil.INT_BE, var3, var4);
      var3 += 4;
      MemorySegment.copy(this.maxYs.elements(), 0, var1, MemorySegmentUtil.INT_BE, var3, var4);
      var3 += 4 * var4;
      MemorySegment.copy(this.values.elements(), 0, var1, MemorySegmentUtil.INT_BE, var3, var4 + 1);
      var3 += 4 * (var4 + 1);
      class="kw">return var3 - var2;
   }

   class="kw">public int serializeProtocol(@Nonnull MemorySegment var1, int var2) {
      int var3 = var2;
      int var4 = this.maxYs.size();
      var1.set(MemorySegmentUtil.SHORT_LE, var3, (short)(var4 + 1));
      var3 += 2;
      int var5 = Integer.MIN_VALUE;

      for (int var6 = 0; var6 < var4; var6++) {
         var1.set(MemorySegmentUtil.SHORT_LE, var3, (short)var5);
         var3 += 2;
         var1.set(MemorySegmentUtil.SHORT_LE, var3, (short)this.values.getInt(var6));
         var3 += 2;
         int var7 = this.maxYs.getInt(var6);
         var5 = var7 + 1;
      }

      var1.set(MemorySegmentUtil.SHORT_LE, var3, (short)var5);
      var3 += 2;
      var1.set(MemorySegmentUtil.SHORT_LE, var3, (short)this.values.getInt(var4));
      var3 += 2;
      class="kw">return var3 - var2;
   }

   class="kw">public int deserialize(@Nonnull MemorySegment var1, int var2, @Nonnull Int2IntMap var3) {
      this.maxYs.clear();
      this.values.clear();
      int var4 = var2;
      int var5 = var1.get(MemorySegmentUtil.INT_BE, var4);
      var4 += 4;
      this.maxYs.size(var5);
      this.values.ensureCapacity(var5 + 1);
      MemorySegment.copy(var1, MemorySegmentUtil.INT_BE, var4, this.maxYs.elements(), 0, var5);
      var4 += 4 * var5;

      for (int var6 = 0; var6 <= var5; var6++) {
         this.values.add(var3.get(var1.get(MemorySegmentUtil.INT_BE, var4)));
         var4 += 4;
      }

      class="kw">return var4 - var2;
   }

   class="kw">public void copyFrom(@Nonnull EnvironmentColumn var1) {
      this.maxYs.clear();
      this.values.clear();
      this.maxYs.ensureCapacity(var1.maxYs.size());
      this.values.ensureCapacity(var1.values.size());
      this.maxYs.addAll(var1.maxYs);
      this.values.addAll(var1.values);
   }

   class="kw">public void trim() {
      this.maxYs.trim();
      this.values.trim();
   }

   @Override
   class="kw">public boolean equals(@Nullable Object var1) {
      if (this == var1) {
         class="kw">return true;
      }

      if (var1 != null && this.getClass() == var1.getClass()) {
         EnvironmentColumn var2 = (EnvironmentColumn)var1;
         if (this.maxYs != null ? this.maxYs.equals(var2.maxYs) : var2.maxYs == null) {
            class="kw">return this.values != null ? this.values.equals(var2.values) : var2.values == null;
         } else {
            class="kw">return false;
         }
      } else {
         class="kw">return false;
      }
   }

   @Override
   class="kw">public int hashCode() {
      int var1 = this.maxYs != null ? this.maxYs.hashCode() : 0;
      class="kw">return 31 * var1 + (this.values != null ? this.values.hashCode() : 0);
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "EnvironmentColumn{maxYs=" + this.maxYs + ", values=" + this.values + "}";
   }
}