AmbienceFX class
Пакет: com.hypixel.hytale.server.core.asset.type.ambiencefx.config
Файл: com/hypixel/hytale/server/core/asset/type/ambiencefx/config/AmbienceFX.java
implements: JsonAssetWithMap<String, IndexedAssetMap<String, AmbienceFX>>, NetworkSerializable<com.hypixel.hytale.protocol.AmbienceFX>
Поля (5)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
ASSET_STORE |
final |
ValidatorCache<String> |
VALIDATOR_CACHE |
|
com.hypixel.hytale.protocol.AmbienceFX |
var1 |
|
AmbienceFXMusic |
var1 |
|
com.hypixel.hytale.protocol.AmbienceFX |
var2 |
Методы (32)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(AmbienceFXSound var4 : var0.sounds) |
|
|
for for(int var2 = 0; var2 < var0.sounds.length; var2++) |
|
|
for for(int var3 = 0; var3 < this.blockedAmbienceFxIds.length; var3++) |
|
|
for for(int var4 = 0; var4 < this.setStates.length; var4++) |
public |
AmbienceFXAmbientBed |
getAmbientBedAmbienceFXAmbientBed getAmbientBed() |
static |
IndexedAssetMap<String, AmbienceFX> |
getAssetMapIndexedAssetMap<String, AmbienceFX> getAssetMap() |
static |
AssetStore<String, AmbienceFX, IndexedAssetMap<String, AmbienceFX>> |
getAssetStoreAssetStore<String, AmbienceFX, IndexedAssetMap<String, AmbienceFX>> getAssetStore() |
public |
int |
getAudioCategoryIndexint getAudioCategoryIndex() |
public |
String[] |
getBlockedAmbienceFxIdsString[] getBlockedAmbienceFxIds() |
public |
AmbienceFXConditions |
getConditionsAmbienceFXConditions getConditions() |
public |
String |
getIdString getId() |
public |
int |
getMusicContainerIndexint getMusicContainerIndex() |
public |
int |
getPriorityint getPriority() |
public |
AmbienceFXSoundEffect |
getSoundEffectAmbienceFXSoundEffect getSoundEffect() |
public |
AmbienceFXSound[] |
getSoundsAmbienceFXSound[] getSounds() |
|
|
if if(var0.audioCategoryId != null) |
|
|
if if(var0.sounds != null) |
|
|
if if(var0.ambientBed != null) |
|
|
if if(var0.sounds != null) |
|
|
if if(var0.ambientBed != null) |
|
|
if if(ASSET_STORE == null) |
|
|
if if(var1 != null) |
|
|
if if(this.conditions != null) |
|
|
if if(this.sounds != null && this.sounds.length > 0) |
|
|
if if(this.ambientBed != null) |
|
|
if if(this.soundEffect != null) |
|
|
if if(this.blockedAmbienceFxIds != null) |
|
|
if if(this.setStates != null && this.setStates.length > 0) |
|
|
if if(!this.musicContainerIndexResolved) |
|
|
if if(this.musicContainerId != null) |
|
|
if if(this.legacyMusic != null && this.musicContainerId == null) |
private |
void |
resolveMusicContainerIndexvoid resolveMusicContainerIndex() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.asset.type.ambiencefx.config;
class="kw">import com.hypixel.hytale.assetstore.AssetExtraInfo;
class="kw">import com.hypixel.hytale.assetstore.AssetKeyValidator;
class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.assetstore.AssetStore;
class="kw">import com.hypixel.hytale.assetstore.codec.AssetBuilderCodec;
class="kw">import com.hypixel.hytale.assetstore.map.IndexedAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.schema.metadata.ui.UIDefaultCollapsedState;
class="kw">import com.hypixel.hytale.codec.schema.metadata.ui.UIEditorSectionStart;
class="kw">import com.hypixel.hytale.codec.validation.ValidatorCache;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.common.util.ArrayUtil;
class="kw">import com.hypixel.hytale.protocol.AmbienceStateWrite;
class="kw">import com.hypixel.hytale.server.core.asset.type.audiocategory.config.AudioCategory;
class="kw">import com.hypixel.hytale.server.core.asset.type.audiostate.config.AmbienceStateWriteConfig;
class="kw">import com.hypixel.hytale.server.core.asset.type.audiostate.config.AudioStateResolver;
class="kw">import com.hypixel.hytale.server.core.asset.type.musiccontainer.config.MusicContainer;
class="kw">import com.hypixel.hytale.server.core.io.NetworkSerializable;
class="kw">import java.lang.ref.SoftReference;
class="kw">import java.util.Arrays;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class AmbienceFX class="kw">implements JsonAssetWithMap<String, IndexedAssetMap<String, AmbienceFX>>, NetworkSerializable<com.hypixel.hytale.protocol.AmbienceFX> {
class="kw">public class="kw">static class="kw">final ValidatorCache<String> VALIDATOR_CACHE = new ValidatorCache<>(new AssetKeyValidator<>(AmbienceFX::getAssetStore));
class="kw">public class="kw">static class="kw">final AssetBuilderCodec<String, AmbienceFX> CODEC = AssetBuilderCodec.builder(
AmbienceFX.class, AmbienceFX::new, Codec.STRING, (var0, var1) -> var0.id = var1, var0 -> var0.id, (var0, var1) -> var0.data = var1, var0 -> var0.data
)
.appendInherited(
new KeyedCodec<>("Conditions", AmbienceFXConditions.CODEC),
(var0, var1) -> var0.conditions = var1,
var0 -> var0.conditions,
(var0, var1) -> var0.conditions = var1.conditions
)
.metadata(new UIEditorSectionStart("Conditions"))
.metadata(UIDefaultCollapsedState.UNCOLLAPSED)
.add()
.<AmbienceFXSound[]>appendInherited(
new KeyedCodec<>("Sounds", new ArrayCodec<>(AmbienceFXSound.CODEC, AmbienceFXSound[]::new)),
(var0, var1) -> var0.sounds = var1,
var0 -> var0.sounds,
(var0, var1) -> var0.sounds = var1.sounds
)
.metadata(new UIEditorSectionStart("Audio"))
.add()
.<AmbienceFXMusic>appendInherited(
new KeyedCodec<>("Music", AmbienceFXMusic.CODEC),
(var0, var1) -> var0.legacyMusic = var1,
var0 -> var0.legacyMusic,
(var0, var1) -> var0.legacyMusic = var1.legacyMusic
)
.documentation("Deprecated: Use MusicContainer instead.")
.add()
.<String>appendInherited(
new KeyedCodec<>("MusicContainer", MusicContainer.CHILD_ASSET_CODEC),
(var0, var1) -> var0.musicContainerId = var1,
var0 -> var0.musicContainerId,
(var0, var1) -> var0.musicContainerId = var1.musicContainerId
)
.addValidator(MusicContainer.VALIDATOR_CACHE.getValidator())
.add()
.appendInherited(
new KeyedCodec<>("AmbientBed", AmbienceFXAmbientBed.CODEC),
(var0, var1) -> var0.ambientBed = var1,
var0 -> var0.ambientBed,
(var0, var1) -> var0.ambientBed = var1.ambientBed
)
.add()
.appendInherited(
new KeyedCodec<>("SoundEffect", AmbienceFXSoundEffect.CODEC),
(var0, var1) -> var0.soundEffect = var1,
var0 -> var0.soundEffect,
(var0, var1) -> var0.soundEffect = var1.soundEffect
)
.add()
.<Integer>appendInherited(
new KeyedCodec<>("Priority", Codec.INTEGER),
(var0, var1) -> var0.priority = var1,
var0 -> var0.priority,
(var0, var1) -> var0.priority = var1.priority
)
.addValidator(Validators.greaterThanOrEqual(0))
.documentation("Priority for this AmbienceFX. Only applies to music and sound effect. Higher number means higher priority.")
.add()
.<String[]>appendInherited(
new KeyedCodec<>("BlockedAmbienceFxIds", Codec.STRING_ARRAY),
(var0, var1) -> var0.blockedAmbienceFxIds = var1,
var0 -> var0.blockedAmbienceFxIds,
(var0, var1) -> var0.blockedAmbienceFxIds = var1.blockedAmbienceFxIds
)
.addValidatorLate(() -> VALIDATOR_CACHE.getArrayValidator().late())
.add()
.<String>appendInherited(
new KeyedCodec<>("AudioCategory", Codec.STRING),
(var0, var1) -> var0.audioCategoryId = var1,
var0 -> var0.audioCategoryId,
(var0, var1) -> var0.audioCategoryId = var1.audioCategoryId
)
.addValidator(AudioCategory.VALIDATOR_CACHE.getValidator())
.documentation("Audio category to assign this ambienceFX to for additional property routing. Only affects ambient bed and music, not emitters.")
.add()
.<AmbienceStateWriteConfig[]>append(
new KeyedCodec<>("SetStates", AmbienceStateWriteConfig.CODEC_ARRAY), (var0, var1) -> var0.setStates = var1, var0 -> var0.setStates
)
.documentation(
"When this AmbienceFX asset becomes active on the client, these states will be set. Targets must be AudioState assets with Authority: Client."
)
.add()
.afterDecode(var0 -> {
if (var0.audioCategoryId != null) {
var0.audioCategoryIndex = AudioCategory.getAssetMap().getIndex(var0.audioCategoryId);
}
AudioStateResolver.resolveSetStates(var0.setStates);
if (var0.sounds != null) {
for (AmbienceFXSound var4 : var0.sounds) {
AudioStateResolver.resolveBindings(var4.getStateBindings());
}
}
if (var0.ambientBed != null) {
AudioStateResolver.resolveBindings(var0.ambientBed.getStateBindings());
}
})
.validator((var0, var1) -> {
AudioStateResolver.validateSetStates(var0.setStates, "AmbienceFX '" + var0.id + "'", var1);
if (var0.sounds != null) {
for (int var2 = 0; var2 < var0.sounds.length; var2++) {
AudioStateResolver.validateBindings(var0.sounds[var2].getStateBindings(), "AmbienceFX '" + var0.id + "' Sounds[" + var2 + "]", var1);
}
}
if (var0.ambientBed != null) {
AudioStateResolver.validateBindings(var0.ambientBed.getStateBindings(), "AmbienceFX '" + var0.id + "' AmbientBed", var1);
}
})
.build();
class="kw">public class="kw">static class="kw">final int EMPTY_ID = 0;
class="kw">public class="kw">static class="kw">final AmbienceFX EMPTY = new AmbienceFX() {
{
this.id = "Empty";
}
};
class="kw">private class="kw">static AssetStore<String, AmbienceFX, IndexedAssetMap<String, AmbienceFX>> ASSET_STORE;
class="kw">protected AssetExtraInfo.Data data;
class="kw">protected String id;
class="kw">protected AmbienceFXConditions conditions;
class="kw">protected AmbienceFXSound[] sounds;
class="kw">protected AmbienceFXMusic legacyMusic;
@Nullable
class="kw">protected String musicContainerId;
class="kw">protected class="kw">transient int musicContainerIndex;
class="kw">protected class="kw">transient boolean musicContainerIndexResolved;
class="kw">protected AmbienceFXAmbientBed ambientBed;
class="kw">protected AmbienceFXSoundEffect soundEffect;
class="kw">protected int priority = 0;
class="kw">protected String[] blockedAmbienceFxIds;
@Nullable
class="kw">protected String audioCategoryId = null;
class="kw">protected class="kw">transient int audioCategoryIndex = 0;
@Nullable
class="kw">public AmbienceStateWriteConfig[] setStates;
class="kw">private SoftReference<com.hypixel.hytale.protocol.AmbienceFX> cachedPacket;
class="kw">public class="kw">static AssetStore<String, AmbienceFX, IndexedAssetMap<String, AmbienceFX>> getAssetStore() {
if (ASSET_STORE == null) {
ASSET_STORE = AssetRegistry.getAssetStore(AmbienceFX.class);
}
class="kw">return ASSET_STORE;
}
class="kw">public class="kw">static IndexedAssetMap<String, AmbienceFX> getAssetMap() {
class="kw">return (IndexedAssetMap<String, AmbienceFX>)getAssetStore().getAssetMap();
}
class="kw">public AmbienceFX(String var1) {
this.id = var1;
}
class="kw">protected AmbienceFX() {
}
@Nonnull
class="kw">public com.hypixel.hytale.protocol.AmbienceFX toPacket() {
com.hypixel.hytale.protocol.AmbienceFX var1 = this.cachedPacket == null ? null : this.cachedPacket.get();
if (var1 != null) {
class="kw">return var1;
}
com.hypixel.hytale.protocol.AmbienceFX var2 = new com.hypixel.hytale.protocol.AmbienceFX();
var2.id = this.id;
if (this.conditions != null) {
var2.conditions = this.conditions.toPacket();
}
if (this.sounds != null && this.sounds.length > 0) {
var2.sounds = ArrayUtil.copyAndMutate(this.sounds, AmbienceFXSound::toPacket, com.hypixel.hytale.protocol.AmbienceFXSound[]::new);
}
this.resolveMusicContainerIndex();
var2.musicContainerIndex = this.musicContainerIndex;
if (this.ambientBed != null) {
var2.ambientBed = this.ambientBed.toPacket();
}
if (this.soundEffect != null) {
var2.soundEffect = this.soundEffect.toPacket();
}
var2.priority = this.priority;
if (this.blockedAmbienceFxIds != null) {
var2.blockedAmbienceFxIndices = new int[this.blockedAmbienceFxIds.length];
for (int var3 = 0; var3 < this.blockedAmbienceFxIds.length; var3++) {
var2.blockedAmbienceFxIndices[var3] = getAssetMap().getIndex(this.blockedAmbienceFxIds[var3]);
}
}
var2.audioCategoryIndex = this.audioCategoryIndex;
if (this.setStates != null && this.setStates.length > 0) {
var2.setStates = new AmbienceStateWrite[this.setStates.length];
for (int var4 = 0; var4 < this.setStates.length; var4++) {
var2.setStates[var4] = this.setStates[var4].toPacket();
}
}
this.cachedPacket = new SoftReference<>(var2);
class="kw">return var2;
}
class="kw">public String getId() {
class="kw">return this.id;
}
class="kw">public AmbienceFXConditions getConditions() {
class="kw">return this.conditions;
}
class="kw">public AmbienceFXSound[] getSounds() {
class="kw">return this.sounds;
}
class="kw">public int getMusicContainerIndex() {
this.resolveMusicContainerIndex();
class="kw">return this.musicContainerIndex;
}
class="kw">private void resolveMusicContainerIndex() {
if (!this.musicContainerIndexResolved) {
this.musicContainerIndexResolved = true;
if (this.musicContainerId != null) {
this.musicContainerIndex = MusicContainer.getAssetMap().getIndex(this.musicContainerId);
}
}
}
@Nullable
class="kw">public AmbienceFXMusic consumeLegacyMusic() {
if (this.legacyMusic != null && this.musicContainerId == null) {
AmbienceFXMusic var1 = this.legacyMusic;
this.musicContainerId = "_legacy_" + this.id;
this.legacyMusic = null;
class="kw">return var1;
} else {
class="kw">return null;
}
}
@Nullable
class="kw">public String getAudioCategoryId() {
class="kw">return this.audioCategoryId;
}
class="kw">public int getAudioCategoryIndex() {
class="kw">return this.audioCategoryIndex;
}
class="kw">public AmbienceFXAmbientBed getAmbientBed() {
class="kw">return this.ambientBed;
}
class="kw">public AmbienceFXSoundEffect getSoundEffect() {
class="kw">return this.soundEffect;
}
class="kw">public int getPriority() {
class="kw">return this.priority;
}
class="kw">public String[] getBlockedAmbienceFxIds() {
class="kw">return this.blockedAmbienceFxIds;
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "AmbienceFX{id='"
+ this.id
+ "', conditions="
+ this.conditions
+ ", sounds="
+ Arrays.toString(this.sounds)
+ ", musicContainerIndex="
+ this.musicContainerIndex
+ ", ambientBed="
+ this.ambientBed
+ ", soundEffect='"
+ this.soundEffect
+ "', priority="
+ this.priority
+ ", blockedAmbienceFxIds="
+ Arrays.toString(this.blockedAmbienceFxIds)
+ ", audioCategoryId="
+ this.audioCategoryId
+ "}";
}
}