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