I would like to be able to update a 15x15x15 region in a world from a 15x15x15 array of bytes that I will get through a socket connection. I will run the socket in a separate thread. My problem is: how can I update the blocks without corrupting the world by accessing the Bukkit API from a different thread? Should I set up some sort of mediator class that will store a list of socket responses which I can poll every tick from the main thread? Can I set up some sort of event system? I only need one extra thread for one socket connection, I believe. The plugin will connect to a central server and retrieve the 15x15x15 array of bytes which will contain the data for a 15x15x15 region of blocks.