mirror of
https://github.com/Minestom/Minestom.git
synced 2024-12-27 03:27:56 +01:00
Added ItemStack data type
This commit is contained in:
parent
0946c8ce11
commit
e43325edd8
@ -2,6 +2,7 @@ package net.minestom.server.data;
|
|||||||
|
|
||||||
import net.minestom.server.data.type.CharacterData;
|
import net.minestom.server.data.type.CharacterData;
|
||||||
import net.minestom.server.data.type.*;
|
import net.minestom.server.data.type.*;
|
||||||
|
import net.minestom.server.item.ItemStack;
|
||||||
import net.minestom.server.utils.PrimitiveConversion;
|
import net.minestom.server.utils.PrimitiveConversion;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -24,6 +25,8 @@ public class DataManager {
|
|||||||
registerType(String.class, new StringData());
|
registerType(String.class, new StringData());
|
||||||
|
|
||||||
registerType(SerializableData.class, new SerializableDataData());
|
registerType(SerializableData.class, new SerializableDataData());
|
||||||
|
|
||||||
|
registerType(ItemStack.class, new ItemStackData());
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T> void registerType(Class<T> clazz, DataType<T> dataType) {
|
public <T> void registerType(Class<T> clazz, DataType<T> dataType) {
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
package net.minestom.server.data.type;
|
||||||
|
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import io.netty.buffer.Unpooled;
|
||||||
|
import net.minestom.server.data.DataType;
|
||||||
|
import net.minestom.server.item.ItemStack;
|
||||||
|
import net.minestom.server.network.packet.PacketReader;
|
||||||
|
import net.minestom.server.network.packet.PacketWriter;
|
||||||
|
import net.minestom.server.utils.Utils;
|
||||||
|
|
||||||
|
public class ItemStackData extends DataType<ItemStack> {
|
||||||
|
@Override
|
||||||
|
public byte[] encode(ItemStack value) {
|
||||||
|
PacketWriter packetWriter = new PacketWriter();
|
||||||
|
packetWriter.writeItemStack(value);
|
||||||
|
return packetWriter.toByteArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack decode(byte[] value) {
|
||||||
|
ByteBuf buffer = Unpooled.buffer(value.length);
|
||||||
|
ItemStack itemStack = Utils.readItemStack(new PacketReader(buffer));
|
||||||
|
return itemStack;
|
||||||
|
}
|
||||||
|
}
|
@ -39,14 +39,14 @@ public class PacketProcessor {
|
|||||||
|
|
||||||
private List<Integer> printBlackList = Arrays.asList(17, 18, 19);
|
private List<Integer> printBlackList = Arrays.asList(17, 18, 19);
|
||||||
|
|
||||||
public void process(ChannelHandlerContext channel, ByteBuf buffer, int id, int length, int offset) {
|
public void process(ChannelHandlerContext channel, ByteBuf buffer, int id, int offset) {
|
||||||
PlayerConnection playerConnection = connectionPlayerConnectionMap.computeIfAbsent(channel, c -> new PlayerConnection(channel));
|
PlayerConnection playerConnection = connectionPlayerConnectionMap.computeIfAbsent(channel, c -> new PlayerConnection(channel));
|
||||||
ConnectionState connectionState = playerConnection.getConnectionState();
|
ConnectionState connectionState = playerConnection.getConnectionState();
|
||||||
//if (!printBlackList.contains(id)) {
|
//if (!printBlackList.contains(id)) {
|
||||||
//System.out.println("RECEIVED ID: 0x" + Integer.toHexString(id) + " State: " + connectionState);
|
//System.out.println("RECEIVED ID: 0x" + Integer.toHexString(id) + " State: " + connectionState);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
PacketReader packetReader = new PacketReader(buffer, length);
|
PacketReader packetReader = new PacketReader(buffer);
|
||||||
|
|
||||||
if (connectionState == ConnectionState.UNKNOWN) {
|
if (connectionState == ConnectionState.UNKNOWN) {
|
||||||
// Should be handshake packet
|
// Should be handshake packet
|
||||||
|
@ -35,7 +35,7 @@ public class ClientChannel extends ChannelInboundHandlerAdapter {
|
|||||||
|
|
||||||
if (packetLength == 0xFE) { // Legacy server ping
|
if (packetLength == 0xFE) { // Legacy server ping
|
||||||
LegacyServerListPingPacket legacyServerListPingPacket = new LegacyServerListPingPacket();
|
LegacyServerListPingPacket legacyServerListPingPacket = new LegacyServerListPingPacket();
|
||||||
legacyServerListPingPacket.read(new PacketReader(buffer, 0));
|
legacyServerListPingPacket.read(new PacketReader(buffer));
|
||||||
legacyServerListPingPacket.process(null, null);
|
legacyServerListPingPacket.process(null, null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -44,7 +44,7 @@ public class ClientChannel extends ChannelInboundHandlerAdapter {
|
|||||||
int packetId = Utils.readVarInt(buffer);
|
int packetId = Utils.readVarInt(buffer);
|
||||||
|
|
||||||
int offset = varIntLength + Utils.lengthVarInt(packetId);
|
int offset = varIntLength + Utils.lengthVarInt(packetId);
|
||||||
packetProcessor.process(ctx, buffer, packetId, packetLength, offset);
|
packetProcessor.process(ctx, buffer, packetId, offset);
|
||||||
|
|
||||||
buffer.release();
|
buffer.release();
|
||||||
}
|
}
|
||||||
|
@ -9,11 +9,9 @@ import net.minestom.server.utils.Utils;
|
|||||||
public class PacketReader {
|
public class PacketReader {
|
||||||
|
|
||||||
private ByteBuf buffer;
|
private ByteBuf buffer;
|
||||||
private int length;
|
|
||||||
|
|
||||||
public PacketReader(ByteBuf buffer, int length) {
|
public PacketReader(ByteBuf buffer) {
|
||||||
this.buffer = buffer;
|
this.buffer = buffer;
|
||||||
this.length = length;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int readVarInt() {
|
public int readVarInt() {
|
||||||
@ -90,8 +88,4 @@ public class PacketReader {
|
|||||||
public ByteBuf getBuffer() {
|
public ByteBuf getBuffer() {
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getPacketLength() {
|
|
||||||
return length;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user