From f47b88d31962f1355de999e12efb79e45bf59c24 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Sat, 4 Jul 2020 17:43:07 +0200 Subject: [PATCH] send hello from minosoft chat message, refactor protocol (release name, etc) --- .../minosoft/protocol/network/Connection.java | 4 ++-- .../clientbound/play/PacketBlockAction.java | 2 +- .../clientbound/play/PacketMapData.java | 2 +- .../clientbound/play/PacketSpawnObject.java | 2 +- .../handshaking/PacketHandshake.java | 2 +- .../protocol/protocol/InByteBuffer.java | 2 +- .../protocol/protocol/OutByteBuffer.java | 2 +- .../protocol/protocol/PacketHandler.java | 3 ++- .../minosoft/protocol/protocol/Protocol.java | 2 +- .../protocol/protocol/ProtocolInterface.java | 6 ++++-- .../protocol/protocol/ProtocolVersion.java | 18 ++++++++++-------- .../protocol/protocol/Protocol_1_10.java | 8 ++++++-- .../protocol/protocol/Protocol_1_11_2.java | 8 ++++++-- .../protocol/protocol/Protocol_1_12_2.java | 9 +++++++-- .../protocol/protocol/Protocol_1_13_2.java | 8 ++++++-- .../protocol/protocol/Protocol_1_14_4.java | 8 ++++++-- .../protocol/protocol/Protocol_1_15_2.java | 8 ++++++-- .../protocol/protocol/Protocol_1_7_10.java | 10 ++++++++-- .../protocol/protocol/Protocol_1_8.java | 8 ++++++-- .../protocol/protocol/Protocol_1_9_4.java | 8 ++++++-- 20 files changed, 82 insertions(+), 38 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/Connection.java b/src/main/java/de/bixilon/minosoft/protocol/network/Connection.java index f88e7988e..38ccab3eb 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/Connection.java +++ b/src/main/java/de/bixilon/minosoft/protocol/network/Connection.java @@ -98,7 +98,7 @@ public class Connection { network.startPacketThread(); startHandlingThread(); ConnectionState next = ((reason == ConnectionReason.CONNECT) ? ConnectionState.LOGIN : ConnectionState.STATUS); - network.sendPacket(new PacketHandshake(getHost(), getPort(), next, (next == ConnectionState.STATUS) ? -1 : getVersion().getVersion())); + network.sendPacket(new PacketHandshake(getHost(), getPort(), next, (next == ConnectionState.STATUS) ? -1 : getVersion().getVersionNumber())); // after sending it, switch to next state setConnectionState(next); break; @@ -209,7 +209,7 @@ public class Connection { serverVersion = buffer.readString(); toSend.writeString(clientVersion); } - Log.info(String.format("Server is running \"%s\", connected with %s", serverVersion, getVersion().getName())); + Log.info(String.format("Server is running \"%s\", connected with %s", serverVersion, getVersion().getVersionString())); getPluginChannelHandler().sendRawData(DefaultPluginChannels.MC_BRAND.getIdentifier().get(version), toSend); }); diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketBlockAction.java b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketBlockAction.java index 8c0f6387a..9ab73a764 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketBlockAction.java +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketBlockAction.java @@ -36,7 +36,7 @@ public class PacketBlockAction implements ClientboundPacket { case VERSION_1_9_4: case VERSION_1_10: // that's the only difference here - if (buffer.getVersion().getVersion() >= ProtocolVersion.VERSION_1_8.getVersion()) { + if (buffer.getVersion().getVersionNumber() >= ProtocolVersion.VERSION_1_8.getVersionNumber()) { position = buffer.readPosition(); } else { position = buffer.readBlockPositionShort(); diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketMapData.java b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketMapData.java index 70cc068a8..672e3efc6 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketMapData.java +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketMapData.java @@ -77,7 +77,7 @@ public class PacketMapData implements ClientboundPacket { case VERSION_1_10: { mapId = buffer.readVarInt(); scale = buffer.readByte(); - if (buffer.getVersion().getVersion() >= ProtocolVersion.VERSION_1_9_4.getVersion()) { + if (buffer.getVersion().getVersionNumber() >= ProtocolVersion.VERSION_1_9_4.getVersionNumber()) { boolean trackPosition = buffer.readBoolean(); } int pinCount = buffer.readVarInt(); diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketSpawnObject.java b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketSpawnObject.java index ef7366122..dfcc8d422 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketSpawnObject.java +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketSpawnObject.java @@ -67,7 +67,7 @@ public class PacketSpawnObject implements ClientboundPacket { int data = buffer.readInt(); try { - if (buffer.getVersion().getVersion() >= ProtocolVersion.VERSION_1_8.getVersion()) { + if (buffer.getVersion().getVersionNumber() >= ProtocolVersion.VERSION_1_8.getVersionNumber()) { // velocity present AND metadata Velocity velocity = null; diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/serverbound/handshaking/PacketHandshake.java b/src/main/java/de/bixilon/minosoft/protocol/packets/serverbound/handshaking/PacketHandshake.java index 41dad15c9..549761bc1 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/serverbound/handshaking/PacketHandshake.java +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/serverbound/handshaking/PacketHandshake.java @@ -44,7 +44,7 @@ public class PacketHandshake implements ServerboundPacket { public OutPacketBuffer write(ProtocolVersion version) { // no version checking, is the same in all versions (1.7.x - 1.15.2) OutPacketBuffer buffer = new OutPacketBuffer(version, version.getPacketCommand(Packets.Serverbound.HANDSHAKING_HANDSHAKE)); - buffer.writeVarInt((nextState == ConnectionState.STATUS ? -1 : version.getVersion())); // get best protocol version + buffer.writeVarInt((nextState == ConnectionState.STATUS ? -1 : version.getVersionNumber())); // get best protocol version buffer.writeString(address); buffer.writeShort((short) port); buffer.writeVarInt(nextState.getId()); diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.java index ef8702ee7..3b37c0bbf 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.java @@ -175,7 +175,7 @@ public class InByteBuffer { } public BlockPosition readPosition() { - if (version.getVersion() >= ProtocolVersion.VERSION_1_14_4.getVersion()) { + if (version.getVersionNumber() >= ProtocolVersion.VERSION_1_14_4.getVersionNumber()) { // changed in 1.14, thanks for the explanation @Sainan Long raw = readLong(); int x = (int) (raw >> 38); diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/OutByteBuffer.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/OutByteBuffer.java index d4d186b13..0d768ebf8 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/OutByteBuffer.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/OutByteBuffer.java @@ -153,7 +153,7 @@ public class OutByteBuffer { } public void writePosition(BlockPosition location) { - if (version.getVersion() >= ProtocolVersion.VERSION_1_14_4.getVersion()) { + if (version.getVersionNumber() >= ProtocolVersion.VERSION_1_14_4.getVersionNumber()) { writeLong((((long) (location.getX() & 0x3FFFFFF) << 38) | ((long) (location.getZ() & 0x3FFFFFF) << 12) | (long) (location.getY() & 0xFFF))); } else { writeLong((((long) location.getX() & 0x3FFFFFF) << 38) | (((long) location.getZ() & 0x3FFFFFF)) | ((long) location.getY() & 0xFFF) << 26); 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 0329d72e6..e95b03bac 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java @@ -67,7 +67,7 @@ public class PacketHandler { case GET_VERSION: // reconnect... connection.disconnect(); - Log.info(String.format("Server is running on version %s, reconnecting...", connection.getVersion().getName())); + Log.info(String.format("Server is running on version %s, reconnecting...", connection.getVersion().getVersionString())); break; case CONNECT: // do nothing @@ -95,6 +95,7 @@ public class PacketHandler { connection.getPlayer().setPlayer(new OtherPlayer(pkg.getEntityId(), connection.getPlayer().getPlayerName(), connection.getPlayer().getPlayerUUID(), null, null, null, (short) 0, (short) 0, (short) 0, null)); connection.getPlayer().getWorld().setHardcore(pkg.isHardcore()); connection.getPlayer().getWorld().setDimension(pkg.getDimension()); + connection.getSender().sendChatMessage("I am alive! ~ Minosoft"); } public void handle(PacketLoginDisconnect 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 7bddb867c..5418bc534 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol.java @@ -164,6 +164,6 @@ public abstract class Protocol implements ProtocolInterface { @Override public int hashCode() { - return getProtocolVersion(); + return getProtocolVersionNumber(); } } \ No newline at end of file diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolInterface.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolInterface.java index 28406bd5d..14fb84f7c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolInterface.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolInterface.java @@ -14,7 +14,9 @@ package de.bixilon.minosoft.protocol.protocol; public interface ProtocolInterface { - String getName(); + String getVersionString(); - int getProtocolVersion(); + int getProtocolVersionNumber(); + + String getReleaseName(); // Minecraft + getReleaseName() + Update } 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 f2df37237..4960bbdc1 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolVersion.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolVersion.java @@ -32,7 +32,7 @@ public enum ProtocolVersion { static { for (ProtocolVersion v : values()) { - versionMapping.put(v.getVersion(), v); + versionMapping.put(v.getVersionNumber(), v); } versionMappingArray = new ProtocolVersion[values().length]; int counter = 0; @@ -43,25 +43,23 @@ public enum ProtocolVersion { } - final int version; final Protocol protocol; ProtocolVersion(Protocol protocol) { this.protocol = protocol; - this.version = protocol.getProtocolVersion(); } public static ProtocolVersion byId(int protocolNumber) { for (ProtocolVersion v : values()) { - if (v.getVersion() == protocolNumber) { + if (v.getVersionNumber() == protocolNumber) { return v; } } return null; } - public int getVersion() { - return version; + public int getVersionNumber() { + return protocol.getProtocolVersionNumber(); } public Protocol getProtocol() { @@ -72,8 +70,12 @@ public enum ProtocolVersion { return protocol.getPacketCommand(p); } - public String getName() { - return protocol.getName(); + public String getVersionString() { + return protocol.getVersionString(); + } + + public String getReleaseName() { + return protocol.getReleaseName(); } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_10.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_10.java index 56bec41a4..ad38273ff 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_10.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_10.java @@ -130,13 +130,17 @@ public class Protocol_1_10 extends Protocol { serverboundPacketMapping.put(Packets.Serverbound.PLAY_USE_ITEM, 0x1D); } - public int getProtocolVersion() { + public int getProtocolVersionNumber() { return 210; } @Override - public String getName() { + public String getVersionString() { return "1.10.x"; } + @Override + public String getReleaseName() { + return "Frostburn"; + } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_11_2.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_11_2.java index 6aa24577e..0e8c625a7 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_11_2.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_11_2.java @@ -21,13 +21,17 @@ public class Protocol_1_11_2 extends Protocol { //ToDo } - public int getProtocolVersion() { + public int getProtocolVersionNumber() { return 316; } @Override - public String getName() { + public String getVersionString() { return "1.11.2"; } + @Override + public String getReleaseName() { + return "Exploration"; + } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_12_2.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_12_2.java index 726fde41e..381aaa37e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_12_2.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_12_2.java @@ -21,13 +21,18 @@ public class Protocol_1_12_2 extends Protocol { //ToDo } - public int getProtocolVersion() { + public int getProtocolVersionNumber() { return 340; } @Override - public String getName() { + public String getVersionString() { return "1.12.2"; } + @Override + public String getReleaseName() { + return "World of Color"; + } + } diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_13_2.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_13_2.java index e7fa1c958..5106e25d7 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_13_2.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_13_2.java @@ -21,13 +21,17 @@ public class Protocol_1_13_2 extends Protocol { //ToDo } - public int getProtocolVersion() { + public int getProtocolVersionNumber() { return 404; } @Override - public String getName() { + public String getVersionString() { return "1.13.2"; } + @Override + public String getReleaseName() { + return "Aquatic"; + } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_14_4.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_14_4.java index dcc8a67df..e3cb4160d 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_14_4.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_14_4.java @@ -21,13 +21,17 @@ public class Protocol_1_14_4 extends Protocol { //ToDo } - public int getProtocolVersion() { + public int getProtocolVersionNumber() { return 498; } @Override - public String getName() { + public String getVersionString() { return "1.14.4"; } + @Override + public String getReleaseName() { + return "Village and Pillage"; + } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_15_2.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_15_2.java index 517f87f5c..3bd7ce4d4 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_15_2.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_15_2.java @@ -21,13 +21,17 @@ public class Protocol_1_15_2 extends Protocol { //ToDo } - public int getProtocolVersion() { + public int getProtocolVersionNumber() { return 578; } @Override - public String getName() { + public String getVersionString() { return "1.15.2"; } + @Override + public String getReleaseName() { + return "Buzzy Bees"; + } } 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 2363e7455..51ba10d1b 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 @@ -113,12 +113,18 @@ public class Protocol_1_7_10 extends Protocol { } - public int getProtocolVersion() { + public int getProtocolVersionNumber() { return 5; } + @Override - public String getName() { + public String getVersionString() { return "1.7.10"; } + + @Override + public String getReleaseName() { + return "Realms"; + } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_8.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_8.java index 067fb525e..3071c50f6 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_8.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_8.java @@ -125,13 +125,17 @@ public class Protocol_1_8 extends Protocol { clientboundPacketMapping.put(Packets.Clientbound.PLAY_NBT_QUERY_RESPONSE, 0x49); } - public int getProtocolVersion() { + public int getProtocolVersionNumber() { return 47; } @Override - public String getName() { + public String getVersionString() { return "1.8.x"; } + @Override + public String getReleaseName() { + return "Bountiful"; + } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_9_4.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_9_4.java index 1adfa8b7d..ab462fa52 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_9_4.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/Protocol_1_9_4.java @@ -136,13 +136,17 @@ public class Protocol_1_9_4 extends Protocol { } - public int getProtocolVersion() { + public int getProtocolVersionNumber() { return 110; } @Override - public String getName() { + public String getVersionString() { return "1.9.4"; } + @Override + public String getReleaseName() { + return "Combat"; + } }