StateData class

Пакет: com.hypixel.hytale.server.core.asset.type.blocktype.config

Файл: com/hypixel/hytale/server/core/asset/type/blocktype/config/StateData.java

Поля (6)

МодификаторыТипИмя
final String NULL_STATE_ID
String var1
Map var2
Map var2
String var5
int var6

Методы (6)

МодификаторыВозвратСигнатура
static void addDefinitionsvoid addDefinitions()
public void copyFromvoid copyFrom(@Nullable StateData var1)
if if(var0.stateToBlock != null)
if if(this.stateToBlock == null)
if if(var6 != Integer.MIN_VALUE)
if if(var1 != null && this.stateToBlock == null)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.asset.type.blocktype.config;

class="kw">import com.hypixel.hytale.assetstore.AssetExtraInfo;
class="kw">import com.hypixel.hytale.assetstore.codec.ContainedAssetCodec;
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 it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
class="kw">import java.util.Collections;
class="kw">import java.util.HashMap;
class="kw">import java.util.Map;
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">public class StateData {
   class="kw">public class="kw">static class="kw">final String NULL_STATE_ID = "class="kw">default";
   class="kw">public class="kw">static class="kw">final BuilderCodec.Builder<StateData> CODEC_BUILDER = BuilderCodec.builder(StateData.class, StateData::new).afterDecode((var0, var1) -> {
      if (var0.stateToBlock != null) {
         Map var2 = new Object2ObjectOpenHashMap();

         for (Entry var4 : var0.stateToBlock.entrySet()) {
            var2.put(var4.getValue(), var4.getKey());
         }

         var0.blockToState = Collections.unmodifiableMap(var2);
      }
   });
   class="kw">public class="kw">static class="kw">final BuilderCodec<StateData> CODEC = CODEC_BUILDER.build();
   class="kw">private Map<String, String> stateToBlock;
   class="kw">private Map<String, String> blockToState;

   class="kw">protected StateData() {
   }

   @Nullable
   class="kw">public String getBlockForState(String var1) {
      class="kw">return this.stateToBlock == null ? null : this.stateToBlock.get(var1);
   }

   @Nullable
   class="kw">public String getStateForBlock(String var1) {
      class="kw">return this.blockToState == null ? null : this.blockToState.get(var1);
   }

   @Nullable
   class="kw">public Set<String> getStateNames() {
      class="kw">return this.stateToBlock == null ? null : this.stateToBlock.keySet();
   }

   @Nullable
   class="kw">public Map<String, Integer> toPacket(@Nonnull BlockType var1) {
      if (this.stateToBlock == null) {
         class="kw">return null;
      }

      Map var2 = new Object2IntOpenHashMap();

      for (String var4 : this.stateToBlock.keySet()) {
         String var5 = var1.getBlockKeyForState(var4);
         int var6 = BlockType.getAssetMap().getIndex(var5);
         if (var6 != Integer.MIN_VALUE) {
            var2.put(var4, var6);
         }
      }

      class="kw">return var2;
   }

   @Nonnull
   @Override
   class="kw">public String toString() {
      class="kw">return "StateData{stateToBlock='" + this.stateToBlock + "'}";
   }

   class="kw">public void copyFrom(@Nullable StateData var1) {
      if (var1 != null && this.stateToBlock == null) {
         this.stateToBlock = var1.stateToBlock;
         this.blockToState = var1.blockToState;
      }
   }

   class="kw">static void addDefinitions() {
      CODEC_BUILDER.append(
            new KeyedCodec<>(
               "Definitions",
               new MapCodec(
                  new ContainedAssetCodec<>(BlockType.class, BlockType.CODEC, ContainedAssetCodec.Mode.INJECT_PARENT, StateData::generateBlockKey),
                  HashMap::new
               )
            ),
            (var0, var1) -> var0.stateToBlock = var1,
            var0 -> var0.stateToBlock
         )
         .add();
   }

   @Nonnull
   class="kw">private class="kw">static String generateBlockKey(@Nonnull AssetExtraInfo<String> var0) {
      String var1 = var0.getKey();
      class="kw">return "*" + var1 + "_" + var0.peekKey('_');
   }
}