WeatherSystem class

Пакет: com.hypixel.hytale.builtin.weather.systems

Файл: com/hypixel/hytale/builtin/weather/systems/WeatherSystem.java

Поля (36)

МодификаторыТипИмя
private static final Set<Dependency<EntityStore>> DEPENDENCIES
final float JOIN_TRANSITION_SECONDS
private static final ComponentType<EntityStore, PlayerRef> PLAYER_REF_COMPONENT_TYPE
private static final ComponentType<EntityStore, PlayerRef> PLAYER_REF_COMPONENT_TYPE
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE
private static final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE
private static final ResourceType<EntityStore, WeatherResource> WEATHER_RESOURCE_TYPE
private static final ComponentType<EntityStore, WeatherTracker> WEATHER_TRACKER_COMPONENT_TYPE
private static final ComponentType<EntityStore, WeatherTracker> WEATHER_TRACKER_COMPONENT_TYPE
float var10
IndexedLookupTableAssetMap var11
String var14
int var15
Environment var16
IWeightedMap var17
String var18
long var19
String var2
FastRandom var21
int var22
WeatherTracker var4
WeatherResource var4
WeatherTracker var5
WorldTimeResource var5
int var6
WeatherResource var6
LocalDateTime var7
PlayerRef var7
Int2IntMap var8
TransformComponent var8
long var9
WeatherTracker var9
private final ResourceType<EntityStore, WeatherResource> weatherResourceType

Методы (22)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Unknown key! " + var14)
public InvalidateWeatherAfterTeleportpublic InvalidateWeatherAfterTeleport()
public PlayerAddedSystempublic PlayerAddedSystem()
public TickingSystempublic TickingSystem()
public WorldAddedSystempublic WorldAddedSystem()
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 Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
if if(var15 == Integer.MIN_VALUE)
if if(var4.playerUpdateDelay <= 0.0F)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
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)
public void onEntityAddpublic void onEntityAdd(@Nonnull Holder<EntityStore> var1, @Nonnull AddReason var2, @Nonnull Store<EntityStore> var3)
public void onEntityRemovedpublic void onEntityRemoved(@Nonnull Holder<EntityStore> var1, @Nonnull RemoveReason var2, @Nonnull Store<EntityStore> var3)
public void onSystemAddedToStorepublic void onSystemAddedToStore(@Nonnull Store<EntityStore> var1)
public void onSystemRemovedFromStorepublic void onSystemRemovedFromStore(@Nonnull Store<EntityStore> var1)
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)

Исходный код

Показать/скрыть
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) {
      }
   }
}