BlockSetModule class

Пакет: com.hypixel.hytale.server.core.modules.blockset

Файл: com/hypixel/hytale/server/core/modules/blockset/BlockSetModule.java

extends: JavaPlugin

Поля (23)

МодификаторыТипИмя
INSTANCE
final PluginManifest MANIFEST
return
return
Int2ObjectOpenHashMap var2
IntSet var3
IntSet var3
IntOpenHashSet var4
Map var4
Map var4
int var4
int var5
AssetExtraInfo.Data var5
IntOpenHashSet var5
BlockSet var5
IntSet var5
var5
boolean[] var5
IntSet var6
IntSet var6
IntSet var6
IntOpenHashSet var7
int var8

Методы (32)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Unknown key! " + var3)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Unknown key! " + var6)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Unknown key! " + var2)
abstract return new IntOpenHashSetreturn new IntOpenHashSet()
public boolean blockInSetboolean blockInSet(int var1, int var2)
public boolean blockInSetboolean blockInSet(int var1, @Nullable BlockType var2)
public boolean blockInSetboolean blockInSet(int var1, @Nullable String var2)
private void consumevoid consume(@Nullable String[] var1, @Nonnull Map<String, IntSet> var2, String var3, @Nonnull Consumer<IntSet> var4)
private void consumevoid consume(@Nullable String[][] var1, @Nonnull BlockSetLookupTable var2, @Nonnull Consumer<IntSet> var3)
private void consumeCategoryvoid consumeCategory(@Nullable String[] var1, @Nonnull Consumer<IntSet> var2, @Nonnull BlockSetLookupTable var3)
private void consumeEntryvoid consumeEntry(@Nonnull String var1, @Nonnull Consumer<IntSet> var2, @Nonnull Map<String, IntSet> var3, String var4)
for for(String var8 : var1)
for for(String[] var7 : var1)
for for(int var7 = 1; var7 < var1.length; var7++)
static BlockSetModule getInstanceBlockSetModule getInstance()
if if(var5 == Integer.MIN_VALUE)
if if(var6 == null)
if if(var8 == Integer.MIN_VALUE)
if if(var1 != null)
if if(var1 != null)
if if(var5 == null)
if if(var1 != null && var1.length != 0)
if if(var5 == null)
if if(var5 == null)
if if(!var5[0])
if if(var6 == null)
if if(var2 == null)
if if(var3 == null)
if if(var4 == Integer.MIN_VALUE)
private void onBlockSetsChangedvoid onBlockSetsChanged(LoadedAssetsEvent<String, BlockSet, DefaultAssetMap<String, BlockSet>> var1)
private void onBlockTypesChangedvoid onBlockTypesChanged(@Nonnull LoadedAssetsEvent<String, BlockType, BlockTypeAssetMap<String, BlockType>> var1)
abstract super super(var1)

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.AssetExtraInfo;
class="kw">import com.hypixel.hytale.assetstore.event.LoadedAssetsEvent;
class="kw">import com.hypixel.hytale.assetstore.map.BlockTypeAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
class="kw">import com.hypixel.hytale.common.plugin.PluginManifest;
class="kw">import com.hypixel.hytale.common.util.StringUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.blockset.config.BlockSet;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.modules.blockset.commands.BlockSetCommand;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPlugin;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectMaps;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.ints.IntCollection;
class="kw">import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
class="kw">import it.unimi.dsi.fastutil.ints.IntSet;
class="kw">import java.util.Map;
class="kw">import java.util.function.Consumer;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

@Deprecated(forRemoval = true)
class="kw">public class BlockSetModule class="kw">extends JavaPlugin {
   class="kw">public class="kw">static class="kw">final PluginManifest MANIFEST = PluginManifest.corePlugin(BlockSetModule.class).build();
   class="kw">private class="kw">static BlockSetModule INSTANCE;
   @Nonnull
   class="kw">private Int2ObjectMap<IntSet> flattenedBlockSets = new Int2ObjectOpenHashMap();
   @Nonnull
   class="kw">private Int2ObjectMap<IntSet> unmodifiableFlattenedBlockSets = Int2ObjectMaps.unmodifiable(this.flattenedBlockSets);
   class="kw">private BlockSetLookupTable blockSetLookupTable;

   class="kw">public BlockSetModule(@Nonnull JavaPluginInit var1) {
      super(var1);
      INSTANCE = this;
   }

   @Override
   class="kw">protected void setup() {
      this.getCommandRegistry().registerCommand(new BlockSetCommand(this));
      this.getEventRegistry().register(LoadedAssetsEvent.class, BlockType.class, this::onBlockTypesChanged);
      this.getEventRegistry().register(LoadedAssetsEvent.class, BlockSet.class, this::onBlockSetsChanged);
   }

   class="kw">private void onBlockTypesChanged(@Nonnull LoadedAssetsEvent<String, BlockType, BlockTypeAssetMap<String, BlockType>> var1) {
      this.blockSetLookupTable = new BlockSetLookupTable(((BlockTypeAssetMap)var1.getAssetMap()).getAssetMap());
      this.flattenedBlockSets = this.flattenBlockSets(this.blockSetLookupTable);
      this.unmodifiableFlattenedBlockSets = Int2ObjectMaps.unmodifiable(this.flattenedBlockSets);
   }

   class="kw">private void onBlockSetsChanged(LoadedAssetsEvent<String, BlockSet, DefaultAssetMap<String, BlockSet>> var1) {
      this.blockSetLookupTable = new BlockSetLookupTable(BlockType.getAssetMap().getAssetMap());
      this.flattenedBlockSets = this.flattenBlockSets(this.blockSetLookupTable);
      this.unmodifiableFlattenedBlockSets = Int2ObjectMaps.unmodifiable(this.flattenedBlockSets);
   }

   @Nonnull
   class="kw">private Int2ObjectMap<IntSet> flattenBlockSets(@Nonnull BlockSetLookupTable var1) {
      Int2ObjectOpenHashMap var2 = new Int2ObjectOpenHashMap();
      if (!var1.isEmpty()) {
         BlockSet.getAssetMap().getAssetMap().forEach((var3, var4) -> {
            int var5 = BlockSet.getAssetMap().getIndex(var3);
            if (var5 == Integer.MIN_VALUE) {
               throw new IllegalArgumentException("Unknown key! " + var3);
            }

            IntSet var6 = (IntSet)var2.get(var5);
            if (var6 == null) {
               IntOpenHashSet var7 = this.createSet(var4, var1, var2);
               var7.trim();
               var2.put(var5, var7);
            }
         });
      }

      class="kw">return Int2ObjectMaps.unmodifiable(var2);
   }

   @Nonnull
   class="kw">private IntOpenHashSet createSet(@Nonnull BlockSet var1, @Nonnull BlockSetLookupTable var2, @Nonnull Int2ObjectMap<IntSet> var3) {
      IntOpenHashSet var4 = new IntOpenHashSet();
      AssetExtraInfo.Data var5 = var1.getData();
      if (var5 != null && var5.getParentKey() class="kw">instanceof String var6 && !var6.isEmpty()) {
         int var8 = BlockSet.getAssetMap().getIndex(var6);
         if (var8 == Integer.MIN_VALUE) {
            throw new IllegalArgumentException("Unknown key! " + var6);
         }

         var4.addAll((IntCollection)var3.computeIfAbsent(var8, var4x -> {
            IntOpenHashSet var5 = this.createSet(var6, var2, var3);
            var5.trim();
            class="kw">return var5;
         }));
      }

      if (var1.isIncludeAll()) {
         var2.addAll(var4);
      }

      this.consume(var1.getIncludeBlockTypes(), var2.getBlockNameIdMap(), "block name", var4::addAll);
      this.consume(var1.getIncludeBlockGroups(), var2.getGroupNameIdMap(), "group name", var4::addAll);
      this.consume(var1.getIncludeHitboxTypes(), var2.getHitboxNameIdMap(), "hitbox name", var4::addAll);
      this.consume(var1.getExcludeBlockTypes(), var2.getBlockNameIdMap(), "block name", var4::removeAll);
      this.consume(var1.getExcludeBlockGroups(), var2.getGroupNameIdMap(), "group name", var4::removeAll);
      this.consume(var1.getExcludeHitboxTypes(), var2.getHitboxNameIdMap(), "hitbox name", var4::removeAll);
      this.consume(var1.getIncludeCategories(), var2, var4::addAll);
      this.consume(var1.getExcludeCategories(), var2, var4::removeAll);
      class="kw">return var4;
   }

   class="kw">private void consume(@Nullable String[] var1, @Nonnull Map<String, IntSet> var2, String var3, @Nonnull Consumer<IntSet> var4) {
      if (var1 != null) {
         for (String var8 : var1) {
            this.consumeEntry(var8, var4, var2, var3);
         }
      }
   }

   class="kw">private void consume(@Nullable String[][] var1, @Nonnull BlockSetLookupTable var2, @Nonnull Consumer<IntSet> var3) {
      if (var1 != null) {
         for (String[] var7 : var1) {
            this.consumeCategory(var7, var3, var2);
         }
      }
   }

   @Nonnull
   class="kw">private IntOpenHashSet createSet(String var1, @Nonnull BlockSetLookupTable var2, @Nonnull Int2ObjectMap<IntSet> var3) {
      Map var4 = BlockSet.getAssetMap().getAssetMap();
      BlockSet var5 = var4.get(var1);
      if (var5 == null) {
         this.getLogger().at(Level.WARNING).log("Creating block sets: Failed to find block set '%s'", var1);
         class="kw">return new IntOpenHashSet();
      } else {
         class="kw">return this.createSet(var5, var2, var3);
      }
   }

   class="kw">private void consumeCategory(@Nullable String[] var1, @Nonnull Consumer<IntSet> var2, @Nonnull BlockSetLookupTable var3) {
      if (var1 != null && var1.length != 0) {
         Map var4 = var3.getCategoryIdMap();
         IntSet var5 = var4.get(var1[0]);
         if (var5 == null) {
            this.getLogger().at(Level.WARNING).log("Creating block sets: '%s' does not match any block category", var1[0]);
         } else if (var1.length == 1) {
            var2.accept(var5);
         } else {
            IntSet var6 = new IntOpenHashSet(var5);

            for (int var7 = 1; var7 < var1.length; var7++) {
               var5 = var4.get(var1[var7]);
               if (var5 == null) {
                  this.getLogger().at(Level.WARNING).log("Creating block sets: '%s' does not match any block category", var1[var7]);
                  class="kw">return;
               }

               var6.removeAll(var5);
               if (var6.isEmpty()) {
                  class="kw">return;
               }
            }

            var2.accept(var6);
         }
      }
   }

   class="kw">private void consumeEntry(@Nonnull String var1, @Nonnull Consumer<IntSet> var2, @Nonnull Map<String, IntSet> var3, String var4) {
      if (StringUtil.isGlobPattern(var1)) {
         boolean[] var5 = new boolean[]{false};
         var3.forEach((var3x, var4x) -> {
            if (StringUtil.isGlobMatching(var1, var3x)) {
               var2.accept(var4x);
               var5[0] = true;
            }
         });
         if (!var5[0]) {
            this.getLogger().at(Level.FINE).log("Creating block sets: '%s' does not match any %s", var1, var4);
         }
      } else {
         IntSet var6 = var3.get(var1);
         if (var6 == null) {
            this.getLogger().at(Level.WARNING).log("Creating block sets: Failed to find %s '%s'", var4, var1);
         } else {
            var2.accept(var6);
         }
      }
   }

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

   class="kw">public boolean blockInSet(int var1, int var2) {
      IntSet var3 = (IntSet)this.flattenedBlockSets.get(var1);
      class="kw">return var3 != null && var3.contains(var2);
   }

   class="kw">public boolean blockInSet(int var1, @Nullable BlockType var2) {
      class="kw">return var2 != null && this.blockInSet(var1, var2.getId());
   }

   class="kw">public boolean blockInSet(int var1, @Nullable String var2) {
      if (var2 == null) {
         class="kw">return false;
      } else {
         IntSet var3 = (IntSet)this.flattenedBlockSets.get(var1);
         if (var3 == null) {
            class="kw">return false;
         } else {
            int var4 = BlockType.getAssetMap().getIndex(var2);
            if (var4 == Integer.MIN_VALUE) {
               throw new IllegalArgumentException("Unknown key! " + var2);
            } else {
               class="kw">return var3.contains(var4);
            }
         }
      }
   }

   class="kw">public class="kw">static BlockSetModule getInstance() {
      class="kw">return INSTANCE;
   }
}