# Dragon A centralized storage management system for Minecraft. Requires Plethora Peripherals by SquidDev and ideally CC: Tweaked. ## Setup `util.lua` must be downloaded for `client.lua` and `server.lua` to function. ### Networking & Hardware ``` Chests ───────┐ │ │ Server ─── Buffer │ │ └────┬─────┘ │ ├────────── Processing (not implemented yet) ├────────── Introspection Module in manipulator (optional) │ ┌────┴──┬───────┐ Client Client Client ``` * **Chests** is a set of chests and/or shulker boxes, connected via networking cables and modems, to the **Server** and **Buffer**. * **Buffer** is a set of two droppers, each with two wired connections - one on the internal side, connected to the chests, and one on the external side, connected to the clients. * **Server** is a computer running `server.lua`. It must be connected to the chests, clients, and both sides of the buffers. * **Client** is a crafty turtle running `client.lua`. It must be connected to the server and external side of the buffers. * **Processing** will be used for autocrafting systems. It is not yet implemented. * **Introspection Module** is an introspection module, bound to a user, in a manipulator. To use it, it must be connected to a client with it configured, and the external side of the buffers. It is recommended that you interact with the client connected to it via a Plethora keyboard. ### Configuration `setup.lua` handles most of the installation. It can also be run as `setup update` in order to update the code without going through the config process. Download it with `wget https://osmarks.ml/git/osmarks/dragon/raw/branch/master/setup.lua`. Configuration must be saved in a file called `conf` (no `.lua` extension). It is in lua table/textutils.serialise syntax. #### Server/Client Both server and client require `modem` keys indicating which side their (connected) modems are on. #### Client A client requires a `name` key indicating its name on the network. This should be displayed when you rightclick its modem. If you are using an introspection module, an `introspection` key must be added, indicating the network name of the manipulator it is in. #### Server `buffer(In/Out)(External/Internal)` keys must contain the network names of each buffer dropper on the chest-side and client-side networks. Which buffer is external or internal does not matter, as long as the internal and external network names for out and in point to the same inventory. ## Warnings * Inserting/extracting items manually into/out of chests will result in the index being desynchronised with the actual items. To remedy this, run `r` in the CLI after doing so. * Items with different names but the same ID/metadata may be labelled under the wrong name, as the system uses caching to avoid lag-inducing calls on every slot of chests. * Errors are likely to be very cryptic in this version, as I have not implemented proper error handling.