package openmods.sync;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import net.minecraft.nbt.NBTTagCompound;
public class SyncableByteArray extends SyncableObjectBase implements ISyncableValueProvider<byte[]> {
private byte[] value = new byte[0];
public SyncableByteArray() {}
public SyncableByteArray(byte[] val) {
this.value = val;
}
public void setValue(byte[] newValue) {
if (newValue != value) {
value = newValue;
markDirty();
}
}
@Override
public byte[] getValue() {
return value;
}
@Override
public void readFromStream(DataInputStream stream) throws IOException {
int length = stream.readInt();
value = new byte[length];
for (int i = 0; i < length; i++) {
value[i] = stream.readByte();
}
}
@Override
public void writeToStream(DataOutputStream stream)
throws IOException {
if (value == null) {
stream.writeInt(0);
} else {
stream.writeInt(value.length);
for (byte element : value) {
stream.writeByte(element);
}
}
}
@Override
public void writeToNBT(NBTTagCompound nbt, String name) {
nbt.setByteArray(name, value);
}
@Override
public void readFromNBT(NBTTagCompound nbt, String name) {
nbt.getByteArray(name);
}
}