I’ve coded a gameserver which works very well. However, whenever it’s running, my computers fan goes crazy.
I’ve been looking through the code, and i can’t really figure out why.
The code is attached below, i hope someone can see what causes this!
public class NFTServer {
long timeNow = System.currentTimeMillis();
Server server;
//mySQL database;
Board board;
HashSet<Character> loggedIn = new HashSet();
ArrayList<Player> playerList;
public NFTServer() throws IOException {
playerList = new ArrayList<Player>();
board = new Board();
server = new Server() {
protected Connection newConnection() {
return new CharacterConnection();
}
};
Network.register(server);
server.addListener(new Listener() {
public void received(Connection c, Object object) {
CharacterConnection connection = (CharacterConnection) c;
if (object instanceof Login) {
String name = ((Login) object).name;
int playerId = ((Login) object).playerId;
Message message = new Message();
message.message = "Welcome " + name + " id: " + playerId;
connection.sendTCP(message);
LoginAnswer answer = new LoginAnswer();
answer.playerId = playerId;
connection.sendTCP(answer);
Position randomPosition = board.getRandomPosition();
playerList.add(new Player(name, randomPosition.getPositionX(), randomPosition.getPositionY(), playerId));
connection.playerId = playerId;
connection.name = name;
}
if (object instanceof RequestMove) {
for (int i = 0; i < playerList.size(); i++) {
Player currentPlayer = playerList.get(i);
if (currentPlayer.getId() == connection.playerId) {
int positionX = ((RequestMove) object).positionX;
int positionY = ((RequestMove) object).positionY;
Position position = new Position(positionX, positionY);
currentPlayer.setPosition(board.convertCoord(position).getPositionX(), board.convertCoord(position).getPositionY());
}
}
}
if (object instanceof ChatMessage) {
String message = ((ChatMessage) object).message;
int playerId = connection.playerId;
for (int i = 0; i < playerList.size(); i++) {
Player currentPlayer = playerList.get(i);
if (currentPlayer.getId() == connection.playerId) {
BroadMessage broadMessage = new BroadMessage();
broadMessage.message = message;
broadMessage.playerId = playerId;
server.sendToAllTCP(broadMessage);
}
}
}
}
public void disconnected(Connection c) {
CharacterConnection connection = (CharacterConnection) c;
if (connection.name != null) {
for (int i = 0; i < playerList.size(); i++) {
Player currentPlayer = playerList.get(i);
if (currentPlayer.getId() == connection.playerId) {
playerList.remove(i);
}
}
}
}
});
server.bind(Network.port);
server.start();
JFrame frame = new JFrame("NFTServer");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent evt) {
server.stop();
}
});
frame.getContentPane().add(new JLabel(" Servervindue"));
frame.setSize(320, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
while (true) {
if (timeNow + 100 < System.currentTimeMillis()) {
PlayerList toClient = new PlayerList();
toClient.persons = new ArrayList<Map<String, String>>();
for (int i = 0; i < playerList.size(); i++) {
Player currentPlayer = playerList.get(i);
Map<String, String> person = new HashMap<String, String>();
person.put("name", currentPlayer.getName());
person.put("playerId", "" + currentPlayer.getId());
person.put("posX", "" + currentPlayer.getX());
person.put("posY", "" + currentPlayer.getY());
toClient.persons.add(person);
}
server.sendToAllTCP(toClient);
timeNow = System.currentTimeMillis();
}
}
}
static class CharacterConnection extends Connection {
public String name;
public int playerId;
}
public static void main(String[] args) throws IOException {
Log.set(Log.LEVEL_DEBUG);
new NFTServer();
}
}