Cave class

Пакет: com.hypixel.hytale.server.worldgen.cave

Файл: com/hypixel/hytale/server/worldgen/cave/Cave.java

Поля (8)

МодификаторыТипИмя
final Comparator<CaveNode> ORDER
ObjectIterator var1
Set var2
Entry var2
ObjectIterator var3
CaveNode[] var3
List var4
CaveNode[] var4

Методы (9)

МодификаторыВозвратСигнатура
public void addNodevoid addNode(@Nonnull CaveNode var1)
public void compilevoid compile()
private void compileNodeMapvoid compileNodeMap()
public boolean containsboolean contains(long var1)
for for(CaveNode var8 : var4)
public void forEachNodevoid forEachNode(@Nonnull Consumer<CaveNode> var1)
public CaveNode[] getCaveNodesCaveNode[] getCaveNodes(long var1)
public long getNodeCountlong getNodeCount()
if if(var4 == null)

Исходный код

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

class="kw">import com.hypixel.hytale.server.worldgen.cave.element.CaveNode;
class="kw">import com.hypixel.hytale.server.worldgen.util.bounds.WorldBounds;
class="kw">import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
class="kw">import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.longs.Long2ObjectMap.Entry;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrays;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectIterator;
class="kw">import java.util.ArrayList;
class="kw">import java.util.Collections;
class="kw">import java.util.Comparator;
class="kw">import java.util.IdentityHashMap;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import java.util.function.Consumer;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class Cave {
   class="kw">private class="kw">static class="kw">final Comparator<CaveNode> ORDER = Comparator.comparingInt(var0 -> var0.getCaveNodeType().getPriority());
   @Nullable
   class="kw">private Long2ObjectMap<List<CaveNode>> rawChunkNodeMap = new Long2ObjectOpenHashMap();
   class="kw">private Long2ObjectMap<CaveNode[]> chunkNodeMap;
   class="kw">private class="kw">final CaveType caveType;
   @Nonnull
   class="kw">private class="kw">final WorldBounds bounds;
   class="kw">private int nodeCount;

   class="kw">public Cave(CaveType var1) {
      this.caveType = var1;
      this.bounds = new WorldBounds();
      this.nodeCount = 0;
   }

   class="kw">public long getNodeCount() {
      class="kw">return this.nodeCount;
   }

   @Nonnull
   class="kw">public CaveType getCaveType() {
      class="kw">return this.caveType;
   }

   @Nonnull
   class="kw">public WorldBounds getBounds() {
      class="kw">return this.bounds;
   }

   class="kw">public void addNode(@Nonnull CaveNode var1) {
      var1.compile();
      this.bounds.include(var1.getBounds());
      var1.forEachChunk(var2 -> {
         List var4 = (List<CaveNode>)this.rawChunkNodeMap.get(var2);
         if (var4 == null) {
            this.rawChunkNodeMap.put(var2, var4 = new ArrayList<>());
         }

         var4.add(var1);
      });
      this.nodeCount++;
   }

   class="kw">public boolean contains(long var1) {
      class="kw">return this.chunkNodeMap.containsKey(var1);
   }

   class="kw">public CaveNode[] getCaveNodes(long var1) {
      class="kw">return (CaveNode[])this.chunkNodeMap.get(var1);
   }

   class="kw">public void forEachNode(@Nonnull Consumer<CaveNode> var1) {
      Set var2 = Collections.newSetFromMap(new IdentityHashMap<>());
      ObjectIterator var3 = this.chunkNodeMap.values().iterator();

      while (var3.hasNext()) {
         CaveNode[] var4 = (CaveNode[])var3.next();

         for (CaveNode var8 : var4) {
            if (var2.add(var8)) {
               var1.accept(var8);
            }
         }
      }
   }

   class="kw">public void compile() {
      this.compileNodeMap();
   }

   class="kw">private void compileNodeMap() {
      this.chunkNodeMap = new Long2ObjectOpenHashMap();
      ObjectIterator var1 = this.rawChunkNodeMap.long2ObjectEntrySet().iterator();

      while (var1.hasNext()) {
         Entry var2 = (Entry<List<CaveNode>>)var1.next();
         CaveNode[] var3 = ((List)var2.getValue()).toArray(CaveNode[]::new);
         ObjectArrays.mergeSort(var3, ORDER);
         this.chunkNodeMap.put(var2.getLongKey(), var3);
      }

      this.rawChunkNodeMap = null;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "Cave{rawChunkNodeMap="
         + this.rawChunkNodeMap
         + ", chunkNodeMap="
         + this.chunkNodeMap
         + ", caveType="
         + this.caveType
         + ", bounds="
         + this.bounds
         + ", nodeCount="
         + this.nodeCount
         + "}";
   }
}