ZonePatternProviderJsonLoader class
Пакет: com.hypixel.hytale.server.worldgen.loader.zone
Файл: com/hypixel/hytale/server/worldgen/loader/zone/ZonePatternProviderJsonLoader.java
extends: JsonLoader<SeedStringResource, ZonePatternProvider>
Поля (9)
| Модификаторы | Тип | Имя |
|---|---|---|
|
String |
ERROR_NO_MAPPING |
|
String |
ERROR_UNMAPPED_COLOR |
|
String |
KEY_GRID_GENERATOR |
|
String |
KEY_MASK_MAPPING |
|
String |
KEY_UNIQUE_ZONES |
|
int |
UNIQUE_ZONE_CANDIDATE_POS_LIMIT |
final |
MaskProvider |
maskProvider |
|
ZoneColorMapping |
var1 |
|
Zone.UniqueEntry[] |
var1 |
Методы (14)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalArgumentExceptionthrow new IllegalArgumentException("Could not find mappings for colors in mask file. Keyword: MaskMapping") |
protected |
void |
ensureMaskIntegrityvoid ensureMaskIntegrity(@Nonnull ZoneColorMapping var1) |
|
|
for for(Zone var5 : var1) |
|
|
for for(ClimateType var10 : var6.children) |
|
|
if if(this.maskProvider instanceof ClimateMaskProvider var2) |
|
|
if if(var6.children.length == 0) |
|
|
if if(this.maskProvider instanceof ClimateMaskProvider var3) |
protected |
Zone.UniqueCandidate[] |
loadUniqueZoneCandidatesZone.UniqueCandidate[] loadUniqueZoneCandidates() |
public |
void |
setZonesvoid setZones(Zone[] var1) |
static |
void |
validateMappingvoid validateMapping(@Nullable ClimateType var0, @Nonnull ClimateType var1, @Nonnull ClimateColor var2, ZoneColorMapping var3, String var4) |
abstract |
|
validateMapping validateMapping(var6, var6, var6.color, var1, "") |
abstract |
|
validateMapping validateMapping(var6, var6, var6.island, var1, "Island") |
abstract |
|
validateMapping validateMapping(var6, var10, var10.color, var1, "") |
abstract |
|
validateMapping validateMapping(var6, var10, var10.island, var1, "Island.") |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.loader.zone;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.hypixel.hytale.procedurallib.json.JsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.PointGeneratorJsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.SeedString;
class="kw">import com.hypixel.hytale.procedurallib.logic.point.IPointGenerator;
class="kw">import com.hypixel.hytale.server.worldgen.SeedStringResource;
class="kw">import com.hypixel.hytale.server.worldgen.chunk.MaskProvider;
class="kw">import com.hypixel.hytale.server.worldgen.climate.ClimateColor;
class="kw">import com.hypixel.hytale.server.worldgen.climate.ClimateMaskProvider;
class="kw">import com.hypixel.hytale.server.worldgen.climate.ClimateType;
class="kw">import com.hypixel.hytale.server.worldgen.zone.Zone;
class="kw">import com.hypixel.hytale.server.worldgen.zone.ZoneColorMapping;
class="kw">import com.hypixel.hytale.server.worldgen.zone.ZonePatternProvider;
class="kw">import java.nio.file.Path;
class="kw">import java.util.HashMap;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class ZonePatternProviderJsonLoader class="kw">extends JsonLoader<SeedStringResource, ZonePatternProvider> {
class="kw">protected class="kw">final MaskProvider maskProvider;
class="kw">protected Zone[] zones;
class="kw">protected Map<String, Zone> zoneLookup = Map.of();
class="kw">public ZonePatternProviderJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3, MaskProvider var4) {
super(var1.append(".ZonePatternGenerator"), var2, var3);
this.maskProvider = var4;
}
class="kw">public void setZones(Zone[] var1) {
this.zones = var1;
this.zoneLookup = new HashMap<>();
for (Zone var5 : var1) {
this.zoneLookup.put(var5.name(), var5);
}
}
@Nonnull
class="kw">public ZonePatternProvider load() {
class="kw">return new ZonePatternProvider(this.loadGridGenerator(), this.zones, this.loadUniqueZoneCandidates(), this.maskProvider, this.loadColorMapping());
}
@Nullable
class="kw">protected IPointGenerator loadGridGenerator() {
class="kw">return new PointGeneratorJsonLoader<>(this.seed, this.dataFolder, this.get("GridGenerator")).load();
}
@Nonnull
class="kw">protected ZoneColorMapping loadColorMapping() {
if (!this.has("MaskMapping")) {
throw new IllegalArgumentException("Could not find mappings for colors in mask file. Keyword: MaskMapping");
}
ZoneColorMapping var1 = new ZoneColorMappingJsonLoader(this.seed, this.dataFolder, this.get("MaskMapping"), this.zoneLookup).load();
this.ensureMaskIntegrity(var1);
class="kw">return var1;
}
@Nonnull
class="kw">public Set<String> loadZoneRequirement() {
class="kw">return new ZoneRequirementJsonLoader(this.seed, this.dataFolder, this.json).load();
}
class="kw">protected void ensureMaskIntegrity(@Nonnull ZoneColorMapping var1) {
if (this.maskProvider class="kw">instanceof ClimateMaskProvider var2) {
for (ClimateType var6 : var2.getGraph().getParents()) {
if (var6.children.length == 0) {
validateMapping(var6, var6, var6.color, var1, "");
validateMapping(var6, var6, var6.island, var1, "Island");
} else {
for (ClimateType var10 : var6.children) {
validateMapping(var6, var10, var10.color, var1, "");
validateMapping(var6, var10, var10.island, var1, "Island.");
}
}
}
} else {
this.maskProvider.getFuzzyZoom().getExactZoom().getDistanceProvider().getColors().forEach(var1x -> {
if (var1.get(var1x) == null) {
throw new NullPointerException(Integer.toHexString(var1x));
}
});
}
}
class="kw">protected Zone.UniqueCandidate[] loadUniqueZoneCandidates() {
if (this.maskProvider class="kw">instanceof ClimateMaskProvider var3) {
class="kw">return var3.getUniqueZoneCandidates(this.zoneLookup);
} else {
Zone.UniqueEntry[] var1 = new UniqueZoneEntryJsonLoader(this.seed, this.dataFolder, this.get("UniqueZones"), this.zoneLookup).load();
class="kw">return this.maskProvider.generateUniqueZoneCandidates(var1, 100);
}
}
class="kw">protected class="kw">static void validateMapping(@Nullable ClimateType var0, @Nonnull ClimateType var1, @Nonnull ClimateColor var2, ZoneColorMapping var3, String var4) {
if (var3.get(var2.land) == null) {
throw new Error(var4 + "Color is not mapped in climate type: " + ClimateType.name(var0, var1));
}
if (var3.get(var2.shore) == null) {
throw new Error(var4 + "Shore is not mapped in climate type: " + ClimateType.name(var0, var1));
}
if (var3.get(var2.ocean) == null) {
throw new Error(var4 + "Ocean is not mapped in climate type: " + ClimateType.name(var0, var1));
}
if (var3.get(var2.shallowOcean) == null) {
throw new Error(var4 + "ShallowOcean is not mapped in climate type: " + ClimateType.name(var0, var1));
}
}
class="kw">public class="kw">interface Constants {
String KEY_GRID_GENERATOR = "GridGenerator";
String KEY_UNIQUE_ZONES = "UniqueZones";
String KEY_MASK_MAPPING = "MaskMapping";
String ERROR_UNMAPPED_COLOR = "Mask image contains unmapped color! #%s";
String ERROR_NO_MAPPING = "Could not find mappings for colors in mask file. Keyword: MaskMapping";
int UNIQUE_ZONE_CANDIDATE_POS_LIMIT = 100;
}
}