ItemModule class

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

Файл: com/hypixel/hytale/server/core/modules/item/ItemModule.java

extends: JavaPlugin

Поля (17)

МодификаторыТипИмя
final PluginManifest MANIFEST
instance
List var1
int var2
ItemCategory[] var2
ItemDropList var2
int var3
List var3
ThreadLocalRandom var4
List var5
ItemWeapon var6
DamageBreakdown var7
ItemCategory[] var7
DamageBreakdown var8
String var8
int var8
ItemCategory[] var9

Методы (12)

МодификаторыВозвратСигнатура
private void computeWeaponDatavoid computeWeaponData(@Nonnull LoadedAssetsEvent<String, Item, ?> var1)
static boolean existsboolean exists(String var0)
private void flattenCategoriesvoid flattenCategories(String var1, @Nonnull ItemCategory[] var2, @Nonnull List<String> var3)
for for(ItemCategory var6 : var2)
for for(ItemCategory var7 : var2)
for for(ItemDrop var7 : var5)
static ItemModule getItemModule get()
if if(var7 != null)
if if(var9 != null)
if if(var1 == null)
if if(var8 > 0)
abstract super super(var1)

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.event.LoadedAssetsEvent;
class="kw">import com.hypixel.hytale.codec.lookup.Priority;
class="kw">import com.hypixel.hytale.common.plugin.PluginManifest;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.Item;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.ItemCategory;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.ItemDrop;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.ItemDropList;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.ItemWeapon;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.damageData.DamageBreakdown;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.damageData.WeaponDamageDataCollector;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.inventory.container.EmptyItemContainer;
class="kw">import com.hypixel.hytale.server.core.inventory.container.ItemContainer;
class="kw">import com.hypixel.hytale.server.core.inventory.container.SimpleItemContainer;
class="kw">import com.hypixel.hytale.server.core.modules.item.commands.SpawnItemCommand;
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.objects.ObjectArrayList;
class="kw">import java.util.Collections;
class="kw">import java.util.List;
class="kw">import java.util.concurrent.ThreadLocalRandom;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class ItemModule class="kw">extends JavaPlugin {
   class="kw">public class="kw">static class="kw">final PluginManifest MANIFEST = PluginManifest.corePlugin(ItemModule.class).build();
   class="kw">private class="kw">static ItemModule instance;

   class="kw">public class="kw">static ItemModule get() {
      class="kw">return instance;
   }

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

   @Override
   class="kw">protected void setup() {
      this.getCommandRegistry().registerCommand(new SpawnItemCommand());
      ItemContainer.CODEC.register(Priority.DEFAULT, "Simple", SimpleItemContainer.class, SimpleItemContainer.CODEC);
      ItemContainer.CODEC.register("Empty", EmptyItemContainer.class, EmptyItemContainer.CODEC);
      this.getEventRegistry().register(LoadedAssetsEvent.class, Item.class, this::computeWeaponData);
   }

   class="kw">private void computeWeaponData(@Nonnull LoadedAssetsEvent<String, Item, ?> var1) {
      int var2 = 0;
      int var3 = 0;

      for (Item var5 : var1.getLoadedAssets().values()) {
         if (var5.getWeapon() != null) {
            var2++;
            ItemWeapon var6 = var5.unshareWeapon();
            DamageBreakdown var7 = WeaponDamageDataCollector.calculate(var5, InteractionType.Primary);
            var6.setBasicDamageBreakdown(var7);
            DamageBreakdown var8 = WeaponDamageDataCollector.calculate(var5, InteractionType.Ability1);
            var6.setUltimateDamageBreakdown(var8);
            var5.invalidatePacketCache();
            if (!var7.entries().isEmpty()) {
               var3++;
            }
         }
      }

      this.getLogger().at(Level.INFO).log("Computed damage data for %d of %d weapon items", var3, var2);
   }

   @Nonnull
   class="kw">public List<String> getFlatItemCategoryList() {
      List var1 = new ObjectArrayList();
      ItemCategory[] var2 = ItemCategory.getAssetMap().getAssetMap().values().toArray(ItemCategory[]::new);

      for (ItemCategory var6 : var2) {
         ItemCategory[] var7 = var6.getChildren();
         if (var7 != null) {
            this.flattenCategories(var6.getId() + ".", var7, var1);
         }
      }

      class="kw">return var1;
   }

   class="kw">private void flattenCategories(String var1, @Nonnull ItemCategory[] var2, @Nonnull List<String> var3) {
      for (ItemCategory var7 : var2) {
         String var8 = var1 + var7.getId();
         var3.add(var8);
         ItemCategory[] var9 = var7.getChildren();
         if (var9 != null) {
            this.flattenCategories(var8 + ".", var9, var3);
         }
      }
   }

   @Nonnull
   class="kw">public List<ItemStack> getRandomItemDrops(@Nullable String var1) {
      if (this.isDisabled()) {
         class="kw">return Collections.emptyList();
      }

      if (var1 == null) {
         class="kw">return Collections.emptyList();
      }

      ItemDropList var2 = ItemDropList.getAssetMap().getAsset(var1);
      if (var2 != null && var2.getContainer() != null) {
         List var3 = new ObjectArrayList();
         ThreadLocalRandom var4 = ThreadLocalRandom.current();
         List var5 = new ObjectArrayList();
         var2.getContainer().populateDrops(var5, var4::nextDouble, var1);

         for (ItemDrop var7 : var5) {
            if (var7 != null && var7.getItemId() != null) {
               int var8 = var7.getRandomQuantity(var4);
               if (var8 > 0) {
                  var3.add(new ItemStack(var7.getItemId(), var8, var7.getMetadata()));
               }
            } else {
               ((HytaleLogger.Api)this.getLogger().atWarning())
                  .log("ItemModule::getRandomItemDrops - Tried to create ItemDrop for non-existent item in drop list id '%s'", var1);
            }
         }

         class="kw">return var3;
      } else {
         class="kw">return Collections.emptyList();
      }
   }

   class="kw">public class="kw">static boolean exists(String var0) {
      if ("Empty".equals(var0)) {
         class="kw">return true;
      } else {
         class="kw">return "Unknown".equals(var0) ? true : Item.getAssetMap().getAsset(var0) != null;
      }
   }
}