4#if PROTOCOL_VERSION < 766
15#if PROTOCOL_VERSION < 393
21#elif PROTOCOL_VERSION < 404
26#elif PROTOCOL_VERSION < 766
42#if PROTOCOL_VERSION > 765
50#if PROTOCOL_VERSION < 350
52#elif PROTOCOL_VERSION < 402
54#elif PROTOCOL_VERSION < 766
57#elif PROTOCOL_VERSION > 765
85#if PROTOCOL_VERSION < 350
86 return GetBlockId() == s.GetBlockId() && GetItemDamage() == s.GetItemDamage();
88 return GetItemId() == s.GetItemId();
94#if PROTOCOL_VERSION < 350
95 return GetBlockId() == -1;
96#elif PROTOCOL_VERSION < 402
97 return GetItemId() == -1;
98#elif PROTOCOL_VERSION < 766
100#elif PROTOCOL_VERSION > 765
101 return GetItemCount() <= 0 || GetItemId() == 0;
105#if PROTOCOL_VERSION < 766
106 auto& SetItemCount(
const char ItemCount_)
108 ItemCount = ItemCount_;
111#if PROTOCOL_VERSION < 350
113#elif PROTOCOL_VERSION < 402
115#elif PROTOCOL_VERSION > 401
125#if PROTOCOL_VERSION < 350
128 std::pair<int, unsigned char> GetItemId()
const
130 return {
static_cast<int>(GetBlockId()),
static_cast<unsigned char>(GetItemDamage()) };
#define SERIALIZED_FIELD_WITHOUT_GETTER_SETTER(Name,...)
Define a field that will be automatically integrated in Read/Write and Json serialization We start by...
#define DEFINE_CONDITION(Name,...)
Define a condition that can be used later inside an Internal::Conditioned type.
#define SERIALIZED_FIELD(Name,...)
SERIALIZED_FIELD(ItemId, Internal::Conditioned< VarInt, &Slot::HasContent, false >)
DECLARE_READ_WRITE_SERIALIZE
SERIALIZED_FIELD_WITHOUT_GETTER_SETTER(ItemCount, VarInt)
DEFINE_CONDITION(HasContent, GetItemCount() > 0)
bool SameItem(const Slot &s) const
SERIALIZED_FIELD(Components, Internal::Conditioned< Components::DataComponentPatch, &Slot::HasContent, false >)
A type wrapper to conditionally serialize a type.