package openmods.sync; import com.google.common.base.Preconditions; import java.io.DataInputStream; import java.io.DataOutputStream; import net.minecraft.nbt.NBTTagCompound; import openmods.utils.ByteUtils; public class SyncableVarInt extends SyncableObjectBase implements ISyncableValueProvider<Integer> { private int value = 0; public SyncableVarInt(int value) { Preconditions.checkArgument(value >= 0, "Value must be non-negative"); this.value = value; } public SyncableVarInt() {} public void modify(int by) { if (value + by >= 0) set(value + by); } public void set(int val) { Preconditions.checkArgument(val >= 0, "Value must be non-negative"); if (val != value) { value = val; markDirty(); } } public int get() { return value; } @Override public Integer getValue() { return value; } @Override public void readFromStream(DataInputStream stream) { value = ByteUtils.readVLI(stream); } @Override public void writeToStream(DataOutputStream stream) { ByteUtils.writeVLI(stream, value); } @Override public void writeToNBT(NBTTagCompound tag, String name) { tag.setInteger(name, value); } @Override public void readFromNBT(NBTTagCompound tag, String name) { if (tag.hasKey(name)) value = tag.getInteger(name); } }