diff --git a/src/main/java/de/bixilon/minosoft/data/text/TextComponent.java b/src/main/java/de/bixilon/minosoft/data/text/TextComponent.java index b56235c73..a9a607247 100644 --- a/src/main/java/de/bixilon/minosoft/data/text/TextComponent.java +++ b/src/main/java/de/bixilon/minosoft/data/text/TextComponent.java @@ -157,7 +157,9 @@ public class TextComponent extends ChatComponent { @Override public ObservableList getJavaFXText(ObservableList nodes) { Text text = new Text(this.text); - if (color != null) { + if (color == null) { + text.setFill(Color.WHITE); + } else { text.setFill(Color.web(color.toString())); } formatting.forEach((chatFormattingCode -> { diff --git a/src/main/java/de/bixilon/minosoft/gui/main/MainWindow.java b/src/main/java/de/bixilon/minosoft/gui/main/MainWindow.java index a06e45ae4..48033e274 100644 --- a/src/main/java/de/bixilon/minosoft/gui/main/MainWindow.java +++ b/src/main/java/de/bixilon/minosoft/gui/main/MainWindow.java @@ -207,7 +207,12 @@ public class MainWindow implements Initializable { ServerListCell.listView.getItems().add(server1); } else { server1.setName(serverName); + server1.setAddress(serverAddress); server1.setDesiredVersionId(desiredVersionId); + if (server1.getCell() != null) { + server1.getCell().setName(server1.getName()); + //ToDo: version + } } server1.saveToConfig(); Log.info(String.format("%s and saved server (serverName=%s, serverAddress=%s, version=%d)", ((server == null) ? "Added" : "Edited"), serverName.getLegacyText(), serverAddress, desiredVersionId)); diff --git a/src/main/java/de/bixilon/minosoft/gui/main/Server.java b/src/main/java/de/bixilon/minosoft/gui/main/Server.java index af973bfa1..78c00a0e6 100644 --- a/src/main/java/de/bixilon/minosoft/gui/main/Server.java +++ b/src/main/java/de/bixilon/minosoft/gui/main/Server.java @@ -36,6 +36,7 @@ public class Server { private byte[] favicon; private Connection lastPing; private boolean readOnly = false; + private ServerListCell cell; public Server(int id, BaseComponent name, String address, int desiredVersion, byte[] favicon) { this(id, name, address, desiredVersion); @@ -192,4 +193,12 @@ public class Server { public boolean isReadOnly() { return readOnly; } + + public ServerListCell getCell() { + return cell; + } + + public void setCell(ServerListCell cell) { + this.cell = cell; + } } diff --git a/src/main/java/de/bixilon/minosoft/gui/main/ServerListCell.java b/src/main/java/de/bixilon/minosoft/gui/main/ServerListCell.java index 3a06cc27b..f82a8dc64 100644 --- a/src/main/java/de/bixilon/minosoft/gui/main/ServerListCell.java +++ b/src/main/java/de/bixilon/minosoft/gui/main/ServerListCell.java @@ -22,6 +22,7 @@ import de.bixilon.minosoft.data.locale.LocaleManager; import de.bixilon.minosoft.data.locale.Strings; import de.bixilon.minosoft.data.mappings.versions.Version; import de.bixilon.minosoft.data.mappings.versions.Versions; +import de.bixilon.minosoft.data.text.BaseComponent; import de.bixilon.minosoft.logging.Log; import de.bixilon.minosoft.modding.event.EventInvokerCallback; import de.bixilon.minosoft.modding.event.events.ConnectionStateChangeEvent; @@ -32,6 +33,7 @@ import de.bixilon.minosoft.protocol.ping.ServerListPing; import javafx.application.Platform; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; +import javafx.scene.Node; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.*; @@ -113,10 +115,11 @@ public class ServerListCell extends ListCell implements Initializable { if (server.equals(this.server)) { return; } + server.setCell(this); resetCell(); this.server = server; - nameField.getChildren().setAll(server.getName().getJavaFXText()); + setName(server.getName()); Image favicon = GUITools.getImage(server.getFavicon()); if (favicon == null) { @@ -195,6 +198,13 @@ public class ServerListCell extends ListCell implements Initializable { }))); } + public void setName(BaseComponent name) { + nameField.getChildren().setAll(name.getJavaFXText()); + for (Node node : nameField.getChildren()) { + node.setStyle("-fx-font-size: 15pt ;"); + } + } + private void resetCell() { // clear all cells setStyle(null); diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java index 69504defa..0449f3da0 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java @@ -333,13 +333,8 @@ public class PacketHandler { } public void handle(PacketEntityVelocity pkg) { - Entity entity; - if (pkg.getEntityId() == connection.getPlayer().getEntity().getEntityId()) { - // that's us! - entity = connection.getPlayer().getEntity(); - } else { - entity = connection.getPlayer().getWorld().getEntity(pkg.getEntityId()); - } + Entity entity = connection.getPlayer().getWorld().getEntity(pkg.getEntityId()); + if (entity == null) { // thanks mojang return; @@ -490,6 +485,7 @@ public class PacketHandler { for (int i = 0; i < 4; i++) { nbt.writeTag(String.format("Text%d", (i + 1)), new StringTag(pkg.getLines()[i].getLegacyText())); } + // ToDo: handle sign updates } public void handle(PacketEntityAnimation pkg) { @@ -585,7 +581,7 @@ public class PacketHandler { connection.fireEvent(new SingleSlotChangeEvent(connection, pkg)); if (pkg.getWindowId() == -1) { - // invalid window Id + // thanks mojang // ToDo: what is windowId -1 return; } @@ -639,9 +635,8 @@ public class PacketHandler { case CREATE_UPDATE -> connection.getPlayer().getScoreboardManager().getObjective(pkg.getScoreName()).addScore(new ScoreboardScore(pkg.getItemName(), pkg.getScoreName(), pkg.getScoreValue())); case REMOVE -> { ScoreboardObjective objective = connection.getPlayer().getScoreboardManager().getObjective(pkg.getScoreName()); - if (objective == null) { - Log.warn(String.format("Server tried to remove score witch was not created before (itemName=\"%s\", scoreName=\"%s\")!", pkg.getItemName(), pkg.getScoreName())); - } else { + if (objective != null) { + // thanks mojang objective.removeScore(pkg.getItemName()); } } diff --git a/src/main/resources/layout/cells/server.fxml b/src/main/resources/layout/cells/server.fxml index f6ab48055..5ff7db58c 100644 --- a/src/main/resources/layout/cells/server.fxml +++ b/src/main/resources/layout/cells/server.fxml @@ -1,4 +1,16 @@ +