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
+ "}";
}
}