EntityStatsModule class

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

Файл: com/hypixel/hytale/server/core/modules/entitystats/EntityStatsModule.java

extends: JavaPlugin

Поля (19)

МодификаторыТипИмя
final PluginManifest MANIFEST
instance
Ref var1
Store var1
World var1
Int2FloatMap var1
var1
Int2ObjectMap var1
var1
int[] var1
var1
Store var2
ObjectIterator var2
int var2
EntityStatMap var3
Entry var3
int var4
int var4
int var4

Методы (17)

МодификаторыВозвратСигнатура
abstract throw new IllegalStateExceptionthrow new IllegalStateException("Missing default EntityStatType")
public PlayerRegenerateStatsSystempublic PlayerRegenerateStatsSystem()
for for(int var3 = 0; var3 < var0.length; var3++)
static EntityStatsModule getEntityStatsModule get()
public ComponentType<EntityStore, EntityStatMap> getEntityStatMapComponentTypeComponentType<EntityStore, EntityStatMap> getEntityStatMapComponentType()
public SystemType<EntityStore, EntityStatsSystems.StatModifyingSystem> getStatModifyingSystemTypeSystemType<EntityStore, EntityStatsSystems.StatModifyingSystem> getStatModifyingSystemType()
if if(var3 != null)
if if(var4 != Integer.MIN_VALUE)
if if(var1 == null)
if if(var4 != Integer.MIN_VALUE)
if if(var1 == null)
if if(var0 != null && var0.length != 0)
if if(var4 != Integer.MIN_VALUE)
if if(var2 != var0.length)
private void onLoadedAssetsEventvoid onLoadedAssetsEvent(LoadedAssetsEvent<String, EntityStatType, IndexedLookupTableAssetMap<String, EntityStatType>> var1)
static <K, T extends JsonAsset<K>, M extends AssetMap<K, T>> void onLoadedAssetsInvalidate<K, T extends JsonAsset<K>, M extends AssetMap<K, T>> void onLoadedAssetsInvalidate(LoadedAssetsEvent<K, T, M> var0)
abstract super super(var1)

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.AssetMap;
class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.assetstore.JsonAsset;
class="kw">import com.hypixel.hytale.assetstore.event.LoadedAssetsEvent;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedLookupTableAssetMap;
class="kw">import com.hypixel.hytale.common.plugin.PluginManifest;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.SystemType;
class="kw">import com.hypixel.hytale.server.core.asset.HytaleAssetStore;
class="kw">import com.hypixel.hytale.server.core.asset.type.entityeffect.config.EntityEffect;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.Item;
class="kw">import com.hypixel.hytale.server.core.asset.type.particle.config.ParticleSystem;
class="kw">import com.hypixel.hytale.server.core.asset.type.soundevent.config.SoundEvent;
class="kw">import com.hypixel.hytale.server.core.entity.Entity;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.modules.entity.AllLegacyLivingEntityTypesQuery;
class="kw">import com.hypixel.hytale.server.core.modules.entity.EntityModule;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.asset.DefaultEntityStatTypes;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.asset.EntityStatType;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.asset.EntityStatTypePacketGenerator;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.modifier.Modifier;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.modifier.StaticModifier;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.InteractionModule;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPlugin;
class="kw">import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
class="kw">import com.hypixel.hytale.server.core.universe.Universe;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.ints.Int2FloatMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap;
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.objects.Object2FloatMap;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectIterator;
class="kw">import it.unimi.dsi.fastutil.objects.Object2FloatMap.Entry;
class="kw">import java.util.Arrays;
class="kw">import java.util.Collections;
class="kw">import java.util.Map;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class EntityStatsModule class="kw">extends JavaPlugin {
   class="kw">public class="kw">static class="kw">final PluginManifest MANIFEST = PluginManifest.corePlugin(EntityStatsModule.class)
      .depends(EntityModule.class)
      .depends(InteractionModule.class)
      .build();
   class="kw">private class="kw">static EntityStatsModule instance;
   class="kw">private ComponentType<EntityStore, EntityStatMap> entityStatMapComponentType;
   class="kw">private SystemType<EntityStore, EntityStatsSystems.StatModifyingSystem> statModifyingSystemType;

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

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

   @Override
   class="kw">protected void setup() {
      Modifier.CODEC.register("Boost", StaticModifier.class, StaticModifier.ENTITY_CODEC);
      Modifier.CODEC.register("Static", StaticModifier.class, StaticModifier.ENTITY_CODEC);
      AssetRegistry.register(
         ((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
                                 EntityStatType.class, new IndexedLookupTableAssetMap<>(EntityStatType[]::new)
                              )
                              .setPath("Entity/Stats"))
                           .setCodec(EntityStatType.CODEC))
                        .setKeyFunction(EntityStatType::getId))
                     .setPacketGenerator(new EntityStatTypePacketGenerator())
                     .setReplaceOnRemove(EntityStatType::getUnknownFor))
                  .preLoadAssets(Collections.singletonList(EntityStatType.UNKNOWN)))
               .loadsAfter(SoundEvent.class, ParticleSystem.class))
            .build()
      );
      this.getEventRegistry().register(LoadedAssetsEvent.class, EntityStatType.class, this::onLoadedAssetsEvent);
      this.statModifyingSystemType = this.getEntityStoreRegistry().registerSystemType(EntityStatsSystems.StatModifyingSystem.class);
      this.entityStatMapComponentType = this.getEntityStoreRegistry().registerComponent(EntityStatMap.class, "EntityStats", EntityStatMap.CODEC);
      this.getEntityStoreRegistry().registerSystem(new EntityStatsSystems.Setup(this.entityStatMapComponentType));
      this.getEntityStoreRegistry().registerSystem(new EntityStatsModule.PlayerRegenerateStatsSystem());
      this.getEntityStoreRegistry().registerSystem(new EntityStatsSystems.Recalculate(this.entityStatMapComponentType));
      this.getEntityStoreRegistry().registerSystem(new EntityStatsSystems.EntityTrackerUpdate(this.entityStatMapComponentType));
      this.getEntityStoreRegistry().registerSystem(new EntityStatsSystems.EntityTrackerRemove(this.entityStatMapComponentType));
      this.getEntityStoreRegistry().registerSystem(new EntityStatsSystems.Changes(this.entityStatMapComponentType));
      this.getEntityStoreRegistry().registerSystem(new EntityStatsSystems.ClearChanges(this.entityStatMapComponentType));
      this.getEventRegistry().register(LoadedAssetsEvent.class, Item.class, var0 -> onLoadedAssetsInvalidate(var0));
      this.getEventRegistry().register(LoadedAssetsEvent.class, EntityEffect.class, var0 -> onLoadedAssetsInvalidate(var0));
   }

   @Override
   class="kw">protected void start() {
      DefaultEntityStatTypes.update();
      if (DefaultEntityStatTypes.getHealth() == Integer.MIN_VALUE
         || DefaultEntityStatTypes.getOxygen() == Integer.MIN_VALUE
         || DefaultEntityStatTypes.getMana() == Integer.MIN_VALUE
         || DefaultEntityStatTypes.getStamina() == Integer.MIN_VALUE
         || DefaultEntityStatTypes.getSignatureEnergy() == Integer.MIN_VALUE
         || DefaultEntityStatTypes.getAmmo() == Integer.MIN_VALUE) {
         throw new IllegalStateException("Missing class="kw">default EntityStatType");
      }
   }

   @Nullable
   @Deprecated(forRemoval = true)
   class="kw">public class="kw">static EntityStatMap get(@Nonnull Entity var0) {
      Ref var1 = var0.getReference();
      if (var1 != null && var1.isValid()) {
         Store var2 = var1.getStore();
         class="kw">return var2.getComponent(var1, get().getEntityStatMapComponentType());
      } else {
         class="kw">return null;
      }
   }

   class="kw">private void onLoadedAssetsEvent(LoadedAssetsEvent<String, EntityStatType, IndexedLookupTableAssetMap<String, EntityStatType>> var1) {
      DefaultEntityStatTypes.update();
      Universe.get()
         .getWorlds()
         .forEach(
            (var0, var1x) -> var1x.execute(
               () -> {
                  Store var1 = var1x.getEntityStore().getStore();
                  var1.forEachEntityParallel(
                     EntityStatMap.getComponentType(), (var0x, var1xx, var2) -> var1xx.getComponent(var0x, EntityStatMap.getComponentType()).update()
                  );
               }
            )
         );
   }

   class="kw">private class="kw">static <K, T class="kw">extends JsonAsset<K>, M class="kw">extends AssetMap<K, T>> void onLoadedAssetsInvalidate(LoadedAssetsEvent<K, T, M> var0) {
      Universe.get().getWorlds().forEach((var0x, var1) -> var1.execute(() -> {
         World var1 = var1.getEntityStore().getStore();
         var1.forEachEntityParallel(AllLegacyLivingEntityTypesQuery.INSTANCE, (var0xx, var1x, var2) -> {
            EntityStatMap var3 = var1x.getComponent(var0xx, EntityStatMap.getComponentType());
            if (var3 != null) {
               var3.getStatModifiersManager().scheduleRecalculate();
            }
         });
      }));
   }

   @Nullable
   class="kw">public class="kw">static Int2FloatMap resolveEntityStats(@Nullable Object2FloatMap<String> var0) {
      if (var0 != null && !var0.isEmpty()) {
         Int2FloatMap var1 = null;
         ObjectIterator var2 = var0.object2FloatEntrySet().iterator();

         while (var2.hasNext()) {
            Entry var3 = (Entry<String>)var2.next();
            int var4 = EntityStatType.getAssetMap().getIndex((String)var3.getKey());
            if (var4 != Integer.MIN_VALUE) {
               if (var1 == null) {
                  var1 = new Int2FloatOpenHashMap();
               }

               var1.put(var4, var3.getFloatValue());
            }
         }

         class="kw">return var1;
      } else {
         class="kw">return null;
      }
   }

   @Nullable
   class="kw">public class="kw">static <T> Int2ObjectMap<T> resolveEntityStats(@Nullable Map<String, T> var0) {
      if (var0 != null && !var0.isEmpty()) {
         Int2ObjectMap var1 = null;

         for (java.util.Map.Entry var3 : var0.entrySet()) {
            int var4 = EntityStatType.getAssetMap().getIndex(var3.getKey());
            if (var4 != Integer.MIN_VALUE) {
               if (var1 == null) {
                  var1 = new Int2ObjectOpenHashMap();
               }

               var1.put(var4, var3.getValue());
            }
         }

         class="kw">return var1;
      } else {
         class="kw">return null;
      }
   }

   @Nullable
   class="kw">public class="kw">static int[] resolveEntityStats(@Nullable String[] var0) {
      if (var0 != null && var0.length != 0) {
         int[] var1 = new int[var0.length];
         int var2 = 0;

         for (int var3 = 0; var3 < var0.length; var3++) {
            int var4 = EntityStatType.getAssetMap().getIndex(var0[var3]);
            if (var4 != Integer.MIN_VALUE) {
               var1[var2++] = var4;
            }
         }

         if (var2 != var0.length) {
            var1 = Arrays.copyOf(var1, var2);
         }

         class="kw">return var1;
      } else {
         class="kw">return null;
      }
   }

   class="kw">public ComponentType<EntityStore, EntityStatMap> getEntityStatMapComponentType() {
      class="kw">return this.entityStatMapComponentType;
   }

   class="kw">public SystemType<EntityStore, EntityStatsSystems.StatModifyingSystem> getStatModifyingSystemType() {
      class="kw">return this.statModifyingSystemType;
   }

   class="kw">public class PlayerRegenerateStatsSystem class="kw">extends EntityStatsSystems.Regenerate<Player> {
      class="kw">public PlayerRegenerateStatsSystem() {
         super(EntityStatsModule.this.entityStatMapComponentType, Player.getComponentType());
      }
   }
}