diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketPluginMessageReceived.java b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketPluginMessageReceived.java index be384fe72..89a13e8d0 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketPluginMessageReceived.java +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketPluginMessageReceived.java @@ -31,4 +31,12 @@ public class PacketPluginMessageReceived implements ClientboundPacket { public void handle(PacketHandler h) { h.handle(this); } + + public String getChannel() { + return channel; + } + + public byte[] getData() { + return data; + } } 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 e5785c138..896d7ee0b 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java @@ -10,6 +10,7 @@ import de.bixilon.minosoft.protocol.packets.clientbound.status.PacketStatusPong; import de.bixilon.minosoft.protocol.packets.clientbound.status.PacketStatusResponse; import de.bixilon.minosoft.protocol.packets.serverbound.login.PacketEncryptionResponse; import de.bixilon.minosoft.protocol.packets.serverbound.play.PacketKeepAliveResponse; +import de.bixilon.minosoft.protocol.packets.serverbound.play.PacketPluginMessageSended; import javax.crypto.SecretKey; import java.math.BigInteger; @@ -78,6 +79,14 @@ public class PacketHandler { } public void handle(PacketPluginMessageReceived pkg) { + if (pkg.getChannel().equals("MC|Brand")) { + // server brand received + Log.info(String.format("Server is running %s on version %s", new String(pkg.getData()), connection.getVersion().getName())); + + // send back own brand + // ToDo option to toggle for minosoft or original minecraft + connection.sendPacket(new PacketPluginMessageSended("MC|Brand", "Minosoft".getBytes())); + } } public void handle(PacketSpawnLocation pkg) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol.java index eabe9fc07..c3ec8b98f 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol.java @@ -17,6 +17,8 @@ public interface Protocol { int getPacketCommand(Packets.Serverbound p); + String getName(); + Packets.Clientbound getPacketByCommand(ConnectionState s, int command); static Class getPacketByPacket(Packets.Clientbound p) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolVersion.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolVersion.java index de072d887..2ac2b30eb 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolVersion.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolVersion.java @@ -3,8 +3,8 @@ package de.bixilon.minosoft.protocol.protocol; public enum ProtocolVersion { VERSION_1_7_10(new Protocol_1_7_10()); - private int version; - private Protocol protocol; + private final int version; + private final Protocol protocol; ProtocolVersion(Protocol protocol) { this.protocol = protocol; @@ -23,4 +23,8 @@ public enum ProtocolVersion { return protocol.getPacketCommand(p); } + public String getName() { + return protocol.getName(); + } + } diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_7_10.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_7_10.java index 7224eea5f..ecf7a2699 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_7_10.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_7_10.java @@ -128,6 +128,11 @@ public class Protocol_1_7_10 implements Protocol { return serverboundPacketMapping.get(p); } + @Override + public String getName() { + return "1.7.10"; + } + public Packets.Clientbound getPacketByCommand(ConnectionState s, int command) { for (Map.Entry set : clientboundPacketMapping.entrySet()) { if (set.getValue() == command && set.getKey().name().startsWith(s.name())) {