diff options
3 files changed, 24 insertions, 12 deletions
diff --git a/gradle.properties b/gradle.properties index 72b9c28..cbc5cac 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,7 +10,7 @@ loader_version=0.16.10 fabric_kotlin_version=1.13.1+kotlin.2.1.10 # Mod Properties -mod_version=1.0.2 +mod_version=1.0.3 maven_group=space.autistic.radio archives_base_name=pirate-radio diff --git a/src/client/kotlin/space/autistic/radio/client/flite/FliteFactory.kt b/src/client/kotlin/space/autistic/radio/client/flite/FliteFactory.kt index 89b9656..768a040 100644 --- a/src/client/kotlin/space/autistic/radio/client/flite/FliteFactory.kt +++ b/src/client/kotlin/space/autistic/radio/client/flite/FliteFactory.kt @@ -14,19 +14,23 @@ import kotlin.reflect.jvm.javaMethod object FliteFactory : () -> Instance { private fun fd_read(a: Int, b: Int, c: Int, d: Int): Int { - throw UnsupportedOperationException() + // EBADF + return 8 } private fun fd_seek(a: Int, b: Long, c: Int, d: Int): Int { - throw UnsupportedOperationException() + // EBADF + return 8 } private fun fd_close(a: Int): Int { - throw UnsupportedOperationException() + // EBADF + return 8 } private fun fd_write(a: Int, b: Int, c: Int, d: Int): Int { - throw UnsupportedOperationException() + // EBADF + return 8 } private fun proc_exit(status: Int): Nothing { diff --git a/src/client/kotlin/space/autistic/radio/client/sound/PirateRadioSoundInstance.kt b/src/client/kotlin/space/autistic/radio/client/sound/PirateRadioSoundInstance.kt index 601b458..98db4d6 100644 --- a/src/client/kotlin/space/autistic/radio/client/sound/PirateRadioSoundInstance.kt +++ b/src/client/kotlin/space/autistic/radio/client/sound/PirateRadioSoundInstance.kt @@ -1,5 +1,6 @@ package space.autistic.radio.client.sound +import com.dylibso.chicory.wasm.ChicoryException import net.fabricmc.fabric.api.client.sound.v1.FabricSoundInstance import net.minecraft.client.network.ClientPlayerEntity import net.minecraft.client.sound.* @@ -13,6 +14,7 @@ import space.autistic.radio.client.fmsim.FmFullThread import space.autistic.radio.client.fmsim.FmFullThread.trackedTransmitterQueue import space.autistic.radio.client.fmsim.FmSimulatorMode import space.autistic.radio.entity.DisposableTransmitterEntity +import space.autistic.radio.wasm.WasmExitException import java.lang.ref.WeakReference import java.nio.FloatBuffer import java.util.UUID @@ -73,15 +75,21 @@ class PirateRadioSoundInstance(private val player: ClientPlayerEntity) : MovingS listOf(lower, main, upper).flatten().associateTo(trackedTransmitters) { val text = it.text val audio = futuresCache[text]?.get() ?: CompletableFuture.supplyAsync { - lateinit var buffer: FloatBuffer - FliteWrapper.textToWave(text) { - buffer = FloatBuffer.allocate(it.capacity()) - while (it.hasRemaining()) { - val sample = (it.get().toFloat() + 0.5f) / 32767.5f - buffer.put(sample) + try { + lateinit var buffer: FloatBuffer + FliteWrapper.textToWave(text) { + buffer = FloatBuffer.allocate(it.capacity()) + while (it.hasRemaining()) { + val sample = (it.get().toFloat() + 0.5f) / 32767.5f + buffer.put(sample) + } } + buffer.array() + } catch (e: ChicoryException) { + floatArrayOf() + } catch (e: WasmExitException) { + floatArrayOf() } - buffer.array() } futuresCache[text] = WeakReference(audio) it.uuid to TrackedTransmitter( |