Skip to content

Commit 83aaf35

Browse files
committed
Migrate packets to ModernNetworking
1 parent c6ddff8 commit 83aaf35

30 files changed

+289
-602
lines changed

build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ dependencies {
1414
implementation("de.maxhenkel.voicechat:voicechat-api:${mod.dep("voicechat_api")}")
1515
compileOnly("su.plo.voice.api:server:${mod.dep("plasmo_api")}")
1616
compileOnly("su.plo.voice.api:client:${mod.dep("plasmo_api")}")
17+
18+
modImplementation("xyz.bluspring.modernnetworking:modernnetworking-common:${mod.dep("modernnetworking")}+${mod.dep("modernnetworking_mc")}")!!
19+
20+
modCompileOnly("maven.modrinth:talk-balloons:${mod.dep("talk_balloons")}+${mod.dep("talk_balloons_mc")}-fabric")
1721
}
1822

1923
/*

fabric/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ tasks.processResources {
8787
"mod_authors" to mod.prop("authors"),
8888
"minecraft_version_range" to common.mod.prop("mc_dep_fabric"),
8989
"fabric_loader_version" to common.mod.dep("fabric_loader"),
90+
"fabric_kotlin_version" to common.mod.dep("fabric_kotlin"),
9091
"cloth_config_version" to common.mod.dep("cloth_config"),
9192
"modernnetworking_version" to common.mod.dep("modernnetworking")
9293
)

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents
77
import net.minecraft.commands.CommandSourceStack
88
import xyz.bluspring.unitytranslate.UnityTranslate
99
import xyz.bluspring.unitytranslate.commands.UnityTranslateCommands
10+
import xyz.bluspring.unitytranslate.network.UTServerNetworking
1011
import xyz.bluspring.unitytranslate.translator.TranslatorManager
1112

1213
class UnityTranslateFabric : ModInitializer {
@@ -25,8 +26,13 @@ class UnityTranslateFabric : ModInitializer {
2526
TranslatorManager.serverStopping()
2627
}
2728

29+
ServerPlayConnectionEvents.JOIN.register { handler, sender, server ->
30+
UTServerNetworking.onPlayerJoin(handler.player)
31+
}
32+
2833
ServerPlayConnectionEvents.DISCONNECT.register { handler, server ->
2934
TranslatorManager.playerQuit(handler.player)
35+
UTServerNetworking.onPlayerLeave(handler.player)
3036
}
3137
}
3238

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ class UnityTranslateFabricClient : ClientModInitializer {
3131
instance.clientJoinWorld()
3232
}
3333

34+
ClientPlayConnectionEvents.DISCONNECT.register { _, _ ->
35+
instance.clientLeaveWorld()
36+
}
37+
3438
HudRenderCallback.EVENT.register { guiGraphics, delta ->
3539
instance.clientRenderHud(guiGraphics, delta)
3640
}

fabric/src/main/resources/fabric.mod.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,11 @@
3232
"unitytranslate.mixins.json"
3333
],
3434
"depends": {
35-
"fabricloader": ">=${loader_version}",
36-
"minecraft": "${mc_version}",
35+
"fabricloader": ">=${fabric_loader_version}",
36+
"minecraft": "${minecraft_version_range}",
3737
"fabric-language-kotlin": ">=${fabric_kotlin_version}",
38-
"architectury": ">=${architectury_version}"
38+
"modernnetworking": ">=${modernnetworking_version}",
39+
"fabric-api": "*"
3940
},
4041
"recommends": {
4142
"voicechat": "*"
Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,45 @@
11
package xyz.bluspring.unitytranslate.forge
22

33
import net.minecraft.commands.CommandSourceStack
4+
import net.minecraft.server.level.ServerPlayer
45
import net.minecraftforge.common.MinecraftForge
56
import net.minecraftforge.event.RegisterCommandsEvent
7+
import net.minecraftforge.event.entity.player.PlayerEvent
68
import net.minecraftforge.eventbus.api.SubscribeEvent
79
import net.minecraftforge.server.permission.events.PermissionGatherEvent
810
import xyz.bluspring.unitytranslate.commands.UnityTranslateCommands
11+
import xyz.bluspring.unitytranslate.network.UTServerNetworking
12+
import xyz.bluspring.unitytranslate.translator.TranslatorManager
913

1014
object ForgeEvents {
11-
fun init() {
12-
MinecraftForge.EVENT_BUS.register(this)
13-
}
15+
fun init() {
16+
MinecraftForge.EVENT_BUS.register(this)
17+
}
1418

15-
@SubscribeEvent
16-
fun onPermissionsGather(event: PermissionGatherEvent.Nodes) {
17-
event.addNodes(UnityTranslateForge.REQUEST_TRANSLATIONS_NODE)
18-
}
19+
@SubscribeEvent
20+
fun onPermissionsGather(event: PermissionGatherEvent.Nodes) {
21+
event.addNodes(UnityTranslateForge.REQUEST_TRANSLATIONS_NODE)
22+
}
1923

2024
@SubscribeEvent
2125
fun onCommandRegister(ev: RegisterCommandsEvent) {
2226
UnityTranslateCommands.register(ev.dispatcher, "unitytranslate", false, CommandSourceStack::sendSystemMessage)
2327
}
28+
29+
@SubscribeEvent
30+
fun onPlayerJoin(ev: PlayerEvent.PlayerLoggedInEvent) {
31+
if (ev.entity !is ServerPlayer)
32+
return
33+
34+
UTServerNetworking.onPlayerJoin(ev.entity as ServerPlayer)
35+
}
36+
37+
@SubscribeEvent
38+
fun onPlayerLeave(ev: PlayerEvent.PlayerLoggedOutEvent) {
39+
if (ev.entity !is ServerPlayer)
40+
return
41+
42+
TranslatorManager.playerQuit(ev.entity)
43+
UTServerNetworking.onPlayerLeave(ev.entity as ServerPlayer)
44+
}
2445
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,9 @@ object UnityTranslateForgeClient {
3434
fun onClientJoin(ev: ClientPlayerNetworkEvent.LoggingIn) {
3535
this.instance.clientJoinWorld()
3636
}
37+
38+
@SubscribeEvent
39+
fun onClientLeave(ev: ClientPlayerNetworkEvent.LoggingOut) {
40+
this.instance.clientLeaveWorld()
41+
}
3742
}

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import net.minecraft.network.codec.StreamDecoder
77
import net.minecraft.network.codec.StreamEncoder
88
*///? }
99
import net.minecraft.network.chat.Component
10+
import xyz.bluspring.modernnetworking.api.NetworkCodecs
1011
import xyz.bluspring.unitytranslate.client.transcribers.TranscriberType
1112

1213
enum class Language(
@@ -159,13 +160,7 @@ enum class Language(
159160
val text = Component.translatable("unitytranslate.language.$code")
160161

161162
companion object {
162-
//? if >= 1.20.6 {
163-
/*val STREAM_CODEC: StreamCodec<RegistryFriendlyByteBuf, Language> = StreamCodec.of({ buf, language ->
164-
buf.writeEnum(language)
165-
}, { buf ->
166-
buf.readEnum(Language::class.java)
167-
})
168-
*///? }
163+
val NETWORK_CODEC = NetworkCodecs.enumCodec(Language::class.java)
169164

170165
fun findLibreLang(code: String): Language? {
171166
return Language.entries.firstOrNull { it.code == code }
Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,7 @@
11
package xyz.bluspring.unitytranslate
22

3-
import dev.architectury.networking.NetworkManager
4-
import io.netty.buffer.Unpooled
5-
import net.minecraft.network.FriendlyByteBuf
6-
//? if >= 1.20.6 {
7-
/*import net.minecraft.network.protocol.common.custom.CustomPacketPayload
8-
*///? }
9-
import net.minecraft.resources.ResourceLocation
10-
import net.minecraft.server.level.ServerPlayer
113
import net.minecraft.world.entity.player.Player
124

13-
//? if forge {
14-
/*import net.minecraftforge.server.permission.events.PermissionGatherEvent
15-
*///? } else if neoforge {
16-
/*import net.neoforged.neoforge.server.permission.events.PermissionGatherEvent
17-
*///? }
18-
195
import java.nio.file.Path
206

217
interface PlatformProxy {
@@ -27,31 +13,5 @@ interface PlatformProxy {
2713
val gameDir: Path
2814
val isDev: Boolean
2915

30-
fun createByteBuf(): FriendlyByteBuf {
31-
return FriendlyByteBuf(Unpooled.buffer())
32-
}
33-
34-
//? if >= 1.20.6 {
35-
/*fun sendPacketClient(payload: CustomPacketPayload) {
36-
NetworkManager.sendToServer(payload)
37-
*///? } else {
38-
fun sendPacketClient(id: ResourceLocation, buf: FriendlyByteBuf) {
39-
NetworkManager.sendToServer(id, buf)
40-
//? }
41-
}
42-
43-
//? if >= 1.20.6 {
44-
/*fun sendPacketServer(player: ServerPlayer, payload: CustomPacketPayload) {
45-
NetworkManager.sendToPlayer(player, payload)
46-
*///? } else {
47-
fun sendPacketServer(player: ServerPlayer, id: ResourceLocation, buf: FriendlyByteBuf) {
48-
NetworkManager.sendToPlayer(player, id, buf)
49-
//? }
50-
}
51-
52-
//? if forge_like {
53-
/*fun registerPermissions(event: PermissionGatherEvent.Nodes)
54-
*///? }
55-
5616
fun hasTranscriptPermission(player: Player): Boolean
5717
}

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

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,24 @@ package xyz.bluspring.unitytranslate.client
44
/*import xyz.bluspring.unitytranslate.network.payloads.SendTranscriptToServerPayload
55
*///? }
66
import com.mojang.blaze3d.platform.InputConstants
7+
import kotlinx.coroutines.CoroutineStart
8+
import kotlinx.coroutines.launch
79
import net.minecraft.ChatFormatting
810
import net.minecraft.client.KeyMapping
911
import net.minecraft.client.Minecraft
1012
import net.minecraft.client.gui.GuiGraphics
1113
import net.minecraft.network.chat.CommonComponents
1214
import net.minecraft.network.chat.Component
15+
import xyz.bluspring.modernnetworking.api.minecraft.VanillaPacketSender
1316
import xyz.bluspring.unitytranslate.Language
1417
import xyz.bluspring.unitytranslate.UnityTranslate
1518
import xyz.bluspring.unitytranslate.client.gui.*
1619
import xyz.bluspring.unitytranslate.client.transcribers.SpeechTranscriber
20+
import xyz.bluspring.unitytranslate.client.transcribers.browser.BrowserSpeechTranscriber
1721
import xyz.bluspring.unitytranslate.client.transcribers.windows.sapi5.WindowsSpeechApiTranscriber
1822
import xyz.bluspring.unitytranslate.compat.talkballoons.TalkBalloonsCompat
19-
import xyz.bluspring.unitytranslate.network.PacketIds
2023
import xyz.bluspring.unitytranslate.network.UTClientNetworking
24+
import xyz.bluspring.unitytranslate.network.payloads.SendTranscriptToServerPayload
2125
import xyz.bluspring.unitytranslate.transcript.TranscriptHolder
2226
import xyz.bluspring.unitytranslate.translator.TranslatorManager
2327
import java.util.concurrent.ConcurrentLinkedQueue
@@ -44,7 +48,7 @@ class UnityTranslateClient {
4448
}
4549

4650
fun clientStopping() {
47-
LocalLibreTranslateInstance.killOpenInstances()
51+
// LocalLibreTranslateInstance.killOpenInstances()
4852
}
4953

5054
fun clientTick(mc: Minecraft) {
@@ -125,6 +129,16 @@ class UnityTranslateClient {
125129
}
126130

127131
queuedForJoin.clear()
132+
133+
UTClientNetworking.onClientJoin()
134+
135+
if (transcriber is BrowserSpeechTranscriber) {
136+
(transcriber as BrowserSpeechTranscriber).openWebsite()
137+
}
138+
}
139+
140+
fun clientLeaveWorld() {
141+
UTClientNetworking.onClientLeave()
128142
}
129143

130144
fun setupTranscriber(transcriber: SpeechTranscriber) {
@@ -135,17 +149,7 @@ class UnityTranslateClient {
135149
val updateTime = System.currentTimeMillis()
136150

137151
if (connectedServerHasSupport) {
138-
//? if >= 1.20.6 {
139-
/*UnityTranslate.instance.proxy.sendPacketClient(SendTranscriptToServerPayload(transcriber.language, text, index, updateTime))
140-
*///? } else {
141-
val buf = UnityTranslate.instance.proxy.createByteBuf()
142-
buf.writeEnum(transcriber.language)
143-
buf.writeUtf(text)
144-
buf.writeVarInt(index)
145-
buf.writeVarLong(updateTime)
146-
147-
UnityTranslate.instance.proxy.sendPacketClient(PacketIds.SEND_TRANSCRIPT, buf)
148-
//? }
152+
VanillaPacketSender.sendToServer(SendTranscriptToServerPayload(transcriber.language, text, index, updateTime))
149153

150154
getTranscriptHolder(transcriber.language)?.updateTranscript(Minecraft.getInstance().player!!, text, transcriber.language, index, updateTime, false)
151155
} else {
@@ -159,13 +163,10 @@ class UnityTranslateClient {
159163
continue
160164
}
161165

162-
TranslatorManager.queueTranslation(text, transcriber.language, box.language, Minecraft.getInstance().player!!, index)
163-
.whenCompleteAsync { it, e ->
164-
if (e != null)
165-
return@whenCompleteAsync
166-
167-
box.updateTranscript(Minecraft.getInstance().player!!, it, transcriber.language, index, updateTime, false)
168-
}
166+
TranslatorManager.scope.launch(start = CoroutineStart.UNDISPATCHED) {
167+
val translated = TranslatorManager.queueTranslation(text, transcriber.language, box.language, Minecraft.getInstance().player!!, index, 0).await()
168+
box.updateTranscript(Minecraft.getInstance().player!!, translated, transcriber.language, index, updateTime, false)
169+
}
169170
}
170171
}
171172
}

0 commit comments

Comments
 (0)