classpublicPriority 3
PrefabLoadingCache
com.hypixel.hytale.server.worldgen.prefab.PrefabLoadingCache
3
Methods
3
Public Methods
0
Fields
1
Constructors
Constructors
public
PrefabLoadingCache()Methods
Public Methods (3)
public
void clear()public
IPrefabBuffer getPrefabAccessor(WorldGenPrefabSupplier prefabSupplier)@Nonnull
public
String toString()@Nonnull@Override
Related Classes
Source Code
package com.hypixel.hytale.server.worldgen.prefab;
import com.hypixel.hytale.server.core.prefab.selection.buffer.PrefabBufferUtil;
import com.hypixel.hytale.server.core.prefab.selection.buffer.impl.IPrefabBuffer;
import com.hypixel.hytale.server.core.prefab.selection.buffer.impl.PrefabBuffer;
import com.hypixel.hytale.server.worldgen.loader.WorldGenPrefabSupplier;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import javax.annotation.Nonnull;
public class PrefabLoadingCache {
private final Map<WorldGenPrefabSupplier, PrefabBuffer> cache = new ConcurrentHashMap<>();
private final Function<WorldGenPrefabSupplier, PrefabBuffer> loader = p -> PrefabBufferUtil.loadBuffer(p.getPath());
public PrefabLoadingCache() {
}
@Nonnull
public IPrefabBuffer getPrefabAccessor(WorldGenPrefabSupplier prefabSupplier) {
return this.cache.computeIfAbsent(prefabSupplier, this.loader).newAccess();
}
public void clear() {
this.cache.values().removeIf(buffer -> {
buffer.release();
return true;
});
}
@Nonnull
@Override
public String toString() {
return "PrefabLoadingCache{cache=" + this.cache + "}";
}
}