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() {
}
}
}