The simulator package is meant to be re-usable across worlds, and same with object code. Thus, both key their entities on the address of the caller. Thus, you can't overwrite other people's entities.
To figure out who the caller is, for the simulator and object code, we can use _msgSender() in the entry point, but then if an internal system call is made, _msgSender() becomes the simulator/object code world. And so we need the FIRST caller to this world.
Our current solution for this is to keep track of callers in our MUD fork, but this requires storing extra information and deleting it on every transaction
The simulator package is meant to be re-usable across worlds, and same with object code. Thus, both key their entities on the address of the caller. Thus, you can't overwrite other people's entities.
To figure out who the caller is, for the simulator and object code, we can use _msgSender() in the entry point, but then if an internal system call is made, _msgSender() becomes the simulator/object code world. And so we need the FIRST caller to this world.
Our current solution for this is to keep track of callers in our MUD fork, but this requires storing extra information and deleting it on every transaction