0
Commit Graph

65 Commits

Author SHA1 Message Date
Nicolas F
204bcd0310 Add "center" config option
This option allows you to specify your own initial center for a
tileset, which is useful if your map is extremely asymmetric or
you don't really care about what's around the spawn.

Future work needs to be done on the JS side in order to fix the
fromWorldToLatLng and friends, as they're currently off by -24 in X
and +24 in Z direction.

Closes #1350.
2019-07-06 19:06:15 +02:00
Nicolas F
e348a548b6 Initial Python 3 port
Many things work, some don't. Notably, genPOI doesn't work, and
there's some signedness comparison stuff going on in the C extension.

This also completely drops support for Python 2, as maintaining a C
extension for both Python 2 and 3 is a pain and not worth it for the
9 months that Python 2 is still going to be supported upstream.

The documentation needs to be adjusted as well.

All of the few tests we have pass, and rendering a map works, both
with a configuration file and without. We can also use optimizeimages.

Concerns #1528.
2019-03-17 17:57:07 +01:00
Nicolas F
6aaf680c8c settingsValidators: fix code style, adjust strings
Some absolute thonkers in here like two-spaces indent code. Yikes
my man.
2019-03-15 16:48:08 +01:00
Nicolas F
61ebd35240 Add WebP image format support
Since Firefox 65 added support for WebP, users may be interested
in having maps that use WebP images. Support for this is added in
this commit, along with documentation for it.

A new option, "imglossless", controls whether we write out lossless
or lossy WebP images. The generic name "imglossless" as opposed to
a more specific "webplossless" was chosen in case future image
formats we also implement also support lossless/lossy modes in the
same format (JPEG-XL? AV1 image format?).

It's an okay meme but lossy mode really falls apart on our sorts
of images on the more zoomed out composite tiles, resulting in
pretty blurry messes. Might be due to a PSNR bias in the encoder,
which is to be expected from Google.
2019-03-04 17:04:09 +01:00
Nicolas F
dd96d95b66 settingsValidators: clean up checkBadEscapes
A side-effect of these changes is that \a no longer gets shown as
'\a', but '\0x07'. Some characters, i.e. \n and \t, are still shown
as '\n' and '\t' respectively, so this comes simply down to repr()
behaviour.

However, I do believe it's worth it to get rid of that ugly code
duplication.
2017-03-24 18:29:15 +01:00
Nicolas F
8cf47935e4 Remove unused imports 2017-03-24 17:57:37 +01:00
matrixhacker
bb1c4a7b85 Updated documentation and added an additional validation check for
improperly formatted crop zones.
2014-05-12 14:47:45 -04:00
matrixhacker
b6ac54a2b6 Added the ability to specify multiple crop zones. 2014-05-09 23:44:46 -04:00
CounterPillow
6812cad596 Fix validator for empty lists (the default value)
Whoops.
2014-05-09 16:58:47 +02:00
CounterPillow
6d28942626 Clarify optimizeimg docs; add warnings
The validator will now warn if it detects that a crushed output
is fed into something that is not a crusher.

The is_crusher method of an optimizer shall return True if the
optimisation process is lossless, and does try to find optimal
encoding parameters as opposed to only removing unneeded channels
or reducing palettes.
2014-05-08 20:56:46 +02:00
CounterPillow
8817972b36 Move the check for program availability into class
We also actually execute it now. Go us!
2014-05-06 20:10:42 +02:00
CounterPillow
866c2fe064 Work around and warn if old optimizeimg definition
Before someone says this is incorrect because it only ever uses
pngcrush: The old code always used pngcrush and nothing else
anyway. This is absolutely correct and the old behaviour.

I also added a check to make sure it's a list, as some people might
forget the whole list thing.
2014-05-06 19:54:43 +02:00
CounterPillow
09477ed8a0 Rewrote image optimisation stuff.
The old one was broken anyway.
2014-03-04 00:39:59 +01:00
Andrew Chin
2ea1f061ea Stop auto-correcting incorrect slashes. Instead error, and point to our docs.
Also, improve docs slightly to say to *always* use forward slashes

See #906
2013-03-15 20:53:54 -04:00
Andrew Chin
66ff7cbcb5 Validate texturepath exists 2013-02-02 14:04:05 -05:00
Aaron Griffith
443aa84b07 updated tileset.py and genPOI.py and a few other stragglers 2013-01-06 01:00:06 -05:00
Aaron Griffith
77fff9fa25 specifying a directory name for a dimension should work now 2013-01-06 00:43:52 -05:00
Andrew Chin
a49a05a2ee Better manualPOI validator 2013-01-02 22:10:57 -05:00
CounterPillow
b13f0044e2 manualpois is now a per-render option 2012-12-31 18:54:31 +01:00
Thomas Lake
c6d7a6d8fd Fix crop validator to avoid trying to alter a tuple 2012-11-28 20:12:58 -05:00
Thomas Lake
fcfe3063c3 Add custom web assets support 2012-08-12 15:27:07 +01:00
CounterPillow
63b72aabaa Added defaultzoom config option 2012-07-15 05:53:15 +02:00
Andrew Brown
98121dd960 validated paths are run through os.path.expandvars()
Now one can use vars in config file paths, which eases the transition
from command line setups to config file setups.
2012-05-25 15:31:27 -04:00
Andrew Chin
792fcbbc0d Provide better validation error message for markers
Helps clarify #734
2012-05-14 10:03:05 -04:00
Andrew Chin
d7b3054c42 Allow zero as a valid rerenderprob 2012-05-03 00:03:08 -04:00
Andrew Chin
af8aa13615 Fix typo in previous commit 2012-05-02 20:19:02 -04:00
Richard Pastrick
5974919973 Make the rerenderprob value print a decent error since it does have to be between 0.0 and 1.0 instead of just
that it is a float.

Remove 0.0 and 1.0 as valid values
2012-05-02 16:31:30 -07:00
Andrew Chin
9508573783 Added hint about checking the docs on a bad markers validation 2012-05-01 20:31:50 -04:00
Andrew Chin
2a6769c5ac Revised syntax/method for specifying POIs 2012-04-14 22:09:12 -04:00
Richard Pastrick
ebd8b287ed Further glue for overlays. Make the validator actually validate. Also rough outlines for checking if
the render you've specified in the overlay actually exists and isn't itself.
2012-04-09 12:20:58 -07:00
Richard Pastrick
3ded0cfa9e Add validator and definition for beginnings of overlay python glue so that only the right overlays
show up for a specific render
2012-04-09 11:49:03 -07:00
aheadley
99f2cae7a8 fix configurable observer 2012-03-22 21:19:56 -04:00
Andrew Chin
6b77d54555 Reimplement signs/POIs 2012-03-11 11:44:38 -04:00
Aaron Griffith
fde63ec221 renders are now ordered according to their order in the config file 2012-03-05 13:37:05 -05:00
Andrew Brown
b852e8b1e3 Re-did the caching layer for regionset chunk caching 2012-03-03 23:56:38 -05:00
Andrew Brown
0d229a3888 don't complain if crop values go from high-low, just swap them 2012-03-01 22:05:17 -05:00
Andrew Brown
eede25d2e1 apparently xmin,zmin,xmax,zmax is more intuitive than xmin,zmin,xmax,zmax for some people 2012-02-26 21:08:03 -05:00
Andrew Brown
f43498d033 Added a "crop" feature to render subsets of worlds 2012-02-26 20:19:26 -05:00
Andrew Brown
6d19ada4e4 accept ~ in paths by calling os.path.expanduser() 2012-02-25 21:37:58 -05:00
Andrew Chin
1a1e975793 Detect poorly escaped paths 2012-02-20 21:38:00 -05:00
Andrew Brown
f8769c0a0d --forcerender, --check-tiles, and --no-tile-checks now work 2012-02-16 11:36:31 -05:00
Andrew Brown
2c412c3917 Added global defaults to config file which set renderdict defaults 2012-02-15 22:07:36 -05:00
Andrew Brown
9c0a8c01ee re-arranged config docs, relaxed validator for north direction 2012-02-15 19:18:51 -05:00
Andrew Brown
6b449da966 added int array support to nbt.py
(untested) Also removed an extra import that I forgot about earlier.
2012-02-15 18:20:57 -05:00
Andrew Brown
f5d07fa597 Added a "did you mean" feature for config parsing 2012-02-14 21:12:15 -05:00
Andrew Brown
aaf8e1d7cb Changed "worldname" to "world" in configfile
Also brought tests up to date. All tests pass now.
2012-02-14 20:39:05 -05:00
Andrew Brown
e7995e19b2 config parser ignores extra items in config files now 2012-02-11 16:02:15 -05:00
Andrew Brown
50ebdd7f2c clarified some comments and conformed some function names 2012-02-05 00:20:58 -05:00
Andrew Brown
324100206b changed the semantics of required and default in settings definitions.
I think it makes more logical sense now. Essentially, the default is
always used if the user doesn't specify a value. If there is no user
specified value and the default is None, then the action depends on the
value of required. required=True means raise an error. required=False
means silently omit that setting.
2012-02-04 22:06:29 -05:00
Andrew Brown
6d95d80a73 overhaul to configParser. Parsing config works now. 2012-02-04 21:23:44 -05:00