first commit
Build AsminVoicechat / prepare-release (push) Successful in 14s
Build AsminVoicechat / build-and-test (17) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (18) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (19) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (20) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (21) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (22) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (23) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (24) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (25) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (26) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (27-ea) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (16) (push) Canceled after 38s
Build AsminVoicechat / prepare-release (push) Successful in 14s
Build AsminVoicechat / build-and-test (17) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (18) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (19) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (20) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (21) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (22) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (23) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (24) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (25) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (26) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (27-ea) (push) Canceled after 0s
Build AsminVoicechat / build-and-test (16) (push) Canceled after 38s
This commit is contained in:
commit
bbccd4a815
454 files changed
+45050
No files matched your search
@@ -0,0 +1,138 @@
|
||||
/*
|
||||
* Decompiled with CFR 0.152.
|
||||
*
|
||||
* Could not load the following classes:
|
||||
* org.bukkit.Bukkit
|
||||
* org.bukkit.plugin.Plugin
|
||||
*/
|
||||
package de.maxhenkel.voicechat.plugins.impl;
|
||||
|
||||
import de.maxhenkel.voicechat.Voicechat;
|
||||
import de.maxhenkel.voicechat.api.RawUdpPacket;
|
||||
import de.maxhenkel.voicechat.api.VoicechatSocket;
|
||||
import de.maxhenkel.voicechat.plugins.impl.VoicechatSocketBase;
|
||||
import java.net.BindException;
|
||||
import java.net.DatagramPacket;
|
||||
import java.net.DatagramSocket;
|
||||
import java.net.InetAddress;
|
||||
import java.net.SocketAddress;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
public class VoicechatSocketImpl
|
||||
extends VoicechatSocketBase
|
||||
implements VoicechatSocket {
|
||||
private DatagramSocket socket;
|
||||
|
||||
@Override
|
||||
public void open(int port, String bindAddress) throws Exception {
|
||||
if (this.socket != null) {
|
||||
throw new IllegalStateException("Socket already opened");
|
||||
}
|
||||
this.checkCorrectHost();
|
||||
InetAddress address = null;
|
||||
try {
|
||||
if (!bindAddress.isEmpty()) {
|
||||
address = InetAddress.getByName(bindAddress);
|
||||
}
|
||||
}
|
||||
catch (Exception e) {
|
||||
bindAddress = "";
|
||||
Voicechat.LOGGER.error("Failed to parse bind IP address '{}'", bindAddress, e);
|
||||
}
|
||||
try {
|
||||
try {
|
||||
this.socket = new DatagramSocket(port, address);
|
||||
}
|
||||
catch (BindException e) {
|
||||
if (address == null || bindAddress.equals("0.0.0.0")) {
|
||||
throw e;
|
||||
}
|
||||
Voicechat.LOGGER.error("Failed to bind to address '{}', binding to wildcard IP instead", bindAddress);
|
||||
this.socket = new DatagramSocket(port);
|
||||
}
|
||||
this.socket.setTrafficClass(4);
|
||||
}
|
||||
catch (BindException e) {
|
||||
Voicechat.LOGGER.fatal("Failed to run voice chat at UDP port {}, make sure no other application is running at that port", port);
|
||||
Bukkit.getScheduler().runTask((Plugin)Voicechat.INSTANCE, () -> {
|
||||
Voicechat.LOGGER.fatal("Disabling {}", "Simple Voice Chat");
|
||||
Bukkit.getPluginManager().disablePlugin((Plugin)Voicechat.INSTANCE);
|
||||
});
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
private void checkCorrectHost() throws Exception {
|
||||
String host = Voicechat.SERVER_CONFIG.voiceHost.get();
|
||||
if (host.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
int port = Integer.parseInt(host);
|
||||
if (port <= 0 || port > 65535) {
|
||||
Voicechat.LOGGER.warn("Invalid voice host port: {}", port);
|
||||
} else {
|
||||
Voicechat.LOGGER.info("Voice host port is {}", port);
|
||||
}
|
||||
}
|
||||
catch (NumberFormatException ignored) {
|
||||
try {
|
||||
new URI("voicechat://" + host);
|
||||
Voicechat.LOGGER.info("Voice host is '{}'", host);
|
||||
}
|
||||
catch (URISyntaxException e) {
|
||||
Voicechat.LOGGER.warn("Failed to parse voice host", e);
|
||||
Bukkit.shutdown();
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public RawUdpPacket read() throws Exception {
|
||||
if (this.socket == null) {
|
||||
throw new IllegalStateException("Socket not opened yet");
|
||||
}
|
||||
return this.read(this.socket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(byte[] data, SocketAddress address) throws Exception {
|
||||
if (this.socket == null || this.socket.isClosed()) {
|
||||
return;
|
||||
}
|
||||
this.socket.send(new DatagramPacket(data, data.length, address));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLocalPort() {
|
||||
if (this.socket == null) {
|
||||
return -1;
|
||||
}
|
||||
return this.socket.getLocalPort();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
if (this.socket != null) {
|
||||
try {
|
||||
this.socket.close();
|
||||
}
|
||||
catch (Throwable throwable) {
|
||||
// empty catch block
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isClosed() {
|
||||
if (this.socket == null) {
|
||||
return true;
|
||||
}
|
||||
return this.socket.isClosed();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user