My roommate doesn't pay for things we both use (i.e. hand soap, toilet paper, etc.) and also has a bad habit of taking things from our fridge that isn't his. Mainly he likes to take my ice (it may seem like a small thing but with no AC, living relatively near the equator, and having our actual fridge part of our fridge fucked up we use a lot of ice). I don't mind sharing if he's out but I rarely get any ice at all it seems.
Now the both of us have our own ice tray but he never fills his up. I filled his once and he still took mine because, in his words, "your ice tray makes neater ice and it's easier to get the ice out," (It's not fancy, I just spent more than $1 on my ice tray). I've approached him several times about it and he just nods his head, says he gets it, then nothing ever changes. At that point I figured some people just had to learn some lessons the hard way.
I waited until we had run out of toilet paper and told him it was his turn to buy some (knowing full well he wouldn't), then, before I left for work the next day, I filled up my ice tray with a mixture of water and a fair amount of Magnesium Citrate (simply put it acts as a super laxative) in every cube slot.
When I got home I heard him calling from the bathroom for me and he told me that I had to go get some toilet paper. I carried on that conversation for about 20 minutes before I relented and left to get some. I came back about an hour later with a roll of single-ply skilcraft I had taken from my work before I had even left.
This all happened about an hour ago and he's already gone out and bought a few dozen rolls of toilet paper so I'd call this a success.