Commit Graph

205 Commits

Author SHA1 Message Date
Dylan K. Taylor
102406ee79 Added froglights 2022-07-23 17:40:38 +01:00
Dylan K. Taylor
38e495babf Added mangrove roots and muddy mangrove roots 2022-07-23 17:20:23 +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
87b840ff97 Added a hack to allow tiles to trigger client-side render updates on blocks without actually changing the block
Bedrock block entity updates don't directly trigger block rendering
updates. This is a problem when the block entity data affects the
block's appearance directly (e.g. cauldron water colour, flower pot
contents), because it means changing them won't directly result in a
client-side render update.

This hack allows tiles to spoof block updates without actually changing
the server-side block, keeping the internals and API clean of random
shitbox workarounds.

fixes #5174
fixes #4944
2022-07-19 17:47:46 +01:00
Dylan K. Taylor
f64e306fb8 Make BlockIdMetaUpgrader API less dumb
the old impl prevented registering more than one meta -> state mapping since the legacy numeric ID map would throw an exception if attempting to map the same ID more than once.
2022-07-19 16:21:56 +01:00
Dylan K. Taylor
9a8902d1fe LegacyToStringMap: don't throw if the existing mapping is the same as the one we want to register
this was making it inconvenient for plugins to use BlockIdMetaUpgrader->addMapping(), because the block legacy ID map contains IDs up to 1.16, but the table of mapped 1.12 blockstates only goes up to ... well ... 1.12. This left a gap of several versions' blocks unable to be mapped.
2022-07-19 16:08:05 +01:00
Dylan K. Taylor
b36b65927c BlockDataUpgrader: expose BlockIdMetaUpgrader via getter 2022-07-19 16:02:35 +01:00
Dylan K. Taylor
afaf9dbc88 Rename LegacyBlockStateMapper -> BlockIdMetaUpgrader
this more accurately describes what it's used for.
2022-07-19 15:32:08 +01:00
Dylan K. Taylor
b0a492c063 Move simple block (de)serializer registrations into their own functions 2022-07-18 18:47:30 +01:00
Dylan K. Taylor
6d4279671e A giant hack to cut down code needed for runtime block serialization by 50%
this also avoids repeated information and inconsistencies.
2022-07-18 18:25:41 +01:00
Dylan K. Taylor
cf34f88a67 Make Block::decodeState() and encodeState() more codegen-friendly 2022-07-18 15:48:03 +01:00
Dylan K. Taylor
b8d1b00985 phpstan fail very sad :( 2022-07-18 15:26:14 +01:00
Dylan K. Taylor
8660dfe576 Generate traits for runtime enum serialization instead of helper classes 2022-07-18 15:16:33 +01:00
Dylan K. Taylor
07786dc4bc RuntimeDataWriter: fixed doc comment 2022-07-14 22:51:12 +01:00
Dylan K. Taylor
ba2baba7cc Added netherite blocks and items 2022-07-14 20:39:09 +01:00
Dylan K. Taylor
b4ce5ed515 ItemDeserializer: throw a more specific exception on unknown items 2022-07-14 19:16:15 +01:00
Dylan K. Taylor
eb8fb63409 Added cartography and smithing tables
these have working inventories, and their crafting menus will 'just work' once the items for the associated recipes have been implemented (maps, netherite).
2022-07-14 18:01:47 +01:00
Dylan K. Taylor
91719051e2 BlockStateToBlockObjectDeserializer: removed TODO mess
these were useful when writing the initial version from scratch; not so much for implementing random blocks
2022-07-14 16:50:08 +01:00
Dylan K. Taylor
d321094081 Added hanging roots 2022-07-14 16:47:55 +01:00
Dylan K. Taylor
323d31005f Added glowing item frames 2022-07-14 16:24:20 +01:00
Dylan K. Taylor
0c7370e564 Added wither rose 2022-07-14 16:07:16 +01:00
Dylan K. Taylor
eafc23c756 Added candles and cakes with candles 2022-07-13 23:54:41 +01:00
Dylan K. Taylor
8b2d941502 Offset integer ranges in runtime block data serialization
this is useful for stuff like snow layers where the range doesn't start at 0.
2022-07-13 19:49:30 +01:00
Dylan K. Taylor
32f9fcd4e9 Ignore coral_hang_type_bit on coral_fan_hang3
it's always written, but never used.
2022-07-13 16:38:37 +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
ccb3c3cb05 BlockStateData: use array<Tag> instead of CompoundTag to store state properties
this reduces the footprint of RuntimeBlockMapping by a further 1 MB, as well as simplifying various parts of the code, and solidifying the immutability guarantee of BlockStateData.
2022-07-09 16:03:51 +01:00
Dylan K. Taylor
66d655731a Don't barf on air itemstacks found on disk
closes #5143

this is caused by bugs in PM4, where it saved air itemstacks when it wasn't supposed to.

These issues are now all addressed in PM5, since ItemSerializer won't accept air itemstacks.
2022-07-08 18:19:46 +01:00
Dylan K. Taylor
d894c5e97f Drop string ID -> legacy ID conversion tables
these are not used for anything anymore
2022-07-07 20:00:25 +01:00
Dylan K. Taylor
419b21281d Fix Copilot mixup 2022-07-07 19:54:04 +01:00
Dylan K. Taylor
56e6a55645 LegacyBlockStateMapper: provide a way to add custom upgrade mappings
this will be needed by plugin developers to upgrade old custom blocks from PM4.
2022-07-07 19:44:16 +01:00
Dylan K. Taylor
da9937933b Implemented honey bottle 2022-07-07 01:06:17 +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
d725ded7b6 Added new ores 2022-07-05 21:43:47 +01:00
Dylan K. Taylor
a8dae96bb0 register honeycomb blocks properly 2022-07-05 21:03:27 +01:00
Dylan K. Taylor
a42bb9626d Added another handful of blocks
clearing out my workspace...
2022-07-05 20:42:22 +01:00
Dylan K. Taylor
3c017af6a0 Added a handful of new easy items 2022-07-05 16:46:57 +01:00
Dylan K. Taylor
412dcaa744 Implemented crimson, warped and mangrove signs 2022-07-05 16:18:54 +01:00
Dylan K. Taylor
68cbe46600 Exterminate legacy item IDs 2022-07-05 15:12:55 +01:00
Dylan K. Taylor
c5282b059b ... 2022-07-05 14:27:02 +01:00
Dylan K. Taylor
325f1cf82e Generalize runtime block data serialization
we want to reuse this code for item type data
2022-07-05 14:13:37 +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
4909c0f257 Fixed schema loading when the file path contains at least 4 numbers in a row
this spectactularly stupid bug could also have been addressed using a [^\/] in place of the . in the pattern, but I thought it made sense to make it impossible for this to happen again by making sure the regex only sees the file name.

fixes #5129
2022-07-04 22:15:50 +01:00