2.0.1
Compatibility
Changes
Lingua Peripherals v2.0.1
CC: Tweaked addon — language-related peripherals, DFPWM tape audio, and Unicode-safe text I/O.
- Minecraft: 1.21.1 (NeoForge 21.1.228) · 1.20.1 (Forge 47.4.22)
- CC: Tweaked: 1.119.0+ (1.21.1) · 1.120.0 (1.20.1)
- License: CC BY-NC-SA 4.0
✨ What's new in v2.0.x
Full Unicode support (v2.0.0)
Fixes CC:Tweaked's lossy byte↔string conversion at both boundaries:
-
LinguaUtility.fixLuaString(String)— reverses Cobalt's byte→char mapping and re-decodes UTF-8, recovering non-ASCII text passed from Lua (handles both raw UTF-8 and the legacy\uXXXXworkaround). -
LinguaUtility.toLuaBytes(String)— returns UTF-8byte[]directly to Lua, bypassing Cobalt's lossy character encoding. -
All
@LuaFunctionstring parameters now go throughfixLuaString; all read methods return raw UTF-8 bytes. -
Write Lua code with native
\u{XXXX}escapes — no double-backslash workaround needed:local n = peripheral.find("narrator") n.playVoice('\u{4F60}\u{597D}') -- 你好 -
Read → write round-trip is now lossless (no double escaping).
-
Removed the
encodeNonAsciilayer from the display peripherals (flap/sign/lectern). -
Docs updated to v2.0.0 (README / README_CN / all peripheral docs).
Cassette auto-completion at boot (v2.0.1)
cassetteshell completion is now registered at boot time viarom/autorun/cassette.lua(instead of inside the program body), matching how CC:Tweaked registers completion for its own programs — completion now works on the firstcassette <Tab>, no need to run the program first.- Completion covers:
- subcommands:
play/pause/stop/label/volume/write/wget/? volumelevels0–3- file arguments for
write(completion.file)
- subcommands:
🗺️ 1.20.1 (Forge) support
Starting with the 2.0.0 line, the mod ships for both loaders:
| Version | Loader | File |
|---|---|---|
| 1.21.1 | NeoForge 21.1.228 | linguaperipherals-1.21.1-neoforge-2.0.1.jar |
| 1.20.1 | Forge 47.4.22 | linguaperipherals-1.20.1-forge-2.0.1.jar |
Port highlights:
- Networking rewritten from NeoForge payloads to Forge
SimpleChannel. - Access transformers for
Channel.pumpBuffers(int)andSoundEngine.executorenable DFPWM audio streaming on Forge (CC 1.120.0 +fg.deobf()). - JEI plugin adapted,
mods.tomlsplit per loader, recipe/network/peripheral registration updated.
🔧 Fixes in v2.0.x
- Cassette completion only worked after the program had been run once → registered at boot (v2.0.1).
- Non-ASCII text garbled / double-escaped across the Lua↔Java boundary →
fixLuaString/toLuaBytes(v2.0.0). \uXXXXworkaround required double backslashes → native\u{XXXX}supported (v2.0.0).
📦 Blocks & Items
| Block | Description |
|---|---|
| Narrator | TTS block using the Minecraft Narrator; full Speaker API |
| Creative Narrator | Indestructible, global broadcast, full Speaker API |
| Cassette Drive | Single-slot drive — data R/W, DFPWM audio playback, built-in cassette command |
| Item | Description |
|---|---|
| Cassette Tape | 16 colors, 1 MB storage (data or DFPWM audio) |
Display peripherals (place a computer adjacent): Create Flap Display (flap_display), Vanilla Sign (sign_display), Vanilla Lectern (lectern_display).
🔗 Links
- Source: github.com/Dr-Asm/Lingua-Peripherals
- Docs:
doc/(EN) &doc_cn/(中文) in the repo
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:15E7EVR3"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:RFgUjzi9:15E7EVR3"
}

