ZonePatternGenerator class
Пакет: com.hypixel.hytale.server.worldgen.zone
Файл: com/hypixel/hytale/server/worldgen/zone/ZonePatternGenerator.java
Поля (9)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
IPointGenerator |
pointGenerator |
|
int |
var11 |
|
Zone[] |
var12 |
|
double |
var13 |
|
|
var13 |
|
double |
var7 |
|
ResultBuffer.ResultBuffer2d |
var8 |
|
double |
var9 |
|
int |
var9 |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
Errorthrow new Error("Unknown zone colour mapping for mask: " + var11) |
public |
Zone.Unique[] |
getUniqueZonesZone.Unique[] getUniqueZones() |
protected |
void |
getZonevoid getZone(int var1, double var2, double var4, @Nonnull ZoneGeneratorResult var6, @Nonnull Zone[] var7) |
public |
Zone[] |
getZonesZone[] getZones() |
|
|
if if(var12 == null) |
|
|
if if(var12.length == 1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.zone;
class="kw">import com.hypixel.hytale.math.util.HashUtil;
class="kw">import com.hypixel.hytale.procedurallib.logic.ResultBuffer;
class="kw">import com.hypixel.hytale.procedurallib.logic.point.IPointGenerator;
class="kw">import com.hypixel.hytale.server.worldgen.chunk.MaskProvider;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;
class="kw">public class ZonePatternGenerator {
class="kw">protected class="kw">final IPointGenerator pointGenerator;
class="kw">protected class="kw">final Zone[] zones;
class="kw">protected class="kw">final Zone.Unique[] uniqueZones;
class="kw">protected class="kw">final MaskProvider maskProvider;
class="kw">protected class="kw">final ZoneColorMapping zoneColorMapping;
class="kw">public ZonePatternGenerator(IPointGenerator var1, Zone[] var2, Zone.Unique[] var3, MaskProvider var4, ZoneColorMapping var5) {
this.pointGenerator = var1;
this.zones = var2;
this.uniqueZones = var3;
this.maskProvider = var4;
this.zoneColorMapping = var5;
}
class="kw">public Zone[] getZones() {
class="kw">return this.zones;
}
class="kw">public Zone.Unique[] getUniqueZones() {
class="kw">return this.uniqueZones;
}
@Nonnull
class="kw">public ZoneGeneratorResult generate(int var1, double var2, double var4) {
class="kw">return this.generate(var1, var2, var4, new ZoneGeneratorResult());
}
@Nonnull
class="kw">public ZoneGeneratorResult generate(int var1, double var2, double var4, @Nonnull ZoneGeneratorResult var6) {
double var7 = this.maskProvider.getX(var1, var2, var4);
double var9 = this.maskProvider.getY(var1, var2, var4);
int var11 = this.maskProvider.get(var1, var7, var9) & 16777215;
Zone[] var12 = this.zoneColorMapping.get(var11);
if (var12 == null) {
throw new Error("Unknown zone colour mapping for mask: " + var11);
}
if (var12.length == 1) {
double var13 = Double.POSITIVE_INFINITY;
if (this.maskProvider.inBounds(var7, var9)) {
var13 = this.maskProvider.distance(var7, var9);
}
var6.setZone(var12[0]);
var6.setBorderDistance(var13);
} else {
this.getZone(var1, var2, var4, var6, var12);
}
class="kw">return var6;
}
class="kw">protected void getZone(int var1, double var2, double var4, @Nonnull ZoneGeneratorResult var6, @Nonnull Zone[] var7) {
ResultBuffer.ResultBuffer2d var8 = this.pointGenerator.nearest2D(var1, var2, var4);
int var9 = ((int)HashUtil.hash(var1, var8.ix, var8.iy) & 2147483647) % var7.length;
var6.setZone(var7[var9]);
var6.setBorderDistance(var8.distance);
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "ZonePatternGenerator{pointGenerator="
+ this.pointGenerator
+ ", zones="
+ Arrays.toString(this.zones)
+ ", maskProvider="
+ this.maskProvider
+ ", zoneColorMapping="
+ this.zoneColorMapping
+ "}";
}
}