I think there are some long term plans of adding the ability to kind of create your own custom plugins with events, in Ashleys latest blog post. A bit far off in the future though, but I completely agree with this.
I mostly focus on touch based games, and I have a set of events that handles my touch controller which I'm often reusing in many projects with some tweaks.
A pretty neat feature though is that if you copy a sprite object from a project you get this code:
{"is-c3-clipboard-data":true,"type":"world-instances","items":[{"type":"Sprite","properties":{"initially-visible":true,"initial-animation":"Animation 1","initial-frame":0,"enable-collisions":true,"live-preview":false},"instanceVariables":{},"behaviors":{},"world":{"x":339,"y":218,"width":59,"height":59,"originX":0.5,"originY":0.5,"color":[1,1,1,1],"angle":0,"zElevation":0}}],"object-types":[{"name":"Sprite","plugin-id":"Sprite","isGlobal":false,"instanceVariables":[],"behaviorTypes":[],"effectTypes":[],"animations":{"items":[{"frames":[{"width":59,"height":59,"originX":0.5,"originY":0.5,"originalSource":"","exportFormat":"png","exportQuality":0.8,"imageDataIndex":0,"duration":1}],"name":"Animation 1","isLooping":false,"isPingPong":false,"repeatCount":1,"repeatTo":0,"speed":5}],"subfolders":[]}}],"imageData":["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADsAAAA7CAYAAADFJfKzAAABWUlEQVRoQ+2YQQ7CMAwE25fwBA6VOPB/ceMRvAQUiUocEnU3dtI4bM924vWsk8B63W7v5U++VWInJS2yk4JdRFZkJ+iAbDwBxKyEJmSfr8eyXe7D9ex0sT0bA4tlimoVa7WKu9gkNH2ojZnGSCzRgSZkUaqpzvBkJTZjN3a+Ccfa7lnEbmzxbHx4sYzlJZbogOtpjFh9r623hdO+EptzBkINifkl23NeabLIeKACmMYg+yIxbjZmZzC8WJRq72fiTt2VrMQWhkk2Rk4ZQ4xszN6z7ElsgGNKdSErsSYGbZLdyDLXThspx6tKbM0BJbIDPSjoXz0leuxriI0/nkYswjyzNdeOxGJwTFEw2dIuNZRqckwqv8mniPUovGYNiWW6dpYlmRrpfyo8Z7amUI8c2dijiyOuYSY7oqhSTRIbiRZTq8gy3YoUK7KRaDG1iizTrUixIhuJFlPrB+AqbBi/tecfAAAAAElFTkSuQmCC"]}
If you paste this in a brand new project you will get a sprite :D One idea would be some kind of ability to add an event sheet as part of a container to an object. Or some way to along with the sprite, also copy all events, and other dependacies included with the sprite.
{"is-c3-clipboard-data":true,"type":"events","items":[{"eventType":"variable","name":"bignumber","type":"number","initialValue":"2","comment":"","isStatic":false,"isConstant":false},{"eventType":"variable","name":"smallnumber","type":"number","initialValue":"-2","comment":"","isStatic":false,"isConstant":false},{"eventType":"block","conditions":[{"id":"compare-two-values","objectClass":"System","parameters":{"first-value":"bignumber","comparison":0,"second-value":"smallnumber"}}],"actions":[{"id":"create-object","objectClass":"System","parameters":{"object-to-create":"Sprite","layer":"0","x":"0","y":"0"}}]}]}
If you then take this and paste it to event sheet you will get some events for that object.
So the idea is that, when you copy over an object (maybe with a modifier key like "alt") It also includes all the events containing that object, and all the global variables and other things the events are depending on.
When you then paste in your other project (with modifier key) it would paste everything related to that object...
In theory the solution could work, but I don't know how hard it would be to paste both events and objects at once... :)
Even better would be if you could select an object, and choose in contect menu, Export "Sprite" with all dependencies, and it would bundle events and image data to a file for you which you could store somewhere and reuse in other projects.