HyCodeYourTale
classpublicPriority 3

ChunkSpawnedNPCData

com.hypixel.hytale.server.spawning.world.component.ChunkSpawnedNPCData

implements Component

4

Methods

4

Public Methods

0

Fields

1

Constructors

Constants

BuilderCodec<ChunkSpawnedNPCData>CODEC= BuilderCodec.builder(ChunkSpawnedNPCData.class, ChunkSpawnedNPCData::new) .append(new Keyed...

Constructors

public
ChunkSpawnedNPCData()

Methods

Public Methods (4)

public
Component<ChunkStore> clone()
@Nonnull@Override
publicstatic
ComponentType<ChunkStore, ChunkSpawnedNPCData> getComponentType()
public
double getEnvironmentSpawnCount(int environment)
public
void setEnvironmentSpawnCount(int environment, double count)

Inheritance

Parent
Current
Interface
Child

Use mouse wheel to zoom, drag to pan. Click nodes to navigate.

Related Classes

Source Code

package com.hypixel.hytale.server.spawning.world.component;

import com.hypixel.hytale.assetstore.map.IndexedLookupTableAssetMap;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.codec.codecs.map.Object2DoubleMapCodec;
import com.hypixel.hytale.component.Component;
import com.hypixel.hytale.component.ComponentType;
import com.hypixel.hytale.server.core.asset.type.environment.config.Environment;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import com.hypixel.hytale.server.spawning.SpawningPlugin;
import it.unimi.dsi.fastutil.ints.Int2DoubleMap;
import it.unimi.dsi.fastutil.ints.Int2DoubleOpenHashMap;
import it.unimi.dsi.fastutil.objects.Object2DoubleOpenHashMap;
import it.unimi.dsi.fastutil.objects.Object2DoubleMap.Entry;
import java.util.Iterator;
import javax.annotation.Nonnull;

public class ChunkSpawnedNPCData implements Component<ChunkStore> {
   public static final BuilderCodec<ChunkSpawnedNPCData> CODEC = BuilderCodec.builder(ChunkSpawnedNPCData.class, ChunkSpawnedNPCData::new)
      .append(new KeyedCodec<>("EnvironmentSpawnCounts", new Object2DoubleMapCodec<>(Codec.STRING, Object2DoubleOpenHashMap::new, false)), (chunk, o) -> {
         Int2DoubleMap map = chunk.environmentSpawnCounts;
         map.clear();
         Iterator i$ = o.object2DoubleEntrySet().iterator();

         while (i$.hasNext()) {
            Entry<String> entry = (Entry<String>)i$.next();
            String key = (String)entry.getKey();
            int index = Environment.getIndexOrUnknown(key, "Failed to find environment '%s' while deserializing spawned NPC data", key);
            map.put(index, entry.getDoubleValue());
         }
      }, chunk -> {
         Object2DoubleOpenHashMap<String> map = new Object2DoubleOpenHashMap();
         IndexedLookupTableAssetMap<String, Environment> assetMap = Environment.getAssetMap();
         Iterator i$ = chunk.environmentSpawnCounts.int2DoubleEntrySet().iterator();

         while (i$.hasNext()) {
            it.unimi.dsi.fastutil.ints.Int2DoubleMap.Entry entry = (it.unimi.dsi.fastutil.ints.Int2DoubleMap.Entry)i$.next();
            Environment environment = assetMap.getAsset(entry.getIntKey());
            String key = environment != null ? environment.getId() : Environment.UNKNOWN.getId();
            map.put(key, entry.getDoubleValue());
         }

         return map;
      })
      .add()
      .build();
   private final Int2DoubleMap environmentSpawnCounts = new Int2DoubleOpenHashMap();

   public ChunkSpawnedNPCData() {
   }

   public static ComponentType<ChunkStore, ChunkSpawnedNPCData> getComponentType() {
      return SpawningPlugin.get().getChunkSpawnedNPCDataComponentType();
   }

   public double getEnvironmentSpawnCount(int environment) {
      return this.environmentSpawnCounts.get(environment);
   }

   public void setEnvironmentSpawnCount(int environment, double count) {
      this.environmentSpawnCounts.put(environment, count);
   }

   @Nonnull
   @Override
   public Component<ChunkStore> clone() {
      ChunkSpawnedNPCData data = new ChunkSpawnedNPCData();
      data.environmentSpawnCounts.putAll(this.environmentSpawnCounts);
      return data;
   }
}