InvalidateWeatherAfterTeleport class
Пакет: com.hypixel.hytale.builtin.weather.systems
Файл: com/hypixel/hytale/builtin/weather/systems/WeatherSystem.java
extends: RefChangeSystem<EntityStore, Teleport>
Поля (3)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private static final Set<Dependency<EntityStore>> |
DEPENDENCIES |
|
private static final Query<EntityStore> |
QUERY |
|
WeatherTracker |
var5 |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public ComponentType<EntityStore, Teleport> |
componentTypepublic ComponentType<EntityStore, Teleport> componentType() |
|
public Set<Dependency<EntityStore>> |
getDependenciespublic Set<Dependency<EntityStore>> getDependencies() |
|
public Query<EntityStore> |
getQuerypublic Query<EntityStore> getQuery() |
|
public void |
onComponentAddedpublic void onComponentAdded(@Nonnull Ref<EntityStore> var1, @Nonnull Teleport var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4) |
|
public void |
onComponentRemovedpublic void onComponentRemoved(@Nonnull Ref<EntityStore> var1, @Nonnull Teleport var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4) |
|
public void |
onComponentSetpublic void onComponentSet(@Nonnull Ref<EntityStore> var1,
@Nullable Teleport var2,
@Nonnull Teleport var3,
@Nonnull Store<EntityStore> var4,
@Nonnull CommandBuffer<EntityStore> var5) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.weather.systems;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedLookupTableAssetMap;
class="kw">import com.hypixel.hytale.builtin.weather.components.WeatherTracker;
class="kw">import com.hypixel.hytale.builtin.weather.resources.WeatherResource;
class="kw">import com.hypixel.hytale.common.map.IWeightedMap;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.Archetype;
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.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.RemoveReason;
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.HolderSystem;
class="kw">import com.hypixel.hytale.component.system.RefChangeSystem;
class="kw">import com.hypixel.hytale.component.system.StoreSystem;
class="kw">import com.hypixel.hytale.component.system.tick.EntityTickingSystem;
class="kw">import com.hypixel.hytale.math.util.FastRandom;
class="kw">import com.hypixel.hytale.math.util.HashUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.environment.config.Environment;
class="kw">import com.hypixel.hytale.server.core.asset.type.environment.config.WeatherForecast;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
class="kw">import com.hypixel.hytale.server.core.modules.entity.teleport.TeleportSystems;
class="kw">import com.hypixel.hytale.server.core.modules.time.WorldTimeResource;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.ints.Int2IntMap;
class="kw">import java.time.LocalDateTime;
class="kw">import java.util.Set;
class="kw">import java.util.Map.Entry;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class WeatherSystem {
class="kw">private class="kw">static class="kw">final float JOIN_TRANSITION_SECONDS = 0.5F;
class="kw">private class="kw">static class="kw">final float WEATHERCHANGE_TRANSITION_SECONDS = 10.0F;
class="kw">public WeatherSystem() {
}
class="kw">public class="kw">static class InvalidateWeatherAfterTeleport class="kw">extends RefChangeSystem<EntityStore, Teleport> {
@Nonnull
class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = WeatherTracker.getComponentType();
@Nonnull
class="kw">private class="kw">static class="kw">final Set<Dependency<EntityStore>> DEPENDENCIES = Set.of(new SystemDependency<>(Order.AFTER, TeleportSystems.PlayerMoveSystem.class));
class="kw">public InvalidateWeatherAfterTeleport() {
}
@Nonnull
@Override
class="kw">public ComponentType<EntityStore, Teleport> componentType() {
class="kw">return Teleport.getComponentType();
}
class="kw">public void onComponentAdded(
@Nonnull Ref<EntityStore> var1, @Nonnull Teleport var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
) {
WeatherTracker var5 = var4.getComponent(var1, WeatherTracker.getComponentType());
assert var5 != null;
var5.clear();
}
class="kw">public void onComponentSet(
@Nonnull Ref<EntityStore> var1,
@Nullable Teleport var2,
@Nonnull Teleport var3,
@Nonnull Store<EntityStore> var4,
@Nonnull CommandBuffer<EntityStore> var5
) {
}
class="kw">public void onComponentRemoved(
@Nonnull Ref<EntityStore> var1, @Nonnull Teleport var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
) {
}
@Nullable
@Override
class="kw">public Query<EntityStore> getQuery() {
class="kw">return QUERY;
}
@Nonnull
@Override
class="kw">public Set<Dependency<EntityStore>> getDependencies() {
class="kw">return DEPENDENCIES;
}
}
class="kw">public class="kw">static class PlayerAddedSystem class="kw">extends HolderSystem<EntityStore> {
class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, PlayerRef> PLAYER_REF_COMPONENT_TYPE = PlayerRef.getComponentType();
class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE = TransformComponent.getComponentType();
class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, WeatherTracker> WEATHER_TRACKER_COMPONENT_TYPE = WeatherTracker.getComponentType();
class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Archetype.of(PLAYER_REF_COMPONENT_TYPE, TRANSFORM_COMPONENT_TYPE);
class="kw">public PlayerAddedSystem() {
}
@Override
class="kw">public Query<EntityStore> getQuery() {
class="kw">return QUERY;
}
@Override
class="kw">public void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3) {
var1.ensureComponent(WEATHER_TRACKER_COMPONENT_TYPE);
}
@Override
class="kw">public void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3) {
WeatherTracker var4 = var1.ensureAndGetComponent(WEATHER_TRACKER_COMPONENT_TYPE);
var4.clear();
}
}
class="kw">public class="kw">static class TickingSystem class="kw">extends EntityTickingSystem<EntityStore> {
class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, PlayerRef> PLAYER_REF_COMPONENT_TYPE = PlayerRef.getComponentType();
class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE = TransformComponent.getComponentType();
class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, WeatherTracker> WEATHER_TRACKER_COMPONENT_TYPE = WeatherTracker.getComponentType();
class="kw">private class="kw">static class="kw">final ResourceType<EntityStore, WeatherResource> WEATHER_RESOURCE_TYPE = WeatherResource.getResourceType();
class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Archetype.of(PLAYER_REF_COMPONENT_TYPE, TRANSFORM_COMPONENT_TYPE, WEATHER_TRACKER_COMPONENT_TYPE);
class="kw">public TickingSystem() {
}
@Override
class="kw">public Query<EntityStore> getQuery() {
class="kw">return QUERY;
}
@Override
class="kw">public void tick(float var1, int var2, @Nonnull Store<EntityStore> var3) {
WeatherResource var4 = var3.getResource(WEATHER_RESOURCE_TYPE);
if (var4.consumeForcedWeatherChange()) {
var4.playerUpdateDelay = 1.0F;
var3.tick(this, var1, var2);
} else {
if (var4.getForcedWeatherIndex() == 0) {
WorldTimeResource var5 = var3.getResource(WorldTimeResource.getResourceType());
int var6 = var5.getCurrentHour();
LocalDateTime var7 = var5.getGameDateTime();
if (var4.compareAndSwapHour(var6)) {
Int2IntMap var8 = var4.getEnvironmentWeather();
long var9 = var3.getExternalData().getWorld().getWorldConfig().getSeed();
IndexedLookupTableAssetMap var11 = Environment.getAssetMap();
for (Entry var13 : var11.getAssetMap().entrySet()) {
String var14 = var13.getKey();
int var15 = var11.getIndex(var14);
if (var15 == Integer.MIN_VALUE) {
throw new IllegalArgumentException("Unknown key! " + var14);
}
Environment var16 = var13.getValue();
IWeightedMap var17 = var16.getWeatherForecast(var6);
String var18 = var16.getWeatherSeedKey();
long var19 = HashUtil.hash(var9, var18.hashCode(), var7.hashCode());
FastRandom var21 = new FastRandom(var19);
int var22 = var17.get(var21).getWeatherIndex();
var8.put(var15, var22);
}
}
}
var4.playerUpdateDelay -= var1;
if (var4.playerUpdateDelay <= 0.0F) {
var4.playerUpdateDelay = 1.0F;
var3.tick(this, var1, var2);
}
}
}
@Override
class="kw">public boolean isParallel(int var1, int var2) {
class="kw">return false;
}
@Override
class="kw">public void tick(
float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
) {
WeatherResource var6 = var4.getResource(WEATHER_RESOURCE_TYPE);
PlayerRef var7 = var3.getComponent(var2, PLAYER_REF_COMPONENT_TYPE);
assert var7 != null;
TransformComponent var8 = var3.getComponent(var2, TRANSFORM_COMPONENT_TYPE);
assert var8 != null;
WeatherTracker var9 = var3.getComponent(var2, WEATHER_TRACKER_COMPONENT_TYPE);
assert var9 != null;
float var10 = var9.consumeFirstSendForWorld() ? 0.5F : 10.0F;
var9.updateWeather(var7, var6, var8, var10, var5);
}
}
class="kw">public class="kw">static class WorldAddedSystem class="kw">extends StoreSystem<EntityStore> {
@Nonnull
class="kw">private class="kw">final ResourceType<EntityStore, WeatherResource> weatherResourceType = WeatherResource.getResourceType();
class="kw">public WorldAddedSystem() {
}
@Override
class="kw">public void onSystemAddedToStore(@Nonnull Store<EntityStore> var1) {
String var2 = var1.getExternalData().getWorld().getWorldConfig().getForcedWeather();
var1.getResource(this.weatherResourceType).setForcedWeather(var2);
}
@Override
class="kw">public void onSystemRemovedFromStore(@Nonnull Store<EntityStore> var1) {
}
}
}