From d1770ebb02a36e6fe2d7a6d96f6321ecd49fbba5 Mon Sep 17 00:00:00 2001 From: ORelio Date: Tue, 6 Aug 2013 11:28:27 +0200 Subject: [PATCH] Added respawn ability in /reco - Added a notification message when you die stating you can respawn with /reco - Added a respawn packet sent before disconnecting when using /reco Note: Why a respawn in /reco and not a /respawn command? Once respawned using the console on 1.6.2 server, the player stays invisible for other players unless he (or the other player) disconnects & reconnect so it's necessary to reconnect after respawning. --- MinecraftClient/McTcpClient.cs | 1 + MinecraftClient/MinecraftCom.cs | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/MinecraftClient/McTcpClient.cs b/MinecraftClient/McTcpClient.cs index 76d20d08..b7676310 100644 --- a/MinecraftClient/McTcpClient.cs +++ b/MinecraftClient/McTcpClient.cs @@ -194,6 +194,7 @@ namespace MinecraftClient else if (text == "/reco" || text == "/reconnect") { ConsoleIO.WriteLine("You have left the server."); + handler.SendRespawnPacket(); Program.Restart(); } } diff --git a/MinecraftClient/MinecraftCom.cs b/MinecraftClient/MinecraftCom.cs index 8d355e33..fa368ec4 100644 --- a/MinecraftClient/MinecraftCom.cs +++ b/MinecraftClient/MinecraftCom.cs @@ -251,7 +251,10 @@ namespace MinecraftClient case 0x83: readData(4); nbr = readNextShort(); readData(nbr); break; case 0x84: readData(11); nbr = readNextShort(); if (nbr > 0) { readData(nbr); } break; case 0x85: if (protocolversion >= 74) { readData(13); } break; - case 0xC8: if (protocolversion >= 72) { readData(8); } else readData(5); break; + case 0xC8: + if (readNextInt() == 2022) { printstring("You are dead. Type /reco to respawn & reconnect.", false); } + if (protocolversion >= 72) { readData(4); } else readData(1); + break; case 0xC9: readNextString(); readData(3); break; case 0xCA: if (protocolversion >= 72) { readData(9); } else readData(3); break; case 0xCB: readNextString(); break; @@ -748,6 +751,15 @@ namespace MinecraftClient } catch (SocketException) { return false; } } + public bool SendRespawnPacket() + { + try + { + Send(new byte[] { 0xCD, 1 }); + return true; + } + catch (SocketException) { return false; } + } public void Disconnect(string message) { if (message == null)