time update, keep alive packet

This commit is contained in:
bixilon 2020-06-03 14:41:43 +02:00
parent 3d5a1249da
commit 38843dedde
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
5 changed files with 119 additions and 0 deletions

View File

@ -0,0 +1,36 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InPacketBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.protocol.protocol.ProtocolVersion;
public class PacketKeepAlive implements ClientboundPacket {
int id;
@Override
public void read(InPacketBuffer buffer, ProtocolVersion v) {
switch (v) {
case VERSION_1_7_10:
id = buffer.readInteger();
break;
}
log();
}
@Override
public void log() {
Log.protocol(String.format("Keep alive packet received (%s)", id));
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
public int getId() {
return id;
}
}

View File

@ -0,0 +1,35 @@
package de.bixilon.minosoft.protocol.packets.clientbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ClientboundPacket;
import de.bixilon.minosoft.protocol.protocol.InPacketBuffer;
import de.bixilon.minosoft.protocol.protocol.PacketHandler;
import de.bixilon.minosoft.protocol.protocol.ProtocolVersion;
public class PacketTimeUpdate implements ClientboundPacket {
long worldAge;
long timeOfDay;
@Override
public void read(InPacketBuffer buffer, ProtocolVersion v) {
switch (v) {
case VERSION_1_7_10:
worldAge = buffer.readLong();
timeOfDay = buffer.readLong();
break;
}
log();
}
@Override
public void log() {
Log.protocol(String.format("Time Update packet received. Time is now %st (total %st)", timeOfDay, worldAge));
}
@Override
public void handle(PacketHandler h) {
h.handle(this);
}
}

View File

@ -0,0 +1,34 @@
package de.bixilon.minosoft.protocol.packets.serverbound.play;
import de.bixilon.minosoft.logging.Log;
import de.bixilon.minosoft.protocol.packets.ServerboundPacket;
import de.bixilon.minosoft.protocol.protocol.OutPacketBuffer;
import de.bixilon.minosoft.protocol.protocol.Packets;
import de.bixilon.minosoft.protocol.protocol.ProtocolVersion;
public class PacketKeepAliveResponse implements ServerboundPacket {
private final int id;
public PacketKeepAliveResponse(int id) {
this.id = id;
}
@Override
public OutPacketBuffer write(ProtocolVersion v) {
log();
OutPacketBuffer buffer = new OutPacketBuffer(v.getPacketCommand(Packets.Serverbound.LOGIN_LOGIN_START));
switch (v) {
case VERSION_1_7_10:
buffer.writeInteger(id);
break;
}
return buffer;
}
@Override
public void log() {
Log.protocol(String.format("Sending keep alive back (%s)", id));
}
}

View File

@ -6,10 +6,13 @@ import de.bixilon.minosoft.protocol.packets.clientbound.login.PacketEncryptionKe
import de.bixilon.minosoft.protocol.packets.clientbound.login.PacketLoginDisconnect;
import de.bixilon.minosoft.protocol.packets.clientbound.login.PacketLoginSuccess;
import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketJoinGame;
import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketKeepAlive;
import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketPlayerInfo;
import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketTimeUpdate;
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 javax.crypto.SecretKey;
import java.math.BigInteger;
@ -58,4 +61,11 @@ public class PacketHandler {
public void handle(PacketPlayerInfo pkg) {
}
public void handle(PacketTimeUpdate pkg) {
}
public void handle(PacketKeepAlive pkg) {
connection.sendPacket(new PacketKeepAliveResponse(pkg.getId()));
}
}

View File

@ -5,7 +5,9 @@ import de.bixilon.minosoft.protocol.packets.clientbound.login.PacketEncryptionKe
import de.bixilon.minosoft.protocol.packets.clientbound.login.PacketLoginDisconnect;
import de.bixilon.minosoft.protocol.packets.clientbound.login.PacketLoginSuccess;
import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketJoinGame;
import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketKeepAlive;
import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketPlayerInfo;
import de.bixilon.minosoft.protocol.packets.clientbound.play.PacketTimeUpdate;
import de.bixilon.minosoft.protocol.packets.clientbound.status.PacketStatusPong;
import de.bixilon.minosoft.protocol.packets.clientbound.status.PacketStatusResponse;
@ -37,5 +39,7 @@ public interface Protocol {
packetClassMapping.put(Packets.Clientbound.PLAY_JOIN_GAME, PacketJoinGame.class);
packetClassMapping.put(Packets.Clientbound.PLAY_PLAYER_INFO, PacketPlayerInfo.class);
packetClassMapping.put(Packets.Clientbound.PLAY_TIME_UPDATE, PacketTimeUpdate.class);
packetClassMapping.put(Packets.Clientbound.PLAY_KEEP_ALIVE, PacketKeepAlive.class);
}
}