CountOnly class
Пакет: com.hypixel.hytale.server.spawning.world
Файл: com/hypixel/hytale/server/spawning/world/WorldNPCSpawnStat.java
extends: WorldNPCSpawnStat
Методы (4)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public int |
getAvailableSlotspublic int getAvailableSlots() |
|
public double |
getMissingCountpublic double getMissingCount(@Nonnull ComponentAccessor<EntityStore> var1) |
|
public double |
getWeightpublic double getWeight(int var1) |
abstract |
|
super super(var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.spawning.world;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.flock.config.FlockAsset;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderInfo;
class="kw">import com.hypixel.hytale.server.spawning.SpawnRejection;
class="kw">import com.hypixel.hytale.server.spawning.assets.spawns.config.RoleSpawnParameters;
class="kw">import com.hypixel.hytale.server.spawning.world.manager.WorldSpawnWrapper;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
class="kw">import java.lang.ref.WeakReference;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class WorldNPCSpawnStat {
class="kw">private class="kw">final int roleIndex;
@Nullable
class="kw">private class="kw">final World world;
@Nullable
class="kw">private WeakReference<BuilderInfo> builderInfoReference;
class="kw">private int minSpawnSize;
class="kw">private double expected;
class="kw">private int actual;
class="kw">private boolean unspawnable;
@Nullable
class="kw">private class="kw">final WorldSpawnWrapper spawnWrapper;
@Nullable
class="kw">private class="kw">final RoleSpawnParameters spawnParams;
class="kw">private int spansTried;
class="kw">private class="kw">final Object2IntMap<SpawnRejection> rejections = new Object2IntOpenHashMap();
class="kw">private int spansSuccess;
class="kw">private int successfulJobCount;
class="kw">private int successfulJobTotalBudget;
class="kw">private int failedJobCount;
class="kw">private int failedJobTotalBudget;
class="kw">private class="kw">final double weight;
class="kw">public WorldNPCSpawnStat(int var1, WorldSpawnWrapper var2, @Nonnull RoleSpawnParameters var3, World var4) {
this.roleIndex = var1;
this.world = var4;
this.builderInfoReference = new WeakReference<>(NPCPlugin.get().getRoleBuilderInfo(var1));
this.weight = var3.getWeight();
this.spawnWrapper = var2;
this.spawnParams = var3;
}
class="kw">private WorldNPCSpawnStat(int var1) {
this.roleIndex = var1;
this.world = null;
this.weight = 0.0;
this.spawnWrapper = null;
this.spawnParams = null;
}
class="kw">public int getRoleIndex() {
class="kw">return this.roleIndex;
}
class="kw">public double getExpected() {
class="kw">return this.expected;
}
class="kw">public void setExpected(double var1) {
this.expected = var1;
}
class="kw">public int getActual() {
class="kw">return this.actual;
}
class="kw">public void adjustActual(int var1) {
this.actual += var1;
}
class="kw">public boolean isUnspawnable() {
class="kw">return this.unspawnable;
}
class="kw">public void setUnspawnable(boolean var1) {
this.unspawnable = var1;
}
@Nullable
class="kw">public WorldSpawnWrapper getSpawnWrapper() {
class="kw">return this.spawnWrapper;
}
@Nullable
class="kw">public RoleSpawnParameters getSpawnParams() {
class="kw">return this.spawnParams;
}
class="kw">public int getSpansTried() {
class="kw">return this.spansTried;
}
class="kw">public int getSpansSuccess() {
class="kw">return this.spansSuccess;
}
class="kw">public int getSuccessfulJobCount() {
class="kw">return this.successfulJobCount;
}
class="kw">public int getSuccessfulJobTotalBudget() {
class="kw">return this.successfulJobTotalBudget;
}
class="kw">public int getFailedJobCount() {
class="kw">return this.failedJobCount;
}
class="kw">public int getFailedJobTotalBudget() {
class="kw">return this.failedJobTotalBudget;
}
class="kw">public double getWeight(int var1) {
class="kw">return this.weight * this.spawnWrapper.getMoonPhaseWeightModifier(var1);
}
class="kw">public double getMissingCount(@Nonnull ComponentAccessor<EntityStore> var1) {
if (!this.unspawnable && this.spawnWrapper.spawnParametersMatch(var1) && this.isSpawnable()) {
double var2 = Math.max(this.expected - this.actual, 0.0);
class="kw">return MathUtil.fastCeil(var2) < this.minSpawnSize ? 0.0 : var2;
} else {
class="kw">return 0.0;
}
}
class="kw">public int getAvailableSlots() {
class="kw">return Math.max((int)MathUtil.fastCeil(this.expected - this.actual), 0);
}
class="kw">public int getRejectionCount(SpawnRejection var1) {
class="kw">return this.rejections.getInt(var1);
}
class="kw">public void updateSpawnStats(int var1, int var2, int var3, @Nonnull Object2IntMap<SpawnRejection> var4, boolean var5) {
this.spansTried += var1;
this.spansSuccess += var2;
for (SpawnRejection var9 : SpawnRejection.VALUES) {
this.rejections.mergeInt(var9, var4.getInt(var9), Integer::sum);
}
if (var5) {
this.successfulJobCount++;
this.successfulJobTotalBudget += var3;
} else {
this.failedJobCount++;
this.failedJobTotalBudget += var3;
}
}
class="kw">public void resetUnspawnable() {
this.unspawnable = false;
if (this.builderInfoReference == null || this.builderInfoReference.get() != null) {
this.builderInfoReference = new WeakReference<>(null);
}
}
class="kw">private boolean isSpawnable() {
if (this.builderInfoReference == null) {
class="kw">return false;
}
BuilderInfo var1 = this.builderInfoReference.get();
NPCPlugin var2 = NPCPlugin.get();
if (var1 != null && !var1.isRemoved()) {
class="kw">return var2.testAndValidateRole(var1);
}
var1 = var2.getRoleBuilderInfo(this.roleIndex);
if (var1 == null) {
this.builderInfoReference = null;
class="kw">return false;
}
this.builderInfoReference = new WeakReference<>(var1);
if (!var2.testAndValidateRole(var1)) {
class="kw">return false;
}
this.recomputeSpawnSize();
class="kw">return true;
}
class="kw">private void recomputeSpawnSize() {
FlockAsset var1 = this.spawnParams.getFlockDefinition();
if (var1 == null) {
this.minSpawnSize = 1;
} else {
this.minSpawnSize = var1.getMinFlockSize();
}
}
class="kw">public class="kw">static class CountOnly class="kw">extends WorldNPCSpawnStat {
class="kw">public CountOnly(int var1) {
super(var1);
}
@Override
class="kw">public double getWeight(int var1) {
class="kw">return 0.0;
}
@Override
class="kw">public double getMissingCount(@Nonnull ComponentAccessor<EntityStore> var1) {
class="kw">return 0.0;
}
@Override
class="kw">public int getAvailableSlots() {
class="kw">return 0;
}
}
}