These are the design goals for MachinaCraft, and serve as guidelines for its development. This is probably not an exhaustive list and may be updated in the future.
Play the game, rather than program the game
Machina create meaning by combining blocks in a certain way. They do not use commands, signs or codes to determine when to start or what their function is.
Exception: While active they may react to signs in the world, or use them if their purpose is to send or display text.
A machina should:
- be easy to memorize.
This means a machina should be a bit minimalistic in its design while still having enough blocks to create their meaning.
- be easy to build.
This means if the machina uses chests, crafting tables and other blocks that have a right click function, the player won't need support blocks while placing the machina.
- perform a simple, straightforward task.
Performing a very specific, complicated task (building a house), or a lot of different tasks all at the same time makes the machina less versatile, or very code bloated and hard to maintain. It would be better to encourage using multiple smaller Machina that can be combined to achieve the same result.
- respects plugins that protect the world from modification to certain players.
This means a machina won't let a player build or break things where they themselves wouldn't be allowed to. It also won't modify the inventory of chests or hijack them unless the player has permission.
- defers to players, machina and anything else modifying the world around it.
This means the machina has to deal with blocks being placed or broken around them, even when it may interfere with or alter their operation. If a part of the machina itself is removed, it has to deal with that as well, usually deactivating instantly. A machina will not place a lock on the world for its own convenience.