SprintStaminaEffectSystem class
Пакет: com.hypixel.hytale.server.core.modules.entity.stamina
Файл: com/hypixel/hytale/server/core/modules/entity/stamina/StaminaSystems.java
extends: EntityTickingSystem<EntityStore>
Поля (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 |
Методы (5)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
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;
}
}
}
}
}