Commit graph

481 commits

Author SHA1 Message Date
1d4c7a86ff
world/layer: replace iproduct!() with nested loops
iproduct!() is slow for more than 2 parameters.
2023-03-02 01:00:55 +01:00
ed5fb9a6cf
resource: remove LEGACY_BLOCK_TYPES reexport
As the array is only used internally now, we can also remove the
"minecraft:" prefix from the entries.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2023-03-02 00:41:39 +01:00
04bc3e5d53
world/section: perform palette lookups early
Look up block types for all palette entries once during section
construction, rather than on block_at(), reducing the number of HashMap
lookups by ~1000.
2023-03-02 00:37:25 +01:00
5c82b80924
world/section: replace block_id_at() method with block_at()
Directly return a BlockType, preparing for early lookup of palettes.
2023-03-02 00:31:34 +01:00
f2ab424590
world: store BlockTypes in section types
Prepare for sections returning BlockType data directly instead of block IDs.
2023-03-02 00:24:59 +01:00
89af4aaee2
resource: extend BlockTypes with legacy block type data
Allow to directly map from id/data values to BlockType.
2023-03-02 00:24:56 +01:00
4c2fd6c1a9
resource: rename BlockTypeMap to BlockTypes
The block_types() function it turned into a Default implementation.
2023-03-01 23:59:27 +01:00
95e4e45974
resource: remove "minecraft:" prefix from hash keys
Shorter keys mean less data to hash.
2023-03-01 22:03:09 +01:00
483cdf48c8
resource: update block_types with Minecraft 1.19.2 data
An older Minecraft version had been used to generate the data for the
Rust rewrite by accident.
2023-03-01 22:01:30 +01:00
cbbc6d8f35
resource: make BlockTypeMap return BlockType without reference 2023-03-01 21:58:29 +01:00
0673c89bd8
main: add stub tile renderer struct
This only prints messages so far.
2023-03-01 21:45:38 +01:00
73b13c1afb
main: move path handling to separate struct 2023-03-01 21:02:24 +01:00
c5ca1d9821
main: pass region_dir to RegionProcessor::new(), consume when processing 2023-03-01 19:27:09 +01:00
a2ba7e4738
main: build processed_dir path outside of RegionProcessor::new() 2023-03-01 19:17:50 +01:00
ea604b88f2
main: rename regiondir variable to region_dir
For consistency with other _dir variables.
2023-03-01 19:17:04 +01:00
ca6afa0cf9
main: return list of region coordinates from process_region_dir() 2023-03-01 19:16:09 +01:00
194715ad09
main: store processed region data 2023-03-01 00:13:06 +01:00
e02a1fc0c9
main: collect processed chunks in array 2023-03-01 00:11:42 +01:00
18cecb947e
main: factor out process_chunk() method 2023-03-01 00:09:11 +01:00
d77dcce778
main: print message when processing region 2023-03-01 00:06:48 +01:00
447a9482fe
main: create output directory for processed data files 2023-03-01 00:02:23 +01:00
04ab8c321f
main: fix formatting
rustfmt still doesn't handle let-else...
2023-03-01 00:00:40 +01:00
b68f04496c
main: introduce RegionCoords type alias 2023-02-28 23:57:48 +01:00
768ab13205
main: rename savedir argument to input_dir 2023-02-28 23:54:21 +01:00
21fd3a42ca
io: add storage helper
Use bincode+zstd to serialize data structures for temporary storage.
2023-02-28 21:59:45 +01:00
f47b38b2ca
world/layer: return boxed BlockInfoArray from top_layer()
Avoid copying around large structures, and allow creating
arrays of BlockInfoArrays without overflowing the stack.
2023-02-27 19:17:17 +01:00
fd0c9fbf1b
main: improve process_region() error handling 2023-02-26 01:11:59 +01:00
b2d849081d
io/region: allow stopping foreach_chunk early
Errors returned from the callback stop the loop early.
2023-02-26 01:01:37 +01:00
551056803d
Add Serialize/Deserialize impls to various types
We want to be able to store this data to disk temporarily.
2023-02-26 00:46:50 +01:00
2d0f2fb865
main: iterate over regions of a Minecraft save dir 2023-02-25 17:46:00 +01:00
f3a6711458
Update dependencies 2023-02-25 13:30:58 +01:00
f48aa877d2
world: implement top_layer function
Implement one of the core functions of MinedMap: finding the topmost
visible block at each coordinate.
2023-02-18 11:51:24 +01:00
2530a557a9
types: fix dangling doc reference 2023-02-18 11:08:45 +01:00
decb5c67a6
world/section: to not use u128 type
Getting the block index for unaligned blocks can be done just fine with
only u64.
2023-02-18 10:57:11 +01:00
3ef48783b7
types: introduce LayerBlockArray
A LayerBlockArray is a generic array of data stored for each block of a
chunk layer. It provides the same methods as a ChunkArray.
2023-02-15 00:49:07 +01:00
789a4002c7
types: add Clone + Debug to ChunkArray iterators
Added for consistency with LayerBlockArray.
2023-02-15 00:48:30 +01:00
921a218d56
types: split BlockCoords into SectionBlockCoords and LayerBlockCoords 2023-02-15 00:35:18 +01:00
339e0b6a05
resource: add BlockType::is() method to check for flags 2023-02-15 00:34:59 +01:00
2a941e5283
resource: add BlockTypeMap type for convenience 2023-02-15 00:34:59 +01:00
db289bc077
resource: rename BlockFlags to BlockFlag
The enum only holds a single flag at a time.
2023-02-15 00:34:59 +01:00
102baa9197
types: add iter() associated function to coordinate newtypes 2023-02-15 00:34:53 +01:00
9f8446885e
treewide: remove get_ prefix from function names
Follow the conventions of the std library.
2023-02-12 23:36:58 +01:00
96736bd7ed
Replace DivRem trait with num-integer crate 2023-02-12 23:08:53 +01:00
1049aad03d
Update dependencies 2023-02-12 23:03:58 +01:00
9146c06bec
treewide: rename "old" data structures to "v0"
"v0" doesn't refer to a specific version of Minecraft; it is just the
oldest data format supported by MinedMap.
2023-02-12 23:03:58 +01:00
493608ebc8
treewide: add more documentation 2023-02-12 23:03:58 +01:00
5ee114ed0a
types: slightly simplify DivRev trait 2023-02-12 23:03:58 +01:00
c34f531546
world/section: temporarily rename PaletteSectionBiomes fields
These fields are unused for now. Add an underscore to supress linter
warnings.
2023-02-12 23:03:58 +01:00
65c39ea153
types: make CHUNKS_PER_REGION and BLOCKS_PER_CHUNK usize
Having these as usize is more convenient.
2023-02-12 23:03:58 +01:00
b918ff6106
world/section: add method to get block ID at coordinate 2023-02-12 23:03:58 +01:00