40105aaccd
Initial Rust setup
2023-01-25 00:06:27 +01:00
4b83f6376f
Remove C++ implementation
2023-01-25 00:06:27 +01:00
c7e04649ff
Resource: Biome: add 1.19 biomes
...
Add the new biome temperature and rainfall values, as found in
decompiled Minecraft code:
- Deep Dark uses the same the values as plains
- Mangrove Swamp has the same temperature/rainfall as regular Swamp, but a
different water color
2022-10-16 13:14:31 +02:00
Andrew Cox
600a20cde6
Update to compile on Mac OS ( #26 )
2022-07-01 23:27:58 +02:00
Bruno Saad
7bba6d0863
Adding new blocks for 1.19
2022-06-07 16:48:43 +00:00
fbef307c90
UniqueCPtr: add doc comment
...
Explain what a UniqueCPtr is.
2022-02-09 21:26:12 +01:00
37340926f4
MinedMap: fix warning for unused fscanf result
2021-12-19 23:11:21 +01:00
fac2e4c8da
World: Chunk: add support for unordered sections
...
MC1.18 doesn't always store sections sorted by their Y value, possibly
related to "optimize world".
2021-12-12 12:18:18 +01:00
a2fe33ef1f
World: Section: add support for Int tag section Y values
...
For some reason, MC1.18 sometimes uses Int instead of Byte tags for
section Y values after "optimize world". Add support for this (but still
only accept values that fit in a int8_t).
2021-12-12 12:15:31 +01:00
d18e004743
World: Section: fix biome palette size check
...
We were accidentally checking the block type palette size.
2021-12-12 10:28:17 +01:00
73dfecf379
Resource: BlockType: update colors with MC1.18 texture data
2021-12-11 22:50:24 +01:00
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
73e5c12cde
Rename .inc files to .inc.cpp for better language detection by editors and Github
2021-06-25 19:43:14 +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
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
Aaron Webster
367078178f
Change BlockType from struct to class
...
Fixes the -Wmismatched-tags compilation warning.
2020-09-16 18:14:09 -07: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
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
5946d19629
Biome: add biome-specific water colors
...
Also fix default and swamp water colors.
2020-06-19 01:21:35 +02:00