Fixed masks from RedstoneConnectorBlock not being used
Remove legacy logic overriding canConnectRedstone for side 0. All faces are now correctly handled by it
Add a client-side check in TickScheduler#loadRandomTick. This prevents client-side chuck corruption if world is loaded with any part that uses the TickScheduler (RedstoneTorchPart for example).
Add custom placement state logic for both button and lever parts rather than rely on the block's logic. Takes care of more invalid placement edge cases
Properly calculate Redstone connection masks for vanilla blocks rather than using 0x1F. This stops connections from behaving differently if the block is vanilla or a converted part. Plus, this fixes comparators/dust from being connected from top face
Register a bunch of new decorative 1.18 blocks as micro materials:
All Deepslate ores
Azalea leaves variants
Soul soil
Basalt variants
Lit redstone lamp
Purpur variants
Dirt path
Warped and crimson variants of Nylium, wart, planks, etc
Blackstone varients
Netherite, quartz, and nether brick variants
Honey, honeycomb
Lodestone
Blackstone variants
Crying obsidian
Copper block variants
Tuff
Calcite
Tinted glass
Add MultipartPlaceContext which improves placement context and also has native support for offset placement. It is also a subclass of BlockPlaceContext and is fully compatible with vanilla placement logic. All existing methods accepting a generic UseOnContext are kept and deprecated. Existing logic on those methods still work as before.
TickScheduler#loadRandomTick
. This prevents client-side chuck corruption if world is loaded with any part that uses the TickScheduler (RedstoneTorchPart
for example).0x1F
. This stops connections from behaving differently if the block is vanilla or a converted part. Plus, this fixes comparators/dust from being connected from top faceMultipartPlaceContext
which improves placement context and also has native support for offset placement. It is also a subclass ofBlockPlaceContext
and is fully compatible with vanilla placement logic. All existing methods accepting a genericUseOnContext
are kept and deprecated. Existing logic on those methods still work as before.