Yes, it's a design limitation in itemdef, on_placenode can't modify the wielded item. But you could redefine the more low-level (and more complicated) on_place callback, untested: -- remove the register_on_placenode call ... place_rope = function(itemstack, placer, pointed_thing) if pointed_thing.ty...