diff --git a/README.md b/README.md index 92018b4d..91bd58da 100644 --- a/README.md +++ b/README.md @@ -77,12 +77,12 @@ Common CLI options for both the client and the server: - `-ip` to set the hostname - `-p` to set the port - `-h` to learn about all the available options +- `--verbose` to enable debug logging Server CLI options: - `--tracks-dir` to use custom tracks instead of the default set of bundled tracks Client CLI options: -- `--verbose` to enable debug logging - `--norandom` to disable randomization for shots - `--username` to set username from CLI and skip inputting it diff --git a/client/src/main/java/agolf/GameApplet.java b/client/src/main/java/agolf/GameApplet.java index 73230b93..82c9f1a2 100644 --- a/client/src/main/java/agolf/GameApplet.java +++ b/client/src/main/java/agolf/GameApplet.java @@ -91,8 +91,8 @@ public void createImages() { } public void connectToServer() { - this.gameContainer.connection = new Conn(this.gameContainer); - if (!this.gameContainer.connection.method1158()) { + this.gameContainer.connection = new GolfConnection(this.gameContainer); + if (!this.gameContainer.connection.openSocketConnection()) { this.setEndState(END_ERROR_CONNECTION); } @@ -115,7 +115,7 @@ public boolean isDebug() { return verbose; } - protected int method32() { + protected int getActivePanel() { return this.activePanel; } diff --git a/client/src/main/java/agolf/GameContainer.java b/client/src/main/java/agolf/GameContainer.java index 7bac91ab..874b0c06 100644 --- a/client/src/main/java/agolf/GameContainer.java +++ b/client/src/main/java/agolf/GameContainer.java @@ -22,7 +22,7 @@ public class GameContainer {// some kind of a container for everything public BadWordFilter badWordFilter; public AutoPopups autoPopup; public TrackCollection trackCollection; - public Conn connection; + public GolfConnection connection; public LobbySelectPanel lobbySelectionPanel; public LobbyPanel lobbyPanel; public String defaultLobby; diff --git a/client/src/main/java/agolf/Conn.java b/client/src/main/java/agolf/GolfConnection.java similarity index 83% rename from client/src/main/java/agolf/Conn.java rename to client/src/main/java/agolf/GolfConnection.java index 7a7b112e..c4d9abfb 100644 --- a/client/src/main/java/agolf/Conn.java +++ b/client/src/main/java/agolf/GolfConnection.java @@ -1,11 +1,11 @@ package agolf; import com.aapeli.applet.AApplet; -import com.aapeli.connection.ConnListener; -import com.aapeli.connection.Connection; +import com.aapeli.connection.SocketConnectionListener; +import com.aapeli.connection.SocketConnection; import com.aapeli.tools.Tools; -public class Conn implements ConnListener { +public class GolfConnection implements SocketConnectionListener { private static final String[] cipherCmds = new String[] { "status\t", @@ -78,30 +78,29 @@ public class Conn implements ConnListener { "error" }; private GameContainer gameContainer; - private Connection connection; - private String aString2372; - private String aString2373; + private SocketConnection socketConnection; + private String lastPacketSent; + private String lastPacketReceived; - protected Conn(GameContainer var1) { + protected GolfConnection(GameContainer var1) { this.gameContainer = var1; - this.aString2372 = this.aString2373 = null; + this.lastPacketSent = this.lastPacketReceived = null; } - public void dataReceived(String var1) { + public void dataReceived(String packet) { try { - this.handlePacket(var1); - this.aString2373 = var1; - } catch (Exception var4) { - Exception var2 = var4; + this.handlePacket(packet); + this.lastPacketReceived = packet; + } catch (Exception e) { try { - this.writeData("error-debug\t" + this.gameContainer.gameApplet.method32() + "\t" + var2.toString().trim().replace('\n', '\\') + "\t" + var1.replace('\t', '\\') + "\t" + this.aString2373.replace('\t', '\\') + "\t" + this.aString2372.replace('\t', '\\')); - } catch (Exception var3) { + this.writeData("error-debug\t" + this.gameContainer.gameApplet.getActivePanel() + "\t" + e.toString().trim().replace('\n', '\\') + "\t" + packet.replace('\t', '\\') + "\t" + this.lastPacketReceived.replace('\t', '\\') + "\t" + this.lastPacketSent.replace('\t', '\\')); + } catch (Exception ex) { } - this.gameContainer.gameApplet.setEndState(var4); - this.connection.closeConnection(); + this.gameContainer.gameApplet.setEndState(e); + this.socketConnection.closeConnection(); } } @@ -122,9 +121,9 @@ public void notifyConnectionDown() { public void notifyConnectionUp() { } - protected boolean method1158() { - this.connection = new Connection(this.gameContainer.gameApplet, this, cipherCmds); - return this.connection.openConnection(); + protected boolean openSocketConnection() { + this.socketConnection = new SocketConnection(this.gameContainer.gameApplet, this, cipherCmds); + return this.socketConnection.openConnection(); } protected void sendVersion() { @@ -133,13 +132,13 @@ protected void sendVersion() { } public void writeData(String var1) { - this.aString2372 = var1; - this.connection.writeData(var1); + this.lastPacketSent = var1; + this.socketConnection.writeData(var1); } protected void disconnect() { - if (this.connection != null) { - this.connection.closeConnection(); + if (this.socketConnection != null) { + this.socketConnection.closeConnection(); } } @@ -152,7 +151,7 @@ private void handlePacket(String cmd) { this.gameContainer.gameApplet.setEndState(AApplet.END_ERROR_SERVERFULL); } - this.connection.closeConnection(); + this.socketConnection.closeConnection(); } else if (args[0].equals("versok")) { this.writeData("language\t" + this.gameContainer.params.getChatLang()); String var4 = this.gameContainer.params.getSessionLocale(); diff --git a/client/src/main/java/agolf/game/HackedShot.java b/client/src/main/java/agolf/game/HackedShot.java index 82a3f4da..8a607faf 100644 --- a/client/src/main/java/agolf/game/HackedShot.java +++ b/client/src/main/java/agolf/game/HackedShot.java @@ -7,9 +7,6 @@ import java.util.Arrays; import java.util.List; -/** - * mmmkay children. - */ public class HackedShot implements Runnable { private static final double aDouble2798 = Math.sqrt(2.0D) / 2.0D; diff --git a/client/src/main/java/agolf/lobby/LobbyMultiPlayerPanel.java b/client/src/main/java/agolf/lobby/LobbyMultiPlayerPanel.java index 1589018c..c6f346ba 100644 --- a/client/src/main/java/agolf/lobby/LobbyMultiPlayerPanel.java +++ b/client/src/main/java/agolf/lobby/LobbyMultiPlayerPanel.java @@ -78,7 +78,7 @@ public void update(Graphics g) { this.graphics.setFont(GameApplet.fontSerif26b); StringDraw.drawString(this.graphics, this.gameContainer.textManager.getGame("LobbySelect_MultiPlayer"), this.width / 2, 35, 0); this.graphics.setFont(GameApplet.fontSerif20); - StringDraw.drawOutlinedString(this.graphics, var2, this.gameContainer.textManager.getGame("LobbyReal_CreateTitle"), this.width / 2 - 185, 50, 1); + StringDraw.drawOutlinedString(this.graphics, var2, this.gameContainer.textManager.getGame("LobbyReal_CreateTitle"), this.width / 2 - 165, 50, 1); StringDraw.drawString(this.graphics, this.gameContainer.textManager.getGame("LobbyReal_JoinTitle"), this.width * 3 / 4, 60, 0); byte yPos = 86; this.graphics.setFont(GameApplet.fontDialog12); diff --git a/client/src/main/java/com/aapeli/applet/AApplet.java b/client/src/main/java/com/aapeli/applet/AApplet.java index 3310a3fd..f115c95a 100644 --- a/client/src/main/java/com/aapeli/applet/AApplet.java +++ b/client/src/main/java/com/aapeli/applet/AApplet.java @@ -5,7 +5,7 @@ import com.aapeli.client.SoundManager; import com.aapeli.client.StringDraw; import com.aapeli.client.TextManager; -import com.aapeli.connection.Connection; +import com.aapeli.connection.SocketConnection; import com.aapeli.tools.QuickTimer; import com.aapeli.tools.QuickTimerListener; import com.aapeli.tools.Tools; @@ -67,7 +67,7 @@ public abstract class AApplet extends Applet implements Runnable, ActionListener private Image splashImage; private long splashTimestamp; private QuickTimer popupTimer; - private Connection connection; + private SocketConnection socketConnection; private Image appletImage; private Graphics appletGraphics; private boolean verbose; @@ -484,7 +484,7 @@ public void run() { } this.sendLoadTimes(readyTime, finishedTime, time1, time2, time3, time4, time5, time6); - this.writeThriftDebug("clientconnect", "loadtime:i:" + readyTime + "^loadertime:i:" + finishedTime); + this.writeMetadataLog1("clientconnect", "loadtime:i:" + readyTime + "^loadertime:i:" + finishedTime); this.loadingPanel.displayButtons(); if (this.endState == 0 && !this.destroyed) { this.remove(this.loadingPanel); @@ -692,20 +692,20 @@ public void allowExternalPopups() { this.callJavaScriptJSON("{\"block\":\"false\"}"); } - public void setConnectionReference(Connection var1) { - this.connection = var1; + public void setConnectionReference(SocketConnection var1) { + this.socketConnection = var1; } - public void writeThriftLog(String var1, String var2) { - if (this.connection != null) { - this.connection.writeThriftLog(0, var1, var2); + public void writeMetadataLog0(String dataType, String data) { + if (this.socketConnection != null) { + this.socketConnection.writeMetadataLog(0, dataType, data); } } - public void writeThriftDebug(String var1, String var2) { - if (this.connection != null) { - this.connection.writeThriftLog(1, var1, var2); + public void writeMetadataLog1(String dataType, String data) { + if (this.socketConnection != null) { + this.socketConnection.writeMetadataLog(1, dataType, data); } } diff --git a/client/src/main/java/com/aapeli/colorgui/ColorList.java b/client/src/main/java/com/aapeli/colorgui/ColorList.java index 09116116..5465bdcc 100644 --- a/client/src/main/java/com/aapeli/colorgui/ColorList.java +++ b/client/src/main/java/com/aapeli/colorgui/ColorList.java @@ -236,9 +236,9 @@ public synchronized void mousePressed(MouseEvent e) { this.lastMouseClickY = e.getY(); ColorListItem item = this.getItemAt(this.lastMouseClickY); if (item != null) { - boolean isMetaDown = e.isMetaDown(); + boolean isRightClick = e.getButton() == MouseEvent.BUTTON3; boolean isDoubleClick = e.getClickCount() == 2; - int clickMode = isMetaDown ? ID_RIGHTCLICKED : (isDoubleClick ? ID_DOUBLECLICKED : ID_CLICKED); + int eventId = isRightClick ? ID_RIGHTCLICKED : (isDoubleClick ? ID_DOUBLECLICKED : ID_CLICKED); short newState = 701; if (!item.isSelected()) { if (this.selectable == SELECTABLE_NONE) { @@ -251,14 +251,14 @@ public synchronized void mousePressed(MouseEvent e) { item.setSelected(true); newState = ItemEvent.SELECTED; - } else if (!isMetaDown) { + } else if (!isRightClick) { item.setSelected(false); newState = ItemEvent.DESELECTED; } if (this.selectable == SELECTABLE_MULTI) { int i = this.items.indexOf(item); - if (clickMode == ID_CLICKED && (newState == ItemEvent.SELECTED || newState == ItemEvent.DESELECTED)) { + if (eventId == ID_CLICKED && (newState == ItemEvent.SELECTED || newState == ItemEvent.DESELECTED)) { if (this.rangeSelectionLastIndex >= 0 && e.isShiftDown()) { int startOfRange = Math.min(this.rangeSelectionLastIndex, i); int endOfRange = Math.max(this.rangeSelectionLastIndex, i); @@ -275,11 +275,11 @@ public synchronized void mousePressed(MouseEvent e) { } } - if (isMetaDown) { + if (isRightClick) { this.update(this.getGraphics()); } - this.itemPressed(item, clickMode, newState); + this.itemPressed(item, eventId, newState); this.repaint(); } } diff --git a/client/src/main/java/com/aapeli/connection/GamePacketQueue.java b/client/src/main/java/com/aapeli/connection/GamePacketQueue.java index daa3efd4..3d2fb723 100644 --- a/client/src/main/java/com/aapeli/connection/GamePacketQueue.java +++ b/client/src/main/java/com/aapeli/connection/GamePacketQueue.java @@ -6,16 +6,16 @@ class GamePacketQueue implements Runnable { - private Connection conn; - private ConnListener connListener; + private SocketConnection socketConnection; + private SocketConnectionListener socketConnectionListener; private List packets; private boolean running; private Thread thread; - protected GamePacketQueue(Connection conn, ConnListener connListener) { - this.conn = conn; - this.connListener = connListener; + protected GamePacketQueue(SocketConnection socketConnection, SocketConnectionListener socketConnectionListener) { + this.socketConnection = socketConnection; + this.socketConnectionListener = socketConnectionListener; this.packets = new ArrayList<>(); this.running = true; this.thread = new Thread(this); @@ -29,7 +29,7 @@ public void run() { String packet; while ((packet = this.nextGamePacket()) != null) { - this.connListener.dataReceived(packet); + this.socketConnectionListener.dataReceived(packet); } if (this.running) { @@ -37,7 +37,7 @@ public void run() { } } catch (Exception e) { this.running = false; - this.conn.handleCrash(); + this.socketConnection.handleCrash(); } return; diff --git a/client/src/main/java/com/aapeli/connection/Connection.java b/client/src/main/java/com/aapeli/connection/SocketConnection.java similarity index 89% rename from client/src/main/java/com/aapeli/connection/Connection.java rename to client/src/main/java/com/aapeli/connection/SocketConnection.java index 3d6fa8a2..8e1a7b3a 100644 --- a/client/src/main/java/com/aapeli/connection/Connection.java +++ b/client/src/main/java/com/aapeli/connection/SocketConnection.java @@ -16,7 +16,7 @@ import java.util.ArrayList; import java.util.List; -public final class Connection implements Runnable { +public final class SocketConnection implements Runnable { /* DCR Constants */ public static final int DISCONNECT_REASON_UNDEFINED = 0; @@ -38,7 +38,7 @@ public final class Connection implements Runnable { private AApplet gameApplet; private Parameters params; - private ConnListener connListener; + private SocketConnectionListener socketConnectionListener; private GameCipher gameCipher; private int state; private int disconnectReason; @@ -51,25 +51,25 @@ public final class Connection implements Runnable { private int retryTimeoutS; private GameQueue gameQueue; private GamePacketQueue gamePacketQueue; - private List thriftLogs; + private List metadataLogs; private long numReceivedGamePackets; private long connActivityTime; private ConnCipher connCipher; private Thread thread; - public Connection(AApplet gameApplet, ConnListener connListener, String[] gameCipherCmds) { - this(gameApplet, gameApplet.param, connListener, gameCipherCmds); + public SocketConnection(AApplet gameApplet, SocketConnectionListener socketConnectionListener, String[] gameCipherCmds) { + this(gameApplet, gameApplet.param, socketConnectionListener, gameCipherCmds); } - public Connection(Parameters params, ConnListener connListener, String[] gameCipherCmds) { - this(null, params, connListener, gameCipherCmds); + public SocketConnection(Parameters params, SocketConnectionListener socketConnectionListener, String[] gameCipherCmds) { + this(null, params, socketConnectionListener, gameCipherCmds); } - private Connection(AApplet gameApplet, Parameters params, ConnListener connListener, String[] gameCipherCmds) { + private SocketConnection(AApplet gameApplet, Parameters params, SocketConnectionListener socketConnectionListener, String[] gameCipherCmds) { this.gameApplet = gameApplet; this.params = params; - this.connListener = connListener; + this.socketConnectionListener = socketConnectionListener; if (gameApplet != null) { gameApplet.setConnectionReference(this); } @@ -85,7 +85,7 @@ private Connection(AApplet gameApplet, Parameters params, ConnListener connListe this.clientId = -1L; this.retryTimeoutS = 25; this.gameQueue = new GameQueue(); - this.thriftLogs = new ArrayList<>(); + this.metadataLogs = new ArrayList<>(); this.numReceivedGamePackets = -1L; this.state = STATE_OPENING; this.disconnectReason = DISCONNECT_REASON_UNDEFINED; @@ -94,7 +94,7 @@ private Connection(AApplet gameApplet, Parameters params, ConnListener connListe } public void run() { - this.gamePacketQueue = new GamePacketQueue(this, this.connListener); + this.gamePacketQueue = new GamePacketQueue(this, this.socketConnectionListener); try { do { @@ -128,7 +128,7 @@ public void run() { this.close(); this.gamePacketQueue.stop(); - this.connListener.connectionLost(this.disconnectReason); + this.socketConnectionListener.connectionLost(this.disconnectReason); } public boolean openConnection() { @@ -159,14 +159,14 @@ public void writeData(String data) { } } - public void writeThriftLog(int var1, String var2, String var3) { // TODO: replace var1...var4 - String var4 = "tlog\t" + var1 + "\t" + var2; - if (var3 != null) { - var4 = var4 + "\t" + var3; + public void writeMetadataLog(int i, String dataType, String data) { + String log = "tlog\t" + i + "\t" + dataType; + if (data != null) { + log = log + "\t" + data; } - synchronized (this.thriftLogs) { - this.thriftLogs.add(var4); + synchronized (this.metadataLogs) { + this.metadataLogs.add(log); } } @@ -232,7 +232,7 @@ private void handleConnection() { private void handleGameQueue() { this.processGameQueueDisconnect(); if (this.state == STATE_CONNECTED) { - this.processThriftLogs(); + this.processMetadataLogs(); } } @@ -251,11 +251,12 @@ private void processGameQueueDisconnect() { } - private void processThriftLogs() { - synchronized (this.thriftLogs) { + private void processMetadataLogs() { + synchronized (this.metadataLogs) { while (true) { - if (this.state == STATE_CONNECTED && !this.thriftLogs.isEmpty()) { - String str = this.thriftLogs.removeFirst(); + if (this.state == STATE_CONNECTED && !this.metadataLogs.isEmpty()) { + String str = this.metadataLogs.getFirst(); + this.metadataLogs.removeFirst(); if (this.writeLineS(str)) { continue; } @@ -285,7 +286,7 @@ private void disconnect() { if (this.state == STATE_CONNECTED && this.retryTimeoutS > 0) { this.close(); this.state = STATE_DOWN; - this.connListener.notifyConnectionDown(); + this.socketConnectionListener.notifyConnectionDown(); } else { this.state = STATE_DISCONNECTED; this.disconnectReason = DISCONNECT_REASON_NORETRY; @@ -350,7 +351,7 @@ private void readInput() { this.state = STATE_CONNECTED; } else if (cmd.equals("rcok")) { // reconnect ok this.state = STATE_CONNECTED; - this.connListener.notifyConnectionUp(); + this.socketConnectionListener.notifyConnectionUp(); } else if (cmd.equals("rcf")) { // reconnect ok this.state = STATE_DISCONNECTED; this.disconnectReason = DISCONNECT_REASON_RETRYFAIL; diff --git a/client/src/main/java/com/aapeli/connection/ConnListener.java b/client/src/main/java/com/aapeli/connection/SocketConnectionListener.java similarity index 63% rename from client/src/main/java/com/aapeli/connection/ConnListener.java rename to client/src/main/java/com/aapeli/connection/SocketConnectionListener.java index 3ec82bd5..73134f7f 100644 --- a/client/src/main/java/com/aapeli/connection/ConnListener.java +++ b/client/src/main/java/com/aapeli/connection/SocketConnectionListener.java @@ -1,9 +1,9 @@ package com.aapeli.connection; -public interface ConnListener { +public interface SocketConnectionListener { - void dataReceived(String var1); + void dataReceived(String data); void connectionLost(int var1); diff --git a/client/src/main/java/com/aapeli/multiuser/UsernameValidator.java b/client/src/main/java/com/aapeli/multiuser/UsernameValidator.java index 8d79f101..2d3e6fdb 100644 --- a/client/src/main/java/com/aapeli/multiuser/UsernameValidator.java +++ b/client/src/main/java/com/aapeli/multiuser/UsernameValidator.java @@ -3,10 +3,10 @@ import java.util.regex.Pattern; public class UsernameValidator { - public static Pattern INVALID_VALID_USERNAME_PATTERN = Pattern.compile("[^a-zA-Z0-9 ]"); + public static Pattern INVALID_USERNAME_PATTERN = Pattern.compile("[^a-zA-Z0-9 ]"); public static boolean isValidUsername(String username) { - boolean invalid = INVALID_VALID_USERNAME_PATTERN.matcher(username).find() || username.trim().isEmpty(); + boolean invalid = INVALID_USERNAME_PATTERN.matcher(username).find(); return !invalid; } diff --git a/editor/src/main/java/org/moparforia/editor/EditorPanel.java b/editor/src/main/java/org/moparforia/editor/EditorPanel.java index 3c76e88c..5b202d74 100644 --- a/editor/src/main/java/org/moparforia/editor/EditorPanel.java +++ b/editor/src/main/java/org/moparforia/editor/EditorPanel.java @@ -12,9 +12,6 @@ import java.io.FileOutputStream; import java.io.PrintStream; -/** - * panel to hold shit like the tileset, open, save, exit etc etc - */ public class EditorPanel extends JPanel { MapCanvas canvas; diff --git a/editor/src/main/java/org/moparforia/editor/Map.java b/editor/src/main/java/org/moparforia/editor/Map.java index f2a2109d..8586dbc4 100644 --- a/editor/src/main/java/org/moparforia/editor/Map.java +++ b/editor/src/main/java/org/moparforia/editor/Map.java @@ -1,8 +1,5 @@ package org.moparforia.editor; -/** - * Map derp - */ public class Map { public Tile[][] tiles = new Tile[49][25]; diff --git a/editor/src/main/java/org/moparforia/editor/MapCanvas.java b/editor/src/main/java/org/moparforia/editor/MapCanvas.java index 51e0cd21..387d3a94 100644 --- a/editor/src/main/java/org/moparforia/editor/MapCanvas.java +++ b/editor/src/main/java/org/moparforia/editor/MapCanvas.java @@ -7,9 +7,6 @@ import java.awt.event.*; import java.awt.image.BufferedImage; -/** - * Canvas to draw map!??!?! - */ public class MapCanvas extends JPanel implements MouseListener, MouseMotionListener, MouseWheelListener { SpriteManager spriteManager = null; diff --git a/editor/src/main/java/org/moparforia/editor/MapDecompressor.java b/editor/src/main/java/org/moparforia/editor/MapDecompressor.java index 1e87eb2e..0f39d41c 100644 --- a/editor/src/main/java/org/moparforia/editor/MapDecompressor.java +++ b/editor/src/main/java/org/moparforia/editor/MapDecompressor.java @@ -1,8 +1,5 @@ package org.moparforia.editor; -/** - * uncompress/decompress maps init!!!11!! - */ public class MapDecompressor { private static final String mapChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; diff --git a/editor/src/main/java/org/moparforia/editor/Tile.java b/editor/src/main/java/org/moparforia/editor/Tile.java index 1d0d1e25..e173f027 100644 --- a/editor/src/main/java/org/moparforia/editor/Tile.java +++ b/editor/src/main/java/org/moparforia/editor/Tile.java @@ -1,8 +1,5 @@ package org.moparforia.editor; -/** - * tileinit - */ public class Tile { /** diff --git a/server/src/main/java/org/moparforia/server/Launcher.java b/server/src/main/java/org/moparforia/server/Launcher.java index ce3530cd..23cd2098 100644 --- a/server/src/main/java/org/moparforia/server/Launcher.java +++ b/server/src/main/java/org/moparforia/server/Launcher.java @@ -34,6 +34,12 @@ public class Launcher implements Callable { ) private int port; + @CommandLine.Option( + names = {"--verbose", "-v"}, + description = "Sets server to log more verbosely" + ) + private boolean verbose = false; + @CommandLine.Option( names = {"--tracks-dir", "-t"}, description = "Sets where to look for tracks and track sets" @@ -49,11 +55,11 @@ public static void main(String... args) { @Override public Integer call() { - getServer(this.host, this.port, this.tracksDirectory).start(); + getServer(this.host, this.port, this.verbose, this.tracksDirectory).start(); return 0; } - public Server getServer(String host, int port, String tracksDirectory) { - return new Server(host, port, Optional.ofNullable(tracksDirectory)); + public Server getServer(String host, int port, boolean verbose, String tracksDirectory) { + return new Server(host, port, verbose, Optional.ofNullable(tracksDirectory)); } } diff --git a/server/src/main/java/org/moparforia/server/Server.java b/server/src/main/java/org/moparforia/server/Server.java index 0af4b7a8..fd5dbbe4 100644 --- a/server/src/main/java/org/moparforia/server/Server.java +++ b/server/src/main/java/org/moparforia/server/Server.java @@ -52,6 +52,7 @@ public class Server implements Runnable { private String host; private int port; + private final boolean verbose; private Optional tracksDirectory; private ChannelFuture serverChannelFuture; @@ -65,9 +66,10 @@ public class Server implements Runnable { private int gameIdCounter; - public Server(String host, int port, Optional tracksDirectory) { + public Server(String host, int port, boolean verbose, Optional tracksDirectory) { this.host = host; this.port = port; + this.verbose = verbose; this.tracksDirectory = tracksDirectory; for (LobbyType lt : LobbyType.values()) { lobbies.put(lt, new Lobby(lt)); @@ -192,9 +194,9 @@ protected void initChannel(SocketChannel ch) { ch.attr(ClientState.CLIENT_STATE_ATTRIBUTE_KEY).set(new ClientState()); ch.pipeline() .addLast( - new DelimiterBasedFrameDecoder(250, Delimiters.lineDelimiter()), + new DelimiterBasedFrameDecoder(2000, Delimiters.lineDelimiter()), new PacketDecoder(), - new PacketEncoder(), + new PacketEncoder(Server.this.verbose), new IdleStateHandler(2, 0, 0), new ClientChannelHandler(Server.this) ); diff --git a/server/src/main/java/org/moparforia/server/game/Lobby.java b/server/src/main/java/org/moparforia/server/game/Lobby.java index d3cf9601..67d75b88 100644 --- a/server/src/main/java/org/moparforia/server/game/Lobby.java +++ b/server/src/main/java/org/moparforia/server/game/Lobby.java @@ -121,7 +121,6 @@ public boolean removeGame(Game g) { } /** - * counts all the players errywhar * @return number of players in the lobby and in all games created from this lobby. */ public int totalPlayerCount() { diff --git a/server/src/main/java/org/moparforia/server/game/Player.java b/server/src/main/java/org/moparforia/server/game/Player.java index 95fddd35..c0d83a30 100644 --- a/server/src/main/java/org/moparforia/server/game/Player.java +++ b/server/src/main/java/org/moparforia/server/game/Player.java @@ -40,11 +40,6 @@ public Player(Channel channel, int id) { resetVals(); } - /** - * USE WITH CARE!!11 LOL - * - * @see {java.lang.String} - */ public void resetVals() { nick = "-"; locale = "-"; diff --git a/server/src/main/java/org/moparforia/server/game/gametypes/golf/ChampionshipGame.java b/server/src/main/java/org/moparforia/server/game/gametypes/golf/ChampionshipGame.java index 96474896..03e26fe3 100644 --- a/server/src/main/java/org/moparforia/server/game/gametypes/golf/ChampionshipGame.java +++ b/server/src/main/java/org/moparforia/server/game/gametypes/golf/ChampionshipGame.java @@ -9,9 +9,6 @@ import java.util.List; -/** - - */ public class ChampionshipGame extends GolfGame { private int championshipId; diff --git a/server/src/main/java/org/moparforia/server/game/gametypes/golf/DualGame.java b/server/src/main/java/org/moparforia/server/game/gametypes/golf/DualGame.java index 3f441154..1bdf8739 100644 --- a/server/src/main/java/org/moparforia/server/game/gametypes/golf/DualGame.java +++ b/server/src/main/java/org/moparforia/server/game/gametypes/golf/DualGame.java @@ -7,14 +7,10 @@ import org.moparforia.server.net.Packet; import org.moparforia.server.net.PacketType; import org.moparforia.shared.tracks.TrackCategory; -import org.moparforia.shared.tracks.filesystem.FileSystemTrackManager; import org.moparforia.shared.Tools; import java.util.List; -/** - * dual shizzle - */ public class DualGame extends GolfGame { private boolean started; diff --git a/server/src/main/java/org/moparforia/server/game/gametypes/golf/TrainingGame.java b/server/src/main/java/org/moparforia/server/game/gametypes/golf/TrainingGame.java index ee432da9..827f8455 100644 --- a/server/src/main/java/org/moparforia/server/game/gametypes/golf/TrainingGame.java +++ b/server/src/main/java/org/moparforia/server/game/gametypes/golf/TrainingGame.java @@ -6,13 +6,9 @@ import org.moparforia.server.game.Player; import org.moparforia.server.game.gametypes.GolfGame; import org.moparforia.shared.tracks.TrackCategory; -import org.moparforia.shared.tracks.filesystem.FileSystemTrackManager; import java.util.List; -/** - * training init - */ public class TrainingGame extends GolfGame { public TrainingGame(Player p, int gameId, int tracksType, int numberOfTracks, int water) { diff --git a/server/src/main/java/org/moparforia/server/net/PacketEncoder.java b/server/src/main/java/org/moparforia/server/net/PacketEncoder.java index c1e9a5c3..04ce0ff7 100644 --- a/server/src/main/java/org/moparforia/server/net/PacketEncoder.java +++ b/server/src/main/java/org/moparforia/server/net/PacketEncoder.java @@ -10,6 +10,12 @@ public class PacketEncoder extends MessageToByteEncoder { + private final boolean verbose; + + public PacketEncoder(boolean verbose) { + this.verbose = verbose; + } + @Override protected void encode(ChannelHandlerContext ctx, Object msg, ByteBuf out) { Channel channel = ctx.channel(); @@ -25,6 +31,9 @@ protected void encode(ChannelHandlerContext ctx, Object msg, ByteBuf out) { } else { encoded = ""; } + if (this.verbose) { + System.out.println(">> " + encoded); + } encoded += packet.getMessage() + '\n'; out.writeBytes(copiedBuffer(encoded, CharsetUtil.UTF_8)); } else if (msg instanceof String m) { @@ -36,6 +45,9 @@ protected void encode(ChannelHandlerContext ctx, Object msg, ByteBuf out) { m = "d " + count + " " + m.substring(2); channel.attr(ClientState.CLIENT_STATE_ATTRIBUTE_KEY).get().setSentCount(count + 1); } + if (this.verbose) { + System.out.println(">>> " + m); + } out.writeBytes(copiedBuffer(m, CharsetUtil.UTF_8)); } else { out.writeBytes((ByteBuf) msg); diff --git a/server/src/main/java/org/moparforia/server/net/PacketHandlerFactory.java b/server/src/main/java/org/moparforia/server/net/PacketHandlerFactory.java index 67741f77..5b24a7db 100644 --- a/server/src/main/java/org/moparforia/server/net/PacketHandlerFactory.java +++ b/server/src/main/java/org/moparforia/server/net/PacketHandlerFactory.java @@ -14,7 +14,8 @@ public static final HashMap> getPacketHandl new LanguageHandler(), new LobbyHandler(), new LobbySelectHandler(), new LoginHandler(), new LoginTypeHandler(), new NewHandler(), new PongHandler(), new ReconnectHandler(), new TlogHandler(), new TrackTestLoginHandler(), new VersionHandler(), new LobbyCreateSinglePlayerHandler(), - new LobbyMultiplayerHandler(), new LobbyDualplayerHandler(), new QuitHandler()}; + new LobbyMultiplayerHandler(), new LobbyDualplayerHandler(), new QuitHandler(), new ErrorDebugHandler(), + new EndHandler()}; ArrayList data = new ArrayList<>(); ArrayList command = new ArrayList<>(); ArrayList string = new ArrayList<>(); @@ -35,7 +36,7 @@ public static final HashMap> getPacketHandl break; } } - HashMap> map = new HashMap>(); + HashMap> map = new HashMap<>(); map.put(PacketType.DATA, data); map.put(PacketType.COMMAND, command); map.put(PacketType.STRING, string); diff --git a/server/src/main/java/org/moparforia/server/net/packethandlers/EndHandler.java b/server/src/main/java/org/moparforia/server/net/packethandlers/EndHandler.java new file mode 100644 index 00000000..8ae9f48c --- /dev/null +++ b/server/src/main/java/org/moparforia/server/net/packethandlers/EndHandler.java @@ -0,0 +1,31 @@ +package org.moparforia.server.net.packethandlers; + +import io.netty.channel.Channel; +import org.moparforia.server.Server; +import org.moparforia.server.event.PlayerConnectedEvent; +import org.moparforia.server.game.Player; +import org.moparforia.server.net.Packet; +import org.moparforia.server.net.PacketHandler; +import org.moparforia.server.net.PacketType; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class EndHandler implements PacketHandler { + + @Override + public PacketType getType() { + return PacketType.COMMAND; + } + + @Override + public Pattern getPattern() { + return Pattern.compile("end"); + } + + @Override + public boolean handle(Server server, Packet packet, Matcher message) { + return true; + } + +} diff --git a/server/src/main/java/org/moparforia/server/net/packethandlers/ErrorDebugHandler.java b/server/src/main/java/org/moparforia/server/net/packethandlers/ErrorDebugHandler.java new file mode 100644 index 00000000..4e19192e --- /dev/null +++ b/server/src/main/java/org/moparforia/server/net/packethandlers/ErrorDebugHandler.java @@ -0,0 +1,35 @@ +package org.moparforia.server.net.packethandlers; + +import org.moparforia.server.Server; +import org.moparforia.server.game.Player; +import org.moparforia.server.net.Packet; +import org.moparforia.server.net.PacketHandler; +import org.moparforia.server.net.PacketType; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class ErrorDebugHandler implements PacketHandler { + @Override + public PacketType getType() { + return PacketType.DATA; + } + + @Override + // error-debug\t4\tjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1\tgame\starttrack\t\0\V 1\A Dewlor\N Witch\T BAQQ48DEBGAQB3ADBAHA15DBWJHBAJA6DEB3ABAKA10DBABB3DBAKADB3AEEB3ADDE15DEE6D3E10DE3DED4ECBAEBLAQBAQQ7DE6DEE6D3E10DE3DED4E9DBHAQEE6DEE6D3E10DEDDBKABED3EBFAQE9DEE6DEE6D3E10DEBIBAB3ADED3E7DBNAQEDDEE6DEE6D3E10DEB3ADDED3EBGAQH9DEE6DBAQQE6D3E10DEEDDED3EB3A10DEE6DEE6D3E10DEEDDED4EDDBIAQBAQQDDBJAQEDDEE6DEE6D3E10DBOABEDDED4EDDBLAQEDDBKAQEDDEE6DEE6D3E10DB3A3DED4E10DEE6DEE6D3E10DE3DED4E9DBKQAEE6DEE6D3E10DE3DED3EBAIADDBPIQBAQQ7DI6DEG6D3E10DE3DED4E9DBJQIEE6DEE6D3E10DE3DED4E10DEE6DEE6D3E10DBMAMEDDED4E10DEE6DEE6D3E10DBAMMEDDED4E10DEE6DEE6D3E10DEEDDED4E10DBLIQE6DEE6DBLKQF7DBNKQEDDEEDDED4E11DE6DEE6DBAKA12DEBLMAEDED4E11DE6DEE6DE12DEDDBJAMED4E11DE6DEE6DE12DE3DEDCAA3E10DBKAIE6DEE6DE12DE3DEDHEEB3A17DBKQAEBLQAE5DE12DE3DED3E48D,Ads:B2220\I 64508,788552,2,66\B pot-shot,1138226400000\R 286,75,80,115,127,505,377,368,266,166,1108\tgame\resetvoteskip\tgame\voteskip + public Pattern getPattern() { + return Pattern.compile("error-debug\\t(\\d)\\t(.*)\\t(.*)\\t(.*)\\t(.*)"); + } + + @Override + public boolean handle(Server server, Packet packet, Matcher message) { + Player player = packet.getChannel().attr(Player.PLAYER_ATTRIBUTE_KEY).get(); + int activePanel = Integer.parseInt(message.group(1)); + String errorMessage = message.group(2); + String lastPacketSentToClient = message.group(3); + String secondLastPacketSentToClient = message.group(4); + String lastPacketReceivedFromClient = message.group(5); + System.out.println("Fatal error for player '" + player.getNick() + "' (id " + player.getId() + "): " + errorMessage + ", activePanel: " + activePanel + ", lastPacketSentToClient: " + lastPacketSentToClient + ", secondLastPacketSentToClient: " + secondLastPacketSentToClient + ", lastPacketReceivedFromClient: " + lastPacketReceivedFromClient); + return true; + } +} diff --git a/server/src/main/java/org/moparforia/server/net/packethandlers/QuitHandler.java b/server/src/main/java/org/moparforia/server/net/packethandlers/QuitHandler.java index 2b85ec81..b229a61b 100644 --- a/server/src/main/java/org/moparforia/server/net/packethandlers/QuitHandler.java +++ b/server/src/main/java/org/moparforia/server/net/packethandlers/QuitHandler.java @@ -10,9 +10,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -/** - * QUITTEN TITTENS HANDLERING IN HERE - */ public class QuitHandler implements PacketHandler { @Override public PacketType getType() { diff --git a/server/src/main/java/org/moparforia/server/net/packethandlers/golf/ChatHandler.java b/server/src/main/java/org/moparforia/server/net/packethandlers/golf/ChatHandler.java index 37265879..c212f871 100644 --- a/server/src/main/java/org/moparforia/server/net/packethandlers/golf/ChatHandler.java +++ b/server/src/main/java/org/moparforia/server/net/packethandlers/golf/ChatHandler.java @@ -56,7 +56,8 @@ public boolean handle(Server server, Packet packet, Matcher message) { } } } else if (message.group(2).equals("command")) { - //todo + System.out.println("Unhandled lobby command: " + message.group()); + // TODO: handle lobby commands } return true; } diff --git a/server/src/main/java/org/moparforia/server/net/packethandlers/golf/LobbyMultiplayerHandler.java b/server/src/main/java/org/moparforia/server/net/packethandlers/golf/LobbyMultiplayerHandler.java index 966c338a..60a8d14b 100644 --- a/server/src/main/java/org/moparforia/server/net/packethandlers/golf/LobbyMultiplayerHandler.java +++ b/server/src/main/java/org/moparforia/server/net/packethandlers/golf/LobbyMultiplayerHandler.java @@ -11,9 +11,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -/** - * handelz the multiplayer lobby shit - */ public class LobbyMultiplayerHandler implements PacketHandler { public PacketType getType() { diff --git a/server/src/main/java/org/moparforia/server/net/packethandlers/golf/LobbySelectHandler.java b/server/src/main/java/org/moparforia/server/net/packethandlers/golf/LobbySelectHandler.java index cb53da20..ec4d4d02 100644 --- a/server/src/main/java/org/moparforia/server/net/packethandlers/golf/LobbySelectHandler.java +++ b/server/src/main/java/org/moparforia/server/net/packethandlers/golf/LobbySelectHandler.java @@ -20,7 +20,7 @@ public PacketType getType() { @Override public Pattern getPattern() { - return Pattern.compile("lobbyselect\\t(rnop|select)(?:\\t([12x])(h)?)?"); + return Pattern.compile("lobbyselect\\t(rnop|select|qmpt)(?:\\t([12x])(h)?)?"); } @Override @@ -33,6 +33,10 @@ public boolean handle(Server server, Packet packet, Matcher message) { Player player = packet.getChannel().attr(Player.PLAYER_ATTRIBUTE_KEY).get(); player.setChatHidden(message.group(3) != null && message.group(3).equals("h")); server.getLobby(lobbyType).addPlayer(player, Lobby.JOIN_TYPE_NORMAL); + } else if (message.group(1).equals("qmpt")) { // multiplayer quick start + Player player = packet.getChannel().attr(Player.PLAYER_ATTRIBUTE_KEY).get(); + player.setChatHidden(message.group(3) != null && message.group(3).equals("h")); + server.getLobby(LobbyType.MULTI).addPlayer(player, Lobby.JOIN_TYPE_NORMAL); } return true; } diff --git a/server/src/main/java/org/moparforia/server/util/SHA1.java b/server/src/main/java/org/moparforia/server/util/SHA1.java deleted file mode 100644 index 74d8b965..00000000 --- a/server/src/main/java/org/moparforia/server/util/SHA1.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.moparforia.server.util; - -import java.security.MessageDigest; - -/** - * User: Johan - * Date: 2013-08-06 - * Time: 11:02 - */ - -public class SHA1 { - - - public static String hexdigest(String text) throws Exception { - MessageDigest md; - md = MessageDigest.getInstance("SHA-1"); - byte[] sha1hash = new byte[40]; - md.update(text.getBytes("iso-8859-1"), 0, text.length()); - sha1hash = md.digest(); - return convertToHex(sha1hash); - } - - private static String convertToHex(byte[] data) { - StringBuffer buf = new StringBuffer(); - for (int i = 0; i < data.length; i++) { - int halfbyte = (data[i] >>> 4) & 0x0F; - int two_halves = 0; - do { - if ((0 <= halfbyte) && (halfbyte <= 9)) - buf.append((char) ('0' + halfbyte)); - else - buf.append((char) ('a' + (halfbyte - 10))); - halfbyte = data[i] & 0x0F; - } while (two_halves++ < 1); - } - return buf.toString(); - } - -} diff --git a/server/src/main/java/org/moparforia/server/util/StatResetter.java b/server/src/main/java/org/moparforia/server/util/StatResetter.java deleted file mode 100644 index d65df7e2..00000000 --- a/server/src/main/java/org/moparforia/server/util/StatResetter.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.moparforia.server.util; - -/** - * Created with IntelliJ IDEA. - * User: Uncalled For - * Date: 17/08/13 - * Time: 23:36 - * To change this template use File | Settings | File Templates. - */ -public class StatResetter { - - /* - public static void main(String[] args) { - DBCollection tracks = Database.getInstance().getDatabase().getCollection("tracks"); - DBCursor query = tracks.find(new BasicDBObject("category", 7)); - try { - while(query.hasNext()) { - BasicDBObject track = (BasicDBObject)query.next(); - - Database.getInstance().track_update(track,"num_completions",0); - Database.getInstance().track_update(track,"num_strokes",0); - Database.getInstance().track_update(track,"first_best_name",""); - Database.getInstance().track_update(track,"last_best_name",""); - Database.getInstance().track_update(track,"first_best_time",0); - Database.getInstance().track_update(track,"last_best_time",0); - Database.getInstance().track_update(track,"num_best_strokes",0); - Database.getInstance().track_update(track,"num_best_players",0); - System.out.println("ok"); - - } - } finally { - query.close(); - } - System.out.println("Updated " + tracks.getCount() + " tracks."); - } - */ -} diff --git a/server/src/test/java/org/moparforia/server/LauncherCLITest.java b/server/src/test/java/org/moparforia/server/LauncherCLITest.java index 80d747e3..a0e79d8f 100644 --- a/server/src/test/java/org/moparforia/server/LauncherCLITest.java +++ b/server/src/test/java/org/moparforia/server/LauncherCLITest.java @@ -34,7 +34,7 @@ void setUp() { .lenient() .withoutAnnotations()); - doReturn(mock(Server.class)).when(launcher).getServer(anyString(), anyInt(), any()); + doReturn(mock(Server.class)).when(launcher).getServer(anyString(), anyInt(), anyBoolean(), any()); when(launcher.call()).thenCallRealMethod(); cmd = new CommandLine(launcher); @@ -58,42 +58,42 @@ void testInvalidPort() { assertNotEquals(0, cmd.execute("--port=test")); assertNotEquals(0, cmd.execute("-p")); - verify(launcher, never()).getServer(anyString(), anyInt(), anyString()); + verify(launcher, never()).getServer(anyString(), anyInt(), anyBoolean(), anyString()); } @Test void testValidOptions() { assertEquals(0, cmd.execute("-p", "1111", "-ip", "128.128.128.128", "--tracks-dir", "/some/path")); - verify(launcher).getServer(eq("128.128.128.128"), eq(1111), eq("/some/path")); + verify(launcher).getServer(eq("128.128.128.128"), eq(1111), eq(false), eq("/some/path")); - assertEquals(0, cmd.execute("-p=2222", "-ip=127.127.127.127", "-t=/some/path")); - verify(launcher).getServer(eq("127.127.127.127"), eq(2222), eq("/some/path")); + assertEquals(0, cmd.execute("-p=2222", "-ip=127.127.127.127", "-v", "-t=/some/path")); + verify(launcher).getServer(eq("127.127.127.127"), eq(2222), eq(true), eq("/some/path")); - assertEquals(0, cmd.execute("--port=3333", "--hostname=126.126.126.126", "--tracks-dir=/some/path")); - verify(launcher).getServer(eq("126.126.126.126"), eq(3333), eq("/some/path")); + assertEquals(0, cmd.execute("--port=3333", "--hostname=126.126.126.126", "--verbose", "--tracks-dir=/some/path")); + verify(launcher).getServer(eq("126.126.126.126"), eq(3333), eq(true), eq("/some/path")); } @Test void testOnlyPort() { assertEquals(0, cmd.execute("-p", "1111")); - verify(launcher).getServer(eq(Launcher.DEFAULT_HOST), eq(1111), eq(null)); + verify(launcher).getServer(eq(Launcher.DEFAULT_HOST), eq(1111), eq(false), eq(null)); } @Test void testOnlyHostname() { assertEquals(0, cmd.execute("-ip", "127.127.127.127")); - verify(launcher).getServer(eq("127.127.127.127"), eq(DEFAULT_PORT), eq(null)); + verify(launcher).getServer(eq("127.127.127.127"), eq(DEFAULT_PORT), eq(false), eq(null)); } @Test void testOnlyTracksDirectory() { assertEquals(0, cmd.execute("--tracks-dir", "/some/path")); - verify(launcher).getServer(eq(Launcher.DEFAULT_HOST), eq(DEFAULT_PORT), eq("/some/path")); + verify(launcher).getServer(eq(Launcher.DEFAULT_HOST), eq(DEFAULT_PORT), eq(false), eq("/some/path")); } @Test void testDefaultValues() { assertEquals(0, cmd.execute()); - verify(launcher).getServer(eq(Launcher.DEFAULT_HOST), eq(DEFAULT_PORT), eq(null)); + verify(launcher).getServer(eq(Launcher.DEFAULT_HOST), eq(DEFAULT_PORT), eq(false), eq(null)); } } diff --git a/server/src/test/java/org/moparforia/server/ServerTest.java b/server/src/test/java/org/moparforia/server/ServerTest.java index c8160743..e99b8d69 100644 --- a/server/src/test/java/org/moparforia/server/ServerTest.java +++ b/server/src/test/java/org/moparforia/server/ServerTest.java @@ -25,7 +25,7 @@ private void sendMessage(BufferedWriter writer, String message) throws IOExcepti @Test void testSinglePlayerFlow() throws IOException, InterruptedException { - Server server = new Server("127.0.0.1", 4243, Optional.empty()); + Server server = new Server("127.0.0.1", 4243, false,Optional.empty()); server.start(); Socket socket = new Socket("127.0.0.1", 4243); diff --git a/shared/src/main/java/org/moparforia/shared/tracks/Track.java b/shared/src/main/java/org/moparforia/shared/tracks/Track.java index f5741c67..0d866507 100644 --- a/shared/src/main/java/org/moparforia/shared/tracks/Track.java +++ b/shared/src/main/java/org/moparforia/shared/tracks/Track.java @@ -3,14 +3,10 @@ import org.moparforia.shared.Tools; import java.util.Collections; -import java.util.List; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; -/** - * track shit - */ public class Track { private final String track; @@ -21,13 +17,6 @@ public class Track { private Set categories; - /** - * man thats an ugly constructor - * - * @param name name of this track - * @param author the author homie that wrote this track - * @param map the track data/map string - */ public Track(String name, String author, String map, Set categories) { this.track = name; this.author = author;