Remove Stage 2 Handshake and switch to using gradle kotlin (and added kotlin source as a test)
This commit is contained in:
parent
3e72533aa8
commit
c527062515
81
build.gradle
81
build.gradle
|
@ -1,81 +0,0 @@
|
||||||
plugins {
|
|
||||||
id 'fabric-loom' version '1.0-SNAPSHOT'
|
|
||||||
id 'maven-publish'
|
|
||||||
}
|
|
||||||
|
|
||||||
version = project.mod_version
|
|
||||||
group = project.maven_group
|
|
||||||
|
|
||||||
repositories {
|
|
||||||
// Add repositories to retrieve artifacts from in here.
|
|
||||||
// You should only use this when depending on other mods because
|
|
||||||
// Loom adds the essential maven repositories to download Minecraft and libraries from automatically.
|
|
||||||
// See https://docs.gradle.org/current/userguide/declaring_repositories.html
|
|
||||||
// for more information about repositories.
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
// To change the versions see the gradle.properties file
|
|
||||||
minecraft "com.mojang:minecraft:${project.minecraft_version}"
|
|
||||||
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
|
|
||||||
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
|
|
||||||
|
|
||||||
// Fabric API. This is technically optional, but you probably want it anyway.
|
|
||||||
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
|
|
||||||
}
|
|
||||||
|
|
||||||
processResources {
|
|
||||||
inputs.property "version", project.version
|
|
||||||
filteringCharset "UTF-8"
|
|
||||||
|
|
||||||
filesMatching("fabric.mod.json") {
|
|
||||||
expand "version": project.version
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
def targetJavaVersion = 17
|
|
||||||
tasks.withType(JavaCompile).configureEach {
|
|
||||||
// ensure that the encoding is set to UTF-8, no matter what the system default is
|
|
||||||
// this fixes some edge cases with special characters not displaying correctly
|
|
||||||
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
|
|
||||||
// If Javadoc is generated, this must be specified in that task too.
|
|
||||||
it.options.encoding = "UTF-8"
|
|
||||||
if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
|
|
||||||
it.options.release = targetJavaVersion
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
java {
|
|
||||||
def javaVersion = JavaVersion.toVersion(targetJavaVersion)
|
|
||||||
if (JavaVersion.current() < javaVersion) {
|
|
||||||
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
|
|
||||||
}
|
|
||||||
archivesBaseName = project.archives_base_name
|
|
||||||
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
|
|
||||||
// if it is present.
|
|
||||||
// If you remove this line, sources will not be generated.
|
|
||||||
withSourcesJar()
|
|
||||||
}
|
|
||||||
|
|
||||||
jar {
|
|
||||||
from("LICENSE") {
|
|
||||||
rename { "${it}_${project.archivesBaseName}" }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// configure the maven publication
|
|
||||||
publishing {
|
|
||||||
publications {
|
|
||||||
mavenJava(MavenPublication) {
|
|
||||||
from components.java
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
|
|
||||||
repositories {
|
|
||||||
// Add repositories to publish to here.
|
|
||||||
// Notice: This block does NOT have the same function as the block in the top level.
|
|
||||||
// The repositories here will be used for publishing your artifact, not for
|
|
||||||
// retrieving dependencies.
|
|
||||||
}
|
|
||||||
}
|
|
71
build.gradle.kts
Normal file
71
build.gradle.kts
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
plugins {
|
||||||
|
kotlin("jvm")
|
||||||
|
id("fabric-loom")
|
||||||
|
`maven-publish`
|
||||||
|
java
|
||||||
|
}
|
||||||
|
|
||||||
|
group = property("maven_group")!!
|
||||||
|
version = property("mod_version")!!
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
// Add repositories to retrieve artifacts from in here.
|
||||||
|
// You should only use this when depending on other mods because
|
||||||
|
// Loom adds the essential maven repositories to download Minecraft and libraries from automatically.
|
||||||
|
// See https://docs.gradle.org/current/userguide/declaring_repositories.html
|
||||||
|
// for more information about repositories.
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
minecraft("com.mojang:minecraft:${property("minecraft_version")}")
|
||||||
|
mappings("net.fabricmc:yarn:${property("yarn_mappings")}:v2")
|
||||||
|
modImplementation("net.fabricmc:fabric-loader:${property("loader_version")}")
|
||||||
|
|
||||||
|
modImplementation("net.fabricmc:fabric-language-kotlin:${property("fabric_kotlin_version")}")
|
||||||
|
modImplementation("net.fabricmc.fabric-api:fabric-api:${property("fabric_api_version")}")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks {
|
||||||
|
|
||||||
|
processResources {
|
||||||
|
inputs.property("version", project.version)
|
||||||
|
filesMatching("fabric.mod.json") {
|
||||||
|
expand(mutableMapOf("version" to project.version))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
jar {
|
||||||
|
from("LICENSE")
|
||||||
|
}
|
||||||
|
|
||||||
|
publishing {
|
||||||
|
publications {
|
||||||
|
create<MavenPublication>("mavenJava") {
|
||||||
|
artifact(remapJar) {
|
||||||
|
builtBy(remapJar)
|
||||||
|
}
|
||||||
|
artifact(kotlinSourcesJar) {
|
||||||
|
builtBy(remapSourcesJar)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// select the repositories you want to publish to
|
||||||
|
repositories {
|
||||||
|
// uncomment to publish to the local maven
|
||||||
|
// mavenLocal()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
compileKotlin {
|
||||||
|
kotlinOptions.jvmTarget = "17"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
java {
|
||||||
|
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
|
||||||
|
// if it is present.
|
||||||
|
// If you remove this line, sources will not be generated.
|
||||||
|
withSourcesJar()
|
||||||
|
}
|
|
@ -1,10 +1,12 @@
|
||||||
# Done to increase the memory available to gradle.
|
# Done to increase the memory available to gradle.
|
||||||
org.gradle.jvmargs=-Xmx1G
|
org.gradle.jvmargs=-Xmx1G
|
||||||
|
kotlin.code.style=official
|
||||||
# Fabric Properties
|
# Fabric Properties
|
||||||
# check these on https://modmuss50.me/fabric.html
|
# check these on https://modmuss50.me/fabric.html
|
||||||
minecraft_version=1.19.2
|
minecraft_version=1.19.2
|
||||||
yarn_mappings=1.19.2+build.28
|
yarn_mappings=1.19.2+build.28
|
||||||
loader_version=0.14.10
|
loader_version=0.14.10
|
||||||
|
loom_version=1.0-SNAPSHOT
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version=1.0-SNAPSHOT
|
mod_version=1.0-SNAPSHOT
|
||||||
maven_group=org.muellerssoftware
|
maven_group=org.muellerssoftware
|
||||||
|
@ -12,3 +14,6 @@ archives_base_name=OpenProximityChatFabric
|
||||||
# Dependencies
|
# Dependencies
|
||||||
# check this on https://modmuss50.me/fabric.html
|
# check this on https://modmuss50.me/fabric.html
|
||||||
fabric_version=0.64.0+1.19.2
|
fabric_version=0.64.0+1.19.2
|
||||||
|
fabric_kotlin_version=1.8.3+kotlin.1.7.10
|
||||||
|
fabric_api_version=0.64.0+1.19.2
|
||||||
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
pluginManagement {
|
|
||||||
repositories {
|
|
||||||
maven {
|
|
||||||
name = 'Fabric'
|
|
||||||
url = 'https://maven.fabricmc.net/'
|
|
||||||
}
|
|
||||||
gradlePluginPortal()
|
|
||||||
}
|
|
||||||
}
|
|
20
settings.gradle.kts
Normal file
20
settings.gradle.kts
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
rootProject.name = "OpenProximityChatFabric"
|
||||||
|
pluginManagement {
|
||||||
|
repositories {
|
||||||
|
maven("https://maven.fabricmc.net/") {
|
||||||
|
name = "Fabric"
|
||||||
|
}
|
||||||
|
mavenCentral()
|
||||||
|
gradlePluginPortal()
|
||||||
|
}
|
||||||
|
|
||||||
|
val loom_version: String by settings
|
||||||
|
val fabric_kotlin_version: String by settings
|
||||||
|
plugins {
|
||||||
|
id("fabric-loom") version loom_version
|
||||||
|
id("org.jetbrains.kotlin.jvm") version
|
||||||
|
fabric_kotlin_version
|
||||||
|
.split("+kotlin.")[1] // Grabs the sentence after `+kotlin.`
|
||||||
|
.split("+")[0] // Ensures sentences like `+build.1` are ignored
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
package org.muellerssoftware.openproximitychatfabric;
|
package org.muellerssoftware.openproximitychatfabric;
|
||||||
|
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
import org.muellerssoftware.openproximitychatfabric.connect.Stage1HandshakeBuilder;
|
import org.muellerssoftware.openproximitychatfabric.connect.HandshakeBuilder;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ import java.util.HashMap;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class OPCFabric implements ModInitializer {
|
public class OPCFabric implements ModInitializer {
|
||||||
public static HashMap<UUID, Stage1HandshakeBuilder> tracked_players = new HashMap<>();
|
public static HashMap<UUID, HandshakeBuilder> tracked_players = new HashMap<>();
|
||||||
public static final Logger LOGGER = LoggerFactory.getLogger("OPCFabric");
|
public static final Logger LOGGER = LoggerFactory.getLogger("OPCFabric");
|
||||||
@Override
|
@Override
|
||||||
public void onInitialize() {
|
public void onInitialize() {
|
||||||
|
|
|
@ -9,21 +9,21 @@ import net.minecraft.client.option.KeyBinding;
|
||||||
import net.minecraft.client.util.InputUtil;
|
import net.minecraft.client.util.InputUtil;
|
||||||
import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket;
|
import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket;
|
||||||
import org.lwjgl.glfw.GLFW;
|
import org.lwjgl.glfw.GLFW;
|
||||||
import org.muellerssoftware.openproximitychatfabric.connect.Stage1HandshakeBuilder;
|
import org.muellerssoftware.openproximitychatfabric.connect.HandshakeBuilder;
|
||||||
import org.muellerssoftware.openproximitychatfabric.mixins.ClientConnectionInvoker;
|
import org.muellerssoftware.openproximitychatfabric.mixins.ClientConnectionInvoker;
|
||||||
|
|
||||||
@Environment(EnvType.CLIENT)
|
@Environment(EnvType.CLIENT)
|
||||||
public class OPCFabricClient implements ClientModInitializer {
|
public class OPCFabricClient implements ClientModInitializer {
|
||||||
private static KeyBinding keyBinding;
|
private static KeyBinding keyBinding;
|
||||||
|
|
||||||
private static final Stage1HandshakeBuilder.HandshakeMovement[] movements = {
|
private static final HandshakeBuilder.HandshakeMovement[] movements = {
|
||||||
new Stage1HandshakeBuilder.HandshakeMovement(90,-45),
|
new HandshakeBuilder.HandshakeMovement(90,-45),
|
||||||
new Stage1HandshakeBuilder.HandshakeMovement(90,45),
|
new HandshakeBuilder.HandshakeMovement(90,45),
|
||||||
new Stage1HandshakeBuilder.HandshakeMovement(-90,45),
|
new HandshakeBuilder.HandshakeMovement(-90,45),
|
||||||
new Stage1HandshakeBuilder.HandshakeMovement(90,-45),
|
new HandshakeBuilder.HandshakeMovement(90,-45),
|
||||||
new Stage1HandshakeBuilder.HandshakeMovement(-90,45),
|
new HandshakeBuilder.HandshakeMovement(-90,45),
|
||||||
new Stage1HandshakeBuilder.HandshakeMovement(90, 45),
|
new HandshakeBuilder.HandshakeMovement(90, 45),
|
||||||
new Stage1HandshakeBuilder.HandshakeMovement(0, 0)
|
new HandshakeBuilder.HandshakeMovement(0, 0)
|
||||||
};
|
};
|
||||||
@Override
|
@Override
|
||||||
public void onInitializeClient() {
|
public void onInitializeClient() {
|
||||||
|
@ -42,7 +42,7 @@ public class OPCFabricClient implements ClientModInitializer {
|
||||||
ClientConnectionInvoker invoker = (ClientConnectionInvoker) client.player.networkHandler.getConnection();
|
ClientConnectionInvoker invoker = (ClientConnectionInvoker) client.player.networkHandler.getConnection();
|
||||||
|
|
||||||
//ViewLock.setLocked(true);
|
//ViewLock.setLocked(true);
|
||||||
for (Stage1HandshakeBuilder.HandshakeMovement movement : movements) {
|
for (HandshakeBuilder.HandshakeMovement movement : movements) {
|
||||||
invoker.sendIm(new PlayerMoveC2SPacket.LookAndOnGround(movement.yaw, movement.pitch, client.player.isOnGround()), null);
|
invoker.sendIm(new PlayerMoveC2SPacket.LookAndOnGround(movement.yaw, movement.pitch, client.player.isOnGround()), null);
|
||||||
try {
|
try {
|
||||||
Thread.sleep(100);
|
Thread.sleep(100);
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
package org.muellerssoftware.openproximitychatfabric.connect;
|
|
||||||
|
|
||||||
public class Connection {
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,9 +1,10 @@
|
||||||
package org.muellerssoftware.openproximitychatfabric.connect;
|
package org.muellerssoftware.openproximitychatfabric.connect;
|
||||||
|
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import org.muellerssoftware.openproximitychatfabric.voice.Connection;
|
||||||
|
|
||||||
public class Stage1Handshake {
|
public class Handshake {
|
||||||
Stage1Handshake(ConnectionFilterType type, PlayerEntity player) {
|
Handshake(ConnectionFilterType type, PlayerEntity player) {
|
||||||
this.filterType = type;
|
this.filterType = type;
|
||||||
this.player = player;
|
this.player = player;
|
||||||
}
|
}
|
||||||
|
@ -17,4 +18,8 @@ public class Stage1Handshake {
|
||||||
public ConnectionFilterType getFilterType() {
|
public ConnectionFilterType getFilterType() {
|
||||||
return filterType;
|
return filterType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Connection connect() {
|
||||||
|
return new Connection();
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -8,7 +8,7 @@ import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
public class Stage1HandshakeBuilder {
|
public class HandshakeBuilder {
|
||||||
public static class HandshakeMovement {
|
public static class HandshakeMovement {
|
||||||
public float yaw;
|
public float yaw;
|
||||||
public float pitch;
|
public float pitch;
|
||||||
|
@ -81,12 +81,12 @@ public class Stage1HandshakeBuilder {
|
||||||
|
|
||||||
private static final HandshakeMovement OMNIFRIEND_MOVE = new HandshakeMovement(90, 45);
|
private static final HandshakeMovement OMNIFRIEND_MOVE = new HandshakeMovement(90, 45);
|
||||||
|
|
||||||
public Stage1HandshakeBuilder withPlayer(PlayerEntity player) {
|
public HandshakeBuilder withPlayer(PlayerEntity player) {
|
||||||
this.player = player;
|
this.player = player;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Stage1HandshakeBuilder add(HandshakeMovement movement) {
|
public HandshakeBuilder add(HandshakeMovement movement) {
|
||||||
if (this.movements.size() == 0) {
|
if (this.movements.size() == 0) {
|
||||||
this.movements.add(movement);
|
this.movements.add(movement);
|
||||||
}
|
}
|
||||||
|
@ -101,7 +101,7 @@ public class Stage1HandshakeBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public Stage1Handshake tryBuild() throws HandshakeException {
|
public Handshake tryBuild() throws HandshakeException {
|
||||||
if (this.movements.size() < 24) {
|
if (this.movements.size() < 24) {
|
||||||
throw new HandshakeException("Too few stored head movements (need at least 24)");
|
throw new HandshakeException("Too few stored head movements (need at least 24)");
|
||||||
}
|
}
|
||||||
|
@ -130,7 +130,7 @@ public class Stage1HandshakeBuilder {
|
||||||
|
|
||||||
if (this.player != null) {
|
if (this.player != null) {
|
||||||
player = this.player;
|
player = this.player;
|
||||||
return new Stage1Handshake(filterType, player);
|
return new Handshake(filterType, player);
|
||||||
} else {
|
} else {
|
||||||
throw new HandshakeException("Player not set in Stage 1 Handshake");
|
throw new HandshakeException("Player not set in Stage 1 Handshake");
|
||||||
}
|
}
|
|
@ -1,29 +0,0 @@
|
||||||
package org.muellerssoftware.openproximitychatfabric.connect;
|
|
||||||
|
|
||||||
import net.minecraft.server.MinecraftServer;
|
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
|
||||||
|
|
||||||
public class Stage2HandshakeBuilder {
|
|
||||||
private ServerPlayerEntity target_player;
|
|
||||||
private MinecraftServer target_server;
|
|
||||||
|
|
||||||
public Stage2HandshakeBuilder() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public Stage2HandshakeBuilder withPlayer(ServerPlayerEntity player) {
|
|
||||||
target_player = player;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Stage2HandshakeBuilder onServer(MinecraftServer server) {
|
|
||||||
target_server = server;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
Connection connect() {
|
|
||||||
|
|
||||||
|
|
||||||
return new Connection();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -3,8 +3,8 @@ package org.muellerssoftware.openproximitychatfabric.mixins;
|
||||||
import net.minecraft.client.network.OtherClientPlayerEntity;
|
import net.minecraft.client.network.OtherClientPlayerEntity;
|
||||||
import org.muellerssoftware.openproximitychatfabric.OPCFabric;
|
import org.muellerssoftware.openproximitychatfabric.OPCFabric;
|
||||||
import org.muellerssoftware.openproximitychatfabric.connect.HandshakeException;
|
import org.muellerssoftware.openproximitychatfabric.connect.HandshakeException;
|
||||||
import org.muellerssoftware.openproximitychatfabric.connect.Stage1Handshake;
|
import org.muellerssoftware.openproximitychatfabric.connect.Handshake;
|
||||||
import org.muellerssoftware.openproximitychatfabric.connect.Stage1HandshakeBuilder;
|
import org.muellerssoftware.openproximitychatfabric.connect.HandshakeBuilder;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
@ -17,20 +17,21 @@ public class OtherClientPlayerEntityMixin {
|
||||||
LivingEntityAccessor accessor = (LivingEntityAccessor) this;
|
LivingEntityAccessor accessor = (LivingEntityAccessor) this;
|
||||||
OtherClientPlayerEntity player = (OtherClientPlayerEntity) (Object) this;
|
OtherClientPlayerEntity player = (OtherClientPlayerEntity) (Object) this;
|
||||||
if (!OPCFabric.tracked_players.containsKey(player.getUuid())) {
|
if (!OPCFabric.tracked_players.containsKey(player.getUuid())) {
|
||||||
OPCFabric.tracked_players.put(player.getUuid(), new Stage1HandshakeBuilder().withPlayer(player));
|
OPCFabric.tracked_players.put(player.getUuid(), new HandshakeBuilder().withPlayer(player));
|
||||||
}
|
}
|
||||||
Stage1HandshakeBuilder builder = OPCFabric.tracked_players.get(player.getUuid());
|
HandshakeBuilder builder = OPCFabric.tracked_players.get(player.getUuid());
|
||||||
if (!builder.built) {
|
if (!builder.built) {
|
||||||
try {
|
try {
|
||||||
builder.add(new Stage1HandshakeBuilder.HandshakeMovement(accessor.getServerHeadYaw(), accessor.getServerPitch()).convertToHandshakeForm());
|
builder.add(new HandshakeBuilder.HandshakeMovement(accessor.getServerHeadYaw(), accessor.getServerPitch()).convertToHandshakeForm());
|
||||||
} catch (IllegalArgumentException ignored) {
|
} catch (IllegalArgumentException ignored) {
|
||||||
}
|
}
|
||||||
if (builder.readyToBuild()) {
|
if (builder.readyToBuild()) {
|
||||||
try {
|
try {
|
||||||
Stage1Handshake handshake = builder.tryBuild();
|
Handshake handshake = builder.tryBuild();
|
||||||
if (handshake != null) {
|
if (handshake != null) {
|
||||||
OPCFabric.LOGGER.info("Found Stage 1 Handshake for player {}", handshake.getPlayer().getName());
|
OPCFabric.LOGGER.info("Found Stage 1 Handshake for player {}", handshake.getPlayer().getName());
|
||||||
builder.built = true;
|
builder.built = true;
|
||||||
|
handshake.connect();
|
||||||
}
|
}
|
||||||
} catch (HandshakeException e) {
|
} catch (HandshakeException e) {
|
||||||
OPCFabric.LOGGER.info("Caught HandshakeException ({})", e.getMessage());
|
OPCFabric.LOGGER.info("Caught HandshakeException ({})", e.getMessage());
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
package org.muellerssoftware.openproximitychatfabric.voice
|
||||||
|
|
||||||
|
public class Connection {
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user