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;
}
}
}