3
0
Mirror von https://github.com/ViaVersion/ViaVersion.git synchronisiert 2024-07-01 21:18:02 +02:00

Handle empty items in pre 1.20.5 protocols

Maps empty items to null on read in 1.13, 1.13.2 and 1.20.2 item types and handles the empty item->null transition in 1.10->1.11
Dieser Commit ist enthalten in:
FlorianMichael 2024-06-09 15:14:45 +02:00
Ursprung b77d0fedd9
Commit 0dd7dfe2f3
5 geänderte Dateien mit 18 neuen und 15 gelöschten Zeilen

Datei anzeigen

@ -44,13 +44,16 @@ public class ItemType1_13 extends Type<Item> {
item.setIdentifier(id);
item.setAmount(buffer.readByte());
item.setTag(Types.NAMED_COMPOUND_TAG.read(buffer));
if (item.isEmpty()) {
return null;
}
return item;
}
}
@Override
public void write(ByteBuf buffer, @Nullable Item object) {
if (object == null) {
if (object == null || object.isEmpty()) {
buffer.writeShort(-1);
} else {
buffer.writeShort(object.identifier());

Datei anzeigen

@ -44,13 +44,16 @@ public class ItemType1_13_2 extends Type<Item> {
item.setIdentifier(Types.VAR_INT.readPrimitive(buffer));
item.setAmount(buffer.readByte());
item.setTag(Types.NAMED_COMPOUND_TAG.read(buffer));
if (item.isEmpty()) {
return null;
}
return item;
}
}
@Override
public void write(ByteBuf buffer, @Nullable Item object) {
if (object == null) {
if (object == null || object.isEmpty()) {
buffer.writeBoolean(false);
} else {
buffer.writeBoolean(true);

Datei anzeigen

@ -45,12 +45,15 @@ public class ItemType1_20_2 extends Type<Item> {
item.setIdentifier(Types.VAR_INT.readPrimitive(buffer));
item.setAmount(buffer.readByte());
item.setTag(Types.COMPOUND_TAG.read(buffer));
if (item.isEmpty()) {
return null;
}
return item;
}
@Override
public void write(final ByteBuf buffer, @Nullable final Item object) {
if (object == null) {
if (object == null || object.isEmpty()) {
buffer.writeBoolean(false);
} else {
buffer.writeBoolean(true);

Datei anzeigen

@ -74,6 +74,10 @@ public class ItemPacketRewriter1_11 extends ItemRewriter<ClientboundPackets1_9_3
@Override
public Item handleItemToClient(UserConnection connection, Item item) {
if (item != null && item.isEmpty()) {
// Map empty items to null
return null;
}
EntityMappings1_11.toClientItem(item);
return item;
}

Datei anzeigen

@ -355,12 +355,7 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter<Clientboun
}
@Override
public Item handleItemToClient(final UserConnection connection, @Nullable final Item item) {
if (item == null) {
// We no longer want null items, always unify them to empty
return StructuredItem.empty();
}
public Item handleItemToClient(final UserConnection connection, final Item item) {
// Add the original as custom data, to be re-used for creative clients as well
final CompoundTag tag = item.tag();
if (tag != null) {
@ -380,12 +375,7 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter<Clientboun
}
@Override
public @Nullable Item handleItemToServer(UserConnection connection, final Item item) {
if (item.isEmpty()) {
// Empty to null for the old protocols
return null;
}
public Item handleItemToServer(UserConnection connection, final Item item) {
super.handleItemToServer(connection, item);
return toOldItem(connection, item, DATA_CONVERTER);
}