package openmods.sync;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import net.minecraft.nbt.NBTTagCompound;
public class SyncableFloat extends SyncableObjectBase implements ISyncableValueProvider<Float> {
public static final float EPSILON = 0.0001f;
private float value;
public SyncableFloat(float value) {
this.value = value;
}
public SyncableFloat() {}
public void set(float newValue) {
if (!equals(newValue)) {
value = newValue;
markDirty();
}
}
public float get() {
return value;
}
@Override
public Float getValue() {
return value;
}
public boolean equals(float otherValue) {
return Math.abs(otherValue - value) < EPSILON;
}
@Override
public void readFromStream(DataInputStream stream) throws IOException {
value = stream.readFloat();
}
@Override
public void writeToStream(DataOutputStream stream) throws IOException {
stream.writeFloat(value);
}
@Override
public void writeToNBT(NBTTagCompound tag, String name) {
tag.setFloat(name, value);
}
@Override
public void readFromNBT(NBTTagCompound tag, String name) {
value = tag.getFloat(name);
}
public void modify(float by) {
set(value + by);
}
}