Exported class

Пакет: com.hypixel.hytale.builtin.hytalegenerator.assets.blockmask

Файл: com/hypixel/hytale/builtin/hytalegenerator/assets/blockmask/BlockMaskAsset.java

Поля (1)

МодификаторыТипИмя
public BlockMaskAsset asset

Исходный код

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

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.hytalegenerator.BlockMask;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.LoggerUtil;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.MaterialSet;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.Cleanable;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.blockset.MaterialSetAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.material.MaterialCache;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import java.util.HashMap;
class="kw">import java.util.Map;
class="kw">import javax.annotation.Nonnull;

class="kw">public class BlockMaskAsset class="kw">implements JsonAssetWithMap<String, DefaultAssetMap<String, BlockMaskAsset>>, Cleanable {
   @Nonnull
   class="kw">private class="kw">static class="kw">final Map<String, BlockMaskAsset.Exported> exportedNodes = new HashMap<>();
   @Nonnull
   class="kw">public class="kw">static class="kw">final AssetBuilderCodec<String, BlockMaskAsset> CODEC = AssetBuilderCodec.builder(
         BlockMaskAsset.class,
         BlockMaskAsset::new,
         Codec.STRING,
         (var0, var1) -> var0.id = var1,
         var0 -> var0.id,
         (var0, var1) -> var0.data = var1,
         var0 -> var0.data
      )
      .append(
         new KeyedCodec<>("DontPlace", MaterialSetAsset.CODEC, false),
         (var0, var1) -> var0.dontPlaceMaterialSetAsset = var1,
         var0 -> var0.dontPlaceMaterialSetAsset
      )
      .add()
      .append(
         new KeyedCodec<>("DontReplace", MaterialSetAsset.CODEC, false),
         (var0, var1) -> var0.dontReplaceMaterialSetAsset = var1,
         var0 -> var0.dontReplaceMaterialSetAsset
      )
      .add()
      .append(
         new KeyedCodec<>("Advanced", new ArrayCodec<>(BlockMaskEntryAsset.CODEC, BlockMaskEntryAsset[]::new), false),
         (var0, var1) -> var0.blockMaskEntries = var1,
         var0 -> var0.blockMaskEntries
      )
      .add()
      .append(new KeyedCodec<>("ExportAs", Codec.STRING, false), (var0, var1) -> var0.exportName = var1, var0 -> var0.exportName)
      .add()
      .append(new KeyedCodec<>("Import", Codec.STRING, false), (var0, var1) -> var0.importName = var1, var0 -> var0.importName)
      .add()
      .afterDecode(var0 -> {
         if (var0.exportName != null && !var0.exportName.isEmpty()) {
            if (exportedNodes.containsKey(var0.exportName)) {
               LoggerUtil.getLogger().warning("Duplicate export name for asset: " + var0.exportName);
            }

            BlockMaskAsset.Exported var1 = new BlockMaskAsset.Exported();
            var1.asset = var0;
            exportedNodes.put(var0.exportName, var1);
            LoggerUtil.getLogger().fine("Registered imported node asset with name '" + var0.exportName + "' with asset id '" + var0.id);
         }
      })
      .build();
   class="kw">private String id;
   class="kw">private AssetExtraInfo.Data data;
   class="kw">protected String exportName = "";
   class="kw">protected String importName = "";
   class="kw">private MaterialSetAsset dontPlaceMaterialSetAsset = new MaterialSetAsset();
   class="kw">private MaterialSetAsset dontReplaceMaterialSetAsset = new MaterialSetAsset();
   class="kw">private BlockMaskEntryAsset[] blockMaskEntries = new BlockMaskEntryAsset[0];

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

   class="kw">public BlockMask build(@Nonnull MaterialCache var1) {
      if (this.importName != null && !this.importName.isEmpty()) {
         BlockMaskAsset.Exported var9 = exportedNodes.get(this.importName);
         if (var9 != null && var9.asset != null) {
            class="kw">return var9.asset.build(var1);
         }

         LoggerUtil.getLogger().warning("Imported BlockMask asset with name '" + this.importName + "' not found");
         class="kw">return new BlockMask();
      } else {
         MaterialSet var2 = this.dontPlaceMaterialSetAsset == null ? new MaterialSet() : this.dontPlaceMaterialSetAsset.build(var1);
         MaterialSet var3 = this.dontReplaceMaterialSetAsset == null ? new MaterialSet() : this.dontReplaceMaterialSetAsset.build(var1);
         BlockMask var4 = new BlockMask();
         var4.setSkippedBlocks(var2);
         var4.setDefaultMask(var3);

         for (BlockMaskEntryAsset var8 : this.blockMaskEntries) {
            var4.putBlockMaskEntry(var8.getPropBlockSet(var1), var8.getReplacesBlockSet(var1));
         }

         class="kw">return var4;
      }
   }

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

   @Override
   class="kw">public void cleanUp() {
      this.dontPlaceMaterialSetAsset.cleanUp();
      this.dontReplaceMaterialSetAsset.cleanUp();

      for (BlockMaskEntryAsset var4 : this.blockMaskEntries) {
         var4.cleanUp();
      }
   }

   class="kw">public class="kw">static class Exported {
      class="kw">public BlockMaskAsset asset;

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