Commit Graph
100 Commits
Author SHA1 Message Date
Nicolas FandGitHub 240a02a2dc Merge pull request #1663 from Esvandiary/fix/go-to-hash-layers
Web: Fix multiple layers being added on page load if a non-default layer is in the hash
2019-10-26 21:56:40 +02:00
Nicolas FandGitHub d07c2e708b Merge pull request #1634 from Gyzie/saplings_rework
Created seperate sapling blocks and added bamboo_sapling
2019-10-26 21:52:59 +02:00
Nicolas F 79a5668bd2 genPOI: handle more uuidcache.dat corruption
Apparently the gzip stream can be malformed in a way where it
does read it, but then throws an EOFError when it abruptly ends.

Catch this so we don't error out.
2019-10-26 02:41:56 +02:00
Nicolas F 71d59be4b9 tileset: fix changelist option for Python 3
Turns out os.write only accepts bytes!
2019-09-11 21:00:34 +02:00
Nicolas F 4f619cbaef world: also allow chunks of status "spawn"
Apparently this is a status sometimes seen with worlds converted from
1.12 to 1.14. From the sample I have, it looks like they're properly
populated with light and terrain data, so hopefully this doesn't break
anything.

Possibly fixes #1630.
2019-08-26 19:37:12 +02:00
Nicolas F 3498641d4e Merge rebased sign changes from Gyzie's 1-14-signs (#1627) 2019-08-19 12:36:57 +02:00
Nicolas F 577c86afab Merge branch 'implement-new-stairs' of IncredibleHolg (#1624) 2019-08-19 12:07:28 +02:00
Nicolas FandGitHub 040085a2a8 Merge pull request #1629 from Horcrux/patch-1
Documentation typo fix
2019-08-17 13:08:15 +02:00
Nicolas F 56a0d5bef2 contrib: add empty __init__.py
Maybe Debian needs this? Who knows!
2019-08-08 21:34:52 +02:00
Nicolas F bdd3b7bc16 test: import relative to __init__.py
Might fix tests for Debian builders somehow maybe?
2019-08-08 21:31:41 +02:00
Nicolas F 3b96158fb4 Implement smooth sandstone stairs 2019-08-06 14:26:03 +02:00
Nicolas F b28073c3a7 Increase overviewer C extension version to 71 2019-08-02 17:12:04 +02:00
Nicolas F 467dc728b8 Merge branch 'add-lantern' of IncredibleHolg/Minecraft-Overviewer (#1617) 2019-08-02 17:03:40 +02:00
Nicolas F d2bef52a76 travis: use xenial after all because python 3.5
The bionic image offers no Python 3.5. Since we still want to test
for that, we should stick with Xenial, I guess.
2019-07-29 16:55:28 +02:00
Nicolas F 15f18812d5 observer: use == 0, not is 0
Who thought that was a good idea?
2019-07-29 16:51:52 +02:00
Nicolas F 32e34af381 travis: use bionic and test for 3.8-dev 2019-07-29 16:35:00 +02:00
Nicolas F cf5dad5539 docs/building: clarify Linux build instructions
python3-imaging doesn't exist but python3-pil does, which
python3-pillow is aliased to. It also includes the necessary headers.

Add a note about pip missing the headers and warn of ABI mismatches if
people do weird things.
2019-07-29 16:27:15 +02:00
Nicolas F e2ee37393b world: fix rail orientations
Fixes #1616.
2019-07-29 11:36:23 +02:00
Nicolas F 1b85e478f5 test_world: disable broken test case
Blegh pre-anvil
2019-07-24 17:17:02 +02:00
Nicolas F 0d3d630104 Get rid of config global state, improve tests
While dicking around with the tests I noticed that you could make
them fail if you ran them twice. Many hours were spent investigating,
and it turns out that Overviewer's config stuff has global state that
gets modified by having parsed configurations actually modify the
default config values. Not good!

We can fix this by having settingsDefinition return a dict of the
defaults, instead of assigning it to module-level names.

We can also get rid of test_all.py, because what it would do with
pytest is run all tests *twice*. Instead, do the module path stuff
in __init__.py. Also, instead of throwing a non-specific Exception
if exmaple isn't checked out, just skip the test thank you very much.

This is the weirdest rabbit hole I've ever gone down and I haven't
slept in about 30 hours. I'm going to push this commit, and if it
breaks anything, I'll be blissfully asleep as the unwashed masses
begin to riot over exception this traceback that.
2019-07-24 17:02:39 +02:00
Nicolas F 0bb823599d assetmanager: code style fixes 2019-07-24 09:49:25 +02:00
Nicolas F cf74500efa dispatcher: code style fixes 2019-07-24 09:35:52 +02:00
Nicolas F da80e50022 observer: code style fixes 2019-07-24 09:23:36 +02:00
Nicolas F 01f30de176 remove vestigial python2 references 2019-07-24 09:20:49 +02:00
Nicolas F c13d3aae3c rename configParser to config_parser
CamelCase does not bode well in Python land, so it's best we rename
these ill-named files before the Guidoists get us and throw us into
a damp dungeon.
2019-07-24 09:18:02 +02:00
Nicolas F f314de1403 configParser: code style and string changes
It's now PEP8 compliant! Also we can remove an unused optparse
import (wtf?) and let logging.error do the string formatting lazily.
2019-07-24 05:35:40 +02:00
Nicolas F 7e2cb56c1b Implement some mossy blocks
This adds:
- mossy stone brick stairs
- mossy cobblestone stairs
- mossy stone brick walls

We also add another block class for walls, and while we're at it,
clean up the stairs texture function to not have a huge sprawling
elif mess for loading textures, but instead to a cheeky dictionary
lookup.

In case you're wondering, yes I am just as disgusted by this code as
you are.
2019-07-15 17:23:25 +02:00
Nicolas F 634e13c92c Merge branch 'workstations' of https://github.com/IncredibleHolg/Minecraft-Overviewer 2019-07-13 17:37:58 +02:00
Nicolas F a422270666 Add force_writable argument to mirror_dir
Fixes #1611.
2019-07-12 23:37:35 +02:00
Nicolas F 70c64cd4c5 overviewer_core/__init__: code style fixes 2019-07-12 17:55:30 +02:00
Nicolas F f6937fe6a3 signals: whitespace fixes 2019-07-12 17:48:32 +02:00
Nicolas F 07cb05f4d8 observer: don't divide by zero in RConObserver
If no tiles needed to be updated, RConObserver would divide by zero,
which is less than ideal.

Fixes #1422.
2019-07-12 17:37:58 +02:00
Nicolas F a9aabab790 util.js: actually run the ready queue
Fixes #1466 I hope.
2019-07-12 17:25:29 +02:00
Nicolas F 106d332136 Catch KeyboardInterrupt so we don't barf a trace
Concerns issue #1531.

Future work can actually try to save state in this case, but especially
with multiprocessing, that might become a bit hairy.
2019-07-12 17:15:51 +02:00
Nicolas F 402d35fefc util.js: remove some obsolete stuff
A few debug console.log statements got the axe too, because I
felt like it.
2019-07-12 16:55:47 +02:00
Nicolas F 4d27cf3dfc util.js: don't specify a map minzoom of 0
Who put this here? Why? Whatever.

Fixes #1590.
2019-07-12 16:43:05 +02:00
Nicolas F 4dc2c8a5b7 world: add __lt__ to RegionSetWrapper for genPOI
genPOI needs this for groupby, and since we can now throw cropped
regionsets into genPOI we definitely need this too.

Probably also fixes rotated regionsets with multiple genPOI filters.
2019-07-12 16:32:07 +02:00
Nicolas F 033d75b08e genPOI: respect crop option
Use CroppedRegionSets to generate markers, which should only affect
handleEntities. I have not yet checked whether this generates
dupicate players and manualpois for maps with multiple crop zones,
but that's a fire to put out for another day.

Fixes #1574.
2019-07-12 16:04:28 +02:00
Nicolas F aeeaadd5bb Bump C extension version to 68 2019-07-12 15:27:42 +02:00
Nicolas F 221b2c6805 Bump C extension version to 67 2019-07-10 18:37:38 +02:00
Nicolas F 4f3c7368ba Merge branch 'posix-types' of Wunkolo (#1598) 2019-07-10 18:36:32 +02:00
Nicolas F 6bdcd32a6f world: remove redundant stride 1 in iteration
IRC chairfarters are pedantic.
2019-07-09 18:11:29 +02:00
Nicolas F 8bbe034aad world: use numpy.empty instead of numpy.zeros
Some arrays get completely filled anyway, so we might as well not
use numpy.zeros, and instead choose numpy.empty.
2019-07-09 18:05:15 +02:00
Nicolas F a5071663cd world: optimise bad block translation code
Makes Overviewer like 45% faster lol
2019-07-09 17:59:40 +02:00
Nicolas F e0e33a9acb textures: fix texturepath option not being used
If the first texture loaded was not in the pack, i.e. we fell back
on system textures, then the pack was ignored altogether for the
remainder of the render.

Here we fix this by using an OrderedDict instead of the split jars
and jarpath nonsense, and then always checking the custom textures
first and opening them if they are not already open, and putting
the jar file handle at the start of the OrderedDict.

We also switch around some logic to avoid unnecessary isdir calls
when we're using a resource pack.
2019-07-09 14:20:31 +02:00
Nicolas F 19042a7669 rcon: fix for python 3
We need to encode the payload since rcon is a binary protocol.

Also, add some more error checking.

Fixes #1605.
2019-07-09 13:44:43 +02:00
Nicolas F d92e61e559 nbt: catch EOFError because of gzip streams
Might fix world listing for some corrupt worlds.

Fixes #1606.
2019-07-08 23:01:34 +02:00
Nicolas F a6bcc0f957 textures: implement proper fallback loading
Sometimes a texture pack is not complete, but system textures are
available to make up the difference. In that case, we should load
those.

Current caveat is that we might not notice texture names changing
with newer minecraft clients because we have old ones installed.

I'll have to think some more about that one.
2019-07-06 23:36:47 +02:00
Nicolas F 6b0ccc1513 src/primitives/base: don't try to free nullpointer
If loading the grass and foliage biome colour fails, Overviewer doesn't
necessarily crash, it just renders everything gray, apart from one small
issue: in trying to call base_finish, it'd crash trying to decrease the
reference of a null pointer.
2019-07-06 23:15:55 +02:00
Nicolas F 0b4ad361c3 world: fix those pesky poi warnings 2019-07-06 21:24:58 +02:00
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 5b0430f94b textures: greatly simplify find_file and friends
find_file contained a lot of code for searching textures in ways that
haven't been relevant for years. For example, it had workarounds for
MCPatcher, a tool that hasn't been updated since 2015.

Instead of searching in multiple paths that will never succeed in a
resource pack and Minecraft version that actually work, just look
for the filename that the block functions ask for.

Also, if we already have a manually specified resource pack open,
we shouldn't repeatedly re-open it. Furthermore, it's best if
the very first thing find_file does is try to find the file in
the resource pack or client jar we've already opened previously.

We can now also remove chest.png, ender.png, foliage.png, grass.png
and normal_double.png because Minecraft ships them, so we don't
need to ship them ourselves too. Us shipping them actually hid the
whole find_file garbagefire.

Concerns issue #1604.
2019-07-04 18:24:57 +02:00
Nicolas F 864be71667 textures: cache when a texture couldn't be found
Previously, textures that couldn't be found the first time around
would not have this fact cached, so we'd run through the whole
slow path of find_file with each blockid and data entry.

This is what caused the chests texture generation function to take
almost 12 seconds on my system, as it is looking for "normal.png"
that hasn't existed in Minecraft textures for ages.

Shoving the exception, if one is encountered, into the cache, and
then re-raising it if we load it from the texture cache brings this
number down to about 2 seconds. That's six times as fast!

Concerns issue #1604.
2019-07-04 16:40:11 +02:00
Nicolas F 1e8735328e textures: try more than the most recent Minecraft
We can try each jar in descending order of versions until we actually
find one that works. This fixes #1328.

Future work might move the "if self.jar is not None" higher up in the
function so that we don't keep re-checking the overviewer dir and texture
path for files that we will then not use at all for some reason.
2019-07-04 15:27:58 +02:00
Nicolas F 7d1a04b0fe genPOI: hopefully fix binary string nonsense
Somebody reported that genPOI was throwing an exception in two
different places related to trying to read bytes as a string.

I personally could not reproduce (possibly needs some special player
names or something?) but I think this change should fix it either way.
2019-06-28 13:24:48 +02:00
Nicolas F b6a3c18b65 web_assets: update leaflet to 1.5.1 2019-06-25 19:40:42 +02:00
Nicolas F c34be9ca67 world: add __lt__ method to RegionSet
So turns out genPOI wants to use sorted() so it can use itertools.groupby.

Python 2 somehow just... sorted objects so that groupby (which is basically
the UNIX uniq) could group them properly. Python 3 no longer does this,
so as comparison method let's just compare regiondir strings since that
gives us the desired result.

Fixes #1597.
2019-06-25 19:19:28 +02:00
Nicolas F f58d7ae0a2 Merge Pull Request #1542 2019-06-25 18:21:27 +02:00
Nicolas F b20705e46a observer: use bytes fp for JSObserver
Unbuffered I/O requires a bytes fp, so I guess we now just send
utf-8 encoded strings into that instead.

Fixes #1596.
2019-06-25 18:17:45 +02:00
Nicolas F 50bd2a4303 observer: use bytes fp for JSObserver
Unbuffered I/O requires a bytes fp, so I guess we now just send
utf-8 encoded strings into that instead.

Fixes #1596.
2019-06-25 18:13:57 +02:00
Nicolas F e28c2e9284 docs/installing: remove CentOS 6 section
Hopelessly outdated distro release that not even EPEL can save, so
there's no way we can support it with prebuilt packages.
2019-05-20 15:35:49 +02:00
Nicolas F 522ee28219 overviewer: add warning for CentOS/RHEL 6
If you're using CentOS/RHEL 6, you probably already can't run
Overviewer due to our dependency on argparse breaking python2.6
compatibility. However, if you somehow managed to get python2.7
working on CentOS 6, you now get a nice warning telling you to
finally get off your butt and use something else.

This warning can be dropped once we move to Python 3, which is why
this code was added in the first place: CentOS 6 has no Python 3
package that is still supported by upstream, not even in EPEL.
2019-05-20 15:21:07 +02:00
Nicolas F f1c7ab93f1 world: remove lit chunk check
Apparently not even chunks of that data version can be relied upon
to have that flag mean anything at all, as the --forceUpgrade and
--eraseCache switches result in a world where chunks are flagged
as not being lit but seemingly do have SkyLight and BlockLight keys.

Concerns #1570.
2019-05-05 15:17:43 +02:00
Nicolas F 9479ac59b4 world: make the chunk populated code even uglier
Fixes #1568.
Fixes #1566.
2019-05-03 15:13:18 +02:00
Nicolas F c77fcc5fb3 world: fix snowy grass check
pro tip: 'false' == True.
2019-04-30 21:08:00 +02:00
Nicolas F 0d10211d1b world: fix rendering of 1.13 worlds
Fixes #1563.
2019-04-30 19:41:35 +02:00
Nicolas F 0004540a57 world: only render fully formed and lit chunks
Minecraft notes various stages of fetal development that chunks are
in, with the complete ones being "full". Previously, we'd check
against a list of states that are not full to skip a chunk, which
is obviously not future proof, and broke as Mojang updated their
possible range of values for the status field. It's better to
just bail if the status is anything other than "full".

Additionally, a key called "isLightOn" is in the chunk now. This
seemingly determines whether a chunk has been lit. We're also going
to check for this, and bail if it's not. In my tests, I have not yet
seen a single "full" chunk that does not have "isLightOn" set.

Fixes #1558.
2019-04-28 13:41:17 +02:00
Nicolas F 7b523c447a .gitignore: add the docs build dir to ignore 2019-04-28 12:58:13 +02:00
Nicolas F 3fc97d131e Add fletching, cartography and smithing tables 2019-04-28 12:55:14 +02:00
Nicolas FandGitHub 1f7dc762aa Merge pull request #1561 from IncredibleHolg/new-slabs-1.14
added new 1.14 slabs, fixing issue #1560
2019-04-28 12:14:20 +02:00
Nicolas F a20d09fd82 docs/running: update texture install instructions 2019-04-26 04:17:50 +02:00
Nicolas F 04302025ca travis: test with 1.14 assets 2019-04-26 04:11:49 +02:00
Nicolas F e25557d257 textures: fix stone slabs for 1.14 2019-04-26 04:11:20 +02:00
Nicolas F 8760b040c6 world: ignore poi directory in world dir
This is a new directory added in 1.14 which contains .mca files too.

Since we scan for directories with .mca files to use as RegionSets,
and we don't know how to handle these, just skip them.

Fixes some warnings during rendering.
2019-04-23 14:03:25 +02:00
Nicolas F bc322fa3e4 world: fix for chunk parsing for 1.14
If there's missing light data, just make up some with an empty array.
2019-04-23 14:03:25 +02:00
Nicolas F 6f680aa287 Revert "web: fix goToHash on layer change"
This reverts commit 2186d08c32.

Fixes #1553.
2019-04-21 18:02:19 +02:00
Nicolas FandGitHub 7d5f3009e7 Merge pull request #1556 from SteadBytes/python3-popen-bytes
Decode Popen stdout bytes to utf-8
2019-04-20 16:45:46 +02:00
Nicolas F 134d6063bf primitives: misc char -> short fixes 2019-04-07 20:25:53 +02:00
Nicolas F 6a1906445c world: space comments correctly 2019-04-07 20:23:32 +02:00
Nicolas F bd40aeda3d textures: set prismarine slabs to transparent
This fixes upper slabs removing the block below them.
2019-04-07 20:21:45 +02:00
Nicolas F e05a4f1083 Merge pull request #1550 from InrcedibleHolg/master
Rebased to clean the git history a little.
2019-04-07 20:19:56 +02:00
Nicolas FandGitHub f512492ed7 Merge pull request #1545 from SteadBytes/contrib-python3
Move Contrib Scripts to Python3
2019-04-07 14:27:59 +02:00
Nicolas F 98e197d64c docs/installing: update CenturyOldOS instructions
Imagine not having Python 3 in 2019 LMAO
2019-04-06 21:15:50 +02:00
Nicolas F 1ab66dddea fix prismarine stairs
Sorry for the noise in mc_id.h, but somebody decided they want DOS
line endings and I couldn't allow that to happen. When not doing that
put the whole thing into diff, I decided to just fix the indentation
too while I was at it.

Needed bugfixing of some overlooked unsigned char usages for block IDs,
as otherwise the lighting would be scuffed.

Concerns issue #1486.
2019-03-31 19:20:10 +02:00
Nicolas F be69712ca0 docs/signs.rst: fix filter function ids for 1.13 2019-03-29 17:05:31 +01:00
Nicolas F f93bc28230 world: fix stair orientations
Concerns issue #1486.

Inner/outer corners apparently have their data from ancil data instead
of Minecraft's stuff, so we might need to fix that in the future.
2019-03-28 16:02:53 +01:00
Nicolas F 58f73d8f81 docs/building.rst: clean up macOS instructions
I've had to fight rst a lot to get this right, somehow the code
block after the last bullet point breaks if you explicitly number
the enumerated list instead of using auto-enumeration. Like legit,
change `#.` to `12.` and it'll break. No clue why.
2019-03-27 15:15:07 +01:00
Nicolas F 3c4d8e34e6 docs: move last mentions of Python 2 to Python 3
I've adjusted the macOS instructions slightly to be more general,
e.g. do not advise symlinking a specific Python executable of a
specific version, just tell people they should make sure it's in
their environment.

And yes, on Windows, python.exe is whatever version you have installed,
so if you install Python 3, python.exe is going to be Python 3.

I've removed the FreeBSD instructions because they only talk about
working around ports potentially using Python 2.6, which is no longer
relevant. If somebody here uses FreeBSD and has anything to add to the
instructions not already covered by the Linux instructions, let me know.
2019-03-27 15:14:01 +01:00
Nicolas F 79754b367c world: bandaid fix for double stone brick slabs
This code badly needs a rewrite, we're just altering code path and
data all over the place and this isn't okay.
2019-03-25 21:42:08 +01:00
Nicolas FandGitHub ed9a9930db Merge pull request #1547 from InrcedibleHolg/master
added missing cut_red_sandstone and chiseled_red_sandstone
2019-03-24 22:20:19 +01:00
Nicolas F fb63788dc7 mailmap: more adding of myself, sheesh 2019-03-22 19:22:46 +01:00
Nicolas F 477bd701a3 mailmap: add myself 2019-03-22 19:16:34 +01:00
Nicolas F 4c3e0bfb6e docs: update mingw build instructions (untested) 2019-03-22 17:19:47 +01:00
Nicolas F 316b8099e9 docs: update Linux build instructions for Python 3 2019-03-22 17:18:12 +01:00
Nicolas F dc7d1cd208 genPOI: replace optparse with argparse
Maybe one day we'll use actual subparsers but today is not that day.
2019-03-22 17:10:52 +01:00
Nicolas F 4c78a05e91 travis: switch to xenial and test for python 3.7
Python 3.7 requires using the xenial images in Travis-CI. It appears
that they do not yet have newer distro version images available, so
that's the best we can get for now.
2019-03-21 15:29:41 +01:00
Nicolas F a23682fec8 docs: update optimizeimages instructions for py3 2019-03-21 15:21:43 +01:00
Nicolas FandGitHub 2c4b0d40b5 Merge pull request #1541 from Wunkolo/block_class
Add block_class to accelerate block-conditionals
2019-03-19 00:52:36 +01:00
Nicolas F 11aa232141 genPOI: port to Python 3
There's some stuff left to do, like properly do the functools.partial
stuff, and check that the uuidcache is actually working. But hey,
player markers work at least, and so does --skip-scan.

Still needs a port to argparse though.
2019-03-18 19:45:22 +01:00
Nicolas F 7085b048de overviewer: fix shell quoting check in edge case
If you supply an option that can't possibly be a world or an output
but isn't recognised, Overviewer would barf.
2019-03-18 19:36:24 +01:00