diff --git a/src/main/java/de/bixilon/minosoft/data/world/ChunkSection.kt b/src/main/java/de/bixilon/minosoft/data/world/ChunkSection.kt index 1fbc2b907..f3c46f055 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/ChunkSection.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/ChunkSection.kt @@ -58,7 +58,8 @@ class ChunkSection( fun realTick(connection: PlayConnection, chunkSectionPosition: Vec3i) { blockEntities.forEach { entity, inChunkSectionPosition -> - entity.realTick(connection, blocks[inChunkSectionPosition.index]!!, chunkSectionPosition + inChunkSectionPosition) + val block = blocks[inChunkSectionPosition.index] ?: return@forEach // maybe block already got destroyed + entity.realTick(connection, block, chunkSectionPosition + inChunkSectionPosition) } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/sound/AudioPlayer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/sound/AudioPlayer.kt index 14cdf6c6e..4ef88a049 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/sound/AudioPlayer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/sound/AudioPlayer.kt @@ -67,19 +67,9 @@ class AudioPlayer( private lateinit var listener: SoundListener private val sources: MutableList = synchronizedListOf() - val availableSources: Int - get() { - val sources = sources.toSynchronizedList() - var available = 0 + var availableSources: Int = 0 + private set - for (source in sources) { - if (source.available) { - available++ - } - } - - return available - } val sourcesCount: Int get() = sources.size @@ -207,6 +197,15 @@ class AudioPlayer( break } queue.work() + + var availableSources = 0 + for (source in sources) { + if (source.available) { + availableSources++ + } + } + this.availableSources = availableSources + Thread.sleep(1L) } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/sound/SoundSource.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/sound/SoundSource.kt index 999f94140..4a06a42a4 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/sound/SoundSource.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/sound/SoundSource.kt @@ -73,7 +73,7 @@ class SoundSource { get() = alGetSourcei(source, AL_SOURCE_STATE) == AL_PLAYING val available: Boolean - get() = !isPlaying || System.currentTimeMillis() - playTime > (sound?.length ?: 0L) // ToDo: Allow pause + get() = !isPlaying || System.currentTimeMillis() - playTime > (sound?.length ?: 0L) // ToDo: Allow pause fun play() { playTime = System.currentTimeMillis()