TagSetLookupTable class

Пакет: com.hypixel.hytale.builtin.tagset

Файл: com/hypixel/hytale/builtin/tagset/TagSetLookupTable.java

Поля (17)

МодификаторыТипИмя
String[] var16
String[] var18
String[] var21
IntArrayList var4
int var5
IntOpenHashSet var6
Entry var6
int var6
int var7
int var7
IntSet var7
ObjectIterator var7
IntSet var7
var7
var7
String[] var8
TagSet var8

Методы (16)

МодификаторыВозвратСигнатура
abstract throw new IllegalStateExceptionthrow new IllegalStateException(var5 + ": ", var9)
abstract throw new IllegalStateExceptionthrow new IllegalStateException("Cyclic reference to set detected: " + var1)
private void consumeSetvoid consumeSet(String var1, @Nonnull Map<String, T> var2, @Nonnull Object2IntMap<String> var3, @Nonnull Object2IntMap<String> var4, @Nonnull IntArrayList var5, @Nonnull Consumer<IntSet> var6)
private void consumeTagvoid consumeTag(@Nonnull String var1, @Nonnull T var2, @Nonnull Object2IntMap<String> var3, @Nonnull IntConsumer var4)
private void createTagMapvoid createTagMap(@Nonnull Map<String, T> var1, @Nonnull Object2IntMap<String> var2, @Nonnull Object2IntMap<String> var3)
for for(String var12 : var8)
for for(String var13 : var16)
for for(String var14 : var18)
for for(String var15 : var21)
if if(var8 != null)
if if(var16 != null)
if if(var18 != null)
if if(var21 != null)
if if(var7 != null)
if if(var5 >= 0)
if if(var8 != null)

Исходный код

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

class="kw">import com.hypixel.hytale.common.util.StringUtil;
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.ints.IntArrayList;
class="kw">import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
class="kw">import it.unimi.dsi.fastutil.ints.IntSet;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntMaps;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectIterator;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntMap.Entry;
class="kw">import java.util.Map;
class="kw">import java.util.function.Consumer;
class="kw">import java.util.function.IntConsumer;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class TagSetLookupTable<T class="kw">extends TagSet> {
   @Nonnull
   class="kw">private Int2ObjectMap<IntSet> tagMatcher = new Int2ObjectOpenHashMap();

   class="kw">public TagSetLookupTable(@Nonnull Map<String, T> var1, @Nonnull Object2IntMap<String> var2, @Nonnull Object2IntMap<String> var3) {
      this.createTagMap(var1, var2, var3);
   }

   class="kw">private void createTagMap(@Nonnull Map<String, T> var1, @Nonnull Object2IntMap<String> var2, @Nonnull Object2IntMap<String> var3) {
      IntArrayList var4 = new IntArrayList();
      var1.forEach((var5, var6) -> {
         int var7 = var2.getOrDefault(var5, -1);
         if (var7 < 0 || !this.tagMatcher.containsKey(var7)) {
            try {
               this.createTagSet((T)var6, var1, var2, var3, var4);
            } catch (IllegalStateException var9) {
               throw new IllegalStateException(var5 + ": ", var9);
            }

            var4.clear();
         }
      });
   }

   @Nonnull
   class="kw">private IntSet createTagSet(
      @Nonnull T var1, @Nonnull Map<String, T> var2, @Nonnull Object2IntMap<String> var3, @Nonnull Object2IntMap<String> var4, @Nonnull IntArrayList var5
   ) {
      IntOpenHashSet var6 = new IntOpenHashSet();
      int var7 = var3.getInt(var1.getId());
      if (var5.contains(var7)) {
         throw new IllegalStateException("Cyclic reference to set detected: " + var1.getId());
      }

      var5.add(var7);
      this.tagMatcher.put(var7, var6);
      if (!var4.isEmpty()) {
         String[] var8 = var1.getIncludedTagSets();
         if (var8 != null) {
            for (String var12 : var8) {
               this.consumeSet(var12, var2, var3, var4, var5, var6::addAll);
            }
         }

         String[] var16 = var1.getExcludedTagSets();
         if (var16 != null) {
            for (String var13 : var16) {
               this.consumeSet(var13, var2, var3, var4, var5, var6::removeAll);
            }
         }

         String[] var18 = var1.getIncludedTags();
         if (var18 != null) {
            for (String var14 : var18) {
               this.consumeTag(var14, var1, var4, var6::add);
            }
         }

         String[] var21 = var1.getExcludedTags();
         if (var21 != null) {
            for (String var15 : var21) {
               this.consumeTag(var15, var1, var4, var6::remove);
            }
         }
      }

      class="kw">return var6;
   }

   class="kw">private void consumeSet(
      String var1,
      @Nonnull Map<String, T> var2,
      @Nonnull Object2IntMap<String> var3,
      @Nonnull Object2IntMap<String> var4,
      @Nonnull IntArrayList var5,
      @Nonnull Consumer<IntSet> var6
   ) {
      IntSet var7 = this.getOrCreateTagSet(var1, var2, var3, var4, var5);
      if (var7 != null) {
         var6.accept(var7);
      }
   }

   class="kw">private void consumeTag(@Nonnull String var1, @Nonnull T var2, @Nonnull Object2IntMap<String> var3, @Nonnull IntConsumer var4) {
      if (StringUtil.isGlobPattern(var1)) {
         ObjectIterator var7 = Object2IntMaps.fastIterator(var3);

         while (var7.hasNext()) {
            Entry var6 = (Entry<String>)var7.next();
            if (StringUtil.isGlobMatching(var1, (String)var6.getKey())) {
               var4.accept(var6.getIntValue());
            }
         }
      } else {
         int var5 = var3.getOrDefault(var1, -1);
         if (var5 >= 0) {
            var4.accept(var5);
         } else {
            TagSetPlugin.get()
               .getLogger()
               .at(Level.WARNING)
               .log("Tag Set '%s' references '%s' which is not a pattern and does not otherwise exist", var2.getId(), var1);
         }
      }
   }

   @Nullable
   class="kw">private IntSet getOrCreateTagSet(
      String var1, @Nonnull Map<String, T> var2, @Nonnull Object2IntMap<String> var3, @Nonnull Object2IntMap<String> var4, @Nonnull IntArrayList var5
   ) {
      int var6 = var3.getOrDefault(var1, -1);
      IntSet var7 = null;
      if (var6 >= 0 && this.tagMatcher.containsKey(var6)) {
         if (var5.contains(var6)) {
            throw new IllegalStateException("Cyclic reference to set detected: " + var1);
         }

         var5.add(var6);
         var7 = (IntSet)this.tagMatcher.get(var6);
      } else {
         TagSet var8 = var2.get(var1);
         if (var8 != null) {
            var7 = this.createTagSet(var8, var2, var3, var4, var5);
         } else {
            TagSetPlugin.get().getLogger().at(Level.WARNING).log("Creating tag sets: Tag Set '%s' does not exist, but is being referenced as a tag", var1);
         }
      }

      var5.removeInt(var5.size() - 1);
      class="kw">return var7;
   }

   @Nonnull
   class="kw">public Int2ObjectMap<IntSet> getFlattenedSet() {
      class="kw">return this.tagMatcher;
   }
}