120 Commits

Author SHA1 Message Date
Dylan T
48dcf0e32c
Farmland: Remember relative location of nearby water in blockstate data (#6090)
Farmland can end up scanning up to 162 blocks looking for water in the worst case. This is obviously not great for huge farms where there are thousands of blocks of the stuff.

In most farms, the water won't be moved, and nor will the farmland. This means that we can avoid this costly search on random updates.

This PR implements a cache using blockstate data (only possible in PM5) which stores an index mapping to a coordinate offset where water was previously found by this farmland block. This allows the farmland to avoid water searching entirely in most cases.

This is a colossal improvement as compared to scanning the whole 9x2x9 area every time, which, on average, scans about 40 blocks to find water if the water is at the same Y coordinate. In real terms this translates into about a 8x performance improvement for farmland (see timings below).
2023-10-17 16:25:13 +01:00
Dylan K. Taylor
63fcf9879a
Block: Use xxhash'd XOR mask to improve state data lower bits distribution
xxhash is generally well known for its hash key properties, so this is a suitable use case.
We XOR the state data with a partial hash of xxh3(typeID), which provides sufficient hash distribution regardless of the size of state data.
The previous method started to break down as the number of bits exceeded the number of significant bits of type ID (about 10 currently).

As well as being better for hash distribution regardless of state data size, this also reduces the load factor of RuntimeBlockRegistry to 1.08 (previously around 1.24), which is a nice bonus.
2023-10-17 15:21:22 +01:00
Dylan K. Taylor
006f78c0a7
Updated block consistency check 2023-09-29 12:57:39 +01:00
Dylan K. Taylor
31cd096b4b
Implement torchflower, its seeds and its crop 2023-09-28 17:13:33 +01:00
HimmelKreis4865
d94391af57
Implement Chiseled Bookshelf (#5827) 2023-09-28 15:56:46 +01:00
Dylan K. Taylor
56d7039086
Implemented budding amethyst and amethyst clusters 2023-09-27 17:02:37 +01:00
Dylan K. Taylor
6ec340359b
Implemented crimson and warped roots 2023-09-27 13:07:46 +01:00
ipad54
77dfbc4e23
Implemented pink petals (#5940) 2023-08-09 11:33:33 +01:00
ipad54
83d11c7429
Implemented Big & Small dripleaf (#5835) 2023-07-17 16:30:52 +01:00
Dylan K. Taylor
dca752c72f
Stem: implement facing property
fixes #5858

technically speaking, the sideways states for non-fully-grown stems shouldn't exist, but they do in Bedrock, and changing this code to split non-fully-grown stems from fully grown ones would likely require BC breaks.
This was the minimum necessary to achieve the desired functionality.
2023-07-13 14:50:26 +01:00
ace
bccda4fe44
Implement Piglin Head (#5839) 2023-06-19 12:07:49 +01:00
Dylan K. Taylor
1533dc4e56
Added cherry leaves 2023-06-10 13:21:21 +01:00
Dylan K. Taylor
0f8e61eda4
Implemented new cherry-wood blocks 2023-06-09 18:04:52 +01:00
IvanCraft623
6d7f44d8fe
Implement glow lichen (#5401) 2023-06-04 16:04:08 +01:00
Dylan K. Taylor
24e897f813
Updated blockstate registry consistency check 2023-05-25 16:48:34 +01:00
ipad54
fa719f37d5
Implement Cave Vines & Glow Berries (#5424) 2023-05-08 19:24:23 +01:00
Dylan K. Taylor
a42a67fc50
Update consistency check 2023-03-04 15:53:56 +00:00
ipad54
75f74454c6
Implemented reinforced deepslate (#5553) 2023-02-15 15:15:04 +00:00
Dylan K. Taylor
2f469ef4a0
Added mangrove, azalea and flowering azalea leaves 2023-01-25 18:50:14 +00:00
Dylan K. Taylor
ca1f1bf09f
Fixed glowing item frames
due to technical limitations, this requires separating them back into two different block types. However, this isn't too egregious since it's just one flag, and actually simplifies some code.

closes #5478
2023-01-12 21:52:52 +00:00
ipad54
85231215e7
Implemented Sculk (#5489) 2023-01-04 20:10:46 +00:00
ipad54
b3473960b4
Implemented chain (#5454) 2022-12-22 15:22:04 +00:00
ipad54
858d3dce8e
Implement Weeping & Twisting vines (#5396) 2022-11-15 15:29:42 +00:00
Dylan K. Taylor
d4f96a155a
Support axis rotation of Muddy Mangrove Roots (implemented in 1.19.20) 2022-08-14 18:53:01 +01:00
Dylan K. Taylor
102406ee79
Added froglights 2022-07-23 17:40:38 +01:00
Dylan K. Taylor
4419161a49
Updated consistency check 2022-07-23 17:39:26 +01:00
Dylan K. Taylor
b13f333b2e
Added mud and packed mud 2022-07-23 16:40:46 +01:00
Dylan K. Taylor
a7313ed9d9
Added rooted dirt 2022-07-23 16:12:17 +01:00
Dylan K. Taylor
67682cbf27
Added chorus plant and flower 2022-07-20 20:19:36 +01:00
Dylan T
c1acf44337
Implement cauldrons (#5163)
the following things are currently not implemented:

- particle/sound effects when an entity extinguishes itself
- particle/sound effects when mixing different stuff in a cauldron
- powder snow cauldron

both of these things are contingent on #5169, but for the time being, the PR is functionally complete and I want to move on to something else without being stalled by the particle+sound problem (which I haven't yet decided how to solve).
2022-07-20 16:12:58 +01:00
Dylan K. Taylor
fa201b081c
Added spore blossoms
I got tired of the flood of warning messages every time someone joined the dev server...
2022-07-19 20:28:12 +01:00
Dylan K. Taylor
21ed5a450f
Updated BlockFactory consistency check 2022-07-14 20:42:16 +01:00
Dylan K. Taylor
323d31005f
Added glowing item frames 2022-07-14 16:24:20 +01:00
Dylan K. Taylor
eafc23c756
Added candles and cakes with candles 2022-07-13 23:54:41 +01:00
Dylan K. Taylor
260e54e4b1
Skeleton for copper blocks, stairs and slabs 2022-07-10 00:18:35 +01:00
Dylan K. Taylor
5e70ae2066
Added lightning rods 2022-07-09 20:18:22 +01:00
Dylan K. Taylor
ad7528e3f3
Added warped wart blocks, gilded blackstone and crying obsidian 2022-07-09 20:00:10 +01:00
Dylan K. Taylor
8886a023f1
Reduce the size of block_factory_consistency_check.json by improving the storage format
this reduces the size by 65%, but more importantly, doesn't cause several pages of flooding in git diff.
2022-07-06 23:20:13 +01:00
Dylan K. Taylor
ae70c63798
Added tinted glass 2022-07-06 23:01:17 +01:00
Dylan K. Taylor
fe93609c8d
Added mud bricks and related blocks 2022-07-06 00:02:51 +01:00
Dylan K. Taylor
5536672e4b
Updated consistency check 2022-07-05 20:42:53 +01:00
Dylan K. Taylor
d9544b5d0e
Added soul fire 2022-07-04 22:32:35 +01:00
Dylan K. Taylor
386c385a08
Updated BlockFactory consistency check 2022-07-03 19:07:45 +01:00
Dylan K. Taylor
33eef99d1f
Added axis support for all-sided logs 2022-07-03 17:27:25 +01:00
Dylan K. Taylor
e302e5a85f
Implemented chiseled deepslate, chiseled nether brick and cracked nether brick 2022-07-03 03:04:06 +01:00
Dylan K. Taylor
4acf7aadbd
Added quartz bricks 2022-07-03 02:11:50 +01:00
Dylan K. Taylor
a3016abf53
Added polished deepslate block/slab/stair/wall 2022-07-03 02:00:43 +01:00
Dylan K. Taylor
89632f3514
Added deepslate, cobbled/tiles/bricks walls/slabs/stairs/cubes 2022-07-03 01:43:27 +01:00
Dylan K. Taylor
017ebb9b47
Updated consistency check 2022-07-03 00:02:03 +01:00
Dylan K. Taylor
2a0fade893
Implemented Light blocks 2022-07-02 22:39:11 +01:00