//ReadEntityMetadata public void WriteEntityMetadata(EntityMetadataManager data) { using (MCBEBinary stream = new MCBEBinary()) { Dictionary <int, EntityData> entityDatas = data.GetEntityDatas(); stream.WriteUVarInt((uint)entityDatas.Count); int[] keys = entityDatas.Keys.ToArray(); for (int i = 0; i < keys.Length; ++i) { int id = keys[i]; EntityData entityData = entityDatas[id]; EntityMetadataType type = entityData.Type; stream.WriteUVarInt((uint)id); stream.WriteUVarInt((uint)type); if (type == EntityMetadataType.DATA_TYPE_BYTE) { stream.WriteByte(data.GetByte(id)); } else if (type == EntityMetadataType.DATA_TYPE_SHORT) { stream.WriteLShort((ushort)data.GetShort(id)); } else if (type == EntityMetadataType.DATA_TYPE_INT) { stream.WriteSVarInt(data.GetInt(id)); } else if (type == EntityMetadataType.DATA_TYPE_FLOAT) { stream.WriteLFloat(data.GetFloat(id)); } else if (type == EntityMetadataType.DATA_TYPE_STRING) { stream.WriteString(data.GetString(id)); } else if (type == EntityMetadataType.DATA_TYPE_SLOT) { stream.WriteItem(data.GetSlot(id)); } else if (type == EntityMetadataType.DATA_TYPE_LONG) { stream.WriteSVarLong(data.GetLong(id)); } else if (type == EntityMetadataType.DATA_TYPE_VECTOR) { stream.WriteVector3(data.GetVector(id)); } } this.WriteBytes(stream.ToArray()); } }
public async Task WriteEntityMetdata(byte index, EntityMetadataType type, object value, bool optional = false) { await this.WriteUnsignedByteAsync(index); await this.WriteVarIntAsync((int)type); switch (type) { case EntityMetadataType.Byte: await this.WriteUnsignedByteAsync((byte)value); break; case EntityMetadataType.VarInt: await this.WriteVarIntAsync((int)value); break; case EntityMetadataType.Float: await this.WriteFloatAsync((float)value); break; case EntityMetadataType.String: await this.WriteStringAsync((string)value); break; case EntityMetadataType.Chat: await this.WriteChatAsync((ChatMessage)value); break; case EntityMetadataType.OptChat: await this.WriteBooleanAsync(optional); if (optional) { await this.WriteChatAsync((ChatMessage)value); } break; case EntityMetadataType.Slot: await this.WriteSlotAsync((ItemStack)value); break; case EntityMetadataType.Boolean: await this.WriteBooleanAsync((bool)value); break; case EntityMetadataType.Rotation: break; case EntityMetadataType.Position: await this.WritePositionAsync((Position)value); break; case EntityMetadataType.OptPosition: await this.WriteBooleanAsync(optional); if (optional) { await this.WritePositionAsync((Position)value); } break; case EntityMetadataType.Direction: break; case EntityMetadataType.OptUuid: await this.WriteBooleanAsync(optional); if (optional) { await this.WriteUuidAsync((Guid)value); } break; case EntityMetadataType.OptBlockId: await this.WriteVarIntAsync((int)value); break; case EntityMetadataType.Nbt: case EntityMetadataType.Particle: case EntityMetadataType.VillagerData: case EntityMetadataType.OptVarInt: if (optional) { await this.WriteVarIntAsync(0); break; } await this.WriteVarIntAsync(1 + (int)value); break; case EntityMetadataType.Pose: await this.WriteVarIntAsync((Pose)value); break; default: break; } }
public void WriteEntityMetadataType(byte index, EntityMetadataType entityMetadataType) { WriteUnsignedByte(index); WriteVarInt((int)entityMetadataType); }
public static BinaryWriter WriteAsEntityMetadata(this BinaryWriter bw, byte index, EntityMetadataType type) { bw.WriteAsByte(index); bw.WriteAsByte((byte)type); return(bw); }
public static int GetIndex(this EntityMetadataType type) { return((int)type); }
public EntityMetadata(byte index, EntityMetadataType type, object value) { Index = index; Type = type; Value = value; }