Commit graph

485 commits

Author SHA1 Message Date
baa20494bf
World: Section: implement new section-based biome data format 2021-12-11 22:50:24 +01:00
76e5d322b1
Resource: Biome: add biome palette name mapping
For now we will continue to use the numerical biome IDs internally, as
our biome storage format is based on these IDs.
2021-12-11 22:50:23 +01:00
aacea26716
World: add support for negative Y coordinates and MC 1.18 chunks
MC 1.18 biomes are not handled yet.
2021-12-11 22:50:23 +01:00
9ee1007ade
World: Chunk: use enum to store biome data format 2021-12-11 22:50:23 +01:00
21966252ea
World: ChunkData: make getRoot() return shared pointer reference 2021-12-11 22:50:23 +01:00
16a1258f08
World: Chunk: remove unnecessary level class member 2021-12-11 22:50:23 +01:00
0f6c467566
World: Chunk: replace division/modulo with shift/mask for height values
Preparation for negative y coordinates.
2021-12-11 22:50:23 +01:00
457e993c92
Introduce separate types for block/section/chunk indices
Newtypes are cumbersome in C++, so this is mostly documentation for now.

Also replace lots of questionable uses of size_t with int or types with
explicit width and add a few comments for constants.
2021-12-11 22:50:23 +01:00
d4be401bcd
Resource: Biome: fix integer underflow
Explicitly cast height value to signed integer to fix incorrect biome color
values below a height of 64.
2021-12-11 22:28:22 +01:00
fd4773c8ca
treewide: replace license headers with SPDX-License-Identifier 2021-11-17 12:07:56 +01:00
38d8bd0738
Chunk: replace withDepth argument with extensible flags field 2021-08-24 21:03:18 +02:00
fdce587c74
build: update to modern CMake, use pkg-config for zlib and libpng
Starting with CMake 3.7, we can avoid dealing with individual variables
for include dirs, libraries, ... for dependencies found using
pkg-config, and instead just reference them using an imported target.
2021-08-24 13:14:48 +02:00
5263538a29
README.md: add 1.17 support 2021-06-26 16:43:06 +02:00
73e5c12cde
Rename .inc files to .inc.cpp for better language detection by editors and Github 2021-06-25 19:43:14 +02:00
bfc9fcafb9
Merge pull request #17 from NeoRaider/mc1.17
Add Minecraft 1.17 support
2021-06-25 19:41:00 +02:00
af1afc3315 Biome: add Dripstone Caves and Lush Caves
Temperature and downfall values were taken from the Caves & Cliffs: Part II
Preview datapack.
2021-06-24 19:28:25 +02:00
0a42605a2b Add Minecraft 1.17 block types, update all color values 2021-06-24 19:28:25 +02:00
73343dede2 resource: add README.md 2021-06-24 19:28:25 +02:00
5c55ce8140
resource: add blocklist tool to list and diff the supported block IDs of a Minecraft version 2021-06-23 21:34:45 +02:00
9ac3b00b6e
Make region iteration more efficient for sparse worlds
Do not iterate over each region coordinate in the bounding box.

Closes #12
2021-02-13 11:06:30 +01:00
c06af49068
Info: restructure mipmap level data structure 2021-02-13 11:06:30 +01:00
cbc4a946c6
Info: rename mipmap "info" key to "bounds" 2021-02-13 11:06:30 +01:00
d2802b73f5
Info: make tile existence map mor efficient for sparse worlds
Explicitly list the coordinates where tiles exist instead of including a
full array with the size of the bounding box.
2021-02-13 11:06:21 +01:00
0ebc895ec0
Info: print concise JSON
Reduce size by removing pretty-printing
2021-02-13 10:20:19 +01:00
07e039d442
CMakeLists.txt: update CMake version requirement to remove future compat warning 2021-02-13 10:20:19 +01:00
67f4324441
Merge pull request #10 from AaronWebster/patch-1
Change BlockType from struct to class
2020-09-17 07:47:29 +02:00
Aaron Webster
367078178f
Change BlockType from struct to class
Fixes the -Wmismatched-tags compilation warning.
2020-09-16 18:14:09 -07:00
bc8e9c5cb3
README.md: add 1.16 support 2020-07-04 18:04:48 +02:00
997a4fb24e
docs: update screenshot 2020-07-04 18:04:14 +02:00
d33fa1429d
viewer: use === instead of == where appropriate 2020-06-28 17:27:22 +02:00
e5a15beddb
viewer: fix maxNativeZoom in Retina mode
Fixes: #8
2020-06-28 17:24:05 +02:00
6a160142ed
viewer: set image-rendering to pixelated
Chrome smooths the image when using crisp-edges.

crisp-edges is still set as a fallback for browers that don't support
pixelated (including Firefox).

Fixes: #7
2020-06-28 09:48:17 +02:00
3ec83c8cf8
Compare file contents with old data before writing
Do not writeoutput files when their content hasn't changed. This saves
time for incremental generation (as compressing a PNG takes much longer
than decompressing it) and avoids modification timestamp updates that
might trigger subsequent generation steps.
2020-06-20 15:01:52 +02:00
ef69a34034
PNG: export format byte count 2020-06-20 15:01:09 +02:00
98e21236d9
Do not generate light data for invisible blocks 2020-06-20 14:48:26 +02:00
3c837bb92e
viewer: update Leaflet to 1.6.0 2020-06-20 14:17:34 +02:00
03ae9cf302
Exclude unpopulated chunks from biome averaging
Avoids weirdly colored stripes at the edges of the map.
2020-06-20 12:17:24 +02:00
eb831608e0
Add smooth transitions between biomes
Simliar to the way biome transitions are rendered in Minecraft itself,
add smoothing by averaging biome-based colors over all biome values with
distance ≤3 (1-norm).
2020-06-20 12:15:32 +02:00
623d70ec9e
More preparation for biome smoothing 2020-06-20 11:40:29 +02:00
19ef022a67
Biome: return FloatColor for block colors 2020-06-20 11:40:29 +02:00
50f798f89e
Do not store biome in block structure
Use biome data from biome map.
2020-06-20 11:40:29 +02:00
a3cf5edda4
Read biome maps when iterating regions 2020-06-20 11:40:29 +02:00
072d664199
Separate top layer search from block data retrieval 2020-06-20 11:40:29 +02:00
569d0f1198
Pass region indices as int instead of size_t
Region indices can be negative.
2020-06-20 11:40:29 +02:00
4f7663f82f
Merge doRegion{,Biome}() into makeBiome()/makeMap() 2020-06-20 11:40:27 +02:00
2f0d1892f4
Split getModTime() out of checkRegion() 2020-06-20 00:58:08 +02:00
f539d668eb
Collect biome data
We store the biome data as grayscale images, as biome indices are
represented as bytes and we get PNG compression for free.
2020-06-20 00:58:08 +02:00
dc97c4a8c1
PNG: add support for grayscale images without alpha 2020-06-20 00:58:08 +02:00
4f49434dbf
Clean up doLevel() 2020-06-19 20:06:44 +02:00
0245c5c926
Add message before updating mipmaps 2020-06-19 19:09:40 +02:00