refactor client
This commit is contained in:
parent
1aabd0f3cf
commit
004ab1e220
7 changed files with 62 additions and 17 deletions
|
@ -13,6 +13,14 @@ dependencies {
|
||||||
|
|
||||||
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
|
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
|
||||||
|
|
||||||
|
implementation "dev.onvoid.webrtc:webrtc-java:0.8.0"
|
||||||
|
implementation group: "dev.onvoid.webrtc", name: "webrtc-java", version: "0.8.0", classifier: "windows-x86_64"
|
||||||
|
implementation group: "dev.onvoid.webrtc", name: "webrtc-java", version: "0.8.0", classifier: "macos-x86_64"
|
||||||
|
implementation group: "dev.onvoid.webrtc", name: "webrtc-java", version: "0.8.0", classifier: "macos-aarch64"
|
||||||
|
implementation group: "dev.onvoid.webrtc", name: "webrtc-java", version: "0.8.0", classifier: "linux-x86_64"
|
||||||
|
implementation group: "dev.onvoid.webrtc", name: "webrtc-java", version: "0.8.0", classifier: "linux-aarch64"
|
||||||
|
implementation group: "dev.onvoid.webrtc", name: "webrtc-java", version: "0.8.0", classifier: "linux-aarch32"
|
||||||
|
|
||||||
implementation project(':common')
|
implementation project(':common')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,3 +51,9 @@ jar {
|
||||||
rename { "${it}_${project.base.archivesName.get()}" }
|
rename { "${it}_${project.base.archivesName.get()}" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
runClient {
|
||||||
|
// I need to do it here, IntelliJ doesn't recognize the mod and I couldn't figure out how to set env variables
|
||||||
|
systemProperty "devauth.enabled", System.getenv("DEVAUTH_ENABLED")
|
||||||
|
systemProperty "devauth.account", System.getenv("DEVAUTH_ACCOUNT")
|
||||||
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
"package": "eu.e99.svc.client.fabric.mixin",
|
"package": "eu.e99.svc.client.fabric.mixin",
|
||||||
"compatibilityLevel": "JAVA_21",
|
"compatibilityLevel": "JAVA_21",
|
||||||
"mixins": [
|
"mixins": [
|
||||||
|
"PlayerEntityMixin"
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
|
|
|
@ -3,13 +3,10 @@ package eu.e99.svc.client.fabric;
|
||||||
import net.fabricmc.api.ClientModInitializer;
|
import net.fabricmc.api.ClientModInitializer;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.session.Session;
|
import net.minecraft.client.session.Session;
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import javax.net.ssl.SSLSocketFactory;
|
import javax.net.ssl.SSLSocketFactory;
|
||||||
import java.security.KeyManagementException;
|
import java.security.KeyManagementException;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
public class FabricSimplerVoiceChat implements ClientModInitializer {
|
public class FabricSimplerVoiceChat implements ClientModInitializer {
|
||||||
|
|
||||||
|
@ -31,13 +28,10 @@ public class FabricSimplerVoiceChat implements ClientModInitializer {
|
||||||
MinecraftClient client = MinecraftClient.getInstance();
|
MinecraftClient client = MinecraftClient.getInstance();
|
||||||
Session session = client.getSession();
|
Session session = client.getSession();
|
||||||
|
|
||||||
|
|
||||||
SVCClient voiceChat = new SVCClient(
|
SVCClient voiceChat = new SVCClient(
|
||||||
"localhost",
|
"localhost",
|
||||||
6969,
|
6969,
|
||||||
session.getAccessToken(),
|
client,
|
||||||
session.getUsername(),
|
|
||||||
session.getUuidOrNull(),
|
|
||||||
socketFactory
|
socketFactory
|
||||||
);
|
);
|
||||||
Thread.ofPlatform().start(voiceChat::start);
|
Thread.ofPlatform().start(voiceChat::start);
|
||||||
|
|
|
@ -6,6 +6,8 @@ import eu.e99.svc.SimplerVoiceChat;
|
||||||
import eu.e99.svc.auth.MojangAPI;
|
import eu.e99.svc.auth.MojangAPI;
|
||||||
import eu.e99.svc.io.BinaryMessage;
|
import eu.e99.svc.io.BinaryMessage;
|
||||||
import eu.e99.svc.packet.*;
|
import eu.e99.svc.packet.*;
|
||||||
|
import net.minecraft.client.MinecraftClient;
|
||||||
|
import net.minecraft.client.session.Session;
|
||||||
|
|
||||||
import javax.net.ssl.SSLContext;
|
import javax.net.ssl.SSLContext;
|
||||||
import javax.net.ssl.SSLSocketFactory;
|
import javax.net.ssl.SSLSocketFactory;
|
||||||
|
@ -33,17 +35,13 @@ public class SVCClient {
|
||||||
|
|
||||||
private final String host;
|
private final String host;
|
||||||
private final int port;
|
private final int port;
|
||||||
private final String accessToken;
|
private final MinecraftClient client;
|
||||||
private final String username;
|
|
||||||
private final UUID uuid;
|
|
||||||
private final SSLSocketFactory socketFactory;
|
private final SSLSocketFactory socketFactory;
|
||||||
|
|
||||||
public SVCClient(String host, int port, String accessToken, String username, UUID uuid, SSLSocketFactory socketFactory) {
|
public SVCClient(String host, int port, MinecraftClient client, SSLSocketFactory socketFactory) {
|
||||||
this.host = host;
|
this.host = host;
|
||||||
this.port = port;
|
this.port = port;
|
||||||
this.accessToken = accessToken;
|
this.client = client;
|
||||||
this.username = username;
|
|
||||||
this.uuid = uuid;
|
|
||||||
this.socketFactory = socketFactory;
|
this.socketFactory = socketFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,6 +62,8 @@ public class SVCClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.printf("Successfully authenticated.%n");
|
System.out.printf("Successfully authenticated.%n");
|
||||||
|
|
||||||
|
while (true) {}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
System.out.printf("Failed to connect.%n");
|
System.out.printf("Failed to connect.%n");
|
||||||
e.printStackTrace(System.out);
|
e.printStackTrace(System.out);
|
||||||
|
@ -91,9 +91,15 @@ public class SVCClient {
|
||||||
case AuthRequestPacket authRequest -> {
|
case AuthRequestPacket authRequest -> {
|
||||||
System.out.printf("Joining server to authenticate...%n");
|
System.out.printf("Joining server to authenticate...%n");
|
||||||
|
|
||||||
|
Session session = this.client.getSession();
|
||||||
|
|
||||||
boolean ok;
|
boolean ok;
|
||||||
try {
|
try {
|
||||||
ok = MojangAPI.joinServer(this.accessToken, this.uuid, authRequest.serverId);
|
ok = MojangAPI.joinServer(
|
||||||
|
session.getAccessToken(),
|
||||||
|
session.getUuidOrNull(),
|
||||||
|
authRequest.serverId
|
||||||
|
);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.printf("Failed to join server:%n");
|
System.out.printf("Failed to join server:%n");
|
||||||
e.printStackTrace(System.out);
|
e.printStackTrace(System.out);
|
||||||
|
@ -106,7 +112,7 @@ public class SVCClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
AuthResponsePacket authResponse = new AuthResponsePacket();
|
AuthResponsePacket authResponse = new AuthResponsePacket();
|
||||||
authResponse.username = this.username;
|
authResponse.username = session.getUsername();
|
||||||
conn.writePacket(authResponse);
|
conn.writePacket(authResponse);
|
||||||
}
|
}
|
||||||
case AuthSuccessPacket authComplete -> {
|
case AuthSuccessPacket authComplete -> {
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
package eu.e99.svc.client.fabric.mixin;
|
||||||
|
|
||||||
|
import com.mojang.authlib.GameProfile;
|
||||||
|
import dev.onvoid.webrtc.RTCPeerConnection;
|
||||||
|
import net.minecraft.entity.Entity;
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import org.spongepowered.asm.mixin.Final;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
@Mixin(PlayerEntity.class)
|
||||||
|
public class PlayerEntityMixin {
|
||||||
|
|
||||||
|
@Shadow @Final private GameProfile gameProfile;
|
||||||
|
|
||||||
|
@Inject(method = "<init>", at = @At("RETURN"))
|
||||||
|
private void svc$init(World world, BlockPos pos, float yaw, GameProfile gameProfile, CallbackInfo ci) {
|
||||||
|
System.out.printf("Added %s.%n", gameProfile.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject(method = "remove", at = @At("HEAD"))
|
||||||
|
private void svc$remove(Entity.RemovalReason reason, CallbackInfo ci) {
|
||||||
|
System.out.printf("Removed %s.%n", this.gameProfile.getName());
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,6 +5,7 @@ import eu.e99.svc.io.Reader;
|
||||||
import eu.e99.svc.io.Writer;
|
import eu.e99.svc.io.Writer;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
public class AuthResponsePacket implements BinaryMessage {
|
public class AuthResponsePacket implements BinaryMessage {
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@ import eu.e99.svc.auth.PlayerProfile;
|
||||||
import eu.e99.svc.io.BinaryMessage;
|
import eu.e99.svc.io.BinaryMessage;
|
||||||
import eu.e99.svc.packet.*;
|
import eu.e99.svc.packet.*;
|
||||||
|
|
||||||
import java.io.EOFException;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.ServerSocket;
|
import java.net.ServerSocket;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
|
|
Loading…
Reference in a new issue