This adds a work-in-progress section with a few tips and tricks
about how one should go about contributing to the project. It mostly
focuses on making people familiar with some of the code, and giving
them a few tips along the way on how to work with Git.
A few more contribution examples should be added, and what most
notably is lacking right now is a section about the web output
part. This is due to us currently rewriting it in Leaflet, so any
examples added now would quickly become outdated.
We previously stated that a Google Maps API key is not required.
However, this is not true (anymore). I'm still wary of adding
it to the documentation since my hopes is that in the time it would
take me to add this to the docs I could just finish leaflet, but this
is the least we can do to clear up any confusion.
Also switched some URLs to use HTTPS, which closes#1314.
Lastly, fixed a warning about a not long enough title line.
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.
It's EOL in a few days and the instructions only add confusion.
Anyone still using CentOS 5 has bigger issues than not having
documentation on how to build Minecraft-Overviewer.
With newer pillow versions, pillow would create debug log lines for
every single PNG images it touches, so that spams the log in
Overviewer's verbose mode quite a bit.
This is probably a leftover from the memcached thing. There is no
need to hash a key to be used for hashmap access, as the hashmap
itself hashes it already, and probably with a hash more appropriate
for the situation.
Apparently we had memcached support. It was never worth it, and put
a weird md5 hash calculation in the path of regular caching. Seeing
as it was completely undocumented, I doubt anyone has ever used it.
pngnq-s9 is essentially just a more recently dead version of pngnq,
however, due to not being able to specify multiple binary names in
the past, we've not supported it. Refactor the code to allow specifying
multiple binary names, and add pngnq-s9 to it.
Minecraft now uses minecraft:sign as its id for signs, but also uses
Sign for older versions or chunks that have not yet been updated.
Change the genPOI sign wrangling code and the documentation to reflect
this change.
Fixes#1340.
Previously, the files were not closed after reading or writing;
by using a "with" statement, the file handles will be closed as
soon as they go out of scope.
Possible fix for #1271.
On Windows with mingw-w64, Pillow includes windows.h, and thus
including Imaging.h would result in a name conflict of "TRANSPARENT",
which windows.h #defines but overviewer.h wants to use as enum.
For the record, this used to not be broken back when I initially
fixed Pillow for mingw-w64, so the change got somewhere introduced
between then and now.
Previously, any kind of interruption during tile re-arrangements
would leave the tileset in a half re-arranged state.
This commit makes _increase_depth roll back possible changes it did
during the re-arrangement prior to it being interrupted.
Fixes issue #1166.
* Add 2 FAQ entries, one concerning mod blocks, the other
about the maps API.
* Add note about The End and lighting strength. (Closes#1111)
(Also, nice quads.)
Instead of doing the UUID->name resolution for all players in every
case, only do it when EntityId is accessed and the name hasn't been
retrieved this run already. This makes genPOI usable for people who
have many players on their servers but don't wish to use player POI
while still using other genPOI features.
To do this, a PlayerDict has been created, which contains a dirty
hack to see if the requested item is EntityId and whether it hasn't
been set already.
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.
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.
When HOME was undefined on Linux, the code would try calling
os.listdir(None) which will obviously fail.
This is a workaround. A proper fix would be to rewrite the
code to check for each operating system, not a combination
of operating systems, environment variables and the current
air humidity in London.
is_transparent returns 1 for every unknown block because that's an easy way to
make them ignore lighting, however, this makes cave render useless with a map
containing unknown ores.
The definition is_known_transparent checks whether a block is transparent and is known.
This is a workaround, a proper fix would be to have unknown blocks be neither transparent nor
solid. Or make them both. But don't prefer one of the two.
Up to this point, when launching overviewer with python3, overviewer would
(ironic as it is) crash on the line where the error message would be displayed
with a syntax error. I have now fixed this.
* Added paragraph and example about returning tuples from a filter
(Issue #859)
* Added section about manualpois
(Issue #858, Issue #869, Issue #598)
* Fixed a typo in the FAQ
* Added logging to file to the FAQ
(Issue #871)
If the returned type is a tuple, it will be interpreted as first the
title (i.e. hovertext), then the content of the infowindow. If the
returned type is a string, it will be used as both the title and
infowindow content (the old behaviour). This means that older configs
are still compatible and need no changes.
Here's how to use it:
have a list called "manualpois" in your config filled with objects that contain
the attributes id, x, y and z. Feel free to add more attributes as you need them.
Then, write filter functions to filter for your custom POIs (hint: use the id).