summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md4
-rw-r--r--build.gradle.kts2
-rw-r--r--platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/handler/DirectMessageHandler.kt12
-rw-r--r--platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/RomanjiConverter.kt16
-rw-r--r--platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/listener/PlayerChatListener.kt34
5 files changed, 44 insertions, 24 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b7d1214..abc3346 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
# LunaticChat Changelog
+### v0.3.1
+
+- Fixed an issue where Japanese text was being converted to Romanized characters.
+
### v0.3.0
- Fixed an issue where romaji conversion did not work properly in some cases.
diff --git a/build.gradle.kts b/build.gradle.kts
index aa66d31..d2bd408 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -12,7 +12,7 @@ plugins {
allprojects {
group = "dev.m1sk9"
- version = "0.3.0"
+ version = "0.3.1"
repositories {
mavenCentral()
diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/handler/DirectMessageHandler.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/handler/DirectMessageHandler.kt
index 853dbb5..60adb7e 100644
--- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/handler/DirectMessageHandler.kt
+++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/command/handler/DirectMessageHandler.kt
@@ -81,12 +81,12 @@ class DirectMessageHandler(
val displayMessage =
senderSettings
?.takeIf { it.japaneseConversionEnabled }
- ?.let {
- romanjiConverter
- ?.runCatching {
- "$message §e(${convert(message)})"
- }?.getOrNull()
- } ?: message
+ ?.let { romanjiConverter }
+ ?.runCatching {
+ convert(message)
+ ?.let { "$message §e($it)" }
+ ?: message
+ }?.getOrNull() ?: message
val format = lunaticChatConfiguration.messageFormat.directMessageFormat
diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/RomanjiConverter.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/RomanjiConverter.kt
index 79efa87..edd6041 100644
--- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/RomanjiConverter.kt
+++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/converter/RomanjiConverter.kt
@@ -16,10 +16,17 @@ class RomanjiConverter(
* Step 2: Hiragana -> Kanji/Kana (using Google IME API)
*
* @param input The romaji string to convert.
- * @return The converted Japanese string, or the original input if conversion fails.
+ * @return The converted Japanese string, or null if the input contains non-romaji characters.
* @throws Exception if the conversion process encounters an error.
*/
- suspend fun convert(input: String): String {
+ suspend fun convert(input: String): String? {
+ if (!isRomajiOnly(input)) {
+ if (debugMode) {
+ logger.info("Input contains non-romaji characters, skipping conversion: $input")
+ }
+ return null
+ }
+
cache.get(input)?.let {
return it
}
@@ -42,4 +49,9 @@ class RomanjiConverter(
cache.put(input, result)
return result
}
+
+ private fun isRomajiOnly(input: String): Boolean =
+ input.all {
+ it.code in 0x20..0x7E
+ }
}
diff --git a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/listener/PlayerChatListener.kt b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/listener/PlayerChatListener.kt
index eb1908d..17df427 100644
--- a/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/listener/PlayerChatListener.kt
+++ b/platform-paper/src/main/kotlin/dev/m1sk9/lunaticChat/paper/listener/PlayerChatListener.kt
@@ -10,26 +10,30 @@ import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
class PlayerChatListener(
- private val converter: RomanjiConverter,
+ private val romajiConverter: RomanjiConverter,
private val settingsManager: PlayerSettingsManager,
) : Listener {
private val plainTextSerializer = PlainTextComponentSerializer.plainText()
@EventHandler(ignoreCancelled = true)
- fun onChat(event: AsyncChatEvent) {
- val player = event.player
- val settings = settingsManager.getSettings(player.uniqueId)
- if (!settings.japaneseConversionEnabled)return
+ fun onChat(event: AsyncChatEvent) =
+ runBlocking {
+ val player = event.player
+ val settings = settingsManager.getSettings(player.uniqueId)
+ val message = event.message()
+ val originalMessage = plainTextSerializer.serialize(message)
- val message = event.message()
- val originalMessage = plainTextSerializer.serialize(message)
+ val displayMessage =
+ settings
+ .takeIf {
+ it.japaneseConversionEnabled
+ }?.runCatching {
+ romajiConverter
+ .convert(originalMessage)
+ ?.let { "$originalMessage §e($it)" }
+ ?: originalMessage
+ }?.getOrNull() ?: originalMessage
- // AsyncChatEvent is already running on an async thread, so runBlocking is safe
- val result =
- runBlocking {
- converter.convert(originalMessage)
- }
-
- event.message(Component.text("$originalMessage §e($result)"))
- }
+ event.message(Component.text(displayMessage))
+ }
}