All versions
1.4.0
Release
Lingua Peripherals 1.4.03 months ago 511
Compatibility
Minecraft: Java Edition
1.21.1
Platform
NeoForge
Supported environments
Client and server
Changes
v1.4.0
New Features
Cassette Drive Audio Playback
- Stream DFPWM audio:
playTape()/pauseTape()/stopTape()/seekTape() saveAudio(audio)— encode PCM samples to DFPWM and write to cassette- Supports both CC-encoded and ffmpeg DFPWM formats
- Volume control:
setVolume(vol)/getVolume(), range 0.0–3.0, real-time during playback - Redstone pulse starts playback from beginning; comparator outputs play state (15/0)
tape_play_start/tape_play_endCC events- New config:
cassetteBroadcastAudio(broadcast to all online players),cassetteTapeSizeLimit(default 1MB),maxVolume
Narrator Enhancements
- Inherits all CC Speaker methods:
playNote()/playSound()/playAudio()/stop() - Retains
playVoice(text, rad)TTS - Creative narrator adds
globalVoice(text)global broadcast
Turtle Upgrades
- Narrator & Creative Narrator usable as Turtle upgrades (left/right hand slot)
- Side render model auto-registered
- Full narrator method access when equipped
Built-in Program
- New
cassettecommand (auto-loaded in CraftOS):play/pause/stop/label/volume/write/wget
Fixes
- Volume > 1.0 syncs range in real-time
setVolume()applies immediately during playback (CassetteVolumePayload)AudioReflectionuses Mojang mappings to avoid crashCassetteTapeFileHandlebinary encoding correction- Client audio race condition (push before play)
- Progress auto-resets after playback ends; auto-stop on removal/eject
Config
| Key | Type | Default | Description |
|---|---|---|---|
cassetteTapeSizeLimit |
int | 1048576 (1MB) | Tape file max size |
maxVolume |
double | 3.0 | Maximum volume |
cassetteBroadcastAudio |
boolean | false | Broadcast to all players |
New Files
peripheral/DfpwmEncoder.java— PCM→DFPWM encoderperipheral/EncodedAudio.java— encoded audio data blockblock/entity/DfpwmPlaybackController.java— tape streaming controllernetwork/CassetteAudioPayload.java/CassetteVolumePayload.java— network packetsclient/audio/CassetteAudioStream.java/CassetteSound.java/CassetteAudioManager.java— client playback pipelineturtle/TurtleNarrator.java/TurtleCreativeNarrator.java— Turtle upgradesinit/ModTurtleUpgrades.java— upgrade registry
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:RFgUjzi9:8nb3mEPB"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:RFgUjzi9:8nb3mEPB"
}

