This page contains some useful information you need to know to work on !WorldPainter's source code. = GUI forms = Most of the GUI forms (Swing frames, dialogs, panels, etc.) have been created with [https://netbeans.apache.org/ ​NetBeans], which is why you will see `.form` files in the source next to the Java classes. By far the easiest way of editing these forms visually is to actually use !NetBeans, which is a very good IDE with good Maven support and an excellent visual designer (one of the few which supports the !GroupLayout). If I ever start accepting pull requests, it will probably be a requirement that any changes to visual forms have been done with !NetBeans so that the `.form` files remain in sync with the Java classes. If that is not in your plans then you can of course use any visual designer you like, such as the excellent ​[https://www.formdev.com/ JFormDesigner], which can import !NetBeans forms, or edit the Java classes manually. = Coordinate systems = As you may or may not know, Minecraft employs a strange coordinate system where the `y` coordinate is vertical, contrary to all custom. !WorldPainter itself uses a more normal coordinate system where `y` is north-south and `z` is vertical. `x` is west-east in both systems. Unfortunately this can make it unclear sometimes which coordinate system is in use by certain methods. In general, the classes in `net.minecraft` and `org.pepsoft.minecraft` use Minecraft's coordinate system where `y` is the vertical while all other classes use !WorldPainter's more normal coordinate system where `z` is the vertical. You'll only have to deal with it in low level code which directly manipulates Minecraft maps, chunks and blocks but it's something to keep in mind. Changing between the two is of course a simple matter of switching `y` and `z`. = Not everything is used = Just because it exists in the codebase doesn't mean it is used! There is some experimental code in the codebase, some of it complete but not in use, some of it incomplete. If you can't find where something is used, that is probably because it isn't in use. Of course that doesn't mean you can't use it, some of it is quite interesting.