Skip to content

Commit 88cc004

Browse files
committed
More backport stuff
1 parent a33a229 commit 88cc004

File tree

9 files changed

+120
-36
lines changed

9 files changed

+120
-36
lines changed

.kotlin/sessions/kotlin-compiler-1568558164556976759.salive

Whitespace-only changes.

src/main/kotlin/xyz/bluspring/unitytranslate/client/UnityTranslateClient.kt

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class UnityTranslateClient {
3232
init {
3333
WindowsSpeechApiTranscriber.isSupported() // runs a check to load Windows Speech API. why write the code again anyway?
3434
setupCompat()
35+
updateConfig()
3536

3637
transcriber = UnityTranslate.config.client.transcriber.creator.invoke(UnityTranslate.config.client.language)
3738
setupTranscriber(transcriber)
@@ -76,7 +77,7 @@ class UnityTranslateClient {
7677
}
7778

7879
if (SET_SPOKEN_LANGUAGE.consumeClick() && mc.screen == null) {
79-
mc.setScreen(LanguageSelectScreen(null, false))
80+
mc.setScreen(LanguageSelectScreen(null, LanguageSelectType.SPOKEN))
8081
}
8182

8283
if (CLEAR_TRANSCRIPTS.consumeClick()) {
@@ -213,8 +214,29 @@ class UnityTranslateClient {
213214
@JvmStatic
214215
val keys: List<KeyMapping> = listOf(CONFIGURE_BOXES, TOGGLE_TRANSCRIPTION, TOGGLE_BOXES, SET_SPOKEN_LANGUAGE, CLEAR_TRANSCRIPTS, OPEN_CONFIG_GUI)
215216

217+
val clientConfig = UnityTranslate.config.client
218+
216219
val isTalkBalloonsInstalled = UnityTranslate.instance.proxy.isModLoaded("talk_balloons")
217220

221+
fun updateConfig() {
222+
transcriptHolders.removeIf { holder ->
223+
clientConfig.transcriptBoxes.none { it.language == holder.language }
224+
&& clientConfig.language != holder.language
225+
&& clientConfig.balloonLanguage != holder.language
226+
}
227+
228+
if (transcriptHolders.none { it.language == clientConfig.language })
229+
transcriptHolders.add(TranscriptHolder(clientConfig.language))
230+
231+
if (transcriptHolders.none { it.language == clientConfig.balloonLanguage })
232+
transcriptHolders.add(TranscriptHolder(clientConfig.balloonLanguage))
233+
234+
for (box in clientConfig.transcriptBoxes) {
235+
if (transcriptHolders.none { it.language == box.language })
236+
transcriptHolders.add(TranscriptHolder(box.language))
237+
}
238+
}
239+
218240
fun displayMessage(component: Component, isError: Boolean = false) {
219241
val full = Component.empty()
220242
.append(Component.literal("[UnityTranslate]: ")

src/main/kotlin/xyz/bluspring/unitytranslate/client/gui/EditTranscriptBoxesScreen.kt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,9 @@ import net.minecraft.network.chat.Component
1212
import net.minecraft.util.FastColor
1313
import net.minecraft.util.Mth
1414
import org.lwjgl.glfw.GLFW
15-
import xyz.bluspring.modernnetworking.api.minecraft.VanillaPacketSender
1615
import xyz.bluspring.unitytranslate.UnityTranslate
1716
import xyz.bluspring.unitytranslate.client.UnityTranslateClient
18-
import xyz.bluspring.unitytranslate.network.payloads.SetUsedLanguagesPayload
17+
import xyz.bluspring.unitytranslate.network.UTClientNetworking
1918
import java.util.*
2019

2120
class EditTranscriptBoxesScreen(val boxes: MutableList<TranscriptBox>, val parent: Screen? = null) : Screen(Component.empty()) {
@@ -42,7 +41,7 @@ class EditTranscriptBoxesScreen(val boxes: MutableList<TranscriptBox>, val paren
4241

4342
this.addRenderableWidget(
4443
Button.builder(Component.literal("+")) {
45-
Minecraft.getInstance().setScreen(LanguageSelectScreen(this, true))
44+
Minecraft.getInstance().setScreen(LanguageSelectScreen(this, LanguageSelectType.TRANSCRIPT_BOX))
4645
}
4746
.pos(this.width / 2 - (Button.DEFAULT_WIDTH / 2) - Button.DEFAULT_HEIGHT, this.height - 50)
4847
.width(Button.DEFAULT_HEIGHT)
@@ -57,13 +56,10 @@ class EditTranscriptBoxesScreen(val boxes: MutableList<TranscriptBox>, val paren
5756
UnityTranslateClient.shouldRenderBoxes = false
5857

5958
UnityTranslate.saveConfig()
59+
UnityTranslateClient.updateConfig()
6060

6161
if (UnityTranslateClient.transcriptHolders.isNotEmpty()) {
62-
val languages = UnityTranslateClient.transcriptHolders.map { it.language }
63-
64-
if (Minecraft.getInstance().player != null) {
65-
VanillaPacketSender.sendToServer(SetUsedLanguagesPayload(EnumSet.copyOf(languages)))
66-
}
62+
UTClientNetworking.updateLanguagesToServer()
6763
}
6864

6965
// make sure that the cursor is reset

src/main/kotlin/xyz/bluspring/unitytranslate/client/gui/LanguageSelectScreen.kt

Lines changed: 43 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ import net.minecraft.util.FormattedCharSequence
1212
import xyz.bluspring.unitytranslate.Language
1313
import xyz.bluspring.unitytranslate.UnityTranslate
1414
import xyz.bluspring.unitytranslate.client.UnityTranslateClient
15+
import xyz.bluspring.unitytranslate.network.UTClientNetworking
1516

16-
class LanguageSelectScreen(val parent: Screen?, val isAddingBox: Boolean) : Screen(Component.translatable("options.language")) {
17+
class LanguageSelectScreen(val parent: Screen?, val type: LanguageSelectType) : Screen(Component.translatable("options.language")) {
1718
private lateinit var list: LanguageSelectionList
1819

1920
override fun init() {
@@ -43,10 +44,11 @@ class LanguageSelectScreen(val parent: Screen?, val isAddingBox: Boolean) : Scre
4344
super.render(guiGraphics, mouseX, mouseY, partialTick)
4445

4546
guiGraphics.drawCenteredString(font, Component.translatable(
46-
if (isAddingBox)
47-
"unitytranslate.select_language"
48-
else
49-
"unitytranslate.set_spoken_language"
47+
when (type) {
48+
LanguageSelectType.TRANSCRIPT_BOX -> "unitytranslate.select_language"
49+
LanguageSelectType.SPOKEN -> "unitytranslate.set_spoken_language"
50+
LanguageSelectType.BALLOON -> "unitytranslate.set_balloon_language"
51+
}
5052
), this.width / 2, 15, 16777215)
5153

5254
UnityTranslateClient.renderCreditText(guiGraphics)
@@ -60,7 +62,7 @@ class LanguageSelectScreen(val parent: Screen?, val isAddingBox: Boolean) : Scre
6062
return
6163
}
6264

63-
if (isAddingBox) {
65+
if (type == LanguageSelectType.TRANSCRIPT_BOX) {
6466
if (list.selected?.shouldBeDeactivated == true) {
6567
onClose()
6668
return
@@ -69,11 +71,25 @@ class LanguageSelectScreen(val parent: Screen?, val isAddingBox: Boolean) : Scre
6971
Minecraft.getInstance().execute {
7072
UnityTranslate.config.client.transcriptBoxes.add(TranscriptBox(0, 0, 150, 170, 120, language))
7173
UnityTranslate.saveConfig()
74+
UnityTranslateClient.updateConfig()
75+
76+
UTClientNetworking.updateLanguagesToServer()
7277
}
7378
} else {
74-
UnityTranslate.config.client.language = language
75-
UnityTranslateClient.transcriber.changeLanguage(language)
79+
if (type == LanguageSelectType.SPOKEN) {
80+
UnityTranslate.config.client.language = language
81+
UnityTranslateClient.transcriber.changeLanguage(language)
82+
} else {
83+
if (list.selected!!.isBalloonDefault)
84+
UnityTranslate.config.client.setBalloonLanguage(null)
85+
else
86+
UnityTranslate.config.client.setBalloonLanguage(language)
87+
}
88+
7689
UnityTranslate.saveConfig()
90+
UnityTranslateClient.updateConfig()
91+
92+
UTClientNetworking.updateLanguagesToServer()
7793
}
7894

7995
onClose()
@@ -91,18 +107,29 @@ class LanguageSelectScreen(val parent: Screen?, val isAddingBox: Boolean) : Scre
91107
18
92108
) {
93109
init {
110+
if (type == LanguageSelectType.BALLOON) {
111+
val default = Entry(UnityTranslate.config.client.language, true)
112+
this.addEntry(default)
113+
114+
if (UnityTranslate.config.client.isBalloonDefaultLanguage()) {
115+
this.selected = default
116+
}
117+
}
118+
94119
for (language in Language.entries.sortedBy { it.name }) {
95120
val entry = Entry(language)
96121
this.addEntry(entry)
97122

98-
if (!isAddingBox && UnityTranslateClient.transcriber.language == language) {
123+
if (type == LanguageSelectType.SPOKEN && UnityTranslateClient.transcriber.language == language) {
124+
this.selected = entry
125+
} else if (type == LanguageSelectType.BALLOON && UnityTranslate.config.client.balloonLanguage == language && !UnityTranslate.config.client.isBalloonDefaultLanguage()) {
99126
this.selected = entry
100127
}
101128
}
102129
}
103130

104-
inner class Entry(val language: Language) : ObjectSelectionList.Entry<Entry>() {
105-
internal val shouldBeDeactivated = isAddingBox && UnityTranslate.config.client.transcriptBoxes.any { it.language == language }
131+
inner class Entry(val language: Language, var isBalloonDefault: Boolean = true) : ObjectSelectionList.Entry<Entry>() {
132+
internal val shouldBeDeactivated = type == LanguageSelectType.TRANSCRIPT_BOX && UnityTranslate.config.client.transcriptBoxes.any { it.language == language }
106133
private var lastClickTime: Long = 0L
107134

108135
override fun render(
@@ -116,9 +143,12 @@ class LanguageSelectScreen(val parent: Screen?, val isAddingBox: Boolean) : Scre
116143
0x656565
117144
} else 0xFFFFFF
118145

119-
guiGraphics.drawCenteredString(font, language.text, this@LanguageSelectScreen.width / 2, top + 1, color)
146+
if (isBalloonDefault)
147+
guiGraphics.drawCenteredString(font, Component.translatable("unitytranslate.select_language.balloon_default", language.text), this@LanguageSelectScreen.width / 2, top + 1, color)
148+
else
149+
guiGraphics.drawCenteredString(font, language.text, this@LanguageSelectScreen.width / 2, top + 1, color)
120150

121-
if (!isAddingBox) {
151+
if (type != LanguageSelectType.TRANSCRIPT_BOX) {
122152
var x = this@LanguageSelectScreen.width / 2 + (font.width(language.text) / 2) + 4
123153
for (type in language.supportedTranscribers.keys) {
124154
if (!type.enabled)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package xyz.bluspring.unitytranslate.client.gui
2+
3+
enum class LanguageSelectType {
4+
SPOKEN,
5+
TRANSCRIPT_BOX,
6+
BALLOON
7+
}

src/main/kotlin/xyz/bluspring/unitytranslate/client/gui/UTConfigScreen.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,19 @@ class UTConfigScreen(private val parent: Screen?) : Screen(Component.literal("Un
428428
y += 30
429429

430430
addRenderableWidget(Button.builder(Component.translatable("unitytranslate.set_spoken_language")) {
431-
Minecraft.getInstance().setScreen(LanguageSelectScreen(this@UTConfigSubScreen, false))
431+
Minecraft.getInstance().setScreen(LanguageSelectScreen(this@UTConfigSubScreen, LanguageSelectType.SPOKEN))
432+
}
433+
.pos(this.width / 2 - (Button.DEFAULT_WIDTH / 2), y)
434+
.build()
435+
.apply {
436+
(this as ScrollableWidget).updateInitialPosition()
437+
}
438+
)
439+
440+
y += 30
441+
442+
addRenderableWidget(Button.builder(Component.translatable("unitytranslate.set_balloon_language")) {
443+
Minecraft.getInstance().setScreen(LanguageSelectScreen(this@UTConfigSubScreen, LanguageSelectType.BALLOON))
432444
}
433445
.pos(this.width / 2 - (Button.DEFAULT_WIDTH / 2), y)
434446
.build()

src/main/kotlin/xyz/bluspring/unitytranslate/config/UnityTranslateConfig.kt

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ data class UnityTranslateConfig(
2727
@get:Hidden
2828
var language: Language = Language.ENGLISH,
2929
@get:Hidden
30-
var balloonLanguage: Language? = null,
30+
private var balloonLanguageStored: Language? = null,
3131

3232
var disappearingText: Boolean = true,
3333
@get:DependsOn("disappearingText")
@@ -36,7 +36,20 @@ data class UnityTranslateConfig(
3636
@get:DependsOn("disappearingText")
3737
@get:FloatRange(from = 0.0f, to = 5.0f, increment = 0.1f)
3838
var disappearingTextFade: Float = 0.5f
39-
)
39+
) {
40+
val balloonLanguage: Language
41+
get() {
42+
return this.balloonLanguageStored ?: this.language
43+
}
44+
45+
fun setBalloonLanguage(language: Language?) {
46+
this.balloonLanguageStored = language
47+
}
48+
49+
fun isBalloonDefaultLanguage(): Boolean {
50+
return this.balloonLanguageStored == null
51+
}
52+
}
4053

4154
@Serializable
4255
data class CommonConfig(
@@ -57,8 +70,6 @@ data class UnityTranslateConfig(
5770
var libreTranslateThreads: Int = 4,
5871

5972
var offloadServers: MutableList<OffloadedLibreTranslateServer> = mutableListOf(
60-
OffloadedLibreTranslateServer("https://libretranslate.devos.gay"),
61-
OffloadedLibreTranslateServer("https://trans.zillyhuhn.com"),
6273
),
6374

6475
// Interval for when the batch translations will be sent.

src/main/kotlin/xyz/bluspring/unitytranslate/network/UTClientNetworking.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,10 @@ object UTClientNetworking {
5858
fun onClientLeave() {
5959
UnityTranslateClient.connectedServerHasSupport = false
6060
}
61+
62+
fun updateLanguagesToServer() {
63+
if (Minecraft.getInstance().player != null) {
64+
VanillaPacketSender.sendToServer(SetUsedLanguagesPayload(EnumSet.copyOf(UnityTranslateClient.transcriptHolders.map { it.language })))
65+
}
66+
}
6167
}

src/main/kotlin/xyz/bluspring/unitytranslate/translator/UnityTranslateLibInstance.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,10 @@ import com.google.common.collect.Multimap
55
import kotlinx.coroutines.Dispatchers
66
import kotlinx.coroutines.flow.asFlow
77
import kotlinx.coroutines.runBlocking
8-
import net.fabricmc.api.EnvType
98
import net.fabricmc.loader.api.FabricLoader
109
import xyz.bluspring.unitytranslate.Language
1110
import xyz.bluspring.unitytranslate.UnityTranslate
1211
import xyz.bluspring.unitytranslate.library.UnityTranslateLib
13-
import xyz.bluspring.unitytranslate.library.util.collect
14-
import xyz.bluspring.unitytranslate.library.util.concurrent
1512

1613
class UnityTranslateLibInstance private constructor(): LibreTranslateInstance("", 150) {
1714
override val supportedLanguages: Multimap<Language, Language>
@@ -58,15 +55,18 @@ class UnityTranslateLibInstance private constructor(): LibreTranslateInstance(""
5855
try {
5956
library.load()
6057

61-
if (FabricLoader.getInstance().isDevelopmentEnvironment || FabricLoader.getInstance().environmentType == EnvType.SERVER) {
58+
if (FabricLoader.getInstance().isDevelopmentEnvironment) {
6259
runBlocking(Dispatchers.IO) {
6360
for (index in library.packageIndex.indexList) {
6461
index.packages.chunked(10).asFlow().collect {
65-
it.asFlow().concurrent().collect {
66-
UnityTranslate.logger.info("Downloading translation model ${it.fromCode}-${it.toCode}")
67-
index.getOrDownloadModelInfos(it.fromCode, it.toCode)
68-
UnityTranslate.logger.info("Downloaded translation model ${it.fromCode}-${it.toCode}")
69-
}
62+
// only download what's necessary for now
63+
UnityTranslate.logger.info("Downloading translation model for en -> es")
64+
index.getOrDownloadModelInfos("en", "es")
65+
66+
UnityTranslate.logger.info("Downloading translation model for es -> en")
67+
index.getOrDownloadModelInfos("es", "en")
68+
69+
UnityTranslate.logger.info("Downloaded all testing translation models!")
7070
}
7171
}
7272
}

0 commit comments

Comments
 (0)