Provides a minimal implementation of GeneratePlugin suitable for L-systems.
getOptionsWidget and createInitialSymbol are the only required methods to implement.
Kindly ignore the 'getInputsList' for now, I'm still not sure if it's going to be implemented.
getAllPlugins returns all PluginRefs found so far
detectPlugin tries to find a plugin and returns a PluginRef
findNewPluginsInDir stores a PluginRef for each plugin in the dir
Each PluginRef can be loaded and unloaded, remembers its 'enabled' setting, and provides a displayName and info about loading/unloading errors.
On startup, `findNewPluginsInDir` is called.
Found plugins are retrieved using getAllPlugins and any enabled plugins are loaded.
Plugins dialog lists plugins from getAllPlugins and allows to enable/disable each one.
Reloading is not yet implemented.
When the plugin module is unloaded, unregister all of its classes.
Plugin modules are also allowed `register()` and `unregister()` functions to use for e.g. monkey-patching MCEdit's internals and other unspeakable things.
Avoids crashes on badly-formed player data. Should tighten this up to only catch errors in getting the player's position. Should also add a validate function to AnvilPlayerRef (and every other ref, too?)
On Windows this encodes with the current codepage, which often fails for characters not in the codepage.
On Windows, FS functions accept 'unicode' and encode as UTF-16 for WinAPI
On Mac, FS functions accept 'unicode' and encode as UTF-8 for FS API
On Linux, filenames are byte strings and encoding is only a convention. FS functions encode 'unicode' according to locale. On Linux, it is possible to have files whose names cannot be decoded in any character set!
GL preview is enabled by default
Undoing a Generate returns the bounding box to the tool
generateInSchematic is provided with the original bounding box
clearSchematic does not remove schematicBounds (should be called generateBounds or something)
Objects can be rendered either as Minecraft block placement commands or as OpenGL rendering commands in the form of scenegraph Nodes.
The huge block of text at the top probably doesn't do much to explain the value of the system, so examples and tutorials will be coming soon.
Generate plugins may now provide a scene node for OpenGL previewing instead of Minecraft block previewing
Generate plugins may now generate directly into a world instead of via an intermediate schematic
Documented the functions of the GeneratePlugin class
TreeGen is now broken.
Added "Live Preview", "Block Preview" and "GL Preview" checkboxes.
Added an updatePreview method for plugins to call, e.g. when plugin options change.
Exceptions while running a generator are now caught
Exceptions during Live Preview will disable it.