BlockComponentChunk class

Пакет: com.hypixel.hytale.server.core.universe.world.chunk

Файл: com/hypixel/hytale/server/core/universe/world/chunk/BlockComponentChunk.java

implements: Component<ChunkStore>

Поля (10)

МодификаторыТипИмя
final BuilderCodec<BlockComponentChunk> CODEC
Int2ObjectOpenHashMap var1
ComponentRegistry.Data var1
Int2ObjectOpenHashMap var1
ObjectIterator var2
Int2ObjectOpenHashMap var2
Entry var3
ObjectIterator var3
Entry var4
Holder var5

Методы (1)

МодификаторыВозвратСигнатура
static ComponentType<ChunkStore, BlockComponentChunk> getComponentTypeComponentType<ChunkStore, BlockComponentChunk> getComponentType()

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.chunk;

class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.map.Int2ObjectMapCodec;
class="kw">import com.hypixel.hytale.codec.store.StoredCodec;
class="kw">import com.hypixel.hytale.component.Component;
class="kw">import com.hypixel.hytale.component.ComponentRegistry;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.server.core.modules.LegacyModule;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectMap.Entry;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectIterator;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

@Deprecated(forRemoval = true)
class="kw">public class BlockComponentChunk class="kw">implements Component<ChunkStore> {
   class="kw">public class="kw">static class="kw">final BuilderCodec<BlockComponentChunk> CODEC = BuilderCodec.<BlockComponentChunk>builder(BlockComponentChunk.class, BlockComponentChunk::new)
      .addField(
         new KeyedCodec<>("BlockComponents", new Int2ObjectMapCodec<>(new StoredCodec<>(ChunkStore.HOLDER_CODEC_KEY), Int2ObjectOpenHashMap::new)),
         (var0, var1) -> {
            var0.entityHolders.clear();
            var0.entityHolders.putAll(var1);
         },
         var0 -> var0.entityHolders
      )
      .build();
   @Nonnull
   class="kw">private class="kw">final Int2ObjectMap<Holder<ChunkStore>> entityHolders;

   class="kw">public class="kw">static ComponentType<ChunkStore, BlockComponentChunk> getComponentType() {
      class="kw">return LegacyModule.get().getBlockComponentChunkComponentType();
   }

   class="kw">public BlockComponentChunk() {
      this.entityHolders = new Int2ObjectOpenHashMap();
   }

   class="kw">public BlockComponentChunk(@Nonnull Int2ObjectMap<Holder<ChunkStore>> var1) {
      this.entityHolders = var1;
   }

   @Nonnull
   @Override
   class="kw">public Component<ChunkStore> clone() {
      Int2ObjectOpenHashMap var1 = new Int2ObjectOpenHashMap(this.entityHolders.size());
      ObjectIterator var2 = this.entityHolders.int2ObjectEntrySet().iterator();

      while (var2.hasNext()) {
         Entry var3 = (Entry<Holder<ChunkStore>>)var2.next();
         var1.put(var3.getIntKey(), ((Holder)var3.getValue()).clone());
      }

      class="kw">return new BlockComponentChunk(var1);
   }

   @Nonnull
   @Override
   class="kw">public Component<ChunkStore> cloneSerializable() {
      ComponentRegistry.Data var1 = ChunkStore.REGISTRY.getData();
      Int2ObjectOpenHashMap var2 = new Int2ObjectOpenHashMap(this.entityHolders.size());
      ObjectIterator var3 = this.entityHolders.int2ObjectEntrySet().iterator();

      while (var3.hasNext()) {
         Entry var4 = (Entry<Holder<ChunkStore>>)var3.next();
         Holder var5 = (Holder<ChunkStore>)var4.getValue();
         if (var5.getArchetype().hasSerializableComponents(var1)) {
            var2.put(var4.getIntKey(), var5.cloneSerializable(var1));
         }
      }

      class="kw">return new BlockComponentChunk(var2);
   }

   @Nullable
   class="kw">public Int2ObjectMap<Holder<ChunkStore>> takeEntityHolders() {
      if (this.entityHolders.isEmpty()) {
         class="kw">return null;
      }

      Int2ObjectOpenHashMap var1 = new Int2ObjectOpenHashMap(this.entityHolders);
      this.entityHolders.clear();
      class="kw">return var1;
   }
}