0

Merge branch 'master' into smooth-lighting

This commit is contained in:
Aaron Griffith
2011-10-24 21:03:31 -04:00
13 changed files with 655 additions and 500 deletions

View File

@@ -3,63 +3,41 @@ Minecraft Overviewer
==================== ====================
By Andrew Brown and contributors (see CONTRIBUTORS.rst). By Andrew Brown and contributors (see CONTRIBUTORS.rst).
http://github.com/overviewer/Minecraft-Overviewer Documentation:
http://docs.overviewer.org
Generates large resolution images of a Minecraft map. Github code repository:
http://github.com/overviewer/Minecraft-Overviewer
In short, this program reads in Minecraft world files and renders very large
resolution images that can be viewed through a Google Maps interface. It
performs a similar function to the existing Minecraft Cartographer program but
with a slightly different goal in mind: to generate large resolution images
such that one can zoom in and see details.
See some examples here! The Minecraft Overviewer is a command-line tool for rendering high-resolution
http://github.com/overviewer/Minecraft-Overviewer/wiki/Map-examples maps of Minecraft worlds. It generates a set of static html and image files and
uses the Google Maps API to display a nice interactive map.
Further documentation may be found at The Overviewer has been in active development for over a year and has many
https://github.com/overviewer/Minecraft-Overviewer/wiki/Documentation features, including day and night lighting, cave rendering, mineral overlays,
and many plugins for even more features! It is written mostly in Python with
critical sections in C as an extension module.
To contact the developers and other users, go to the site at the top of this Getting Started
README, or go to #overviewer on irc.freenode.net. ---------------
All documentation has been consolidated at our documentation site. For
information on downloading, compiling, installing, and running The Overviewer,
visit the docs site.
Features http://docs.overviewer.org
========
* Renders large resolution images of your world, such that you can zoom in and A few helpful tips are below, but everyone is going to want to visit the
see details documentation site for the most up-to-date and complete set of instructions!
* Customizable textures! Pulls textures straight from your installed texture Alternatively, the docs are also in the docs/ directory of the source download.
pack! Look in there if you can't access the docs site.
* Outputs a Google Map powered interface that is memory efficient, both in Examples
generating and viewing. --------
See examples of The Overviewer in action!
* Renders efficiently in parallel, using as many simultaneous processes as you https://github.com/overviewer/Minecraft-Overviewer/wiki/Map-examples
want!
* Utilizes caching to speed up subsequent renderings of your world.
* Throw the output directory up on a web server to share your Minecraft world
with everyone!
Requirements
============
This program requires:
* Python 2.6 or 2.7 <http://python.org/download/>
* PIL (Python Imaging Library) <http://www.pythonware.com/products/pil/>
* Numpy <http://scipy.org/Download>
* Either the Minecraft client installed, or a terrain.png file. See the
`Textures`_ section below.
* A C compiler.
If you download a binary package, then some or all of these may not be required.
Using the Overviewer
====================
For a quick-start guide, see
https://github.com/overviewer/Minecraft-Overviewer/wiki/Quick-Start-Guide
Disclaimers Disclaimers
----------- -----------
@@ -78,204 +56,6 @@ directory and it will only update the tiles it needs to.
There are probably some other minor glitches along the way, hopefully they will There are probably some other minor glitches along the way, hopefully they will
be fixed soon. See the `Bugs`_ section below. be fixed soon. See the `Bugs`_ section below.
Textures
--------
The Overviewer uses actual textures to render your world. However, I don't
include textures in the package. You will need to do one of two things before
you can use the Overviewer:
* Make sure the Minecraft client is installed. The Overviewer will find the
installed minecraft.jar and extract the textures from it.
* Install a texture file yourself. This file is called "terrain.png" and is
normally found in your minecraft.jar file (not "Minecraft.jar", the launcher,
but rather the file that's downloaded by the launcher and installed into a
hidden directory). You can also get this file from any of the third party
texture packs out there.
Biome Tinting
-------------
With the Halloween update, biomes were added to Minecraft. In order to get
biome-accurate tinting, the Overviewer can use biome data produced by the
Minecraft Biome Extractor tool. This tool can be downloaded from:
http://www.minecraftforum.net/viewtopic.php?f=25&t=80902
If the "biomes" folder is present in the world directory, then the Overviewer
will use the biome data to tint grass and leaves automatically -- there is no
command line option to turn this feature on. If this folder does not exist,
then the Overviewer will use a static tinting for grass and leaves.
Compiling the C Extension
-------------------------
The C Extension for Overviewer is no longer optional. In addition to
providing a higher quality image compositing function that looks better on
maps with lighting enabled, it now does the bulk of the rendering.
If you downloaded Overviewer as a binary package, this extension will already
be compiled for you.
If you have a C compiler and the Python development libraries set up, you can
compile this extension like this::
python setup.py build
Note that you need the development headers for your version of Python installed,
look for a package named 'python-dev', 'python-devel' or similar. Also, some
Python distributions do not install "Imaging.h" and "ImPlatform.h" properly. If
you get errors complaining about them, you can get them from the PIL source, or
at <http://svn.effbot.org/public/tags/pil-1.1.7/libImaging/>. Just put them in
the same directory as "overviewer.py".
For more detailed instructions, check the wiki:
https://github.com/overviewer/Minecraft-Overviewer/wiki/Build-Instructions
Running
-------
To generate a set of Google Map tiles, use the overviewer.py script like this::
python overviewer.py [OPTIONS] <World # / Name / Path to World> <Output Directory>
The output directory will be created if it doesn't exist. This will generate a
set of image tiles for your world in the directory you choose. When it's done,
you will find an index.html file in the same directory that you can use to view
it.
Options
-------
-h, --help
Shows the list of options and exits
--advanced-help
Display help - including advanced options
-p PROCS, --processes=PROCS
Adding the "-p" option will utilize more cores during processing. This
can speed up rendering quite a bit. The default is set to the same
number of cores in your computer, but you can adjust it.
Example to run 5 worker processes in parallel::
python overviewer.py -p 5 <Path to World> <Output Directory>
-d, --delete
This option changes the mode of execution. No tiles are rendered, and
instead, files are deleted.
*Note*: Currently only the overviewer.dat file is deleted when you run with
this option
--forcerender
Force re-rendering the entire map (or the given regionlist). This
is an easier way to completely re-render without deleting the map.
--regionlist=regionlist
Use this option to specify manually a list of regions to consider for
updating. Without this option, every chunk in every region is checked for
update and if necessary, re-rendered. If this option points to a file
containing, 1 per line, the path to a region data file, then only those
in the list will be considered for update.
It's up to you to build such a list. On Linux or Mac, try using the "find"
command. You could, for example, output all region files that are older than
a certain date. Or perhaps you can incrementally update your map by passing
in a subset of regions each time. It's up to you!
--rendermodes=MODE1[,MODE2,...]
Use this option to specify which render mode to use, such as lighting or
night. Use --list-rendermodes to get a list of available rendermodes, and
a short description of each. If you provide more than one mode (separated
by commas), Overviewer will render all of them at once, and provide a
toggle on the resulting map to switch between them.
If for some reason commas do not work for your shell (like if you're using
Powershell on Windows), you can also use a colon ':' or a forward slash '/'
to separate the modes.
--list-rendermodes
List the available render modes, and a short description of each.
--north-direction=NORTH_DIRECTION
Specifies which corner of the screen north will point to.
Valid options are: lower-left, upper-left, upper-right, lower-right.
If you do not specify this option, it will default to whatever direction
the existing map uses. For new maps, it defaults to lower-left for
historical reasons.
--settings=PATH
Use this option to load settings from a file. The format of this file is
given below.
Settings
--------
You can optionally store settings in a file named settings.py (or really,
anything you want). It is a regular python script, so you can use any python
functions or modules you want. To use a settings file, use the --settings
command line option.
For a sample settings file, look at 'sample.settings.py'. Note that this file
is not meant to be used directly, but instead it should be used as a
collection of examples to guide writing your own.
Here's a (possibly incomplete) list of available settings, which are available
in settings.py. Note that you can also set command-line options in a similar
way.
imgformat=FORMAT
Set the output image format used for the tiles. The default is 'png',
but 'jpg' is also supported.
zoom=ZOOM
The Overviewer by default will detect how many zoom levels are required
to show your entire map. This option sets it manually.
*You do not normally need to set this option!*
This is equivalent to setting the dimensions of the highest zoom level. It
does not actually change how the map is rendered, but rather *how much of
the map is rendered.* Setting this option too low *will crop your map.*
(Calling this option "zoom" may be a bit misleading, I know)
To be precise, it sets the width and height of the highest zoom level, in
tiles. A zoom level of z means the highest zoom level of your map will be
2^z by 2^z tiles.
This option map be useful if you have some outlier chunks causing your map
to be too large, or you want to render a smaller portion of your map,
instead of rendering everything.
Remember that each additional zoom level adds 4 times as many tiles as
the last. This can add up fast, zoom level 10 has over a million tiles.
Tiles with no content will not be rendered, but they still take a small
amount of time to process.
web_assets_hook
This option lets you define a function to run after the web assets have
been copied into the output directory, but before any tile rendering takes
place. This is an ideal time to do any custom postprocessing for
markers.js or other web assets.
This function should accept one argument: a QuadtreeGen object.
web_assets_path
This option lets you provide alternative web assets to use when
rendering. The contents of this folder will be copied into the output folder
during render, and will overwrite any default files already copied by
Overviewer. See the web_assets folder included with Overviewer for the
default assets.
textures_path
This is like web_assets_path, but instead it provides an alternative texture
source. Overviewer looks in here for terrain.png and other textures before
it looks anywhere else.
north_direction
Specifies which corner of the screen north will point to.
Valid options are: lower-left, upper-left, upper-right, lower-right.
Viewing the Results Viewing the Results
------------------- -------------------
Within the output directory you will find two things: an index.html file, and a Within the output directory you will find two things: an index.html file, and a
@@ -290,44 +70,12 @@ however, bound by the Google Maps API terms of service.
http://code.google.com/apis/maps/terms.html http://code.google.com/apis/maps/terms.html
Crushing the Output Tiles
-------------------------
Image files taking too much disk space? Try using pngcrush. On Linux and
probably Mac, if you have pngcrush installed, this command will go and crush
all your images in the given destination. This took the total disk usage of the
render for my world from 85M to 67M.
::
find /path/to/destination -name "*.png" -exec pngcrush {} {}.crush \; -exec mv {}.crush {} \;
Or if you prefer a more parallel solution, try something like this::
find /path/to/destination -print0 | xargs -0 -n 1 -P <nr_procs> sh -c 'pngcrush $0 temp.$$ && mv temp.$$ $0'
If you're on Windows, I've gotten word that this command line snippet works
provided pngout is installed and on your path. Note that the % symbols will
need to be doubled up if this is in a batch file.
::
FOR /R c:\path\to\tiles\folder %v IN (*.png) DO pngout %v /y
Bugs Bugs
==== ====
This program has bugs. They are mostly minor things, I wouldn't have released a
completely useless program. However, there are a number of things that I want
to fix or improve.
For a current list of issues, visit For a current list of issues, visit
http://github.com/overviewer/Minecraft-Overviewer/issues https://github.com/overviewer/Minecraft-Overviewer/issues
Feel free to comment on issues, report new issues, and vote on issues that are Feel free to comment on issues, report new issues, and vote on issues that are
important to you, so I can prioritize accordingly. important to you.
An incomplete list of things I want to do soon is:
* Improve efficiency
* Some kind of graphical interface.

View File

@@ -3,10 +3,10 @@ Frequently Asked Questions
========================== ==========================
**The full map doesn't display even when fully zoomed out!** **The full map doesn't display even when fully zoomed out!**
Are you using the ``-z`` or ``--zoom`` option on your commandline or Are you using the :option:`-z` or :option:`--zoom <-z>` option on your commandline or
in settings.py? If so, try removing it, or increasing the value you set. in settings.py? If so, try removing it, or increasing the value you set.
It's quite likely you don't need it at all. See the documentation for the It's quite likely you don't need it at all. See the documentation for the
:ref:`zoom <zoom>` option. :option:`zoom <-z>` option.
**You've added a few feature, but it's not showing up on my map!** **You've added a few feature, but it's not showing up on my map!**
Some new features will only show up in newly-rendered areas. Use the Some new features will only show up in newly-rendered areas. Use the

View File

@@ -1,3 +1,7 @@
..
Hey! You! Read these docs at http://docs.overviewer.org
Go there now!
======================== ========================
The Minecraft Overviewer The Minecraft Overviewer
======================== ========================
@@ -17,9 +21,45 @@ For a simple example of what your renders will look like, head over to `The
"Exmaple" Map <http://overviewer.org/example/>`_. For more user-contributed "Exmaple" Map <http://overviewer.org/example/>`_. For more user-contributed
examples, see `The Example Wiki Page <https://github.com/overviewer/Minecraft-Overviewer/wiki/Map-examples>`_. examples, see `The Example Wiki Page <https://github.com/overviewer/Minecraft-Overviewer/wiki/Map-examples>`_.
Download Features
======== ========
* Renders large resolution images of your world, such that you can zoom in and
see details
* Customizable textures! Pulls textures straight from your installed texture
pack!
* Outputs a Google Map powered interface that is memory efficient, both in
generating and viewing.
* Renders efficiently in parallel, using as many simultaneous processes as you
want!
* Utilizes caching to speed up subsequent renderings of your world.
* Throw the output directory up on a web server to share your Minecraft world
with everyone!
Requirements
============
This is a quick list of what's required to run The Overviewer. It runs on
Windows, Mac, and Linux as long as you have these software packages installed:
* Python 2.6 or 2.7
* PIL (Python Imaging Library)
* Numpy
* Either a Minecraft Client installed or a terrain.png for the textures.
There are additional requirements for compiling it. More details are available
in either the :doc:`Building <building>` or :doc:`Installing <installing>` pages.
Getting Started
===============
The Overviewer works with Linux, Mac, and Windows! We provide Windows and Debian The Overviewer works with Linux, Mac, and Windows! We provide Windows and Debian
built executables for your convenience. Find them as well as the full sources on built executables for your convenience. Find them as well as the full sources on
our `Github Homepage`_. our `Github Homepage`_.
@@ -35,10 +75,11 @@ bad)**, head to the :doc:`Building <building>` page.
Help Help
==== ====
**IF YOU NEED HELP COMPILING OR RUNNING THE OVERVIEWER** feel free to pop in
IRC: #overviewer on freenode. Not familiar with IRC? `Use the web client **IF YOU NEED HELP COMPILING OR RUNNING THE OVERVIEWER** feel free to chat with
<http://webchat.freenode.net/?channels=overviewer>`_. There's usually someone on us live in IRC: #overviewer on Freenode. There's usually someone on there that
there that can help you out. can help you out. Not familiar with IRC? `Use the web client
<http://webchat.freenode.net/?channels=overviewer>`_.
If you think you've found a bug or other issue, file an issue on our `Issue If you think you've found a bug or other issue, file an issue on our `Issue
Tracker <https://github.com/overviewer/Minecraft-Overviewer/issues>`_. Filing or Tracker <https://github.com/overviewer/Minecraft-Overviewer/issues>`_. Filing or

View File

@@ -1,6 +1,22 @@
======= ====================
Options Settings and Options
======= ====================
Overviewer settings can be set in two places, on the command line when you run
the overviewer, or in a settings file. You specify a settings file to use with
the :option:`--settings` command line option.
.. note::
Any command line option can optionally be set in the settings file. However,
there are some settings that can only be set in the settings file.
.. note::
Some options go by different names on the command line and the settings
file. Those are noted in bold below.
The first section of this document covers command line options. The second part
covers the more advanced ways of customizing The Overviewer using settings
files.
.. contents:: .. contents::
:local: :local:
@@ -18,23 +34,13 @@ Command line options
Useful Options Useful Options
-------------- --------------
.. cmdoption:: --rendermodes <MODE1>[,MODE2,...]
Use this option to specify which render mode to use, such as lighting or .. cmdoption:: --settings <PATH>
night. Use --list-rendermodes to get a list of available rendermodes, and
a short description of each. If you provide more than one mode (separated
by commas), Overviewer will render all of them at once, and provide a
toggle on the resulting map to switch between them.
If for some reason commas do not work for your shell (like if you're using Use this option to load settings from a file. For more information see the
Powershell on Windows), you can also use a colon ':' or a forward slash '/' `Settings File`_ section below.
to separate the modes.
See the `Render Modes`_ section for more information. **Not available in settings file (duh)**
.. cmdoption:: --list-rendermodes
List the available render modes, and a short description of each.
.. cmdoption:: --north-direction <NORTH_DIRECTION> .. cmdoption:: --north-direction <NORTH_DIRECTION>
@@ -44,95 +50,346 @@ Useful Options
the existing map uses. For new maps, it defaults to lower-left for the existing map uses. For new maps, it defaults to lower-left for
historical reasons. historical reasons.
.. cmdoption:: --settings <PATH> .. note::
We define cardinal directions by the sun in game; the sun rises in the
East and sets in the West.
Use this option to load settings from a file. For more information see the **Settings file:**
`Settings File`_ section below. Option name: ``north_direction``
Format: One of the above strings.
.. cmdoption:: --rendermodes <MODE1>[,MODE2,...]
Use this option to specify which render mode to use, such as lighting or
night. Use :option:`--list-rendermodes` to get a list of available
rendermodes, and a short description of each. If you provide more than one
mode (separated by commas), Overviewer will render all of them at once, and
provide a toggle on the resulting map to switch between them.
If for some reason commas do not work for your shell (like if you're using
Powershell on Windows), you can also use a colon ':' or a forward slash '/'
to separate the modes.
Incomplete list of common render-modes for your convenience:
* normal
* lighting
* night
Example::
./overviewer.py --rendermodes=lighting,night /opt/server/world /opt/map
**Settings file:**
Option name: ``rendermode`` **Note the lack of an s**
Format: a list of strings.
Default: only render the normal mode
See the `Render Modes`_ section for more information.
.. cmdoption:: --list-rendermodes
List the available render modes, and a short description of each, and exit.
**Not available in settings file**
Less Useful Options Less Useful Options
------------------- -------------------
.. cmdoption:: -p <PROCS>, --processes <PROCS>
Adding the "-p" option will utilize more cores during processing. This
can speed up rendering quite a bit. The default is set to the same
number of cores in your computer, but you can adjust it.
Example to run 5 worker processes in parallel::
python overviewer.py -p 5 <Path to World> <Output Directory>
.. cmdoption:: -d, --delete
This option changes the mode of execution. No tiles are rendered, and
instead, files are deleted.
*Note*: Currently only the overviewer.dat file is deleted when you run with
this option
.. cmdoption:: --forcerender
Force re-rendering the entire map (or the given regionlist). This
is an easier way to completely re-render without deleting the map.
.. cmdoption:: --regionlist <regionlist>
Use this option to specify manually a list of regions to consider for
updating. Without this option, every chunk in every region is checked for
update and if necessary, re-rendered. If this option points to a file
containing, 1 per line, the path to a region data file, then only those
in the list will be considered for update.
It's up to you to build such a list. On Linux or Mac, try using the "find"
command. You could, for example, output all region files that are older than
a certain date. Or perhaps you can incrementally update your map by passing
in a subset of regions each time. It's up to you!
.. cmdoption:: -z <zoom>, --zoom <zoom>
See the :ref:`zoom <zoom>` section below.
.. cmdoption:: --bg-color <color> .. cmdoption:: --bg-color <color>
Configures the background color for the Google Map output. Specify in Configures the background color for the Google Map output. Specify in
#RRGGBB format. #RRGGBB format.
*This list is currently incomplete. Use the* :option:`--help <-h>` *and* **Settings file:**
:option:`--advanced-help` *options to see the complete list of accepted command Option name: ``bg_color``
line options.*
Settings File Format: A string in the above format.
=============
You can optionally store settings in a file named settings.py (or really, Default: "#1A1A1A"
anything you want). It is a regular python script, so you can use any python
functions or modules you want. To use a settings file, use the --settings
command line option.
For a sample settings file, look at 'sample.settings.py'. Note that this file .. cmdoption:: --changelist <filename>
is not meant to be used directly, but instead it should be used as a
collection of examples to guide writing your own.
Here's a (possibly incomplete) list of available settings, which are available Outputs a list of changed tiles to the named file. If the file doesn't
in settings.py. Note that you can also set command-line options in a similar exist, it is created. If it does exist, its contents are overwritten.
way.
imgformat=FORMAT This could be useful for example in conjunction with a script to upload only
Set the output image format used for the tiles. The default is 'png', changed tiles to your web server.
but 'jpg' is also supported.
.. _zoom: **Settings file:**
Option name: ``changelist``
zoom=ZOOM Format: String (path plus filename)
The Overviewer by default will detect how many zoom levels are required
to show your entire map. This option sets it manually.
*You do not normally need to set this option!* Default: Not specified (no changelist outputted)
This is equivalent to setting the dimensions of the highest zoom level. It .. cmdoption:: --changelist-format <format>
does not actually change how the map is rendered, but rather *how much of
the map is rendered.* Setting this option too low *will crop your map.* Chooses absolute or relative paths for the output with the
(Calling this option "zoom" may be a bit misleading, I know) :option:`--changelist` option. Valid values for format are "relative" or
"absolute".
**Settings file:**
Option name: ``changelist_format``
Format: A string (one of the above)
Default: "relative"
.. cmdoption:: --check-terrain
When this option appears on the command line, Overviewer prints the location
and hash of the terrain.png it will use, and then exits.
This is useful for debugging terrain.png path problems, especially with
:option:`--textures-path`. Use this to see what terrain.png your current
setup has selected.
See the :ref:`installing-textures` section for an example.
**Not available in settings file**
.. cmdoption:: --display-config
Display the configuration parameters and exit. Doesn't render the map. This
is useful to help validate a configuration setup.
**Not available in settings file**
.. cmdoption:: --forcerender
Force re-rendering the entire map (or the given regionlist). This
is an easier way to completely re-render without deleting the map.
This is useful if you change texture packs and want to re-render everything
in the new textures, or if you're changing the :option:`--north-direction`.
**Settings file:**
Option name: ``forcerender``
Format: A boolean
Default: False
.. cmdoption:: --imgformat <format>
Specifies the output format for the tiles. Currently supported options are
"png" or "jpg".
**Settings file:**
Option name: ``imgformat``
Format: A string, either "png" or "jpg"
Default: "png"
.. cmdoption:: --imgquality <quality>
When using ":option:`--imgformat` jpg", this specifies the jpeg quality
parameter. This can help save disk space for larger maps.
For saving space with pngs, see :option:`--optimize-img`
**Settings file:**
Option name: ``imgquality``
Format: An integer 1-100
Default: 95
.. cmdoption:: --no-signs
Doesn't output signs to markers.js. This has the effect of disabling signs
on your map.
**Settings file:**
Option name: ``nosigns``
Format: Boolean
Default: False
.. cmdoption:: --optimize-img <level>
When using ":option:`--imgformat` png" (the default), this performs file
size optimizations on the output. The level parameter is an integer
specifying one of the following:
1. Run pngcrush on all tiles
2. Run pngcrush plus advdef on all tiles
3. Run pngcrush plus advdef with more aggressive settings.
These options may double the time or worse it takes to render your map, and
can be expected to give around 19-23% reduction in file size.
These options also require the corresponding program(s) installed and in
your system path ($PATH or %PATH% environment variable)
**Settings file:**
Option name: ``optimizeimg``
Format: an integer
Default: not set (no optimization)
.. cmdoption:: -p <procs>, --processes <procs>
On multi-cored or multi-processor machines, The Overviewer will perform its
work on *all* cores by default. If you want to manually specify how many
workers to run in parallel, use this option.
Example to run 5 worker processes in parallel::
overviewer.py -p 5 <Path to World> <Output Directory>
**Settings file:**
Option name: ``procs``
Format: an integer.
Default: ``multiprocessing.cpu_count()``
.. cmdoption:: -q, --quiet
Prints less output. You can specify this multiple times.
**Settings file:**
Option name: ``quiet``
Format: an integer
Default: 0
.. cmdoption:: --regionlist <regionlist>
Use this option to specify manually a list of regions to consider for
updating. In normal operation, every chunk in every region is checked for
update and if necessary, re-rendered. With this option, only the chunks in
the specified regions are checked.
This option should name a file containing, 1 per line, the path to the
region files to be considered for update.
It's up to you to build such a list. On Linux or Mac, try using the "find"
command. You could, for example, output all region files that are older than
a certain date. Or perhaps you can incrementally update your map by passing
in a subset of regions each time. It's up to you!
**Settings file:**
Option name: ``regionlist``
Format: A string representing the region list file.
Default: Scan all region files.
.. note::
See sample.settings.py for an example on how to build a region list
file.
.. cmdoption:: --skip-js
Skip the generation and output of markers.js and regions.js to the output
directory.
**Settings file:**
Option name: ``skipjs``
Format: Boolean
Default: False
.. cmdoption:: --textures-path <path>
Use this option to specify an alternate terrain.png to use for textures when
rendering a world. ``path`` specifies the **containing directory** of
terrain.png.
The Overviewer will look for terrain.png in the following places in this
order: path specified by this option, the program's directory, the
overviewer_core/data/textures directory within the source directory, the
default textures that come with Minecraft if it's installed.
.. note::
If you installed Overviewer from the Debian package or chose to install
the overviewer from source (``python setup.py install``), then there
isn't a source directory; this option may be necessary to specify
non-default textures.
If you're having trouble getting The Overviewer to recognize your textures,
see the :option:`--check-terrain` option.
Also see the :ref:`installing-textures` section of the documentation.
**Settings file:**
Option name: ``textures_path``
Format: A string (path to a dir with a terrain.png)
Default: None
.. cmdoption:: -v, --verbose
Prints more output. You can specify this multiple times.
**Settings file:**
Option name: ``verbose``
Format: an integer
Default: 0
.. cmdoption:: -V, --version
Displays the version information and exits
**Not available in settings file**
.. cmdoption:: --web-assets-path <path>
When The Overviewer runs, it copies the files from the web_assets directory
to the destination directory. If you wish to override a file with your own,
for example, to make changes, you may put your modified copies in your own
directory and specify the directory with this option.
Files in the folder specified by ``path`` will override files from the
web_assets directory, letting you customize the files.
If you're running from source and are comfortable merging with Git, it may
be better to edit the web_assets directly. If we update one of the files,
you can use Git to merge in our changes with yours.
If, however, you do not like Git, and don't mind having to manually update
or merge web assets (or don't care for web asset updates at all), then copy
all the web assets to a directory of your own and use this option.
See the :ref:`web-assets` section for more info on customizing your web
assets.
**Settings file:**
Option name: ``web_assets_path``
Format: A string (path to a directory to use for custom web assets)
Default: Not set (no additional web assets used)
.. cmdoption:: -z <zoom>, --zoom <zoom>
.. warning::
This option does not do what you think it does. You almost certainly do
not want to set this.
This option effectively sets *how far the map can be zoomed out*. The
Overviewer will by default determine how many *zoom levels* your map needs
to show the entire map. This option overrides that; setting this option
lower than automatically determined will *crop your map* and parts will be
cut off. (We acknowledge that name zoom is misleading)
To be precise, it sets the width and height of the highest zoom level, in To be precise, it sets the width and height of the highest zoom level, in
tiles. A zoom level of z means the highest zoom level of your map will be tiles. A zoom level of z means the highest zoom level of your map will be
@@ -142,43 +399,100 @@ zoom=ZOOM
to be too large, or you want to render a smaller portion of your map, to be too large, or you want to render a smaller portion of your map,
instead of rendering everything. instead of rendering everything.
Remember that each additional zoom level adds 4 times as many tiles as **If you are getting a "your map is waaaay too big" error** then this option
the last. This can add up fast, zoom level 10 has over a million tiles. may help you render your map. That error is unlikely in naturally generated
Tiles with no content will not be rendered, but they still take a small worlds, but some really giant worlds may still cross the threshold. The
amount of time to process. Overviewer will refuse to automatically render maps that require zoom level
15 and above, so if you get this error, try specifying ``--zoom 15``. If
your map is still cut off around the edges, increase the zoom level by 1 and
try again.
**Settings file:**
Option name: ``zoom``
Format: An integer.
Default: Automatically calculated from the world size.
.. note::
There are **more settings** that cannot be specified on the command line.
See the section below!
Settings File
=============
You can optionally store settings in a file named settings.py (or really,
anything you want). It is a regular python script, so you can use any python
functions or modules you want. To use a settings file, use the
:option:`--settings` command line option when you run the Overviewer.
For a sample settings file, look at 'sample.settings.py'. Note that this file is
not meant to be used directly, but instead it should be used as a collection of
examples to guide writing your own. It contains a number of examples to get you
started, but you almost certainly don't want to use it as-is.
You can specify *any of the above* options in your settings file *in addition to
the ones documented below*. For the command-line options, find its listed
"Option name" which is the Python identifier you will use. For example, if you
wanted to specify :option:`--bg-color`, you would look and see its option name
is "bg_color" (note the underscore) and you would put this line in your settings
file::
bg_color = "#000000"
Settings file options
---------------------
In addition to the `Command line options`_, you can specify these options.
.. describe:: web_assets_hook
web_assets_hook
This option lets you define a function to run after the web assets have This option lets you define a function to run after the web assets have
been copied into the output directory, but before any tile rendering takes been copied into the output directory, but before any tile rendering takes
place. This is an ideal time to do any custom postprocessing for place. This is an ideal time to do any custom postprocessing for
markers.js or other web assets. markers.js or other web assets.
This function should accept one argument: a QuadtreeGen object. Set this identifier to a Python *function object* to be called.
web_assets_path This function should accept one argument: a
This option lets you provide alternative web assets to use when :class:`overviewer_core.googlemap.MapGen` object.
rendering. The contents of this folder will be copied into the output folder
during render, and will overwrite any default files already copied by
Overviewer. See the web_assets folder included with Overviewer for the
default assets.
textures_path .. warning::
This is like web_assets_path, but instead it provides an alternative texture
source. Overviewer looks in here for terrain.png and other textures before
it looks anywhere else.
north_direction Currently, this option only works if the :option:`--skip-js` option is
Specifies which corner of the screen north will point to. set
Valid options are: lower-left, upper-left, upper-right, lower-right.
.. describe:: rendermode_options
Different rendermodes have different options. This option is a dictionary
that maps rendermode names to option dictionaries.
See the `Render Modes`_ section for relevant options to the render modes.
.. describe:: custom_rendermodes
You can also specify your own custom rendermodes with this option. This is a
dictionary mapping your rendermode name to a dictionary of parameters to
use.
See the `Defining Custom Rendermodes`_ section for more information.
Render Modes Render Modes
============ ============
.. _rendermode-options: https://github.com/agrif/Minecraft-Overviewer/tree/rendermode-options A rendermode is a unique way of rendering a Minecraft map. The normal render
mode was the original, and we've since added a render mode with proper lighting,
a rendermode for nighttime lighting, and we have a rendermode that only shows
caves.
Rendermode options are a new way of changing how existing render modes Beyond that, there are also render "overlays" that can be toggled on or off,
work, by passing in values at startup. For example, you can change how overlaying a proper rendering. These can be used to show where minerals are and
dark the 'night' mode is, or enable lighting in 'cave' mode. such.
Specify your rendermodes with :option:`--rendermodes`. You can get a list of all
rendermodes installed with :option:`--list-rendermodes`.
Options and Rendermode Inheritance Options and Rendermode Inheritance
---------------------------------- ----------------------------------
@@ -211,9 +525,8 @@ relationships. Right now, it looks something like this:
How to Set Options How to Set Options
------------------ ------------------
Available options for each mode are listed below, but once you know Available options for each mode are listed below, but once you know what to set
what to set you'll have to edit *settings.py* to set them. Here's an you'll have to edit your settings file to set them. Here's an example::
example::
rendermode_options = { rendermode_options = {
'lighting': { 'lighting': {
@@ -231,39 +544,6 @@ you want to apply the options to, then a dictionary containing each option. So
in this example, 'lighting' mode has 'edge_opacity' set to 0.5, and 'cave' mode in this example, 'lighting' mode has 'edge_opacity' set to 0.5, and 'cave' mode
has 'lighting' turned on and 'depth_tinting' turned off. has 'lighting' turned on and 'depth_tinting' turned off.
Defining Custom Rendermodes
---------------------------
Sometimes, you want to render two map layers with the same mode, but with two
different sets of options. For example, you way want to render a cave mode with
depth tinting, and another cave mode with lighting and no depth tinting. In this
case, you will want to define a 'custom' render mode that inherits from 'cave'
and uses the options you want. For example::
custom_rendermodes = {
'cave-lighting': {
'parent': 'cave',
'label': 'Lit Cave',
'description': 'cave mode, with lighting',
'options': {
'depth_tinting': False,
'lighting': True,
}
},
}
rendermode = ['cave', 'cave-lighting']
Each entry in ``custom_rendermodes`` starts with the mode name, and is followed
by a dictionary of mode information, such as the parent mode and description
(for your reference), a label for use on the map, as well as the options to
apply.
Every custom rendermode you define is on exactly equal footing with the built-in
modes: you can put them in the ``rendermode`` list to render them, you can
inherit from them in other custom modes, and you can even add options to them
with ``rendermode_options``, though that's a little redundant.
Option Listing Option Listing
-------------- --------------
@@ -311,6 +591,39 @@ color.
See the *settings.py* example below for an example usage of **minerals**. See the *settings.py* example below for an example usage of **minerals**.
Defining Custom Rendermodes
---------------------------
Sometimes, you want to render two map layers with the same mode, but with two
different sets of options. For example, you way want to render a cave mode with
depth tinting, and another cave mode with lighting and no depth tinting. In this
case, you will want to define a 'custom' render mode that inherits from 'cave'
and uses the options you want. For example::
custom_rendermodes = {
'cave-lighting': {
'parent': 'cave',
'label': 'Lit Cave',
'description': 'cave mode, with lighting',
'options': {
'depth_tinting': False,
'lighting': True,
}
},
}
rendermode = ['cave', 'cave-lighting']
Each entry in ``custom_rendermodes`` starts with the mode name, and is followed
by a dictionary of mode information, such as the parent mode and description
(for your reference), a label for use on the map, as well as the options to
apply.
Every custom rendermode you define is on exactly equal footing with the built-in
modes: you can put them in the ``rendermode`` list to render them, you can
inherit from them in other custom modes, and you can even add options to them
with ``rendermode_options``, though that's a little redundant.
Example *settings.py* Example *settings.py*
--------------------- ---------------------
@@ -351,3 +664,36 @@ tracks instead of ore.
# 'night' : {'shade_strength' : 0.5}, # 'night' : {'shade_strength' : 0.5},
# 'cave' : {'only_lit' : True, 'lighting' : True, 'depth_tinting' : False}, # 'cave' : {'only_lit' : True, 'lighting' : True, 'depth_tinting' : False},
} }
.. _web-assets:
Customizing Web Assets
======================
The web assets are the static html files stored in
overviewer_core/data/web_assets that are copied to the destination directory
when you run the Overviewer. Some of these files are actually templates and
certain parameters are set at render time depending on various factors. Others
are just straight up copied.
You should not typically need to edit the files in here, but if you like
customizing things or want to edit them for whatever reason, here's two ways:
1. If you're not afraid of Git and you're running the Overviewer from a Git
clone of our repository, you can edit the files in
overviewer_core/data/web_assets directly. When you pull in changes from us,
you will have to merge, but using Git should make this relatively painless.
2. Otherwise, the recommended way is to use the :option:`--web-assets-path`
option. Use this option and point it to a directory of customized web assets
to copy.
Files from the original web_assets directory are still copied, but any files
in the custom web assets directory will override the originals. This way you
can customize a few files and leave the rest alone.
The downside is, if you want to upgrade you will have to merge in your
changes with any of our changes manually. To avoid merging entirely, just
copy *all* the web assets to your custom web assets folder. You'll keep the
old version of all files for eternity, missing out on new features we may
add, but you won't have to deal with merges at all.

View File

@@ -25,8 +25,8 @@ And similarly for other systems::
1. The path to your Minecraft world on your hard drive 1. The path to your Minecraft world on your hard drive
2. The name of a single player world on your current system. Note that if it 2. The name of a single player world on your current system. Note that if it
has spaces, you will need to put the world name in quotes. has spaces, you will need to put the world name in quotes.
3. If the world name is in the format "World #" (e.g. "World 1"), you can just specify the 3. If your single-player world name is in the format "World #" (e.g. "World
number. 1"), you can just specify the number.
**Output Dir** **Output Dir**
This is the directory you would like to put the rendered tiles and This is the directory you would like to put the rendered tiles and
@@ -59,6 +59,8 @@ Incremental updates are just as easy, and a lot faster. If you go and change
something inside your world, run the command again and Overviewer will something inside your world, run the command again and Overviewer will
automatically re-render only what's needed. automatically re-render only what's needed.
.. _installing-textures:
Installing the Textures Installing the Textures
======================= =======================
If you're running on a machine without the Minecraft client installed, you will If you're running on a machine without the Minecraft client installed, you will
@@ -89,10 +91,10 @@ You have several options:
installations, you will need to specify the path... see the next bullet. installations, you will need to specify the path... see the next bullet.
* You can put a terrain.png file anywhere you want and point to its location * You can put a terrain.png file anywhere you want and point to its location
with the ``--textures-path`` option. This should point to the directory containing with the :option:`--textures-path` option. This should point to the directory containing
the terrain.png, not to the file itself. the terrain.png, not to the file itself.
Note: the ``--check-terrain`` option is useful for debugging terrain.png issues. Note: the :option:`--check-terrain` option is useful for debugging terrain.png issues.
For example:: For example::
$ ./overviewer.py --check-terrain $ ./overviewer.py --check-terrain

View File

@@ -114,7 +114,7 @@ def main():
parser.add_option("--imgformat", dest="imgformat", helptext="The image output format to use. Currently supported: png(default), jpg.", advanced=True ) parser.add_option("--imgformat", dest="imgformat", helptext="The image output format to use. Currently supported: png(default), jpg.", advanced=True )
parser.add_option("--imgquality", dest="imgquality", default=95, helptext="Specify the quality of image output when using imgformat=\"jpg\".", type="int", advanced=True) parser.add_option("--imgquality", dest="imgquality", default=95, helptext="Specify the quality of image output when using imgformat=\"jpg\".", type="int", advanced=True)
parser.add_option("--bg-color", dest="bg_color", helptext="Configures the background color for the GoogleMap output. Specify in #RRGGBB format", advanced=True, type="string", default="#1A1A1A") parser.add_option("--bg-color", dest="bg_color", helptext="Configures the background color for the GoogleMap output. Specify in #RRGGBB format", advanced=True, type="string", default="#1A1A1A")
parser.add_option("--optimize-img", dest="optimizeimg", helptext="If using png, perform image file size optimizations on the output. Specify 1 for pngcrush, 2 for pngcrush+advdef and 3 for pngcrush-advdef with more agressive settings. This may double (or more) render times, but will produce up to 30% smaller images. NOTE: requires corresponding programs in $PATH or %PATH%", advanced=True) parser.add_option("--optimize-img", dest="optimizeimg", helptext="If using png, perform image file size optimizations on the output. Specify 1 for pngcrush, 2 for pngcrush+advdef and 3 for pngcrush-advdef with more aggressive settings. This may double (or more) render times, but will produce up to 30% smaller images. NOTE: requires corresponding programs in $PATH or %PATH%", advanced=True)
parser.add_option("--web-assets-hook", dest="web_assets_hook", helptext="If provided, run this function after the web assets have been copied, but before actual tile rendering begins. It should accept a MapGen object as its only argument.", action="store", metavar="FUNCTION", type="function", advanced=True) parser.add_option("--web-assets-hook", dest="web_assets_hook", helptext="If provided, run this function after the web assets have been copied, but before actual tile rendering begins. It should accept a MapGen object as its only argument.", action="store", metavar="FUNCTION", type="function", advanced=True)
parser.add_option("--web-assets-path", dest="web_assets_path", helptext="Specifies a non-standard web_assets directory to use. Files here will overwrite the default web assets.", metavar="PATH", type="string", advanced=True) parser.add_option("--web-assets-path", dest="web_assets_path", helptext="Specifies a non-standard web_assets directory to use. Files here will overwrite the default web assets.", metavar="PATH", type="string", advanced=True)
parser.add_option("--textures-path", dest="textures_path", helptext="Specifies a non-standard textures path, from which terrain.png and other textures are loaded.", metavar="PATH", type="string", advanced=True) parser.add_option("--textures-path", dest="textures_path", helptext="Specifies a non-standard textures path, from which terrain.png and other textures are loaded.", metavar="PATH", type="string", advanced=True)
@@ -124,7 +124,7 @@ def main():
parser.add_option("--skip-js", dest="skipjs", action="store_true", helptext="Don't output marker.js or regions.js") parser.add_option("--skip-js", dest="skipjs", action="store_true", helptext="Don't output marker.js or regions.js")
parser.add_option("--no-signs", dest="nosigns", action="store_true", helptext="Don't output signs to markers.js") parser.add_option("--no-signs", dest="nosigns", action="store_true", helptext="Don't output signs to markers.js")
parser.add_option("--north-direction", dest="north_direction", action="store", helptext="Specifies which corner of the screen north will point to. Defaults to whatever the current map uses, or lower-left for new maps. Valid options are: " + ", ".join(avail_north_dirs) + ".", type="choice", default="auto", choices=avail_north_dirs) parser.add_option("--north-direction", dest="north_direction", action="store", helptext="Specifies which corner of the screen north will point to. Defaults to whatever the current map uses, or lower-left for new maps. Valid options are: " + ", ".join(avail_north_dirs) + ".", type="choice", default="auto", choices=avail_north_dirs)
parser.add_option("--changelist", dest="changelist", action="store", helptext="Output list of changed tiles to file. If the file exists, it's contents will be overwritten.",advanced=True) parser.add_option("--changelist", dest="changelist", action="store", helptext="Output list of changed tiles to file. If the file exists, its contents will be overwritten.",advanced=True)
parser.add_option("--changelist-format", dest="changelist_format", action="store", helptext="Output relative or absolute paths for --changelist. Only valid when --changelist is used", type="choice", default="auto", choices=["auto", "relative","absolute"],advanced=True) parser.add_option("--changelist-format", dest="changelist_format", action="store", helptext="Output relative or absolute paths for --changelist. Only valid when --changelist is used", type="choice", default="auto", choices=["auto", "relative","absolute"],advanced=True)
parser.add_option("--display-config", dest="display_config", action="store_true", helptext="Display the configuration parameters, but don't render the map. Requires all required options to be specified", commandLineOnly=True) parser.add_option("--display-config", dest="display_config", action="store_true", helptext="Display the configuration parameters, but don't render the map. Requires all required options to be specified", commandLineOnly=True)
#parser.add_option("--write-config", dest="write_config", action="store_true", helptext="Writes out a sample config file", commandLineOnly=True) #parser.add_option("--write-config", dest="write_config", action="store_true", helptext="Writes out a sample config file", commandLineOnly=True)

View File

@@ -111,7 +111,7 @@ body {
border: 2px solid #000; border: 2px solid #000;
font-size: 12pt; font-size: 12pt;
width: 20em; width: 20em;
background-colour: #fff; background-color: #fff;
} }
#searchControl>input.inactive { #searchControl>input.inactive {

View File

@@ -1,11 +1,14 @@
var overviewerConfig = { var overviewerConfig = {
/** /**
* These are things that will probably not need to be changed by the user, * These are things that will probably not need to be changed, but are there
* but are there because otherwise changing them is a giant PITA. * because otherwise changing them is a giant PITA. If you, the user, sees
* that its crucial for you to change these settings then the document
* repository might be able to assist you.
* http://docs.overviewer.org/en/latest/options/#customizing-web-assets
*/ */
'CONST': { 'CONST': {
/** /**
* Height and width of the tiles in pixels (I think). * Height and width of the tiles in pixels.
*/ */
'tileSize': 384, 'tileSize': 384,
/** /**
@@ -88,6 +91,11 @@ var overviewerConfig = {
'center': {spawn_coords}, 'center': {spawn_coords},
/** /**
* Set this to tell browsers how long they should cache tiles in minutes. * Set this to tell browsers how long they should cache tiles in minutes.
* Essentially if set to 0, the url for tiles will end in .png
* if not set to 0 it will amend a number derived from the current time
* to the end of the url, like .png?c=123456. This is a great method for
* preventing browsers from caching the images. 0 saves bandwidth, not 0
* prevents caching.
*/ */
'cacheMinutes': 0, 'cacheMinutes': 0,
/** /**

View File

@@ -80,7 +80,7 @@ class QuadtreeGen(object):
if depth is None: if depth is None:
# Determine quadtree depth (midpoint is always 0,0) # Determine quadtree depth (midpoint is always 0,0)
for p in xrange(15): for p in xrange(64):
# Will 2^p tiles wide and high suffice? # Will 2^p tiles wide and high suffice?
# X has twice as many chunks as tiles, then halved since this is a # X has twice as many chunks as tiles, then halved since this is a
@@ -92,10 +92,12 @@ class QuadtreeGen(object):
if xradius >= worldobj.maxcol and -xradius <= worldobj.mincol and \ if xradius >= worldobj.maxcol and -xradius <= worldobj.mincol and \
yradius >= worldobj.maxrow and -yradius <= worldobj.minrow: yradius >= worldobj.maxrow and -yradius <= worldobj.minrow:
break break
else:
raise ValueError("Your map is waaaay too big! Use the 'zoom' option in 'settings.py'.")
if p < 15:
self.p = p self.p = p
else:
raise ValueError("Your map is waaaay too big! Use the 'zoom' option in 'settings.py'. Overviewer is estimating %i zoom levels, but you probably want less." % (p,))
else: else:
self.p = depth self.p = depth
xradius = 2**depth xradius = 2**depth

View File

@@ -108,15 +108,16 @@ class RenderNode(object):
raise ValueError("there must be at least one quadtree to work on") raise ValueError("there must be at least one quadtree to work on")
self.options = options self.options = options
# A list of quadtree.QuadTree objects representing each rendermode
# requested
self.quadtrees = quadtrees self.quadtrees = quadtrees
#List of changed tiles #List of changed tiles
self.rendered_tiles = [] self.rendered_tiles = []
#bind an index value to the quadtree so we can find it again #bind an index value to the quadtree so we can find it again
#and figure out which worlds are where #and figure out which worlds are where
i = 0
self.worlds = [] self.worlds = []
for q in quadtrees: for i, q in enumerate(quadtrees):
q._render_index = i q._render_index = i
i += 1 i += 1
if q.world not in self.worlds: if q.world not in self.worlds:
@@ -163,10 +164,13 @@ class RenderNode(object):
else: else:
pool.map_async(bool,xrange(multiprocessing.cpu_count()),1) pool.map_async(bool,xrange(multiprocessing.cpu_count()),1)
# 1 quadtree object per rendermode requested
quadtrees = self.quadtrees quadtrees = self.quadtrees
# do per-quadtree init # Determine the total number of tiles by adding up the number of tiles
# from each quadtree. Also find the max zoom level (max_p). Even though
# each quadtree will always have the same zoom level, this bit of code
# does not make that assumption.
max_p = 0 max_p = 0
total = 0 total = 0
for q in quadtrees: for q in quadtrees:
@@ -174,7 +178,9 @@ class RenderNode(object):
if q.p > max_p: if q.p > max_p:
max_p = q.p max_p = q.p
self.max_p = max_p self.max_p = max_p
# Render the highest level of tiles from the chunks
# The next sections of code render the highest zoom level of tiles. The
# section after render the other levels.
results = collections.deque() results = collections.deque()
complete = 0 complete = 0
logging.info("Rendering highest zoom level of tiles now.") logging.info("Rendering highest zoom level of tiles now.")
@@ -247,7 +253,8 @@ class RenderNode(object):
self.print_statusline(complete, total, 1, True) self.print_statusline(complete, total, 1, True)
# Now do the other layers # The highest zoom level has been rendered.
# Now do the lower zoom levels
for zoom in xrange(self.max_p-1, 0, -1): for zoom in xrange(self.max_p-1, 0, -1):
level = self.max_p - zoom + 1 level = self.max_p - zoom + 1
assert len(results) == 0 assert len(results) == 0
@@ -341,6 +348,7 @@ class RenderNode(object):
@catch_keyboardinterrupt @catch_keyboardinterrupt
def render_worldtile_batch(batch): def render_worldtile_batch(batch):
# batch is a list. Each item is [quadtree_id, colstart, colend, rowstart, rowend, tilepath]
global child_rendernode global child_rendernode
rendernode = child_rendernode rendernode = child_rendernode
count = 0 count = 0

View File

@@ -35,7 +35,7 @@ def _find_file(filename, mode="rb", verbose=False):
* the textures_path given in the config file (if present) * the textures_path given in the config file (if present)
* The program dir (same dir as overviewer.py) * The program dir (same dir as overviewer.py)
* The overviewer_core textures dir * The overviewer_core/data/textures dir
* On Darwin, in /Applications/Minecraft * On Darwin, in /Applications/Minecraft
* Inside minecraft.jar, which is looked for at these locations * Inside minecraft.jar, which is looked for at these locations
@@ -302,9 +302,9 @@ def _build_block(top, side, blockID=None):
composite.alpha_over(img, otherside, (12,6), otherside) composite.alpha_over(img, otherside, (12,6), otherside)
composite.alpha_over(img, top, (0,9), top) composite.alpha_over(img, top, (0,9), top)
else: else:
composite.alpha_over(img, top, (0,0), top)
composite.alpha_over(img, side, (0,6), side) composite.alpha_over(img, side, (0,6), side)
composite.alpha_over(img, otherside, (12,6), otherside) composite.alpha_over(img, otherside, (12,6), otherside)
composite.alpha_over(img, top, (0,0), top)
# Manually touch up 6 pixels that leave a gap because of how the # Manually touch up 6 pixels that leave a gap because of how the
# shearing works out. This makes the blocks perfectly tessellate-able # shearing works out. This makes the blocks perfectly tessellate-able

View File

@@ -111,7 +111,7 @@ if imgformat != "jpg":
################################################################################ ################################################################################
### web_assets_hook ### web_assets_hook
## If provided, run this function after the web assets have been copied, but ## If provided, run this function after the web assets have been copied, but
## before actual tile rendering beings. It should accept a QuadtreeGen ## before actual tile rendering beings. It should accept a MapGen
## object as its only argument. Note: this is only called if skipjs is True ## object as its only argument. Note: this is only called if skipjs is True
## Default: not yet ## Default: not yet
## Type: function ## Type: function