Commit Graph

144 Commits

Author SHA1 Message Date
Dylan K. Taylor
6a2315a63d Accept BlockTypeInfo in Block constructor, instead of BlockBreakInfo
this will allow more stuff to be passed via the constructor without having to change dozens of classes to do it.
2022-07-23 20:42:54 +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
b0c76f4db5 Fixed botched unit tests 2022-07-06 23:28:08 +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
0a23e91329 Rename BlockFactory::fromFullBlock() -> BlockFactory::fromStateId() 2022-07-05 13:46:19 +01:00
Dylan K. Taylor
d9544b5d0e Added soul fire 2022-07-04 22:32:35 +01:00
Dylan K. Taylor
2c33d8429e tests: remove unnecessary Block::getName() override 2022-07-03 20:08:56 +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
Dylan K. Taylor
c84033213f Updated BlockFactory consistency check 2022-07-02 21:55:35 +01:00
Dylan K. Taylor
bcdbb09c2c Updated BlockFactory consistency check 2022-07-02 20:19:58 +01:00
Dylan K. Taylor
248eacd042 GlazedTerracotta: make colour dynamic, like all other coloured blocks
made possible by stripping out legacy mess
2022-07-02 18:30:23 +01:00
Dylan K. Taylor
b125d4d25f Strip all remaining legacy item ID/meta stuff from blocks
the doors are now finally open, we can:
- make all the wood types dynamic
- fix glazed terracotta
- add all the new blocks

LET'S GOOOOOOOOOOOO
2022-07-02 17:48:11 +01:00
Dylan K. Taylor
2a0b500010 Block: Separate encoding of type and state data
the terminology of this needs improvement, but...

the basic concept here is that 'type' data will persist on an itemstack, while 'state' data will not.

Type data consists of things like:
- Colour
- Coral type
- Wet/dry (sponges)
- Live/dead (coral)
- Wood type

State data consists of things like:
- Facing
- Axis
- Powered/unpowered
- Open/closed

In the past, with the old system, this information was separated by way of getStateBitmask(). This solution was fraught with problems, but achieved the basic goal: removing unwanted block properties from items.
2022-06-30 18:08:34 +01:00
Dylan K. Taylor
b56d049103 Updated BlockFactory consistency check 2022-06-25 16:12:15 +01:00
Dylan K. Taylor
00b4e4016c Obliterate BlockLegacyIds 2022-06-25 14:42:32 +01:00
Dylan K. Taylor
e3a9324e8d Updated BlockFactory tests to avoid BlockFactory::get() (which is getting ready to die) 2022-06-24 23:44:55 +01:00
Dylan K. Taylor
8e002fc1ca BlockTest: fixed unintentional use of global BlockFactory 2022-06-24 23:41:13 +01:00
Dylan K. Taylor
61da920db0 Fixed consistency check 2022-06-24 23:33:18 +01:00
Dylan K. Taylor
f24f2d9ca9 Hit block legacy metadata with the biggest nuke you've ever seen
This commit completely revamps the way that blocks are represented in memory at runtime.

Instead of being represented by legacy Mojang block IDs and metadata, which are dated, limited and unchangeable, we now use custom PM block IDs, which are generated from VanillaBlocks.
This means we have full control of how they are assigned, which opens the doors to finally addressing inconsistencies like glazed terracotta, stripped logs handling, etc.

To represent state, BlockDataReader and BlockDataWriter have been introduced, and are used by blocks with state information to pack said information into a binary form that can be stored on a chunk at runtime.
Conceptually it's pretty similar to legacy metadata, but the actual format shares no resemblance whatsoever to legacy metadata, and is fully controlled by PM.
This means that the 'state data' may change in serialization format at any time, so it should **NOT** be stored on disk or in a config.

In the future, this will be improved using more auto-generated code and attributes, instead of hand-baked decodeState() and encodeState(). For now, this opens the gateway to a significant expansion of features.
It's not ideal, but it's a big step forwards.
2022-06-24 23:19:37 +01:00
Dylan K. Taylor
8b80c70b9c Merge branch 'next-major' into modern-world-support 2022-06-24 01:41:47 +01:00
Dylan K. Taylor
df2d1fd4f9 of course there were two bugs on one line ... 2022-06-24 01:40:26 +01:00
Dylan K. Taylor
04b855235a Merge branch 'next-major' into modern-world-support 2022-06-24 01:35:46 +01:00
Dylan K. Taylor
9f65fb5f90 Fixed top-side skulls with no-drop flag set being treated as unknown blocks 2022-06-24 01:31:11 +01:00
Dylan K. Taylor
1ff69136a3 Merge branch 'next-major' into modern-world-support 2022-06-07 20:01:40 +01:00
Dylan K. Taylor
38d6284671 Use PHP-CS-Fixer to enforce file header presence 2022-06-04 17:34:49 +01:00
Dylan K. Taylor
bd8dd48dee Assign new IDs to every block 2022-05-27 18:07:31 +01:00
Dylan K. Taylor
68491be847 Merge branch 'next-major' into modern-world-support 2022-05-20 11:21:35 +01:00
ipad54
1e59679ec2 Implemented Stonecutter (#4732) 2022-05-17 16:01:03 +01:00