StaminaSystems class

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

Файл: com/hypixel/hytale/server/core/modules/entity/stamina/StaminaSystems.java

Поля (15)

МодификаторыТипИмя
private final Set<Dependency<EntityStore>> dependencies
private final ComponentType<EntityStore, EntityStatMap> entityStatMapComponentType
private final ComponentType<EntityStore, MovementStatesComponent> movementStatesComponentType
private final ComponentType<EntityStore, Player> playerComponentType
private final Query<EntityStore> query
return
private final ResourceType<EntityStore, SprintStaminaRegenDelay> sprintRegenDelayResourceType
SprintStaminaRegenDelay var2
GameplayConfig var3
StaminaGameplayConfig var4
StaminaGameplayConfig.SprintRegenDelayConfig var5
MovementStatesComponent var6
SprintStaminaRegenDelay var7
EntityStatMap var8
EntityStatValue var9

Методы (6)

МодификаторыВозвратСигнатура
public SprintStaminaEffectSystempublic SprintStaminaEffectSystem()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public void tickpublic void tick(float var1, int var2, @Nonnull Store<EntityStore> var3)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
protected boolean updateResourceprotected boolean updateResource(@Nonnull Store<EntityStore> var1)

Исходный код

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

class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.ResourceType;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.dependency.Dependency;
class="kw">import com.hypixel.hytale.component.dependency.Order;
class="kw">import com.hypixel.hytale.component.dependency.SystemDependency;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.system.tick.EntityTickingSystem;
class="kw">import com.hypixel.hytale.server.core.asset.type.gameplay.GameplayConfig;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.movement.MovementStatesComponent;
class="kw">import com.hypixel.hytale.server.core.entity.movement.MovementStatesSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatValue;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatsModule;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;

class="kw">public class StaminaSystems {
   class="kw">public StaminaSystems() {
   }

   class="kw">public class="kw">static class SprintStaminaEffectSystem class="kw">extends EntityTickingSystem<EntityStore> {
      class="kw">private class="kw">final ComponentType<EntityStore, Player> playerComponentType = Player.getComponentType();
      class="kw">private class="kw">final ComponentType<EntityStore, EntityStatMap> entityStatMapComponentType = EntityStatMap.getComponentType();
      class="kw">private class="kw">final ComponentType<EntityStore, MovementStatesComponent> movementStatesComponentType = MovementStatesComponent.getComponentType();
      class="kw">private class="kw">final ResourceType<EntityStore, SprintStaminaRegenDelay> sprintRegenDelayResourceType = SprintStaminaRegenDelay.getResourceType();
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(this.playerComponentType, this.entityStatMapComponentType, this.movementStatesComponentType);
      class="kw">private class="kw">final Set<Dependency<EntityStore>> dependencies = Set.of(
         new SystemDependency<>(Order.BEFORE, MovementStatesSystems.TickingSystem.class),
         new SystemDependency<>(Order.BEFORE, EntityStatsModule.PlayerRegenerateStatsSystem.class)
      );

      class="kw">public SprintStaminaEffectSystem() {
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }

      @Nonnull
      @Override
      class="kw">public Set<Dependency<EntityStore>> getDependencies() {
         class="kw">return this.dependencies;
      }

      @Override
      class="kw">public void tick(float var1, int var2, @Nonnull Store<EntityStore> var3) {
         if (this.updateResource(var3)) {
            super.tick(var1, var2, var3);
         }
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         MovementStatesComponent var6 = var3.getComponent(var2, this.movementStatesComponentType);
         if (!var6.getMovementStates().sprinting && var6.getSentMovementStates().sprinting) {
            SprintStaminaRegenDelay var7 = var4.getResource(this.sprintRegenDelayResourceType);
            EntityStatMap var8 = var3.getComponent(var2, this.entityStatMapComponentType);
            EntityStatValue var9 = var8.get(var7.getIndex());
            if (var9 != null && var9.get() <= var7.getValue()) {
               class="kw">return;
            }

            var8.setStatValue(var7.getIndex(), var7.getValue());
         }
      }

      class="kw">protected boolean updateResource(@Nonnull Store<EntityStore> var1) {
         SprintStaminaRegenDelay var2 = var1.getResource(this.sprintRegenDelayResourceType);
         if (var2.validate()) {
            class="kw">return var2.hasDelay();
         } else {
            GameplayConfig var3 = var1.getExternalData().getWorld().getGameplayConfig();
            StaminaGameplayConfig var4 = var3.getPluginConfig().get(StaminaGameplayConfig.class);
            if (var4 != null && var4.getSprintRegenDelay().getIndex() != Integer.MIN_VALUE) {
               StaminaGameplayConfig.SprintRegenDelayConfig var5 = var4.getSprintRegenDelay();
               var2.update(var5.getIndex(), var5.getValue());
               class="kw">return var2.hasDelay();
            } else {
               var2.markEmpty();
               class="kw">return false;
            }
         }
      }
   }
}