I'm working up to the next major release of WorldPainter and I'm looking for people who want to test the next version. Here is what is new in this version:
The Great Shift of 2012! The coordinate system has been rotated and shifted so that it now corresponds to Minecraft's and north is now finally up! The consequence is that worlds imported before the Great Shift can no longer be merged using this version of WorldPainter. If you have imported worlds which you absolutely need to be able to merge, keep a copy of version 0.7.3 around! But for most people that should not be necessary; you can just import the map again with the new version. Also, biome calculation for Minecraft versions is disabled for worlds created before the Great Shift (automatic and custom biomes still work)
As part of the Great Shift a world rotation function has been added. WorldPainter will automatically offer to rotate existing worlds when you load them, so that north is up. You can also rotate worlds later using the new Rotate... menu item in the Edit menu, which allows you to rotate it 90 or 180 degrees. The rotate function rotates all dimensions
New parallel export process which makes use of multiple cores and minimises disk I/O and is much quicker than the old process
Added configurable height contour lines. By default they are turned on and displayed every ten (vertical) blocks. They can be configured using the toolbar button or the Configure view... (Ctrl+V) menu item in the View menu
New function to export the world image as an image file. It is accessible through the menu as File -> Export -> Export as image file.... The Export as Minecraft map... function has been moved to this new Export sub menu as well. The image will be exported as displayed on screen, with the exception of the grid and the overlay image (but including the contour lines), so make sure to configure the visible layers as you want them before exporting the image
New function to export the world image as a height map. It is accessible through the menu as File -> Export -> Export as height map.... A height map is a grey scale image file which is brighter for higher areas. The image format to use will be determined from the file name extension you use. If you don't type an extension, PNG will be used. If your world is higher than 256, make sure to use a format which supports 16-bit grey scale (such as PNG)! And be aware that not all software can work (well) with 16-bit grey scale images. Also take into account that the 16-bit grey scale height maps will be extremely dark, and may look black, because even the highest world height (2048) is only a small fraction of the highest possible value in a 16-bit grey scale height map (65535)
Added toolbar for quick access to often used menu items and draw attention to some little known functionality
Added toolbar to 3D view with rotate buttons to draw attention to the view rotation functionality
Decreased maximum memory allocation for 32-bit Windows systems to 1250 MB in an effort to reduce JVM startup errors
This is a major release with some big structural changes, so I thought I'd ask for some volunteers to test it and give me feedback before I release it generally. So this version won't show up as an automatic update yet. Instead, if you want to test it, download it here:
Please note: the merge functionality is temporarily disabled in this version, you don't have to report that!
Also note: if you don't use an installer, you'll have to follow the instructions on this page to allocate enough memory to WorldPainter! If you don't you might not get the benefits of the new export process.
If you want to test this version, please download and install it and try things out. I'm especially curious to know whether existing worlds stil work correctlty, whether the rotation function does not introduce problems, and whether the new export process (which works on a region by region basis) produces any artefacts along region boundaries. Regions are 32 by 32 chunks (four by four tiles), which is 512 by 512 blocks, so region boundaries are at x = -513 -> -512, x = -1 -> 0, x = 511 -> 512, x = 1023 -> 1024, etc. and at z = -513 -> -512, z = -1 -> 0, z = 511 -> 512, etc.
Please send me your feedback and test results as private messages so as not to clutter up this thread! And thank you in advance for testing this new version!
I did a test to see how much faster the new export process is. I exported a 50 by 50 tile world (completely default and unaltered) on version 0.7.3, which took three and a half hours. Exporting the same world on version 0.8 took twenty five minutes. You could say it has become slightly faster.
This was on a machine with a Intel Core 2 Extreme (quad core) processor at 3 GHz, and with 1250 MB allocated in both cases (the new default maximum for 32-bit Windows machines).
So if you have large worlds, please take a look at version 0.8! See the post above for download links.
To everyone getting "The JVM could not be started" errors:
Please try installing the test version I posted about above. It may fix the problem you are having. Please let me know if you have tried it and whether it worked or not!
I first want to say this is the most useful tool I have ever come across in minecraft. At first I used voxel sniper which would end up taking me a day for just a small area and was going very slowly. Once I stumbled across this I imported my world and with in 2 hours had gotten the hang of it and finished my 2000 by 2000 map which would have taken like 40 hours with voxel! Thankyou so much you saved me do much time.
I now have some suggestions for tools to make it even easier.
1. A new brush similar to the water/lava fill tool but it fills painting over the land. So if I had a valley by clicking a block it would paint all the blocks in the valley below it so the transition from let's say sand to grass is flawless compared to painting it by hand.
2.It would be cool of there was an option to disable or enable a depth meter beside the brush (outside of the dotted brush) that would show the depth. Because it is somewhat difficult to be lifting terrain while watching the depth meter on the botom while maintaing accuracy.
This is an intresting concept but it takes a while to load on to your saves, but that is the only downside. This program has a very easy-to-learn interface.
I've tried all bit versions of this and can't manage to install it. I can download the worldpainter.exe (which initiates the installation process) and it just hangs at the end of the loading bar and I get an error txt file which says the following...
"java.lang.NullPointerException
at com.sun.java.swing.plaf.windows.XPStyle.getTypeEnumName(Unknown Source)
at com.sun.java.swing.plaf.windows.XPStyle.getBorder(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPBorderValue.getXPValue(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPValue.createValue(Unknown Source)
at javax.swing.UIDefaults.getFromHashtable(Unknown Source)
at javax.swing.UIDefaults.get(Unknown Source)
at javax.swing.MultiUIDefaults.get(Unknown Source)
at javax.swing.UIDefaults.getBorder(Unknown Source)
at javax.swing.UIManager.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorderInsets(Unknown Source)
at javax.swing.border.TitledBorder.getBorderInsets(Unknown Source)
at javax.swing.border.CompoundBorder.getBorderInsets(Unknown Source)
at javax.swing.border.CompoundBorder.getBorderInsets(Unknown Source)
at javax.swing.JComponent.getInsets(Unknown Source)
at java.awt.GridBagLayout.GetMinSize(Unknown Source)
at java.awt.GridBagLayout.getMinSize(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.ArrangeGrid(Unknown Source)
at java.awt.GridBagLayout.arrangeGrid(Unknown Source)
at java.awt.GridBagLayout.layoutContainer(Unknown Source)
at java.awt.Container.layout(Unknown Source)
at java.awt.Container.doLayout(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validate(Unknown Source)
at java.awt.Window.pack(Unknown Source)
at com.install4j.runtime.wizard.WizardFrame.<init>(Unknown Source)
at com.install4j.runtime.wizard.WizardBase.showFrame(Unknown Source)
at com.install4j.runtime.installer.frontend.WizardScreenExecutor.execute(Unknown Source)
at com.install4j.runtime.installer.controller.Controller$1.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
java.lang.NullPointerException
at com.sun.java.swing.plaf.windows.XPStyle.getTypeEnumName(Unknown Source)
at com.sun.java.swing.plaf.windows.XPStyle.getBorder(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPBorderValue.getXPValue(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPValue.createValue(Unknown Source)
at javax.swing.UIDefaults.getFromHashtable(Unknown Source)
at javax.swing.UIDefaults.get(Unknown Source)
at javax.swing.MultiUIDefaults.get(Unknown Source)
at javax.swing.UIDefaults.getBorder(Unknown Source)
at javax.swing.UIManager.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorderInsets(Unknown Source)
at javax.swing.border.TitledBorder.getBorderInsets(Unknown Source)
at javax.swing.border.CompoundBorder.getBorderInsets(Unknown Source)
at javax.swing.border.CompoundBorder.getBorderInsets(Unknown Source)
at javax.swing.JComponent.getInsets(Unknown Source)
at java.awt.GridBagLayout.GetMinSize(Unknown Source)
at java.awt.GridBagLayout.getMinSize(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.ArrangeGrid(Unknown Source)
at java.awt.GridBagLayout.arrangeGrid(Unknown Source)
at java.awt.GridBagLayout.layoutContainer(Unknown Source)
at java.awt.Container.layout(Unknown Source)
at java.awt.Container.doLayout(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validate(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
java.lang.NullPointerException
at com.sun.java.swing.plaf.windows.XPStyle.getTypeEnumName(Unknown Source)
at com.sun.java.swing.plaf.windows.XPStyle.getBorder(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPBorderValue.getXPValue(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPValue.createValue(Unknown Source)
at javax.swing.UIDefaults.getFromHashtable(Unknown Source)
at javax.swing.UIDefaults.get(Unknown Source)
at javax.swing.MultiUIDefaults.get(Unknown Source)
at javax.swing.UIDefaults.getBorder(Unknown Source)
at javax.swing.UIManager.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorderInsets(Unknown Source)
at javax.swing.border.TitledBorder.getBorderInsets(Unknown Source)
at javax.swing.border.CompoundBorder.getBorderInsets(Unknown Source)
at javax.swing.border.CompoundBorder.getBorderInsets(Unknown Source)
at javax.swing.JComponent.getInsets(Unknown Source)
at java.awt.GridBagLayout.GetMinSize(Unknown Source)
at java.awt.GridBagLayout.getMinSize(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.ArrangeGrid(Unknown Source)
at java.awt.GridBagLayout.arrangeGrid(Unknown Source)
at java.awt.GridBagLayout.layoutContainer(Unknown Source)
at java.awt.Container.layout(Unknown Source)
at java.awt.Container.doLayout(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validate(Unknown Source)
at com.install4j.runtime.wizard.StandardScreen$1.componentResized(Unknown Source)
at java.awt.Component.processComponentEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
I've been using it all day and I much say, Cheers! This is great. The sprayer brush can be a little bit patchy, even when Im thorough and it looks filled. Also if there was a mountain brush that went up "slightly" more gradually so one could easily grab a terrace to create better foothills, that would be awesome! Other than that freaking wonderful to use. No wrecked maps or crashes/errors so far. Windows vista, decent PC.
Sorry this isn't as helpful as an error report. ;P
hmm i don´t know if this is abug but i'm trying to make a big world for my server so a set the tile thingy to a thousand and it starts generate but after 5-10 minutes it stops to generate. it does not close the program the generation window just closes. just leaving feedback in case it´s a bug, mabey it´s just limited at like 100(ooh also i tried 500 tiles same thing)
1000 tiles = 1000 × 128 blocks = 128,000 metres / 128 kilometres / 79.5 miles per side
500 tiles = 64 kilometres / 39.76 miles per side
That's not a big world, that's a huge world in Minecraft terms.
I got an ArrayIndexOutOfBoundsException during export too.
java.lang.ArrayIndexOutOfBoundsException: -1
at org.pepsoft.minecraft.ChunkImpl2.getBlockType(ChunkImpl2.java:137)
at org.pepsoft.worldpainter.exporting.WorldRegion.getBlockTypeAt(WorldRegion.java:82)
at org.pepsoft.worldpainter.layers.exporters.TreesExporter.render(TreesExporter.java:68)
at org.pepsoft.worldpainter.exporting.WorldExporter.secondPass(WorldExporter.java:208)
at org.pepsoft.worldpainter.exporting.WorldExporter.exportRegion(WorldExporter.java:467)
Hmm, strange. That error seems to indicate that the world has spots where the terrain height is -1, which should be impossible and I can't reproduce.
To both of you: do you remember whether the world you were exporting had places where the terrain was extremely low? If so, how did you do that (Height tool, Mountain tool, height map import, some other way)? Do you still have the .world file in question, and if so can you send it to me?
I've tried all bit versions of this and can't manage to install it. I can download the worldpainter.exe (which initiates the installation process) and it just hangs at the end of the loading bar and I get an error txt file which says the following...
java.lang.NullPointerException
at com.sun.java.swing.plaf.windows.XPStyle.getTypeEnumName(Unknown Source)
at com.sun.java.swing.plaf.windows.XPStyle.getBorder(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPBorderValue.getXPValue(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPValue.createValue(Unknown Source)
at javax.swing.UIDefaults.getFromHashtable(Unknown Source)
...
First of all: can you please put [spoiler] tags around such long texts, so as not to clutter up the thread and make it hard to follow?
I've seen errors like these before and so far they were always caused by using a custom theme with Windows. Could that be the case in your case? If so, try resetting the Windows theme to the default to see if it works then. If it does then I'm afraid there's nothing I can do about it, it's a bug in Java. You will have to use the default theme whenever installing, upgrading or running WorldPainter.
hmm i don´t know if this is abug but i'm trying to make a big world for my server so a set the tile thingy to a thousand and it starts generate but after 5-10 minutes it stops to generate. it does not close the program the generation window just closes. just leaving feedback in case it´s a bug, mabey it´s just limited at like 100(ooh also i tried 500 tiles same thing)
There is no arbitrary limit, but you do need to have enough memory. "Tile thingy" is a bit vague, I assume you mean you're trying to make a world of 1000 by 1000 tiles. As SeansanAstrail points out, that is huge. You're probably just running out of memory. It's supposed to show an error message when that happens, but what's probably happening is that there is no free memory at all any more, so it doesn't even have enough available memory to show the error message.
So there is no bug, you just need to create more reasonably sized worlds.
For some reason i got this Error when i updated!
The JVM could not be started. The Maximum Heap Size might be too large or an antivirus or Firewall tool could block the Execution!
I'm assuming this was when upgrading to version 0.7.3. Could you try version 0.8? The download links are in the post above under "Testers wanted".
So is there a way to keep trees from being generated?
Sliding the bar to it's lowest does not work.
If you create a new world and export it, there are no trees. If you have trees you put them there somehow, either by painting it with a tree layer or the Populate layer (which you can remove by right-clicking), or by checking the "allow Minecraft to populate the entire terrain" option (which you can uncheck).
Through this, could I create a map with the default terrain but my own choice of biomes?
No, unfortunately not. Even if WorldPainter worked like you described, there is no way (without using mods) to communicate just the biome information to Minecraft but have Minecraft generate the land.
The OS your on [Windows or Mac] windows XP 32-bit
Try to explain the problem clearly. What where you doing when you got the error? installing the newest update and i got this the JVM could not be started. the maximum heap sie (-Xmx) might be too large or an antivirus or firewall tool could block the execution
Make sure you checked to see if a new version of the program has been released. The error might have been seen and fixed already.
Check at least the last page of the forum thread before posting. Others might have ran into it already and posted.
Try to explain the problem clearly. What where you doing when you got the error? installing the newest update and i got this the JVM could not be started. the maximum heap sie (-Xmx) might be too large or an antivirus or firewall tool could block the execution
Which version did you update to? The latest official release (0.7.3) or the test version (0.8)? If it was 0.7.3, could you try the test version to see if that fixes the problem? The download links are in my post called "Testers wanted!", above.
Testers wanted!
I'm working up to the next major release of WorldPainter and I'm looking for people who want to test the next version. Here is what is new in this version:
32-bit Windows (zip)
64-bit Windows (zip)
Mac OS X (tgz)
UNIX/Linux (tar.gz)
deb file
rpm file
Please note: the merge functionality is temporarily disabled in this version, you don't have to report that!
Also note: if you don't use an installer, you'll have to follow the instructions on this page to allocate enough memory to WorldPainter! If you don't you might not get the benefits of the new export process.
If you want to test this version, please download and install it and try things out. I'm especially curious to know whether existing worlds stil work correctlty, whether the rotation function does not introduce problems, and whether the new export process (which works on a region by region basis) produces any artefacts along region boundaries. Regions are 32 by 32 chunks (four by four tiles), which is 512 by 512 blocks, so region boundaries are at x = -513 -> -512, x = -1 -> 0, x = 511 -> 512, x = 1023 -> 1024, etc. and at z = -513 -> -512, z = -1 -> 0, z = 511 -> 512, etc.
Please send me your feedback and test results as private messages so as not to clutter up this thread! And thank you in advance for testing this new version!
(Repost because I want more people to see it.)
I created WorldPainter. For support, please visit the WorldPainter subreddit.
This was on a machine with a Intel Core 2 Extreme (quad core) processor at 3 GHz, and with 1250 MB allocated in both cases (the new default maximum for 32-bit Windows machines).
So if you have large worlds, please take a look at version 0.8! See the post above for download links.
To everyone getting "The JVM could not be started" errors:
Please try installing the test version I posted about above. It may fix the problem you are having. Please let me know if you have tried it and whether it worked or not!
I created WorldPainter. For support, please visit the WorldPainter subreddit.
I now have some suggestions for tools to make it even easier.
1. A new brush similar to the water/lava fill tool but it fills painting over the land. So if I had a valley by clicking a block it would paint all the blocks in the valley below it so the transition from let's say sand to grass is flawless compared to painting it by hand.
2.It would be cool of there was an option to disable or enable a depth meter beside the brush (outside of the dotted brush) that would show the depth. Because it is somewhat difficult to be lifting terrain while watching the depth meter on the botom while maintaing accuracy.
"java.lang.NullPointerException
at com.sun.java.swing.plaf.windows.XPStyle.getTypeEnumName(Unknown Source)
at com.sun.java.swing.plaf.windows.XPStyle.getBorder(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPBorderValue.getXPValue(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPValue.createValue(Unknown Source)
at javax.swing.UIDefaults.getFromHashtable(Unknown Source)
at javax.swing.UIDefaults.get(Unknown Source)
at javax.swing.MultiUIDefaults.get(Unknown Source)
at javax.swing.UIDefaults.getBorder(Unknown Source)
at javax.swing.UIManager.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorderInsets(Unknown Source)
at javax.swing.border.TitledBorder.getBorderInsets(Unknown Source)
at javax.swing.border.CompoundBorder.getBorderInsets(Unknown Source)
at javax.swing.border.CompoundBorder.getBorderInsets(Unknown Source)
at javax.swing.JComponent.getInsets(Unknown Source)
at java.awt.GridBagLayout.GetMinSize(Unknown Source)
at java.awt.GridBagLayout.getMinSize(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.ArrangeGrid(Unknown Source)
at java.awt.GridBagLayout.arrangeGrid(Unknown Source)
at java.awt.GridBagLayout.layoutContainer(Unknown Source)
at java.awt.Container.layout(Unknown Source)
at java.awt.Container.doLayout(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validate(Unknown Source)
at java.awt.Window.pack(Unknown Source)
at com.install4j.runtime.wizard.WizardFrame.<init>(Unknown Source)
at com.install4j.runtime.wizard.WizardBase.showFrame(Unknown Source)
at com.install4j.runtime.installer.frontend.WizardScreenExecutor.execute(Unknown Source)
at com.install4j.runtime.installer.controller.Controller$1.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
java.lang.NullPointerException
at com.sun.java.swing.plaf.windows.XPStyle.getTypeEnumName(Unknown Source)
at com.sun.java.swing.plaf.windows.XPStyle.getBorder(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPBorderValue.getXPValue(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPValue.createValue(Unknown Source)
at javax.swing.UIDefaults.getFromHashtable(Unknown Source)
at javax.swing.UIDefaults.get(Unknown Source)
at javax.swing.MultiUIDefaults.get(Unknown Source)
at javax.swing.UIDefaults.getBorder(Unknown Source)
at javax.swing.UIManager.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorderInsets(Unknown Source)
at javax.swing.border.TitledBorder.getBorderInsets(Unknown Source)
at javax.swing.border.CompoundBorder.getBorderInsets(Unknown Source)
at javax.swing.border.CompoundBorder.getBorderInsets(Unknown Source)
at javax.swing.JComponent.getInsets(Unknown Source)
at java.awt.GridBagLayout.GetMinSize(Unknown Source)
at java.awt.GridBagLayout.getMinSize(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.ArrangeGrid(Unknown Source)
at java.awt.GridBagLayout.arrangeGrid(Unknown Source)
at java.awt.GridBagLayout.layoutContainer(Unknown Source)
at java.awt.Container.layout(Unknown Source)
at java.awt.Container.doLayout(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validate(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
java.lang.NullPointerException
at com.sun.java.swing.plaf.windows.XPStyle.getTypeEnumName(Unknown Source)
at com.sun.java.swing.plaf.windows.XPStyle.getBorder(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPBorderValue.getXPValue(Unknown Source)
at com.sun.java.swing.plaf.windows.WindowsLookAndFeel$XPValue.createValue(Unknown Source)
at javax.swing.UIDefaults.getFromHashtable(Unknown Source)
at javax.swing.UIDefaults.get(Unknown Source)
at javax.swing.MultiUIDefaults.get(Unknown Source)
at javax.swing.UIDefaults.getBorder(Unknown Source)
at javax.swing.UIManager.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorder(Unknown Source)
at javax.swing.border.TitledBorder.getBorderInsets(Unknown Source)
at javax.swing.border.TitledBorder.getBorderInsets(Unknown Source)
at javax.swing.border.CompoundBorder.getBorderInsets(Unknown Source)
at javax.swing.border.CompoundBorder.getBorderInsets(Unknown Source)
at javax.swing.JComponent.getInsets(Unknown Source)
at java.awt.GridBagLayout.GetMinSize(Unknown Source)
at java.awt.GridBagLayout.getMinSize(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.preferredLayoutSize(Unknown Source)
at java.awt.Container.preferredSize(Unknown Source)
at java.awt.Container.getPreferredSize(Unknown Source)
at javax.swing.JComponent.getPreferredSize(Unknown Source)
at java.awt.GridBagLayout.GetLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.getLayoutInfo(Unknown Source)
at java.awt.GridBagLayout.ArrangeGrid(Unknown Source)
at java.awt.GridBagLayout.arrangeGrid(Unknown Source)
at java.awt.GridBagLayout.layoutContainer(Unknown Source)
at java.awt.Container.layout(Unknown Source)
at java.awt.Container.doLayout(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
at java.awt.Container.validate(Unknown Source)
at com.install4j.runtime.wizard.StandardScreen$1.componentResized(Unknown Source)
at java.awt.Component.processComponentEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Any idea?
Sorry this isn't as helpful as an error report. ;P
1000 tiles = 1000 × 128 blocks = 128,000 metres / 128 kilometres / 79.5 miles per side
500 tiles = 64 kilometres / 39.76 miles per side
That's not a big world, that's a huge world in Minecraft terms.
Hmm, strange. That error seems to indicate that the world has spots where the terrain height is -1, which should be impossible and I can't reproduce.
To both of you: do you remember whether the world you were exporting had places where the terrain was extremely low? If so, how did you do that (Height tool, Mountain tool, height map import, some other way)? Do you still have the .world file in question, and if so can you send it to me?
I created WorldPainter. For support, please visit the WorldPainter subreddit.
First of all: can you please put [spoiler] tags around such long texts, so as not to clutter up the thread and make it hard to follow?
I've seen errors like these before and so far they were always caused by using a custom theme with Windows. Could that be the case in your case? If so, try resetting the Windows theme to the default to see if it works then. If it does then I'm afraid there's nothing I can do about it, it's a bug in Java. You will have to use the default theme whenever installing, upgrading or running WorldPainter.
I created WorldPainter. For support, please visit the WorldPainter subreddit.
There is no arbitrary limit, but you do need to have enough memory. "Tile thingy" is a bit vague, I assume you mean you're trying to make a world of 1000 by 1000 tiles. As SeansanAstrail points out, that is huge. You're probably just running out of memory. It's supposed to show an error message when that happens, but what's probably happening is that there is no free memory at all any more, so it doesn't even have enough available memory to show the error message.
So there is no bug, you just need to create more reasonably sized worlds.
Thanks! And thanks for your suggestions, they are on the list and will probably make it into the program in the near future.
I'm assuming this was when upgrading to version 0.7.3. Could you try version 0.8? The download links are in the post above under "Testers wanted".
I created WorldPainter. For support, please visit the WorldPainter subreddit.
Sliding the bar to it's lowest does not work.
If you create a new world and export it, there are no trees. If you have trees you put them there somehow, either by painting it with a tree layer or the Populate layer (which you can remove by right-clicking), or by checking the "allow Minecraft to populate the entire terrain" option (which you can uncheck).
Excellent idea!
I created WorldPainter. For support, please visit the WorldPainter subreddit.
This is not true, it neither shows nor allows you to edit biomes where there are no tiles. I think you're labouring under a misapprehension.
No, unfortunately not. Even if WorldPainter worked like you described, there is no way (without using mods) to communicate just the biome information to Minecraft but have Minecraft generate the land.
I created WorldPainter. For support, please visit the WorldPainter subreddit.
Try to explain the problem clearly. What where you doing when you got the error? installing the newest update and i got this the JVM could not be started. the maximum heap sie (-Xmx) might be too large or an antivirus or firewall tool could block the execution
Make sure you checked to see if a new version of the program has been released. The error might have been seen and fixed already.
Check at least the last page of the forum thread before posting. Others might have ran into it already and posted.
Well can you check first, before I waste time trying to find the cause of a problem that isn't there?
Which version did you update to? The latest official release (0.7.3) or the test version (0.8)? If it was 0.7.3, could you try the test version to see if that fixes the problem? The download links are in my post called "Testers wanted!", above.
I created WorldPainter. For support, please visit the WorldPainter subreddit.