classpublicPriority 3
CaveNodeTypeStorage
com.hypixel.hytale.server.worldgen.loader.cave.CaveNodeTypeStorage
5
Methods
5
Public Methods
5
Fields
1
Constructors
Constructors
public
CaveNodeTypeStorage(SeedString<SeedStringResource> seed, Path dataFolder, Path caveFolder, ZoneFileContext zoneContext)Methods
Public Methods (5)
public
void add(String name, CaveNodeType caveNodeType)public
CaveNodeType getCaveNodeType(String name)public
CaveNodeType getOrLoadCaveNodeType(String name)@Nonnull
public
SeedString<SeedStringResource> getSeed()public
CaveNodeType loadCaveNodeType(String name)@Nonnull
Fields
Protected Fields (5)
protected
Path caveFolderprotected
Map<String, CaveNodeType> caveNodeTypesprotected
Path dataFolderprotected
SeedString<SeedStringResource> seedprotected
ZoneFileContext zoneContextRelated Classes
Source Code
package com.hypixel.hytale.server.worldgen.loader.cave;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.stream.JsonReader;
import com.hypixel.hytale.procedurallib.json.SeedString;
import com.hypixel.hytale.server.worldgen.SeedStringResource;
import com.hypixel.hytale.server.worldgen.cave.CaveNodeType;
import com.hypixel.hytale.server.worldgen.loader.context.ZoneFileContext;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nonnull;
public class CaveNodeTypeStorage {
protected final SeedString<SeedStringResource> seed;
protected final Path dataFolder;
protected final Path caveFolder;
protected final ZoneFileContext zoneContext;
@Nonnull
protected final Map<String, CaveNodeType> caveNodeTypes;
public CaveNodeTypeStorage(SeedString<SeedStringResource> seed, Path dataFolder, Path caveFolder, ZoneFileContext zoneContext) {
this.seed = seed;
this.dataFolder = dataFolder;
this.caveFolder = caveFolder;
this.zoneContext = zoneContext;
this.caveNodeTypes = new HashMap<>();
}
public SeedString<SeedStringResource> getSeed() {
return this.seed;
}
public void add(String name, CaveNodeType caveNodeType) {
if (this.caveNodeTypes.containsKey(name)) {
throw new Error(String.format("CaveNodeType (%s) has already been added to CaveNodeTypeStorage!", name));
} else {
this.caveNodeTypes.put(name, caveNodeType);
}
}
@Nonnull
public CaveNodeType getOrLoadCaveNodeType(@Nonnull String name) {
CaveNodeType caveNodeType = this.getCaveNodeType(name);
if (caveNodeType == null) {
caveNodeType = this.loadCaveNodeType(name);
}
return caveNodeType;
}
public CaveNodeType getCaveNodeType(String name) {
return this.caveNodeTypes.get(name);
}
@Nonnull
public CaveNodeType loadCaveNodeType(@Nonnull String name) {
Path file = this.caveFolder.resolve(String.format("%s.node.json", name.replace(".", File.separator)));
try {
JsonReader reader = new JsonReader(Files.newBufferedReader(file));
CaveNodeType var5;
try {
JsonObject caveNodeJson = JsonParser.parseReader(reader).getAsJsonObject();
var5 = new CaveNodeTypeJsonLoader(this.seed, this.dataFolder, caveNodeJson, name, this, this.zoneContext).load();
} catch (Throwable var7) {
try {
reader.close();
} catch (Throwable var6) {
var7.addSuppressed(var6);
}
throw var7;
}
reader.close();
return var5;
} catch (Throwable var8) {
throw new Error(String.format("Error while loading CaveNodeType %s for world generator from %s", name, file.toString()), var8);
}
}
public interface Constants {
String ERROR_ALREADY_ADDED = "CaveNodeType (%s) has already been added to CaveNodeTypeStorage!";
String ERROR_LOADING_CAVE_NODE_TYPE = "Error while loading CaveNodeType %s for world generator from %s";
String FILE_SUFFIX = "%s.node.json";
}
}