CustomConnectedBlockTemplateAsset class

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

Файл: com/hypixel/hytale/server/core/universe/world/connectedblocks/CustomConnectedBlockTemplateAsset.java

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

Поля (6)

МодификаторыТипИмя
ASSET_STORE
ConnectedBlockShape var11
CustomTemplateConnectedBlockPattern[] var12
Optional var17
BlockPattern var18
BlockPattern.BlockEntry var19

Методы (7)

МодификаторыВозвратСигнатура
for for(CustomTemplateConnectedBlockPattern var16 : var12)
if if(ASSET_STORE == null)
if if(var11 != null)
if if(var12 != null)
if if(var7)
if if(var18 == null)
public boolean isDontUpdateAfterInitialPlacementboolean isDontUpdateAfterInitialPlacement()

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.AssetExtraInfo;
class="kw">import com.hypixel.hytale.assetstore.AssetKeyValidator;
class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.assetstore.AssetStore;
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.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.codecs.map.MapCodec;
class="kw">import com.hypixel.hytale.codec.validation.ValidatorCache;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.mask.BlockPattern;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import java.util.HashMap;
class="kw">import java.util.Map;
class="kw">import java.util.Optional;
class="kw">import java.util.Map.Entry;
class="kw">import java.util.concurrent.ThreadLocalRandom;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3ic;

@Deprecated
class="kw">public class CustomConnectedBlockTemplateAsset class="kw">implements JsonAssetWithMap<String, DefaultAssetMap<String, CustomConnectedBlockTemplateAsset>> {
   @Nonnull
   class="kw">public class="kw">static class="kw">final AssetBuilderCodec<String, CustomConnectedBlockTemplateAsset> CODEC = AssetBuilderCodec.builder(
         CustomConnectedBlockTemplateAsset.class,
         CustomConnectedBlockTemplateAsset::new,
         Codec.STRING,
         (var0, var1) -> var0.id = var1,
         var0 -> var0.id,
         (var0, var1) -> var0.data = var1,
         var0 -> var0.data
      )
      .append(
         new KeyedCodec<>("DontUpdateAfterInitialPlacement", Codec.BOOLEAN, false),
         (var0, var1) -> var0.dontUpdateAfterInitialPlacement = var1,
         var0 -> var0.dontUpdateAfterInitialPlacement
      )
      .documentation(
         "Default to false. When true, will not update the connected block after initial placement. Neighboring block updates won't affect this block when true."
      )
      .add()
      .<Boolean>append(
         new KeyedCodec<>("ConnectsToOtherMaterials", Codec.BOOLEAN, false),
         (var0, var1) -> var0.connectsToOtherMaterials = var1,
         var0 -> var0.connectsToOtherMaterials
      )
      .documentation(
         "Defaults to true. If true, the material will connect to other materials of different block type sets, if false, the material will only connect to its own block types within the material"
      )
      .add()
      .append(new KeyedCodec<>("DefaultShape", Codec.STRING, false), (var0, var1) -> var0.defaultShapeName = var1, var0 -> var0.defaultShapeName)
      .add()
      .append(
         new KeyedCodec<>("Shapes", new MapCodec<>(ConnectedBlockShape.CODEC, HashMap::new), true),
         (var0, var1) -> var0.connectedBlockShapes = var1,
         var0 -> var0.connectedBlockShapes
      )
      .add()
      .build();
   @Nonnull
   class="kw">public class="kw">static class="kw">final ValidatorCache<String> VALIDATOR_CACHE = new ValidatorCache<>(new AssetKeyValidator<>(CustomConnectedBlockTemplateAsset::getAssetStore));
   class="kw">private class="kw">static AssetStore<String, CustomConnectedBlockTemplateAsset, DefaultAssetMap<String, CustomConnectedBlockTemplateAsset>> ASSET_STORE;
   class="kw">private String id;
   class="kw">private AssetExtraInfo.Data data;
   class="kw">protected boolean connectsToOtherMaterials = true;
   class="kw">private boolean dontUpdateAfterInitialPlacement;
   class="kw">private String defaultShapeName;
   class="kw">protected Map<String, ConnectedBlockShape> connectedBlockShapes;

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

   @Nonnull
   class="kw">public class="kw">static AssetStore<String, CustomConnectedBlockTemplateAsset, DefaultAssetMap<String, CustomConnectedBlockTemplateAsset>> getAssetStore() {
      if (ASSET_STORE == null) {
         ASSET_STORE = AssetRegistry.getAssetStore(CustomConnectedBlockTemplateAsset.class);
      }

      class="kw">return ASSET_STORE;
   }

   @Nonnull
   class="kw">public class="kw">static DefaultAssetMap<String, CustomConnectedBlockTemplateAsset> getAssetMap() {
      class="kw">return (DefaultAssetMap<String, CustomConnectedBlockTemplateAsset>)getAssetStore().getAssetMap();
   }

   @Nonnull
   class="kw">public Optional<ConnectedBlocksUtil.ConnectedBlockResult> getConnectedBlockType(
      @Nonnull ChunkStore var1,
      @Nonnull Vector3ic var2,
      @Nonnull CustomTemplateConnectedBlockRuleSet var3,
      @Nonnull BlockType var4,
      int var5,
      @Nonnull Vector3ic var6,
      boolean var7,
      boolean var8
   ) {
      for (Entry var10 : this.connectedBlockShapes.entrySet()) {
         ConnectedBlockShape var11 = var10.getValue();
         if (var11 != null) {
            CustomTemplateConnectedBlockPattern[] var12 = var11.getPatternsToMatchAnyOf();
            if (var12 != null) {
               for (CustomTemplateConnectedBlockPattern var16 : var12) {
                  Optional var17 = var16.getConnectedBlockTypeKey(var10.getKey(), var1, var2, var3, var4, var5, var6, var8);
                  if (!var17.isEmpty()) {
                     class="kw">return var17;
                  }
               }
            }
         }
      }

      if (var7) {
         BlockPattern var18 = var3.getShapeNameToBlockPatternMap().get(this.defaultShapeName);
         if (var18 == null) {
            class="kw">return Optional.empty();
         }

         BlockPattern.BlockEntry var19 = var18.nextBlockTypeKey(ThreadLocalRandom.current());
         class="kw">return var19 == null ? Optional.empty() : Optional.of(new ConnectedBlocksUtil.ConnectedBlockResult(var19.blockTypeKey(), var5));
      } else {
         class="kw">return Optional.empty();
      }
   }

   class="kw">public boolean isDontUpdateAfterInitialPlacement() {
      class="kw">return this.dontUpdateAfterInitialPlacement;
   }

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