Skip to content

Commit c6ddff8

Browse files
committed
Backport some stuff from rewrite and 0.1.19-xushii
1 parent 099e801 commit c6ddff8

File tree

17 files changed

+305
-496
lines changed

17 files changed

+305
-496
lines changed

fabric/src/main/kotlin/xyz/bluspring/unitytranslate/fabric/UnityTranslateFabric.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,33 @@
11
package xyz.bluspring.unitytranslate.fabric
22

33
import net.fabricmc.api.ModInitializer
4+
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback
5+
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents
6+
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents
7+
import net.minecraft.commands.CommandSourceStack
48
import xyz.bluspring.unitytranslate.UnityTranslate
9+
import xyz.bluspring.unitytranslate.commands.UnityTranslateCommands
10+
import xyz.bluspring.unitytranslate.translator.TranslatorManager
511

612
class UnityTranslateFabric : ModInitializer {
713
override fun onInitialize() {
814
instance = UnityTranslate()
15+
16+
CommandRegistrationCallback.EVENT.register { dispatcher, registryAccess, environment ->
17+
UnityTranslateCommands.register(dispatcher, "unitytranslate", false, CommandSourceStack::sendSystemMessage)
18+
}
19+
20+
ServerLifecycleEvents.SERVER_STARTING.register { server ->
21+
TranslatorManager.serverStarting(server)
22+
}
23+
24+
ServerLifecycleEvents.SERVER_STOPPING.register { _ ->
25+
TranslatorManager.serverStopping()
26+
}
27+
28+
ServerPlayConnectionEvents.DISCONNECT.register { handler, server ->
29+
TranslatorManager.playerQuit(handler.player)
30+
}
931
}
1032

1133
companion object {

fabric/src/main/kotlin/xyz/bluspring/unitytranslate/fabric/client/UnityTranslateFabricClient.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package xyz.bluspring.unitytranslate.fabric.client
22

33
import net.fabricmc.api.ClientModInitializer
4+
import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback
5+
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource
46
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents
57
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents
68
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper
79
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents
810
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback
911
import xyz.bluspring.unitytranslate.client.UnityTranslateClient
12+
import xyz.bluspring.unitytranslate.commands.UnityTranslateCommands
1013

1114
class UnityTranslateFabricClient : ClientModInitializer {
1215
override fun onInitializeClient() {
@@ -31,5 +34,9 @@ class UnityTranslateFabricClient : ClientModInitializer {
3134
HudRenderCallback.EVENT.register { guiGraphics, delta ->
3235
instance.clientRenderHud(guiGraphics, delta)
3336
}
37+
38+
ClientCommandRegistrationCallback.EVENT.register { dispatcher, registryAccess ->
39+
UnityTranslateCommands.register(dispatcher, "unitytranslateclient", true, FabricClientCommandSource::sendFeedback)
40+
}
3441
}
3542
}

forge/src/main/kotlin/xyz/bluspring/unitytranslate/forge/ForgeEvents.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package xyz.bluspring.unitytranslate.forge
22

3+
import net.minecraft.commands.CommandSourceStack
34
import net.minecraftforge.common.MinecraftForge
5+
import net.minecraftforge.event.RegisterCommandsEvent
46
import net.minecraftforge.eventbus.api.SubscribeEvent
57
import net.minecraftforge.server.permission.events.PermissionGatherEvent
8+
import xyz.bluspring.unitytranslate.commands.UnityTranslateCommands
69

710
object ForgeEvents {
811
fun init() {
@@ -13,4 +16,9 @@ object ForgeEvents {
1316
fun onPermissionsGather(event: PermissionGatherEvent.Nodes) {
1417
event.addNodes(UnityTranslateForge.REQUEST_TRANSLATIONS_NODE)
1518
}
19+
20+
@SubscribeEvent
21+
fun onCommandRegister(ev: RegisterCommandsEvent) {
22+
UnityTranslateCommands.register(ev.dispatcher, "unitytranslate", false, CommandSourceStack::sendSystemMessage)
23+
}
1624
}

forge/src/main/kotlin/xyz/bluspring/unitytranslate/forge/UnityTranslateForgeClient.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package xyz.bluspring.unitytranslate.forge
22

33
import net.minecraft.client.Minecraft
4+
import net.minecraft.commands.CommandSourceStack
45
import net.minecraftforge.client.event.ClientPlayerNetworkEvent
6+
import net.minecraftforge.client.event.RegisterClientCommandsEvent
57
import net.minecraftforge.client.event.RenderGuiEvent
68
import net.minecraftforge.event.TickEvent
79
import net.minecraftforge.eventbus.api.SubscribeEvent
810
import xyz.bluspring.unitytranslate.client.UnityTranslateClient
11+
import xyz.bluspring.unitytranslate.commands.UnityTranslateCommands
912

1013
object UnityTranslateForgeClient {
1114
val instance = UnityTranslateClient()
@@ -17,6 +20,11 @@ object UnityTranslateForgeClient {
1720
}
1821
}
1922

23+
@SubscribeEvent
24+
fun onClientCommands(ev: RegisterClientCommandsEvent) {
25+
UnityTranslateCommands.register(ev.dispatcher, "unitytranslateclient", true, CommandSourceStack::sendSystemMessage)
26+
}
27+
2028
@SubscribeEvent
2129
fun onHudRender(ev: RenderGuiEvent.Post) {
2230
this.instance.clientRenderHud(ev.guiGraphics, ev.partialTick)

src/main/kotlin/xyz/bluspring/unitytranslate/PlatformProxyImpl.kt

Lines changed: 0 additions & 91 deletions
This file was deleted.

src/main/kotlin/xyz/bluspring/unitytranslate/UnityTranslate.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ import xyz.bluspring.unitytranslate.compat.voicechat.PlasmoVoiceChatCompat
77
import xyz.bluspring.unitytranslate.compat.voicechat.UTVoiceChatCompat
88
import xyz.bluspring.unitytranslate.config.UnityTranslateConfig
99
import xyz.bluspring.unitytranslate.network.UTServerNetworking
10-
import xyz.bluspring.unitytranslate.translator.LocalLibreTranslateInstance
1110
import xyz.bluspring.unitytranslate.translator.TranslatorManager
1211
import java.io.File
12+
import java.util.*
1313

14-
class UnityTranslate(val proxy: PlatformProxy = PlatformProxyImpl()) {
14+
class UnityTranslate(val proxy: PlatformProxy = ServiceLoader.load(PlatformProxy::class.java).first()) {
1515
init {
1616
instance = this
1717
configFile = File(proxy.configDir.toFile(), "unitytranslate.json")
@@ -28,7 +28,7 @@ class UnityTranslate(val proxy: PlatformProxy = PlatformProxyImpl()) {
2828
}
2929

3030
fun serverStopping() {
31-
LocalLibreTranslateInstance.killOpenInstances()
31+
// LocalLibreTranslateInstance.killOpenInstances()
3232
}
3333

3434
companion object {

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

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,24 @@
11
package xyz.bluspring.unitytranslate.client
22

3+
//? if >= 1.20.6 {
4+
/*import xyz.bluspring.unitytranslate.network.payloads.SendTranscriptToServerPayload
5+
*///? }
36
import com.mojang.blaze3d.platform.InputConstants
47
import net.minecraft.ChatFormatting
58
import net.minecraft.client.KeyMapping
69
import net.minecraft.client.Minecraft
710
import net.minecraft.client.gui.GuiGraphics
811
import net.minecraft.network.chat.CommonComponents
912
import net.minecraft.network.chat.Component
13+
import xyz.bluspring.unitytranslate.Language
1014
import xyz.bluspring.unitytranslate.UnityTranslate
1115
import xyz.bluspring.unitytranslate.client.gui.*
1216
import xyz.bluspring.unitytranslate.client.transcribers.SpeechTranscriber
1317
import xyz.bluspring.unitytranslate.client.transcribers.windows.sapi5.WindowsSpeechApiTranscriber
1418
import xyz.bluspring.unitytranslate.compat.talkballoons.TalkBalloonsCompat
15-
import xyz.bluspring.unitytranslate.events.TranscriptEvents
1619
import xyz.bluspring.unitytranslate.network.PacketIds
1720
import xyz.bluspring.unitytranslate.network.UTClientNetworking
18-
import xyz.bluspring.unitytranslate.transcript.Transcript
19-
//? if >= 1.20.6 {
20-
/*import xyz.bluspring.unitytranslate.network.payloads.SendTranscriptToServerPayload
21-
*///? }
22-
import xyz.bluspring.unitytranslate.translator.LocalLibreTranslateInstance
21+
import xyz.bluspring.unitytranslate.transcript.TranscriptHolder
2322
import xyz.bluspring.unitytranslate.translator.TranslatorManager
2423
import java.util.concurrent.ConcurrentLinkedQueue
2524
import java.util.function.BiConsumer
@@ -77,7 +76,7 @@ class UnityTranslateClient {
7776
}
7877

7978
if (CLEAR_TRANSCRIPTS.consumeClick()) {
80-
for (box in languageBoxes) {
79+
for (box in transcriptHolders) {
8180
box.transcripts.clear()
8281
}
8382
}
@@ -101,7 +100,7 @@ class UnityTranslateClient {
101100

102101
// prune transcripts
103102
val currentTime = System.currentTimeMillis()
104-
for (box in languageBoxes) {
103+
for (box in transcriptHolders) {
105104
if (box.transcripts.size > 50) {
106105
for (i in 0..(box.transcripts.size - 50)) {
107106
box.transcripts.remove()
@@ -147,16 +146,13 @@ class UnityTranslateClient {
147146

148147
UnityTranslate.instance.proxy.sendPacketClient(PacketIds.SEND_TRANSCRIPT, buf)
149148
//? }
150-
languageBoxes.firstOrNull { it.language == transcriber.language }?.updateTranscript(Minecraft.getInstance().player!!, text, transcriber.language, index, updateTime, false)
151149

152-
if (languageBoxes.none { it.language == transcriber.language }) {
153-
TranscriptEvents.UPDATE.invoker().onTranscriptUpdate(Transcript(index, Minecraft.getInstance().player!!, text, transcriber.language, updateTime, false), transcriber.language)
154-
}
150+
getTranscriptHolder(transcriber.language)?.updateTranscript(Minecraft.getInstance().player!!, text, transcriber.language, index, updateTime, false)
155151
} else {
156152
if (Minecraft.getInstance().player == null)
157153
return@BiConsumer
158154

159-
for (box in languageBoxes) {
155+
for (box in transcriptHolders) {
160156
if (box.language == transcriber.language) {
161157
box.updateTranscript(Minecraft.getInstance().player!!, text, transcriber.language, index, updateTime, false)
162158

@@ -171,10 +167,6 @@ class UnityTranslateClient {
171167
box.updateTranscript(Minecraft.getInstance().player!!, it, transcriber.language, index, updateTime, false)
172168
}
173169
}
174-
175-
if (languageBoxes.none { it.language == transcriber.language }) {
176-
TranscriptEvents.UPDATE.invoker().onTranscriptUpdate(Transcript(index, Minecraft.getInstance().player!!, text, transcriber.language, updateTime, false), transcriber.language)
177-
}
178170
}
179171
}
180172
}
@@ -198,6 +190,12 @@ class UnityTranslateClient {
198190

199191
var shouldRenderBoxes = true
200192

193+
val transcriptHolders = mutableSetOf<TranscriptHolder>()
194+
195+
fun getTranscriptHolder(language: Language): TranscriptHolder? {
196+
return transcriptHolders.firstOrNull { it.language == language }
197+
}
198+
201199
val languageBoxes: MutableList<TranscriptBox>
202200
get() {
203201
return UnityTranslate.config.client.transcriptBoxes

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

Lines changed: 3 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,16 @@
11
package xyz.bluspring.unitytranslate.client.gui
22

33
import kotlinx.serialization.Serializable
4-
import kotlinx.serialization.Transient
54
import net.minecraft.ChatFormatting
65
import net.minecraft.client.Minecraft
76
import net.minecraft.client.gui.GuiGraphics
87
import net.minecraft.network.chat.Component
98
import net.minecraft.util.FastColor
109
import net.minecraft.util.Mth
11-
import net.minecraft.world.entity.player.Player
1210
import xyz.bluspring.unitytranslate.Language
1311
import xyz.bluspring.unitytranslate.UnityTranslate
1412
import xyz.bluspring.unitytranslate.client.UnityTranslateClient
15-
import xyz.bluspring.unitytranslate.compat.voicechat.UTVoiceChatCompat
16-
import xyz.bluspring.unitytranslate.events.TranscriptEvents
17-
import xyz.bluspring.unitytranslate.transcript.Transcript
1813
import java.util.*
19-
import java.util.concurrent.ConcurrentLinkedQueue
2014

2115
@Serializable
2216
data class TranscriptBox(
@@ -65,10 +59,9 @@ data class TranscriptBox(
6559
}
6660
}
6761

68-
@Transient
69-
val transcripts = ConcurrentLinkedQueue<Transcript>()
70-
7162
fun render(guiGraphics: GuiGraphics, partialTick: Float) {
63+
val holder = UnityTranslateClient.getTranscriptHolder(this.language) ?: return
64+
7265
guiGraphics.pose().pushPose()
7366

7467
guiGraphics.pose().translate(0.0, 0.0, -255.0)
@@ -84,7 +77,7 @@ data class TranscriptBox(
8477

8578
guiGraphics.enableScissor(x, y + 15, x + width, y + height)
8679

87-
val lines = transcripts.sortedByDescending { it.arrivalTime }
80+
val lines = holder.transcripts.sortedByDescending { it.arrivalTime }
8881

8982
val font = Minecraft.getInstance().font
9083
val scale = UnityTranslate.config.client.textScale / 100f
@@ -147,32 +140,6 @@ data class TranscriptBox(
147140
guiGraphics.pose().popPose()
148141
}
149142

150-
fun updateTranscript(source: Player, text: String, language: Language, index: Int, updateTime: Long, incomplete: Boolean) {
151-
if (!UTVoiceChatCompat.isPlayerAudible(source))
152-
return
153-
154-
if (this.transcripts.any { it.player.uuid == source.uuid && it.index == index }) {
155-
val transcript = this.transcripts.first { it.player.uuid == source.uuid && it.index == index }
156-
157-
// it's possible for this to go out of order, let's avoid that
158-
if (transcript.lastUpdateTime > updateTime)
159-
return
160-
161-
transcript.lastUpdateTime = updateTime
162-
transcript.text = text
163-
transcript.incomplete = incomplete
164-
transcript.arrivalTime = System.currentTimeMillis()
165-
166-
TranscriptEvents.UPDATE.invoker().onTranscriptUpdate(transcript, this@TranscriptBox.language)
167-
168-
return
169-
}
170-
171-
this.transcripts.add(Transcript(index, source, text, language, updateTime, incomplete).apply {
172-
TranscriptEvents.UPDATE.invoker().onTranscriptUpdate(this, this@TranscriptBox.language)
173-
})
174-
}
175-
176143
companion object {
177144
val TRANSCRIPT_MUTED = UnityTranslate.id("textures/gui/transcription_muted.png")
178145
}

0 commit comments

Comments
 (0)