wiki:DevelopingWorldPainter

Version 5 (modified by admin, 2 years ago) (diff)

--

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 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 ​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.