AmbiencePlugin class

Пакет: com.hypixel.hytale.builtin.ambience

Файл: com/hypixel/hytale/builtin/ambience/AmbiencePlugin.java

extends: JavaPlugin

Поля (20)

МодификаторыТипИмя
public static final BuilderCodec<AmbiencePlugin.AmbiencePluginConfig> CODEC
private String ambientEmitterModel
instance
ComponentRegistryProxy var1
AmbiencePlugin.AmbiencePluginConfig var1
ComponentType var2
Map var2
String var2
ComponentType var3
DefaultAssetMap var3
ComponentType var4
ModelAsset var4
var4
ComponentType var5
AmbienceFX var5
ComponentType var6
AmbienceFXMusic var6
String var7
RandomMusicContainer var8
AssetReferences var9

Методы (9)

МодификаторыВозвратСигнатура
public AmbiencePluginConfigpublic AmbiencePluginConfig()
static AmbiencePlugin getAmbiencePlugin get()
public ComponentType<EntityStore, AmbientEmitterComponent> getAmbientEmitterComponentTypeComponentType<EntityStore, AmbientEmitterComponent> getAmbientEmitterComponentType()
public Model getAmbientEmitterModelModel getAmbientEmitterModel()
if if(var6 != null)
if if(var4 == null)
if if(var4 == null)
private void onAmbienceFXLoadedvoid onAmbienceFXLoaded(@Nonnull LoadedAssetsEvent<String, AmbienceFX, IndexedAssetMap<String, AmbienceFX>> var1)
abstract super super(var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.ambience;

class="kw">import com.hypixel.hytale.assetstore.AssetReferences;
class="kw">import com.hypixel.hytale.assetstore.event.LoadedAssetsEvent;
class="kw">import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedAssetMap;
class="kw">import com.hypixel.hytale.builtin.ambience.commands.AmbienceCommands;
class="kw">import com.hypixel.hytale.builtin.ambience.components.AmbientEmitterComponent;
class="kw">import com.hypixel.hytale.builtin.ambience.systems.AmbientEmitterSystems;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.component.ComponentRegistryProxy;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.server.core.asset.type.ambiencefx.config.AmbienceFX;
class="kw">import com.hypixel.hytale.server.core.asset.type.ambiencefx.config.AmbienceFXMusic;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.Model;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.ModelAsset;
class="kw">import com.hypixel.hytale.server.core.asset.type.musiccontainer.config.MusicContainer;
class="kw">import com.hypixel.hytale.server.core.asset.type.musiccontainer.config.RandomMusicContainer;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.AudioComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.Intangible;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.tracker.NetworkId;
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.prefab.PrefabCopyableComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.core.util.Config;
class="kw">import java.util.HashMap;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import java.util.Map.Entry;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;

class="kw">public class AmbiencePlugin class="kw">extends JavaPlugin {
   @Nonnull
   class="kw">private class="kw">static class="kw">final String DEFAULT_AMBIENT_EMITTER_MODEL = "NPC_Spawn_Marker";
   class="kw">private class="kw">static AmbiencePlugin instance;
   class="kw">private ComponentType<EntityStore, AmbientEmitterComponent> ambientEmitterComponentType;
   @Nonnull
   class="kw">private class="kw">final Config<AmbiencePlugin.AmbiencePluginConfig> config = this.withConfig("AmbiencePlugin", AmbiencePlugin.AmbiencePluginConfig.CODEC);
   class="kw">private Model ambientEmitterModel;

   class="kw">public class="kw">static AmbiencePlugin get() {
      class="kw">return instance;
   }

   class="kw">public AmbiencePlugin(@Nonnull JavaPluginInit var1) {
      super(var1);
      instance = this;
   }

   @Override
   class="kw">protected void setup() {
      ComponentRegistryProxy var1 = this.getEntityStoreRegistry();
      this.ambientEmitterComponentType = var1.registerComponent(AmbientEmitterComponent.class, "AmbientEmitter", AmbientEmitterComponent.CODEC);
      ComponentType var2 = TransformComponent.getComponentType();
      ComponentType var3 = NetworkId.getComponentType();
      ComponentType var4 = Intangible.getComponentType();
      ComponentType var5 = PrefabCopyableComponent.getComponentType();
      ComponentType var6 = AudioComponent.getComponentType();
      var1.registerSystem(new AmbientEmitterSystems.EntityAdded(this.ambientEmitterComponentType, var2, var3, var4, var5));
      var1.registerSystem(new AmbientEmitterSystems.EntityRefAdded(this.ambientEmitterComponentType, var2, var6, var3, var4));
      var1.registerSystem(new AmbientEmitterSystems.Ticking(this.ambientEmitterComponentType, var2));
      this.getCommandRegistry().registerCommand(new AmbienceCommands());
      this.getEventRegistry().register(LoadedAssetsEvent.class, AmbienceFX.class, this::onAmbienceFXLoaded);
   }

   class="kw">private void onAmbienceFXLoaded(@Nonnull LoadedAssetsEvent<String, AmbienceFX, IndexedAssetMap<String, AmbienceFX>> var1) {
      Map var2 = new HashMap<>();

      for (Entry var4 : var1.getLoadedAssets().entrySet()) {
         AmbienceFX var5 = var4.getValue();
         AmbienceFXMusic var6 = var5.consumeLegacyMusic();
         if (var6 != null) {
            String var7 = "_legacy_" + var5.getId();
            RandomMusicContainer var8 = RandomMusicContainer.fromLegacy(var7, var6, var2);
            var8.setId(var7);
            var8.setAudioCategory(var5.getAudioCategoryId(), var5.getAudioCategoryIndex());
            AssetReferences var9 = new AssetReferences<>(AmbienceFX.class, Set.of(var4.getKey()));
            var2.put(var8, List.of(var9));
         }
      }

      if (!var2.isEmpty()) {
         MusicContainer.getAssetStore().loadAssetsWithReferences("Hytale:Hytale", var2);
      }
   }

   @Override
   class="kw">protected void start() {
      AmbiencePlugin.AmbiencePluginConfig var1 = this.config.get();
      String var2 = var1.ambientEmitterModel;
      DefaultAssetMap var3 = ModelAsset.getAssetMap();
      ModelAsset var4 = var3.getAsset(var2);
      if (var4 == null) {
         this.getLogger().at(Level.SEVERE).log("Ambient emitter model %s does not exist", var2);
         var4 = var3.getAsset("NPC_Spawn_Marker");
         if (var4 == null) {
            throw new IllegalStateException(String.format("Default ambient emitter marker '%s' not found", "NPC_Spawn_Marker"));
         }
      }

      this.ambientEmitterModel = Model.createUnitScaleModel(var4);
   }

   class="kw">public ComponentType<EntityStore, AmbientEmitterComponent> getAmbientEmitterComponentType() {
      class="kw">return this.ambientEmitterComponentType;
   }

   class="kw">public Model getAmbientEmitterModel() {
      class="kw">return this.ambientEmitterModel;
   }

   class="kw">public class="kw">static class AmbiencePluginConfig {
      @Nonnull
      class="kw">public class="kw">static class="kw">final BuilderCodec<AmbiencePlugin.AmbiencePluginConfig> CODEC = BuilderCodec.builder(
            AmbiencePlugin.AmbiencePluginConfig.class, AmbiencePlugin.AmbiencePluginConfig::new
         )
         .append(new KeyedCodec<>("AmbientEmitterModel", Codec.STRING), (var0, var1) -> var0.ambientEmitterModel = var1, var0 -> var0.ambientEmitterModel)
         .add()
         .build();
      class="kw">private String ambientEmitterModel = "NPC_Spawn_Marker";

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