Login and Disconnect
This commit is contained in:
@@ -11,10 +11,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import mc.core.network.CSPacket;
|
||||
import mc.core.network.SCPacket;
|
||||
import mc.core.network.proto_1_12_2.packets.HandshakePacket;
|
||||
import mc.core.network.proto_1_12_2.packets.PingPacket;
|
||||
import mc.core.network.proto_1_12_2.packets.StatusRequestPacket;
|
||||
import mc.core.network.proto_1_12_2.packets.StatusResponsePacket;
|
||||
import mc.core.network.proto_1_12_2.packets.*;
|
||||
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@@ -35,11 +32,20 @@ public enum State {
|
||||
.put(StatusResponsePacket.class, 0)
|
||||
.put(PingPacket.class, 1)
|
||||
.build()
|
||||
),
|
||||
LOGIN(2,
|
||||
ImmutableBiMap.<Integer, Class<? extends CSPacket>>builder()
|
||||
.put(0, LoginStartPacket.class)
|
||||
.build(),
|
||||
ImmutableBiMap.<Class<? extends SCPacket>, Integer>builder()
|
||||
.put(DisconnectPacket.class, 0)
|
||||
.build()
|
||||
);
|
||||
|
||||
public static State valueOf(int id) {
|
||||
if (id == 0) return HANDSHAKE;
|
||||
else if (id == 1) return STATUS;
|
||||
else if (id == 2) return LOGIN;
|
||||
else {
|
||||
log.warn("Unknown state: {}", id);
|
||||
return UNKNOWN;
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* DmitriyMX <dimon550@gmail.com>
|
||||
* 2018-06-11
|
||||
*/
|
||||
package mc.core.network.proto_1_12_2;
|
||||
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
import mc.core.text.Text;
|
||||
|
||||
public class TextSerializer {
|
||||
public static JsonObject serialize(Text text) {
|
||||
JsonObject jsonObject = new JsonObject();
|
||||
jsonObject.addProperty("text", text.getString());
|
||||
|
||||
if (text.getColor() != null) {
|
||||
jsonObject.addProperty("color", text.getColor().getName());
|
||||
}
|
||||
|
||||
if (text.getStyle() != null) {
|
||||
if (text.getStyle().getBold().isPresent()) {
|
||||
jsonObject.addProperty("bold", text.getStyle().getBold().get());
|
||||
}
|
||||
if (text.getStyle().getItalic().isPresent()) {
|
||||
jsonObject.addProperty("italic", text.getStyle().getItalic().get());
|
||||
}
|
||||
if (text.getStyle().getObfuscated().isPresent()) {
|
||||
jsonObject.addProperty("obfuscated", text.getStyle().getObfuscated().get());
|
||||
}
|
||||
if (text.getStyle().getStrikethrough().isPresent()) {
|
||||
jsonObject.addProperty("strikethrough", text.getStyle().getStrikethrough().get());
|
||||
}
|
||||
if (text.getStyle().getUnderline().isPresent()) {
|
||||
jsonObject.addProperty("underlined", text.getStyle().getUnderline().get());
|
||||
}
|
||||
}
|
||||
|
||||
if (text.getChilds() != null) {
|
||||
JsonArray extra = new JsonArray();
|
||||
text.getChilds().forEach(child -> extra.add(serialize(child)));
|
||||
jsonObject.add("extra", extra);
|
||||
}
|
||||
|
||||
return jsonObject;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* DmitriyMX <dimon550@gmail.com>
|
||||
* 2018-06-10
|
||||
*/
|
||||
package mc.core.network.proto_1_12_2.packets;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import mc.core.network.SCPacket;
|
||||
import mc.core.network.proto_1_12_2.ByteArrayOutputNetStream;
|
||||
import mc.core.network.proto_1_12_2.TextSerializer;
|
||||
import mc.core.text.Text;
|
||||
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Setter
|
||||
public class DisconnectPacket implements SCPacket {
|
||||
private Text reason;
|
||||
|
||||
@Override
|
||||
public byte[] toByteArray() {
|
||||
ByteArrayOutputNetStream netStream = new ByteArrayOutputNetStream();
|
||||
netStream.writeString(TextSerializer.serialize(reason).toString());
|
||||
return netStream.toByteArray();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* DmitriyMX <dimon550@gmail.com>
|
||||
* 2018-06-10
|
||||
*/
|
||||
package mc.core.network.proto_1_12_2.packets;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
import mc.core.network.CSPacket;
|
||||
import mc.core.network.NetStream;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
public class LoginStartPacket implements CSPacket {
|
||||
private String playerName;
|
||||
|
||||
@Override
|
||||
public void readSelf(NetStream netStream) {
|
||||
this.playerName = netStream.readString();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user