MusicEmitterBlock class
Пакет: com.hypixel.hytale.builtin.audio.components
Файл: com/hypixel/hytale/builtin/audio/components/MusicEmitterBlock.java
implements: Component<ChunkStore>
Поля (3)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
BuilderCodec<MusicEmitterBlock> |
CODEC |
|
MusicEmitterConfig |
var1 |
|
MusicEmitterBlock |
var8 |
Методы (10)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
int |
getAudioCategoryOverrideIndexint getAudioCategoryOverrideIndex() |
static |
ComponentType<ChunkStore, MusicEmitterBlock> |
getComponentTypeComponentType<ChunkStore, MusicEmitterBlock> getComponentType() |
public |
float |
getMaxDistancefloat getMaxDistance() |
public |
int |
getMusicContainerIndexint getMusicContainerIndex() |
public |
long |
getOriginEpochMillislong getOriginEpochMillis() |
public |
float |
getReferenceDistancefloat getReferenceDistance() |
public |
float |
getSpatialBlendfloat getSpatialBlend() |
static |
int |
normalizeIndexint normalizeIndex(int var0) |
private |
void |
resolveIndexesvoid resolveIndexes() |
public |
void |
setOriginEpochMillisvoid setOriginEpochMillis(long var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.audio.components;
class="kw">import com.hypixel.hytale.builtin.audio.AudioPlugin;
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.codec.validation.Validators;
class="kw">import com.hypixel.hytale.common.util.AudioUtil;
class="kw">import com.hypixel.hytale.component.Component;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.protocol.MusicEmitterConfig;
class="kw">import com.hypixel.hytale.server.core.asset.type.audiocategory.config.AudioCategory;
class="kw">import com.hypixel.hytale.server.core.asset.type.musiccontainer.config.MusicContainer;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class MusicEmitterBlock class="kw">implements Component<ChunkStore> {
class="kw">public class="kw">static class="kw">final BuilderCodec<MusicEmitterBlock> CODEC = BuilderCodec.builder(MusicEmitterBlock.class, MusicEmitterBlock::new)
.appendInherited(
new KeyedCodec<>("MusicContainer", Codec.STRING, true),
(var0, var1) -> var0.musicContainerId = var1,
var0 -> var0.musicContainerId,
(var0, var1) -> var0.musicContainerId = var1.musicContainerId
)
.addValidator(MusicContainer.VALIDATOR_CACHE.getValidator())
.documentation("MusicContainer asset id this emitter plays.")
.add()
.<String>appendInherited(
new KeyedCodec<>("AudioCategoryOverride", Codec.STRING),
(var0, var1) -> var0.audioCategoryOverrideId = var1,
var0 -> var0.audioCategoryOverrideId,
(var0, var1) -> var0.audioCategoryOverrideId = var1.audioCategoryOverrideId
)
.addValidator(AudioCategory.VALIDATOR_CACHE.getValidator())
.documentation("Optional AudioCategory asset id overriding the container's routing.")
.add()
.<Float>appendInherited(
new KeyedCodec<>("ReferenceDistance", Codec.FLOAT),
(var0, var1) -> var0.referenceDistance = var1,
var0 -> var0.referenceDistance,
(var0, var1) -> var0.referenceDistance = var1.referenceDistance
)
.addValidator(Validators.min(0.0F))
.documentation("Distance at which the emitter plays at full volume.")
.add()
.<Float>appendInherited(
new KeyedCodec<>("MaxDistance", Codec.FLOAT),
(var0, var1) -> var0.maxDistance = var1,
var0 -> var0.maxDistance,
(var0, var1) -> var0.maxDistance = var1.maxDistance
)
.addValidator(Validators.min(0.0F))
.documentation("Distance beyond which the emitter is inaudible.")
.add()
.<Float>appendInherited(
new KeyedCodec<>("SpatialBlend", Codec.FLOAT),
(var0, var1) -> var0.spatialBlend = var1,
var0 -> var0.spatialBlend,
(var0, var1) -> var0.spatialBlend = var1.spatialBlend
)
.addValidator(Validators.range(0.0F, 1.0F))
.documentation("0 = fully 2D, 1 = fully 3D positioned.")
.add()
.<Float>appendInherited(
new KeyedCodec<>("ReverbSend", Codec.FLOAT),
(var0, var1) -> var0.reverbSend = var1,
var0 -> var0.reverbSend,
(var0, var1) -> var0.reverbSend = var1.reverbSend
)
.addValidator(Validators.range(0.0F, 1.0F))
.documentation("Fraction routed to environment reverb. 0 = dry, 1 = full. Lower keeps sustained music from washing in reverberant spaces.")
.add()
.<Float>appendInherited(
new KeyedCodec<>("Volume", Codec.FLOAT),
(var0, var1) -> var0.volume = AudioUtil.decibelsToLinearGain(var1),
var0 -> AudioUtil.linearGainToDecibels(var0.volume),
(var0, var1) -> var0.volume = var1.volume
)
.addValidator(Validators.range(-80.0F, 24.0F))
.documentation("Volume adjustment in decibels, usually to compensate for a quiet mono downmix. 0 = unchanged.")
.add()
.<Boolean>appendInherited(
new KeyedCodec<>("Loop", Codec.BOOLEAN), (var0, var1) -> var0.loop = var1, var0 -> var0.loop, (var0, var1) -> var0.loop = var1.loop
)
.documentation("Loop the container indefinitely, overriding its authored LoopCount.")
.add()
.<Long>append(new KeyedCodec<>("Origin", Codec.LONG), (var0, var1) -> var0.originEpochMillis = var1, var0 -> var0.originEpochMillis)
.documentation("Persisted epoch-milli the emitter first started. 0 = unstamped.")
.add()
.afterDecode(MusicEmitterBlock::resolveIndexes)
.build();
@Nullable
class="kw">protected String musicContainerId;
@Nullable
class="kw">protected String audioCategoryOverrideId;
class="kw">protected float referenceDistance = 8.0F;
class="kw">protected float maxDistance = 25.0F;
class="kw">protected float spatialBlend = 0.6F;
class="kw">protected float reverbSend = 0.35F;
class="kw">protected float volume = 1.0F;
class="kw">protected boolean loop = true;
class="kw">protected long originEpochMillis;
class="kw">protected class="kw">transient int musicContainerIndex = 0;
class="kw">protected class="kw">transient int audioCategoryOverrideIndex = 0;
class="kw">public class="kw">static ComponentType<ChunkStore, MusicEmitterBlock> getComponentType() {
class="kw">return AudioPlugin.get().getMusicEmitterBlockComponentType();
}
class="kw">private class="kw">static int normalizeIndex(int var0) {
class="kw">return var0 == Integer.MIN_VALUE ? 0 : var0;
}
@Nonnull
class="kw">public class="kw">static MusicEmitterBlock create(@Nonnull String var0, @Nullable String var1, float var2, float var3, float var4, float var5, float var6, boolean var7) {
MusicEmitterBlock var8 = new MusicEmitterBlock();
var8.musicContainerId = var0;
var8.audioCategoryOverrideId = var1;
var8.referenceDistance = var2;
var8.maxDistance = var3;
var8.spatialBlend = var4;
var8.reverbSend = var5;
var8.volume = var6;
var8.loop = var7;
var8.resolveIndexes();
class="kw">return var8;
}
class="kw">private MusicEmitterBlock() {
}
class="kw">private void resolveIndexes() {
this.musicContainerIndex = this.musicContainerId == null ? 0 : normalizeIndex(MusicContainer.getAssetMap().getIndex(this.musicContainerId));
this.audioCategoryOverrideIndex = this.audioCategoryOverrideId == null
? 0
: normalizeIndex(AudioCategory.getAssetMap().getIndex(this.audioCategoryOverrideId));
}
class="kw">public MusicEmitterBlock(@Nonnull MusicEmitterBlock var1) {
this.musicContainerId = var1.musicContainerId;
this.audioCategoryOverrideId = var1.audioCategoryOverrideId;
this.referenceDistance = var1.referenceDistance;
this.maxDistance = var1.maxDistance;
this.spatialBlend = var1.spatialBlend;
this.reverbSend = var1.reverbSend;
this.volume = var1.volume;
this.loop = var1.loop;
this.originEpochMillis = var1.originEpochMillis;
this.musicContainerIndex = var1.musicContainerIndex;
this.audioCategoryOverrideIndex = var1.audioCategoryOverrideIndex;
}
class="kw">public long getOriginEpochMillis() {
class="kw">return this.originEpochMillis;
}
class="kw">public void setOriginEpochMillis(long var1) {
this.originEpochMillis = var1;
}
class="kw">public int getMusicContainerIndex() {
class="kw">return this.musicContainerIndex;
}
class="kw">public int getAudioCategoryOverrideIndex() {
class="kw">return this.audioCategoryOverrideIndex;
}
class="kw">public float getReferenceDistance() {
class="kw">return this.referenceDistance;
}
class="kw">public float getMaxDistance() {
class="kw">return this.maxDistance;
}
class="kw">public float getSpatialBlend() {
class="kw">return this.spatialBlend;
}
@Nonnull
class="kw">public MusicEmitterConfig toEmitterConfigPacket() {
MusicEmitterConfig var1 = new MusicEmitterConfig();
var1.musicContainerIndex = this.musicContainerIndex;
var1.audioCategoryOverrideIndex = this.audioCategoryOverrideIndex;
var1.referenceDistance = this.referenceDistance;
var1.maxDistance = this.maxDistance;
var1.spatialBlend = this.spatialBlend;
var1.reverbSend = this.reverbSend;
var1.volume = this.volume;
var1.loop = this.loop;
class="kw">return var1;
}
@Nonnull
@Override
class="kw">public Component<ChunkStore> clone() {
class="kw">return new MusicEmitterBlock(this);
}
}