Implemented standalone server, fixed breaking bugs

This commit is contained in:
Anuken
2018-01-28 01:21:33 -05:00
parent 35b6b41f24
commit 5cba3050b9
17 changed files with 218 additions and 32 deletions

View File

@@ -79,7 +79,7 @@ public class KryoClient implements ClientProvider{
Net.handleClientReceived(object);
}catch (Exception e){
if(e instanceof KryoNetException && e.getMessage() != null && e.getMessage().toLowerCase().contains("incorrect")) {
ui.showError("$text.server.mismatch");
Net.showError("$text.server.mismatch");
netClient.disconnectQuietly();
}else{
throw new RuntimeException(e);
@@ -207,7 +207,7 @@ public class KryoClient implements ClientProvider{
private void handleException(Exception e){
e.printStackTrace();
if(e instanceof KryoNetException){
Gdx.app.postRunnable(() -> ui.showError("$text.server.mismatch"));
Gdx.app.postRunnable(() -> Net.showError("$text.server.mismatch"));
}else{
//TODO better exception handling.
disconnect();

View File

@@ -18,9 +18,11 @@ public class KryoRegistrator {
}
public static ByteBuffer writeServerData(){
ByteBuffer buffer = ByteBuffer.allocate(1 + Vars.player.name.length() + 4);
buffer.put((byte)Vars.player.name.length());
buffer.put(Vars.player.name.getBytes());
String host = Vars.headless ? "Server" : Vars.player.name;
ByteBuffer buffer = ByteBuffer.allocate(1 + host.getBytes().length + 4);
buffer.put((byte)host.getBytes().length);
buffer.put(host.getBytes());
buffer.putInt(Net.getConnections().size + 1);
return buffer;
}

View File

@@ -35,8 +35,6 @@ import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.concurrent.CopyOnWriteArrayList;
import static io.anuke.mindustry.Vars.ui;
public class KryoServer implements ServerProvider {
final boolean debug = false;
final Server server;
@@ -434,10 +432,10 @@ public class KryoServer implements ServerProvider {
ex.printStackTrace();
if(ex instanceof BindException){
Net.closeServer();
ui.showError("$text.server.addressinuse");
Net.showError("$text.server.addressinuse");
}else if(ex.getMessage().equals("Permission denied")){
Net.closeServer();
ui.showError("Permission denied.");
Net.showError("Permission denied.");
}
}