3
0
Mirror von https://github.com/ViaVersion/ViaVersion.git synchronisiert 2024-09-08 13:52:50 +02:00

Metadata type should be written as var int

Dieser Commit ist enthalten in:
Nassim Jahnke 2021-10-29 17:57:23 +02:00
Ursprung d80735e248
Commit ab7cd4955b
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 6BE3B555EBC5982B

Datei anzeigen

@ -24,14 +24,17 @@ package com.viaversion.viaversion.api.type.types.minecraft;
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
import com.viaversion.viaversion.api.type.Type;
import io.netty.buffer.ByteBuf;
public abstract class ModernMetaType extends MetaTypeTemplate {
private static final int END = 255;
@Override
public Metadata read(final ByteBuf buffer) throws Exception {
final short index = buffer.readUnsignedByte();
if (index == 0xff) return null; // End of metadata
final MetaType type = this.getType(buffer.readByte());
if (index == END) return null; // End of metadata
final MetaType type = this.getType(Type.VAR_INT.readPrimitive(buffer));
return new Metadata(index, type, type.type().read(buffer));
}
@ -40,11 +43,11 @@ public abstract class ModernMetaType extends MetaTypeTemplate {
@Override
public void write(final ByteBuf buffer, final Metadata object) throws Exception {
if (object == null) {
buffer.writeByte(0xff);
buffer.writeByte(END);
} else {
buffer.writeByte(object.id());
final MetaType type = object.metaType();
buffer.writeByte(type.typeId());
Type.VAR_INT.writePrimitive(buffer, type.typeId());
type.type().write(buffer, object.getValue());
}
}