CustomTemplateConnectedBlockRuleSet class

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

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

extends: ConnectedBlockRuleSet

Поля (8)

МодификаторыТипИмя
CustomConnectedBlockTemplateAsset var1
int var10
Set var11
String var5
BlockPattern var6
Integer[] var7
CustomConnectedBlockTemplateAsset var7
int var8

Методы (1)

МодификаторыВозвратСигнатура
for for(int var9 = 0; var9 < var8; var9++)

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.map.BlockTypeAssetMap;
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.map.MapCodec;
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 it.unimi.dsi.fastutil.ints.Int2ObjectMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
class="kw">import java.util.HashMap;
class="kw">import java.util.Map;
class="kw">import java.util.Optional;
class="kw">import java.util.Set;
class="kw">import java.util.Map.Entry;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3ic;

class="kw">public class CustomTemplateConnectedBlockRuleSet class="kw">extends ConnectedBlockRuleSet {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<CustomTemplateConnectedBlockRuleSet> CODEC = BuilderCodec.builder(
         CustomTemplateConnectedBlockRuleSet.class, CustomTemplateConnectedBlockRuleSet::new
      )
      .append(new KeyedCodec<>("TemplateShapeAssetId", Codec.STRING), (var0, var1) -> var0.shapeAssetId = var1, var0 -> var0.shapeAssetId)
      .addValidator(CustomConnectedBlockTemplateAsset.VALIDATOR_CACHE.getValidator())
      .documentation("The name of a ConnectedBlockTemplateAsset asset")
      .add()
      .<Map>append(
         new KeyedCodec<>("TemplateShapeBlockPatterns", new MapCodec<>(BlockPattern.CODEC, HashMap::new), true),
         (var0, var1) -> var0.shapeNameToBlockPatternMap = var1,
         var0 -> var0.shapeNameToBlockPatternMap
      )
      .documentation("You must specify all shapes as a BlockPattern. The shapes are as outlined in the keys of the ShapeTemplateAsset's map.")
      .add()
      .build();
   class="kw">private String shapeAssetId;
   @Nonnull
   class="kw">private Map<String, BlockPattern> shapeNameToBlockPatternMap = new Object2ObjectOpenHashMap();
   @Nonnull
   class="kw">private class="kw">final Int2ObjectMap<Set<String>> shapesPerBlockType = new Int2ObjectOpenHashMap();

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

   @Nonnull
   class="kw">public Map<String, BlockPattern> getShapeNameToBlockPatternMap() {
      class="kw">return this.shapeNameToBlockPatternMap;
   }

   @Override
   class="kw">public void updateCachedBlockTypes(@Nonnull BlockType var1, @Nonnull BlockTypeAssetMap<String, BlockType> var2) {
      super.updateCachedBlockTypes(var1, var2);

      for (Entry var4 : this.shapeNameToBlockPatternMap.entrySet()) {
         String var5 = var4.getKey();
         BlockPattern var6 = var4.getValue();
         Integer[] var7 = var6.getResolvedKeys();
         int var8 = var7.length;

         for (int var9 = 0; var9 < var8; var9++) {
            int var10 = var7[var9];
            Set var11 = (Set<String>)this.shapesPerBlockType.computeIfAbsent(var10, var0 -> new ObjectOpenHashSet());
            var11.add(var5);
         }
      }
   }

   @Nonnull
   class="kw">public Set<String> getShapesForBlockType(int var1) {
      class="kw">return (Set<String>)this.shapesPerBlockType.getOrDefault(var1, Set.of());
   }

   @Nullable
   class="kw">public CustomConnectedBlockTemplateAsset getShapeTemplateAsset() {
      class="kw">return CustomConnectedBlockTemplateAsset.getAssetMap().getAsset(this.shapeAssetId);
   }

   @Override
   class="kw">public boolean onlyUpdateOnPlacement() {
      CustomConnectedBlockTemplateAsset var1 = this.getShapeTemplateAsset();
      class="kw">return var1 != null && var1.isDontUpdateAfterInitialPlacement();
   }

   @Nonnull
   @Override
   class="kw">public Optional<ConnectedBlocksUtil.ConnectedBlockResult> getConnectedBlockType(
      @Nonnull ChunkStore var1, @Nonnull Vector3ic var2, @Nonnull BlockType var3, int var4, @Nonnull Vector3ic var5, boolean var6
   ) {
      CustomConnectedBlockTemplateAsset var7 = this.getShapeTemplateAsset();
      class="kw">return var7 == null ? Optional.empty() : var7.getConnectedBlockType(var1, var2, this, var3, var4, var5, true, var6);
   }
}