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);
   }
}