mirror of https://github.com/Minestom/Minestom.git
Update
This commit is contained in:
parent
31bf307ae3
commit
81a880d3cd
|
@ -1,13 +1,17 @@
|
||||||
package fr.themode.minestom.net.packet.client.handler;
|
package fr.themode.minestom.net.packet.client.handler;
|
||||||
|
|
||||||
|
import fr.themode.minestom.net.packet.client.play.ClientPlayerPositionAndLookPacket;
|
||||||
import fr.themode.minestom.net.packet.client.play.ClientPluginMessagePacket;
|
import fr.themode.minestom.net.packet.client.play.ClientPluginMessagePacket;
|
||||||
import fr.themode.minestom.net.packet.client.play.ClientSettingsPacket;
|
import fr.themode.minestom.net.packet.client.play.ClientSettingsPacket;
|
||||||
|
import fr.themode.minestom.net.packet.client.play.ClientTeleportConfirmPacket;
|
||||||
|
|
||||||
public class ClientPlayPacketsHandler extends ClientPacketsHandler {
|
public class ClientPlayPacketsHandler extends ClientPacketsHandler {
|
||||||
|
|
||||||
public ClientPlayPacketsHandler() {
|
public ClientPlayPacketsHandler() {
|
||||||
register(0x05, ClientSettingsPacket.class);
|
register(0x05, ClientSettingsPacket.class);
|
||||||
register(0x0B, ClientPluginMessagePacket.class);
|
register(0x0B, ClientPluginMessagePacket.class);
|
||||||
|
register(0x12, ClientPlayerPositionAndLookPacket.class);
|
||||||
|
register(0x00, ClientTeleportConfirmPacket.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import fr.themode.minestom.net.packet.client.ClientPreplayPacket;
|
||||||
import fr.themode.minestom.net.packet.server.login.JoinGamePacket;
|
import fr.themode.minestom.net.packet.server.login.JoinGamePacket;
|
||||||
import fr.themode.minestom.net.packet.server.login.LoginSuccessPacket;
|
import fr.themode.minestom.net.packet.server.login.LoginSuccessPacket;
|
||||||
import fr.themode.minestom.net.packet.server.play.ChunkDataPacket;
|
import fr.themode.minestom.net.packet.server.play.ChunkDataPacket;
|
||||||
|
import fr.themode.minestom.net.packet.server.play.PlayerPositionAndLookPacket;
|
||||||
import fr.themode.minestom.net.packet.server.play.SpawnPositionPacket;
|
import fr.themode.minestom.net.packet.server.play.SpawnPositionPacket;
|
||||||
import fr.themode.minestom.net.player.PlayerConnection;
|
import fr.themode.minestom.net.player.PlayerConnection;
|
||||||
import fr.themode.minestom.utils.Utils;
|
import fr.themode.minestom.utils.Utils;
|
||||||
|
@ -47,7 +48,7 @@ public class LoginStartPacket implements ClientPreplayPacket {
|
||||||
for (int z = 0; z < 8; z++) {
|
for (int z = 0; z < 8; z++) {
|
||||||
ChunkDataPacket.ChunkSection chunkSection = new ChunkDataPacket.ChunkSection();
|
ChunkDataPacket.ChunkSection chunkSection = new ChunkDataPacket.ChunkSection();
|
||||||
chunkSection.bitsPerBlock = 13;
|
chunkSection.bitsPerBlock = 13;
|
||||||
chunkSection.data = new long[]{0x1001880C0060020L, 0x200D0068004C020L, 0L};
|
chunkSection.data = new long[]{0x1001880C0060020L, 0x200D0068004C020L, 1111L};
|
||||||
|
|
||||||
ChunkDataPacket chunkDataPacket = new ChunkDataPacket();
|
ChunkDataPacket chunkDataPacket = new ChunkDataPacket();
|
||||||
chunkDataPacket.columnX = x;
|
chunkDataPacket.columnX = x;
|
||||||
|
@ -66,11 +67,19 @@ public class LoginStartPacket implements ClientPreplayPacket {
|
||||||
|
|
||||||
SpawnPositionPacket spawnPositionPacket = new SpawnPositionPacket();
|
SpawnPositionPacket spawnPositionPacket = new SpawnPositionPacket();
|
||||||
spawnPositionPacket.x = 50;
|
spawnPositionPacket.x = 50;
|
||||||
spawnPositionPacket.y = 50;
|
spawnPositionPacket.y = 5;
|
||||||
spawnPositionPacket.z = 50;
|
spawnPositionPacket.z = 50;
|
||||||
|
connection.sendPacket(spawnPositionPacket);
|
||||||
|
|
||||||
// connection.sendPacket(spawnPositionPacket);
|
PlayerPositionAndLookPacket playerPositionAndLookPacket = new PlayerPositionAndLookPacket();
|
||||||
|
playerPositionAndLookPacket.x = 50;
|
||||||
|
playerPositionAndLookPacket.y = 5;
|
||||||
|
playerPositionAndLookPacket.z = 50;
|
||||||
|
playerPositionAndLookPacket.yaw = 0;
|
||||||
|
playerPositionAndLookPacket.pitch = 0;
|
||||||
|
playerPositionAndLookPacket.flags = 0;
|
||||||
|
playerPositionAndLookPacket.teleportId = 42;
|
||||||
|
connection.sendPacket(playerPositionAndLookPacket);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
package fr.themode.minestom.net.packet.client.play;
|
||||||
|
|
||||||
|
import fr.adamaq01.ozao.net.Buffer;
|
||||||
|
import fr.themode.minestom.entity.Player;
|
||||||
|
import fr.themode.minestom.net.packet.client.ClientPlayPacket;
|
||||||
|
|
||||||
|
public class ClientPlayerPositionAndLookPacket implements ClientPlayPacket {
|
||||||
|
|
||||||
|
public double x, y, z;
|
||||||
|
public float yaw, pitch;
|
||||||
|
public boolean onGround;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(Player player) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void read(Buffer buffer) {
|
||||||
|
this.x = buffer.getDouble();
|
||||||
|
this.y = buffer.getDouble();
|
||||||
|
this.z = buffer.getDouble();
|
||||||
|
this.yaw = buffer.getFloat();
|
||||||
|
this.pitch = buffer.getFloat();
|
||||||
|
this.onGround = buffer.getBoolean();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package fr.themode.minestom.net.packet.client.play;
|
||||||
|
|
||||||
|
import fr.adamaq01.ozao.net.Buffer;
|
||||||
|
import fr.themode.minestom.entity.Player;
|
||||||
|
import fr.themode.minestom.net.packet.client.ClientPlayPacket;
|
||||||
|
import fr.themode.minestom.utils.Utils;
|
||||||
|
|
||||||
|
public class ClientTeleportConfirmPacket implements ClientPlayPacket {
|
||||||
|
|
||||||
|
public int teleportId;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void process(Player player) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void read(Buffer buffer) {
|
||||||
|
this.teleportId = Utils.readVarInt(buffer);
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,6 +4,8 @@ import fr.adamaq01.ozao.net.Buffer;
|
||||||
import fr.themode.minestom.net.packet.server.ServerPacket;
|
import fr.themode.minestom.net.packet.server.ServerPacket;
|
||||||
import fr.themode.minestom.utils.Utils;
|
import fr.themode.minestom.utils.Utils;
|
||||||
|
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
|
||||||
public class ChunkDataPacket implements ServerPacket {
|
public class ChunkDataPacket implements ServerPacket {
|
||||||
|
|
||||||
public int columnX;
|
public int columnX;
|
||||||
|
@ -20,7 +22,28 @@ public class ChunkDataPacket implements ServerPacket {
|
||||||
buffer.putInt(columnZ);
|
buffer.putInt(columnZ);
|
||||||
buffer.putBoolean(fullChunk);
|
buffer.putBoolean(fullChunk);
|
||||||
Utils.writeVarInt(buffer, mask);
|
Utils.writeVarInt(buffer, mask);
|
||||||
System.out.println("test: " + getDataSize());
|
|
||||||
|
// Nbt
|
||||||
|
buffer.putByte((byte) 10);
|
||||||
|
buffer.putShort((short) "MOTION_BLOCKING".length());
|
||||||
|
try {
|
||||||
|
buffer.putBytes("MOTION_BLOCKING".getBytes("UTF-8"));
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
buffer.putByte((byte) 12);
|
||||||
|
buffer.putShort((short) "MOTION_BLOCKING".length());
|
||||||
|
try {
|
||||||
|
buffer.putBytes("MOTION_BLOCKING".getBytes("UTF-8"));
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
buffer.putInt(256);
|
||||||
|
for (int i = 0; i < 256; i++) {
|
||||||
|
buffer.putLong(Long.MAX_VALUE);
|
||||||
|
}
|
||||||
|
buffer.putByte((byte) 0); // End nbt
|
||||||
|
|
||||||
Utils.writeVarInt(buffer, getDataSize());
|
Utils.writeVarInt(buffer, getDataSize());
|
||||||
writeData(buffer);
|
writeData(buffer);
|
||||||
Utils.writeVarInt(buffer, tileEntitesSize);
|
Utils.writeVarInt(buffer, tileEntitesSize);
|
||||||
|
@ -56,10 +79,9 @@ public class ChunkDataPacket implements ServerPacket {
|
||||||
public int paletteLength; // Optional
|
public int paletteLength; // Optional
|
||||||
public int[] palette; // Optional
|
public int[] palette; // Optional
|
||||||
public long[] data;
|
public long[] data;
|
||||||
public byte[] blockLight;
|
|
||||||
public byte[] skyLight;
|
|
||||||
|
|
||||||
public void write(Buffer buffer) {
|
public void write(Buffer buffer) {
|
||||||
|
buffer.putShort((short) 3);
|
||||||
buffer.putByte(bitsPerBlock);
|
buffer.putByte(bitsPerBlock);
|
||||||
|
|
||||||
if (bitsPerBlock < 9) {
|
if (bitsPerBlock < 9) {
|
||||||
|
@ -73,12 +95,11 @@ public class ChunkDataPacket implements ServerPacket {
|
||||||
for (long d : data) {
|
for (long d : data) {
|
||||||
buffer.putLong(d);
|
buffer.putLong(d);
|
||||||
}
|
}
|
||||||
//buffer.putBytes(blockLight);
|
|
||||||
//buffer.putBytes(skyLight);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getSize() {
|
public int getSize() {
|
||||||
int size = 0;
|
int size = 0;
|
||||||
|
size += Short.BYTES;
|
||||||
size++; //bitsPerBlock
|
size++; //bitsPerBlock
|
||||||
if (bitsPerBlock < 9) {
|
if (bitsPerBlock < 9) {
|
||||||
size += Utils.lengthVarInt(paletteLength);
|
size += Utils.lengthVarInt(paletteLength);
|
||||||
|
@ -89,8 +110,6 @@ public class ChunkDataPacket implements ServerPacket {
|
||||||
|
|
||||||
size += Utils.lengthVarInt(data.length);
|
size += Utils.lengthVarInt(data.length);
|
||||||
size += Long.BYTES * data.length;
|
size += Long.BYTES * data.length;
|
||||||
//size += blockLight.length;
|
|
||||||
//size += skyLight.length;
|
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
package fr.themode.minestom.net.packet.server.play;
|
||||||
|
|
||||||
|
import fr.adamaq01.ozao.net.Buffer;
|
||||||
|
import fr.themode.minestom.net.packet.server.ServerPacket;
|
||||||
|
import fr.themode.minestom.utils.Utils;
|
||||||
|
|
||||||
|
public class PlayerPositionAndLookPacket implements ServerPacket {
|
||||||
|
|
||||||
|
public double x, y, z;
|
||||||
|
public float yaw, pitch;
|
||||||
|
public byte flags;
|
||||||
|
public int teleportId;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(Buffer buffer) {
|
||||||
|
buffer.putDouble(x);
|
||||||
|
buffer.putDouble(y);
|
||||||
|
buffer.putDouble(z);
|
||||||
|
buffer.putFloat(yaw);
|
||||||
|
buffer.putFloat(pitch);
|
||||||
|
buffer.putBytes(flags);
|
||||||
|
Utils.writeVarInt(buffer, teleportId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getId() {
|
||||||
|
return 0x35;
|
||||||
|
}
|
||||||
|
}
|
|
@ -15,6 +15,6 @@ public class SpawnPositionPacket implements ServerPacket {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getId() {
|
public int getId() {
|
||||||
return 0x49;
|
return 0x4D;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue