Git Product home page Git Product logo

worldpainter's Introduction

WorldPainter

WorldPainter is an interactive map generator for Minecraft. It allows you to "paint" landscapes using similar tools as a regular paint program. Sculpt and mould the terrain, paint materials, trees, snow and ice, etc. onto it, and much more.

Distributing

WorldPainter is open source software, licensed under the GPL version 3. This means that if you distribute it, original or in modified form, you must also distribute it (including your changes) as open source under the GPL version 3 (or later). See the LICENSE file for details.

Building

WorldPainter is a Maven project and easy to build from the command line with Maven, or using your favourite IDE. However there are some missing dependencies which are not in Maven Central which you will have to install locally first. See the BUILDING file for details.

worldpainter's People

Contributors

almic avatar bol-com-pschmitz avatar captain-chaos avatar dependabot[bot] avatar inventivetalentdev avatar pschmitz-anwb-nl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

worldpainter's Issues

Allow custom spacing

Currently the spacing will be very low when using a low brush size to for example make a dirt path. This will make it more time consuming to make the path as you have to slow down. Would it be possible to expose the spacing of the brush?

Custom Terrain Duping (BUG)

I recently discovered the functionality of the Custom Terrain (CT) Tab, it is very handy.
However I discovered a problem with the export and import function. If you are a lazy person like me,
you could come to the idea, that it would be a good trick to export your current CT, use the import option by clicking on the plus icon and rename the "new" CT to something else. You could then change any aspect of this "new" CT and do you thing.

The problem is, that the "new" CT is linked to the old CT:
I have one CT named Sandy Beach. I export it as Sandy Beach, use the import option and rename the "new" Sandy Beach to Beach. If I hover over the "new" CT, the mouse over will show me Beach and the old CT Sandy Beach, but if I right click on Sandy Beach and hit "Edit Custom Material", the Name changes to Beach.
More than that, every thing that has been changed in one CT, will be changed in the other one as well.

I hope this can be fixed and I would like to request an option to delete and to copy Custom Terrains in the Tab. I could then start to delete my duped CT's ^^

EDIT: I tested another thing. I imported a CT, then I made a copy of the .terrain file, renamed it to something different and tried to import that file. The result was, that even with another file name, the name of the CT was still the same and I got another duped Custom Terrain... 👎

ArrayIndexOutOfBoundsException in except/only on annotations logic

Reported by http://www.minecraftforum.net/members/xgkkp

Stack trace:

java.lang.ArrayIndexOutOfBoundsException: -2
	at org.pepsoft.worldpainter.panels.BrushOptions.setFilter(BrushOptions.java:166)
	at org.pepsoft.worldpainter.App.lambda$createButtonForOperation$76(App.java:4242)
	at javax.swing.AbstractButton.fireItemStateChanged(null:-1)
	at javax.swing.AbstractButton$Handler.itemStateChanged(null:-1)
	at javax.swing.DefaultButtonModel.fireItemStateChanged(null:-1)

This is what I've managed to reduce it to, obviously I wasn't just being pathological - It looks like some order or steps gets the annotation setting into an invalid state. These steps are reproducible every time, for me.
Start worldpainter fresh
Switch to height tool, tick 'except on' and select 'all annotations' from the popup menu that appears
Select pencil tool, select 'red' annotation, draw a blob
Switch to the 'Height' tool
click the 'except on' checkbox twice, to turn it off and then on again without doing anything else
attempt to use the height tool on the annoted area. Note that despite the except_on setting, the brush can alter the area under the annotation
Switch to pencil tool and then straight back to the height tool, you get the exception

Generation

Is it possible to generate modded ores as well?

Random water placement along void layer

If you use the void layer and a ground cover layer with only one block (9: stationary water), and the two layers intersect (but doesn't overlap), water gets randomly placed in the void along the edges. Bug replicable in WorldPainter version 2.3.0.

https://gyazo.com/5033617ad0cd8361e9b00631ac1b8dec

Option to turn off default trees when using the default biome layers

I'd like to use the biome layers to add the appropriate coloring to grass and leaves, but I have custom trees to put into the map and I would prefer there not be the default MC trees. Is there any way around that as of now that I'm unaware of? (I have looked but didn't see anything) If there isn't would it be possible to add it in?

[Feature] Allow custom colors for predefined terrain types

It would be really nice if you could let users add custom colors to the predefined terrain types. A good example of this is gravel. It looks quite nice in small quantities, but it can quickly get ugly. How things are at the moment, I just have to hope that I got the right amount of gravel. The reason for this is that gravel is the same color as stone Thus I can't tell if I have a gravel mountain or just the right amount of it.

Custom terrain angles wrong

When I set the custom terrain angles for a terrain, it changes after I click okay. Reproduce: Change custom terrain angles and open it again. It should have changed.

World Painter don't import water correctly if I use map import

A while ago, I created a map with World Painter. When I was done, I used MCEdit to place some rivers, because it is very tricky to do that in World Painter, imo. When I was done, I realized that I missed some biomes at the map and so I imported the map into World Painter again. After importing the map, I noticed that my rivers were broken. They were cut into peaces, because some "water parts" were missing.

By comparing the imported map in World Painter with the actual map loaded in MCEdit, I noticed that World Painter don't import water correctly. Water still (9:0) will be loaded correctly, but if I have flowing water with different ID's than 9:0, they are not going to be imported: 9:1, 9:2, etc.

I attached some screenshots that will show the issue.
1
2
3

Indroduce a Task System in WorldPainter

My proposal for WorldPainter is to implement a task system, where a tasks are created, and run one after the other. I believe WorldPainter should have this because of this important reason:

  • Terraformers constantly have to deal with large maps (10000+ x 10000+), and therefore operations such as global operations because increasingly slow. The task system can make it so that the user (terraformer) can specify as many global operations as they want while their first operation is being processed. Then the task manager executes the tasks one by one in order. This could be a massive time saver for terraformers as they could specify multiple global operations (or other operations), and all of the specified operations will be executed one after the other.

I have started the creation of the TaskManager and Task class, and I will be making a pull request soon. I would appreciate it if no changes are made to WorldPainter for a day, so I could make a pull request WITHOUT CONFLICTS. (I still don't know how to resolve conflicts).

I would appreciate if feedback and improvements could be made on this, as I think it could make for a easier user experience. My currently progress is on my fork of WorldPainter.

Annotations are all assumed as one

I hate to make a issue report so soon after another has been fixed (the layers work fine with the latest updates), but Annotations have now become somewhat pointless.
Every time I try to use one specific annotation as a mask, it assumes all annotations are the same one.
The result is that if I import a mask that has more than 1 color of annotation in it, I cannot use it effectively. It fills all annotations at once.
This happens with both global operations and when using a brush.

I'd also like to know if there is anywhere where I can get an older version of WP?

Custom material Layermode resets thickness

I've noticed for a while now that whenever I make a new custom material and select the "layers" option, the thickness of layers is somewhat buggy.
If I set the thickness of new material layers to anything other than 3, it scales them back down close to 3 upon opening the terrain again upon re-opening the material.
Each time I re-open it, it scales it further back, usually taking no more than 2 or sometimes 3 iterations to get completely back to all layers having a thickness of 3.
This happens both in repeated layer mode and in single layer mode, regardless of further settings.

Internationalise application

Whether the official consideration of the multi-language support, if not, we talk about what language compiler language?

Flowers on schematics in custom object layers being bugged

I have a schematic with flowers and they aren't being exported in an custom object layer.

Settings:
Random rotation and mirroring
Spawn on solid land
Collide with solid blocks
Always replace underground blocks
Leaf blocks should not decay

Add descending/ascending cave options?

Allow people to pick a specific slope/angle and the cave will descend at that rate. Ex. If I pick 45 degrees, the cave layer I am painting will descend at a constant 45 degree angle. Of course I am suggesting constant rates of descent, but I would prefer that over nothing if possible.

NPE when loading worlds with combined layers with custom terrains

java.lang.NullPointerException: null
at org.pepsoft.worldpainter.App.clearCustomTerrains(App.java:4797)
at org.pepsoft.worldpainter.App.loadCustomTerrains(App.java:4811)
at org.pepsoft.worldpainter.App.setWorld(App.java:307)
at org.pepsoft.worldpainter.App.open(App.java:983)
at org.pepsoft.worldpainter.App.open(App.java:763)

[Question] How do you calculate slopes?

I'm trying to write a generator that sets blocks by the angle of the slope, but i can't seem to find it in the code. I mean the function where you can only operate over/under x degree. How exactly do you calculate the degree per block?

Custom Object Layers are Bugged

I created a WorldPainter world and I noticed this issue. I created a custom object layer consisting of trees. For some reason there are trees UNDERGROUND. I assume it though of a cave or water hole to be land and added a tree there.

2015-08-09_14 41 27

Error when exporting world

Got this error when trying to export a nether world.

java.lang.UnsupportedOperationException: null
	at org.pepsoft.worldpainter.layers.CombinedLayer.getExporter(CombinedLayer.java:130)
	at org.pepsoft.worldpainter.CustomLayersTableModel.lambda$new$0(CustomLayersTableModel.java:30)
	at java.util.TimSort.countRunAndMakeAscending(null:-1)
	at java.util.TimSort.sort(null:-1)
	at java.util.Arrays.sort(null:-1)

Here is the layer I used. Doesn't include schematics, but I doubt that's the issue.
DecorateNether.zip

Removing combined layer also removes blocks

When removing an existing layer like Pine with the right click, only the layer gets removed. However, when removing a combined layer with right click, the blocks underneath it also gets reset.

EDIT: Only seems to affect combined layers.

[Request] Mod Support for Smooth Snow

The smooth snow feature is amazing for terrain however it is currently limited to vanilla blocks which creates a challenge for terraformers who want to utilize modded snow layers with additional textures. Currently the only workaround is to make snow textures biomespecific (sand texture in desert, grass in plains, etc) or manually replace everything with WorldEdit. My suggestion is to allow for custom smooth snow layer brushes to be created using block IDs.

How this could work:

  • Smooth snow textures can be determined by their block IDs where each layer (1-8) would need to have an ID (or multiple for texture randomization) assigned to it.
  • This system would be great for rivers as you can determine what textures will be applied at a specific height (sand 1-3, mud 4-5, dirt 6-7, grass 8).
  • If ID randomization is applied to a specific layer it would create a better transition between textures at specified heights (Example mud/dirt mix at heights 5 and 6).
  • This system would also work on high deposition areas in mountains or for applying more random texture to smooth terrain.

Modded snow layer:
2017-03-12_23 33 28

Modded snow variations:
c6f7zqiwuaaypeo

Terrain showcasing smooth sand (biomespecific):
n5agazp

Terrain showcasing modded snow layer stream bank:
hs3wktn

Adding an option to make a copy of a Custom Terrain, or to delete one

#39 Referring to my issue, I would like to request a feature that allows me to make a copy of a already created Custom Terrain (CT). Sometimes I created a CT and while I am painting, I need a similar, but slightly different CT. Maybe I created a layer for a river, that contains a bit of sand and six other materials and I now want to create a CT that will contain every six materials, but no sand..
I am lazy, so why should I create a new CT with six materials and different values of occurrence, if there could be an option to just copy a existing CT.

Another request is the option to delete a CT. By right-clicking at a Custom Terrain and clicking delete, a window will open that asks for a replacement for the CT. So the CT could be replaced by Grass for instance.
Another option could be a different CT, or a annotations color.

Customize beaches

Often I find myself wanting to add something like beaches, but I can't use the WorldPainter toggle, as it might be that I want them to be made slightly differently, for example using another block. It would be nice if there was a feature that let you customize how the beaches would look like.

More scripting support

Hi Captain. Thank you for the new script descriptor stuff. If you have time, could you work on these scripting features?

  • Drop down lists - when you have to select one from a list of values
  • Material drop down lists - being able to select a block type or custom material
  • Layer drop down lists - being able to select a layer - maybe an option to only select from on-off layers or 8-bit layers
  • Biome selection thingy - either a simple drop down list or a fully fleshed out version like the biome panel in the main app
  • Text area - for inputting strings with multiple newlines
  • Label - uneditable string - a default string of null would act as a separator
  • If the default value of a file is set, ability to show the file chooser starting in the default value
  • Ability to set the default text in the original parameters box
  • Allowed number range for integers and floats
  • Ability to specify allowed file extensions when selecting a file

Thank you!

Support for minetest

sorry for my bad English

Now that that's Out Of The Way I would like to Request compatibility for minetest the free open source Minecraft like game (now you probably think it's yet another stupid Minecraft clone but it isn't minetest has a big active Community and it's made by the community like this it also has a github page, but im getting off-topic here)

It would be amazing if this can work thanks for everyone's hard work to keep worldpainter up to date!
Minetest website http://www.minetest.net

Random Intensity and rotation

When working with a texture brush, it would be neat if you could add a toggle to randomize the intensity and rotation of the brush.

Missing materials

Sometimes, when creating custom materials, there seems to be some sort of bug which results in certain blocks in the custom material not existing. The resulting effect is similar to how 1.9 blocks used in terrain would not show up in 1.8.

However, cobblestone and obsidian, the 2 blocks I have had this happen with, are definitely not new blocks.
A possible cause may be from too much importing of the custom terrain, but there seems to be no discernible pattern on which ones grow buggy.

Issues Installing on Ubuntu Linux

So I am interested in using your cool software, cause, well, it's cool. Anyway, so I went to install it, and, as many Linux users will find, the installer doesn't seem to have done anything. I then, stupidly, went and downloaded and ran the bash script you provided for installing worldpainter. Unfortunately, I had to terminate that one because I needed to shut down my machine. Now, I looked up your linux troubleshooting, and found the directory to which worldpainter had installed. I ran the command to launch. However, now I get the square startup thing infinity. Let me explain. When I run the script in that directory, it says that it is missing some parameters.

Could not load Logmanager "org.pepsoft.worldpainter.util.WPLogManager" java.lang.ClassNotFoundException: org.pepsoft.worldpainter.util.WPLogManager at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.util.logging.LogManager$1.run(LogManager.java:195) at java.util.logging.LogManager$1.run(LogManager.java:181) at java.security.AccessController.doPrivileged(Native Method) at java.util.logging.LogManager.<clinit>(LogManager.java:181) at com.install4j.runtime.installer.helper.InstallerUtil.disablePreferencesLogging(InstallerUtil.java:522) at com.install4j.runtime.installer.helper.InstallerUtil.<clinit>(InstallerUtil.java:85) at com.install4j.runtime.launcher.LauncherIntegration.checkIntegrations(LauncherIntegration.java:42) at com.install4j.runtime.launcher.Launcher.init(Launcher.java:106) at com.install4j.runtime.launcher.UnixLauncher.main(UnixLauncher.java:23) [2016-02-17 15:37:16,388] {INFO } ( org.pepsoft.worldpainter.Main) Starting WorldPainter 2.1.6 (20160207204020) [2016-02-17 15:37:16,405] {INFO } (o.p.worldpainter.Configuration) Loading configuration from /home/******/.worldpainter/config [2016-02-17 15:37:16,939] {INFO } ( org.pepsoft.worldpainter.Main) Installation ID: 9b23f8a2-1f8b-4a59-ade9-f0efd4fc9314 [2016-02-17 15:37:17,010] {INFO } ( o.p.w.plugins.WPPluginManager) Loaded plugin: DefaultLayerEditorProvider (version 2.1.6) [2016-02-17 15:37:17,010] {INFO } ( o.p.w.plugins.WPPluginManager) Loaded plugin: Default (version 2.1.6) [2016-02-17 15:37:17,012] {INFO } ( o.p.w.PrivateContextImpl) Checking for updates

Here is the full output of the terminal, up until it freezes. Now I have the square icon in the middle of my screen that cannot be moved, closed, or interacted with in any manner. I can close the terminal the process is running in to no avail. My internet activity when I check is so minimal that worldpainter can't be doing anything with it. Please help, I want to use this program. :P
~MggMuggins

NullPointerException when stale background jobs render tiles for removed tile providers

java.lang.NullPointerException: null
	at org.pepsoft.util.swing.TiledImageViewer.worldToView(TiledImageViewer.java:823)
	at org.pepsoft.util.swing.TiledImageViewer.getTileBounds(TiledImageViewer.java:1029)
	at org.pepsoft.util.swing.TiledImageViewer$TileRenderJob.run(TiledImageViewer.java:1886)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(null:-1)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(null:-1)

Allow unlimited amount of custom materials

I don't understand why the current custom material system is hardcoded, where a collection storing custom materials could just be used instead. This could allow for unlimited terrain types. (Although rare) Some terraforrmers might not have enough slots for all their custom terrain, so I think its better to change the custom materials to a list. (or a collection)

Custom Terrain Duplication

I'm working with some layered terrains, and when I'm editing one custom material, it duplicates another one after I click okay. (I don't know how to describe it very well, it should be painfully obviously after you try it for yourself.)

GUI randomly bugs out

worldpainterbug
As I use world painter sometimes the GUI decides to throw a fit and bugs out. I'm not sure why this happens. It seems to be happening at completely random times as well.

[Feature] Overlay Mask Support

Basically this would allow you to supply an image overlay (which already works) but also have an option to use that overlay as a mask. White areas would be 100%, black would be 0%, grey would be 50%, etc. You could use this as a mask for, say, terrain types and use a flow map from world machine. This would be super helpful, and would allow you to do things like add sand on erosion spots such as in a flow map. I don't really have much experience with coding, but I believe that this would not be super-hard to implement. I know that I am not the only one who wants this:

https://www.minecraftforum.net/forums/mapping-and-modding/minecraft-tools/1261257-worldpainter-v1-11-1-graphical-interactive-map?page=313#c6271

https://www.reddit.com/r/Worldpainter/comments/2cqrn5/request_use_overlay_as_mask/

https://www.reddit.com/r/Worldpainter/comments/1ycm0h/using_flow_maps_from_world_machine_in/

I hope you consider adding this feature!

Progress reporting in task bar crashes on Windows versions older than 7

java.lang.RuntimeException: Interface does not inherit from class
	at org.bridj.cpp.com.COMRuntime.error(COMRuntime.java:187)
	at org.bridj.cpp.com.COMRuntime.newInstance(COMRuntime.java:271)
	at org.bridj.cpp.com.COMRuntime.newInstance(COMRuntime.java:258)
	at org.pepsoft.util.ProgressHelper.<init>(ProgressHelper.java:19)
	at org.pepsoft.util.ProgressHelper.setProgress(ProgressHelper.java:30)
	at org.pepsoft.util.DesktopUtils.lambda$setProgress$0(DesktopUtils.java:161)
	at org.pepsoft.util.DesktopUtils$$Lambda$207/11031984.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)

Ability to mirror map

The ability to mirror a map

  • Just mirror
  • Mirror and stitch together to form a dubble mirrored map

16-bit height maps lose precision when scaled

When 16-bit height maps are imported at scales other than 100%, the last 8 bits of precision are lost. Investigate whether this kan be fixed easily, otherwise disallow scaling of 16-bit height maps in WorldPainter.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.