SpawnWrapper class
Пакет: com.hypixel.hytale.server.spawning.wrappers
Файл: com/hypixel/hytale/server/spawning/wrappers/SpawnWrapper.java
Поля (21)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
int |
spawnIndex |
|
NPCPlugin |
var1 |
|
int |
var2 |
|
World |
var2 |
|
World |
var2 |
|
SpawningPlugin |
var2 |
|
WorldTimeResource |
var3 |
|
NPCSpawn.DespawnParameters |
var3 |
|
ComponentAccessor |
var3 |
|
Int2ObjectOpenHashMap |
var3 |
|
double[] |
var4 |
|
double[] |
var4 |
|
Ref |
var4 |
|
int[] |
var5 |
|
int[] |
var5 |
|
Store |
var5 |
|
boolean |
var6 |
|
boolean |
var6 |
|
WorldTimeResource |
var6 |
|
String |
var8 |
|
int |
var9 |
Методы (13)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
private |
void |
addRolesvoid addRoles() |
|
|
for for(LightType var6 : LightType.VALUES) |
public |
boolean |
getEnableSafeSpawningboolean getEnableSafeSpawning(int var1) |
public |
Int2ObjectMap<RoleSpawnParameters> |
getRolesInt2ObjectMap<RoleSpawnParameters> getRoles() |
public |
int |
getSpawnFluidTagint getSpawnFluidTag(int var1) |
public |
int |
getSpawnIndexint getSpawnIndex() |
public |
boolean |
hasInvalidNPCboolean hasInvalidNPC(String var1) |
|
|
if if(var3 == null) |
|
|
if if(var2 != null && var4 != null && var3 != null) |
|
|
if if(var9 < 0) |
public |
boolean |
shouldDespawnboolean shouldDespawn(@Nonnull World var1, @Nonnull WorldTimeResource var2) |
public |
boolean |
spawnParametersMatchboolean spawnParametersMatch(@Nonnull ComponentAccessor<EntityStore> var1) |
public |
boolean |
withinLightRangeboolean withinLightRange(@Nonnull SpawningContext var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.spawning.wrappers;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.server.core.modules.blockset.BlockSetModule;
class="kw">import com.hypixel.hytale.server.core.modules.time.WorldTimeResource;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.spawning.SpawningContext;
class="kw">import com.hypixel.hytale.server.spawning.SpawningPlugin;
class="kw">import com.hypixel.hytale.server.spawning.assets.spawns.LightType;
class="kw">import com.hypixel.hytale.server.spawning.assets.spawns.config.NPCSpawn;
class="kw">import com.hypixel.hytale.server.spawning.assets.spawns.config.RoleSpawnParameters;
class="kw">import com.hypixel.hytale.server.spawning.util.LightRangePredicate;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectMaps;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.ints.IntSet;
class="kw">import java.util.HashSet;
class="kw">import java.util.Set;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class="kw">abstract class SpawnWrapper<T class="kw">extends NPCSpawn> {
class="kw">protected class="kw">final int spawnIndex;
@Nonnull
class="kw">protected class="kw">final T spawn;
class="kw">protected Int2ObjectMap<RoleSpawnParameters> roles;
class="kw">protected class="kw">final LightRangePredicate lightRangePredicate = new LightRangePredicate();
class="kw">protected class="kw">final Set<String> invalidNPCs = new HashSet<>();
class="kw">public SpawnWrapper(int var1, @Nonnull T var2) {
this.spawnIndex = var1;
this.spawn = var2;
for (LightType var6 : LightType.VALUES) {
this.lightRangePredicate.setLightRange(var6, var2.getLightRange(var6));
}
this.addRoles();
}
@Nonnull
class="kw">public T getSpawn() {
class="kw">return this.spawn;
}
class="kw">public Int2ObjectMap<RoleSpawnParameters> getRoles() {
class="kw">return this.roles;
}
@Nullable
class="kw">public IntSet getSpawnBlockSet(int var1) {
int var2 = ((RoleSpawnParameters)this.roles.get(var1)).getSpawnBlockSetIndex();
class="kw">return var2 >= 0 ? (IntSet)BlockSetModule.getInstance().getBlockSets().get(var2) : null;
}
class="kw">public int getSpawnFluidTag(int var1) {
class="kw">return ((RoleSpawnParameters)this.roles.get(var1)).getSpawnFluidTagIndex();
}
class="kw">public int getSpawnIndex() {
class="kw">return this.spawnIndex;
}
@Nonnull
class="kw">public LightRangePredicate getLightRangePredicate() {
class="kw">return this.lightRangePredicate;
}
class="kw">public boolean getEnableSafeSpawning(int var1) {
class="kw">return ((RoleSpawnParameters)this.roles.get(var1)).getEnableSafeSpawning();
}
class="kw">public boolean hasInvalidNPC(String var1) {
class="kw">return this.invalidNPCs.contains(var1);
}
class="kw">public boolean spawnParametersMatch(@Nonnull ComponentAccessor<EntityStore> var1) {
World var2 = var1.getExternalData().getWorld();
WorldTimeResource var3 = var1.getResource(WorldTimeResource.getResourceType());
double[] var4 = this.spawn.getDayTimeRange();
int[] var5 = this.spawn.getMoonPhaseRange();
boolean var6 = this.spawn.isScaleDayTimeRange() ? var3.isScaledDayTimeWithinRange(var4[0], var4[1]) : var3.isDayTimeWithinRange(var4[0], var4[1]);
class="kw">return var6 && var3.isMoonPhaseWithinRange(var2, var5[0], var5[1]);
}
class="kw">public boolean shouldDespawn(@Nonnull World var1, @Nonnull WorldTimeResource var2) {
NPCSpawn.DespawnParameters var3 = this.spawn.getDespawnParameters();
if (var3 == null) {
class="kw">return false;
}
double[] var4 = var3.getDayTimeRange();
int[] var5 = var3.getMoonPhaseRange();
boolean var6 = this.spawn.isScaleDayTimeRange() ? var2.isScaledDayTimeWithinRange(var4[0], var4[1]) : var2.isDayTimeWithinRange(var4[0], var4[1]);
class="kw">return var1.getWorldConfig().isSpawningNPC() && var6 && var2.isMoonPhaseWithinRange(var1, var5[0], var5[1]);
}
class="kw">public boolean withinLightRange(@Nonnull SpawningContext var1) {
World var2 = var1.getWorld();
ComponentAccessor var3 = var1.getChunkStore();
Ref var4 = var1.getSectionRefAtBlockY(var1.yBlock);
if (var2 != null && var4 != null && var3 != null) {
Store var5 = var2.getEntityStore().getStore();
WorldTimeResource var6 = var5.getResource(WorldTimeResource.getResourceType());
class="kw">return this.lightRangePredicate.test(var3, var4, var1.xBlock, var1.yBlock, var1.zBlock, var6.getSunlightFactor());
} else {
class="kw">return false;
}
}
class="kw">private void addRoles() {
NPCPlugin var1 = NPCPlugin.get();
SpawningPlugin var2 = SpawningPlugin.get();
Int2ObjectOpenHashMap var3 = new Int2ObjectOpenHashMap();
for (RoleSpawnParameters var7 : this.spawn.getNPCs()) {
String var8 = var7.getId();
int var9 = var1.getIndex(var8);
if (var9 < 0) {
this.invalidNPCs.add(var8);
var2.getLogger().at(Level.WARNING).log("NPCSpawn %s references unknown NPC %s", this.spawn.getId(), var8);
} else if (var3.containsKey(var9)) {
var2.getLogger().at(Level.WARNING).log("NPCSpawn %s references multiple times NPC %s. Ignoring all but first.", this.spawn.getId(), var8);
} else {
var3.put(var9, var7);
}
}
var3.trim();
this.roles = Int2ObjectMaps.unmodifiable(var3);
}
}