From dcd030c6ed41e080846d1d50cf82e1055ae48edd Mon Sep 17 00:00:00 2001 From: LaG1924 <12997935+LaG1924@users.noreply.github.com> Date: Fri, 15 Sep 2017 20:46:56 +0500 Subject: 2017-09-15 --- src/Stream.cpp | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) (limited to 'src/Stream.cpp') diff --git a/src/Stream.cpp b/src/Stream.cpp index 28680c6..665247d 100644 --- a/src/Stream.cpp +++ b/src/Stream.cpp @@ -118,14 +118,28 @@ long long StreamInput::ReadVarLong() { } std::vector StreamInput::ReadEntityMetadata() { + LOG(FATAL) << "Reading EntityMetadata is not implemented"; return std::vector(); } -std::vector StreamInput::ReadSlot() { - return std::vector(); +SlotData StreamInput::ReadSlot() { + SlotData slot; + slot.BlockId = ReadShort(); + + if (slot.BlockId == -1) + return slot; + + slot.ItemCount = ReadByte(); + slot.ItemDamage = ReadShort(); + + if (ReadByte() != 0) + throw std::runtime_error("Slot data with NBT not supported"); + + return slot; } std::vector StreamInput::ReadNbtTag() { + LOG(FATAL) << "Reading NBT is not implemented"; return std::vector(); } @@ -255,8 +269,13 @@ void StreamOutput::WriteEntityMetadata(std::vector value) { LOG(FATAL) << "Used unimplemented WriteEntityMetadata: " << value.size(); } -void StreamOutput::WriteSlot(std::vector value) { - LOG(FATAL) << "Used unimplemented WriteSlot " << value.size(); +void StreamOutput::WriteSlot(SlotData value) { + WriteShort(value.BlockId); + if (value.BlockId == -1) + return; + WriteByte(value.ItemCount); + WriteShort(value.ItemDamage); + WriteUByte(0); } void StreamOutput::WriteNbtTag(std::vector value) { -- cgit v1.2.3