3
0
Mirror von https://github.com/Moulberry/AxiomPaperPlugin.git synchronisiert 2024-09-29 16:00:04 +02:00

Improve MarkerData serialization logic

Dieser Commit ist enthalten in:
Moulberry 2024-02-10 20:39:53 +08:00
Ursprung b422968306
Commit d0cc7281cf

Datei anzeigen

@ -30,10 +30,9 @@ public record MarkerData(UUID uuid, Vec3 position, @Nullable String name, @Nulla
byte flags = friendlyByteBuf.readByte(); byte flags = friendlyByteBuf.readByte();
if ((flags & 1) != 0) { if (flags != 0) {
minRegion = friendlyByteBuf.readVec3(); minRegion = friendlyByteBuf.readVec3();
maxRegion = friendlyByteBuf.readVec3(); maxRegion = friendlyByteBuf.readVec3();
}
if ((flags & 2) != 0) { if ((flags & 2) != 0) {
lineArgb = friendlyByteBuf.readInt(); lineArgb = friendlyByteBuf.readInt();
@ -46,6 +45,7 @@ public record MarkerData(UUID uuid, Vec3 position, @Nullable String name, @Nulla
if ((flags & 8) != 0) { if ((flags & 8) != 0) {
faceArgb = friendlyByteBuf.readInt(); faceArgb = friendlyByteBuf.readInt();
} }
}
return new MarkerData(uuid, position, name, minRegion, maxRegion, lineArgb, lineThickness, faceArgb); return new MarkerData(uuid, position, name, minRegion, maxRegion, lineArgb, lineThickness, faceArgb);
} }
@ -57,34 +57,19 @@ public record MarkerData(UUID uuid, Vec3 position, @Nullable String name, @Nulla
friendlyByteBuf.writeDouble(markerData.position.z); friendlyByteBuf.writeDouble(markerData.position.z);
friendlyByteBuf.writeNullable(markerData.name, FriendlyByteBuf::writeUtf); friendlyByteBuf.writeNullable(markerData.name, FriendlyByteBuf::writeUtf);
byte flags = 0;
if (markerData.minRegion != null && markerData.maxRegion != null) { if (markerData.minRegion != null && markerData.maxRegion != null) {
flags |= 1; byte flags = 1;
} if (markerData.lineArgb != 0) flags |= 2;
if (markerData.lineThickness != 0) flags |= 4;
if (markerData.lineArgb != 0) { if (markerData.faceArgb != 0) flags |= 8;
flags |= 2;
}
if (markerData.lineThickness != 0) {
flags |= 4;
}
if (markerData.faceArgb != 0) {
flags |= 8;
}
friendlyByteBuf.writeByte(flags); friendlyByteBuf.writeByte(flags);
if (markerData.minRegion != null && markerData.maxRegion != null) {
friendlyByteBuf.writeDouble(markerData.minRegion.x); friendlyByteBuf.writeDouble(markerData.minRegion.x);
friendlyByteBuf.writeDouble(markerData.minRegion.y); friendlyByteBuf.writeDouble(markerData.minRegion.y);
friendlyByteBuf.writeDouble(markerData.minRegion.z); friendlyByteBuf.writeDouble(markerData.minRegion.z);
friendlyByteBuf.writeDouble(markerData.maxRegion.x); friendlyByteBuf.writeDouble(markerData.maxRegion.x);
friendlyByteBuf.writeDouble(markerData.maxRegion.y); friendlyByteBuf.writeDouble(markerData.maxRegion.y);
friendlyByteBuf.writeDouble(markerData.maxRegion.z); friendlyByteBuf.writeDouble(markerData.maxRegion.z);
}
if (markerData.lineArgb != 0) { if (markerData.lineArgb != 0) {
friendlyByteBuf.writeInt(markerData.lineArgb); friendlyByteBuf.writeInt(markerData.lineArgb);
@ -97,6 +82,9 @@ public record MarkerData(UUID uuid, Vec3 position, @Nullable String name, @Nulla
if (markerData.faceArgb != 0) { if (markerData.faceArgb != 0) {
friendlyByteBuf.writeInt(markerData.faceArgb); friendlyByteBuf.writeInt(markerData.faceArgb);
} }
} else {
friendlyByteBuf.writeByte(0);
}
} }
private static final Field dataField; private static final Field dataField;
@ -148,9 +136,6 @@ public record MarkerData(UUID uuid, Vec3 position, @Nullable String name, @Nulla
double maxZ = max.getDouble(2); double maxZ = max.getDouble(2);
minRegion = new Vec3(minX, minY, minZ); minRegion = new Vec3(minX, minY, minZ);
maxRegion = new Vec3(maxX, maxY, maxZ); maxRegion = new Vec3(maxX, maxY, maxZ);
}
}
if (data.contains("line_argb", Tag.TAG_ANY_NUMERIC)) { if (data.contains("line_argb", Tag.TAG_ANY_NUMERIC)) {
lineArgb = data.getInt("line_argb"); lineArgb = data.getInt("line_argb");
@ -163,6 +148,8 @@ public record MarkerData(UUID uuid, Vec3 position, @Nullable String name, @Nulla
if (data.contains("face_argb", Tag.TAG_ANY_NUMERIC)) { if (data.contains("face_argb", Tag.TAG_ANY_NUMERIC)) {
faceArgb = data.getInt("face_argb"); faceArgb = data.getInt("face_argb");
} }
}
}
return new MarkerData(marker.getUUID(), position, name, minRegion, maxRegion, lineArgb, lineThickness, faceArgb); return new MarkerData(marker.getUUID(), position, name, minRegion, maxRegion, lineArgb, lineThickness, faceArgb);
} }