WorldGenModifier class

Пакет: com.hypixel.hytale.builtin.worldgen.modifier

Файл: com/hypixel/hytale/builtin/worldgen/modifier/WorldGenModifier.java

implements: JsonAssetWithMap<String, DefaultAssetMap<String, WorldGenModifier>>

Поля (1)

МодификаторыТипИмя
final BuilderCodec<WorldGenModifier> CODEC

Методы (4)

МодификаторыВозвратСигнатура
for for(Content.Type var4 : Content.Type.VALUES)
for for(Op var9 : var0.operations)
public Op[] getOperationsOp[] getOperations(Content.Type var1)
static void initvoid init(WorldGenModifier var0)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.worldgen.modifier;

class="kw">import com.hypixel.hytale.assetstore.AssetExtraInfo;
class="kw">import com.hypixel.hytale.assetstore.codec.AssetBuilderCodec;
class="kw">import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;
class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.content.Content;
class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.op.Op;
class="kw">import com.hypixel.hytale.codec.Codec;
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.EnumCodec;
class="kw">import com.hypixel.hytale.event.EventPriority;
class="kw">import com.hypixel.hytale.server.worldgen.util.ListPool;
class="kw">import java.util.EnumMap;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class WorldGenModifier class="kw">implements JsonAssetWithMap<String, DefaultAssetMap<String, WorldGenModifier>> {
   class="kw">public class="kw">static class="kw">final BuilderCodec<WorldGenModifier> CODEC = BuilderCodec.<WorldGenModifier>builder(WorldGenModifier.class, WorldGenModifier::new)
      .documentation("Asset type used to data-drive user modifications to world-gen-v1 assets")
      .<EventPriority>append(new KeyedCodec<>("Priority", new EnumCodec<>(EventPriority.class)), (var0, var1) -> var0.priority = var1, var0 -> var0.priority)
      .documentation("The order this modifier will be applied relative to others")
      .add()
      .<Target>append(new KeyedCodec<>("Target", Target.CODEC), (var0, var1) -> var0.target = var1, var0 -> var0.target)
      .documentation("The target world-gen configuration to modify")
      .add()
      .<Op[]>append(new KeyedCodec<>("Operations", Op.ARRAY_CODEC), (var0, var1) -> var0.operations = var1, var0 -> var0.operations)
      .documentation("List of operations to perform on the target")
      .add()
      .afterDecode(WorldGenModifier::init)
      .build();
   class="kw">public class="kw">static class="kw">final AssetBuilderCodec<String, WorldGenModifier> ASSET_CODEC = AssetBuilderCodec.wrap(
      CODEC, Codec.STRING, (var0, var1) -> var0.id = var1, var0 -> var0.id, (var0, var1) -> var0.data = var1, var0 -> var0.data
   );
   class="kw">public class="kw">static class="kw">final DefaultAssetMap<String, WorldGenModifier> ASSET_MAP = new DefaultAssetMap<>();
   class="kw">private class="kw">static class="kw">final String UNKNOWN_ID = "Unknown";
   class="kw">private class="kw">static class="kw">final ListPool<Op> POOL = new ListPool<>(10, Op.EMPTY_ARRAY);
   @Nonnull
   class="kw">protected String id = "Unknown";
   @Nullable
   class="kw">protected AssetExtraInfo.Data data = null;
   @Nonnull
   class="kw">protected EventPriority priority = EventPriority.NORMAL;
   @Nonnull
   class="kw">protected Target target = new Target();
   @Nonnull
   class="kw">protected Op[] operations = Op.EMPTY_ARRAY;
   class="kw">protected class="kw">final class="kw">transient EnumMap<Content.Type, Op[]> opsLookup = new EnumMap<>(Content.Type.class);

   class="kw">public WorldGenModifier() {
   }

   class="kw">public WorldGenModifier(@Nonnull String var1) {
      this.id = var1;
   }

   @Nonnull
   class="kw">public String getId() {
      class="kw">return this.id;
   }

   @Nonnull
   class="kw">public Target getTarget() {
      class="kw">return this.target;
   }

   class="kw">public Op[] getOperations(Content.Type var1) {
      class="kw">return this.opsLookup.getOrDefault(var1, Op.EMPTY_ARRAY);
   }

   class="kw">protected class="kw">static void init(WorldGenModifier var0) {
      var0.opsLookup.clear();

      for (Content.Type var4 : Content.Type.VALUES) {
         try (ListPool.Resource var5 = POOL.acquire(var0.operations.length)) {
            for (Op var9 : var0.operations) {
               if (var9.type() == var4) {
                  var5.add(var9);
               }
            }

            var0.opsLookup.put(var4, (Op[])var5.toArray(Op.EMPTY_ARRAY));
         }
      }
   }
}