### Internal changes
- The mod's license has been updated to AGPL-3.0 or higher.
- The formatting of all files has been updated and normalized.
- Simplified the logic of some code, such as removing an extra variable assignment within `RamImpactTaskMixin`'s
injection method.
- Fixed multiple spelling errors, most notably correcting the spelling of "gibbous" in `astral:moon_phase`
- `RegisterableMap` has been updated.
- Most constructor arguments have been extracted into abstract methods.
- Values now have lazy initialization, only being constructed when they are registered or any value is fetched.
- Some static constants have been relocated.
- `NbtUtil.CUSTOM_MODEL_DATA_KEY` has been moved to `Customized.CUSTOM_MODEL_DATA_KEY`.
- `NbtUtil.SET_GLINT_KEY` has been moved to `ItemMixin.SET_GLINT_KEY`.
- Some static constants have been renamed.
- `CustomBlocks.DYED_AMETHYST_BLOCK_MAP` has been renamed to `DYED_AMETHYST_BLOCKS`.
- `CustomBlocks.DYED_AMETHYST_CLUSTER_BLOCK_MAP` has been renamed to `DYED_AMETHYST_CLUSTER_BLOCKS`.
- `CustomItems.CLOUDY_ARMOR_MAP` has been renamed to `CLOUDY_ARMOR`.
- `CustomItems.DYED_AMETHYST_BLOCK_MAP` has been renamed to `DYED_AMETHYST_BLOCKS`.
- `CustomItems.DYED_AMETHYST_CLUSTER_MAP` has been renamed to `DYED_AMETHYST_CLUSTERS`.
- `ItemStack`s now have the following methods added via interface injection:
- `astral$setItem` sets the `ItemStack`'s inner `Item` reference to a different item (e.g. a stack of 12 eggs -> a
stack of 12 snowballs).
- `astral$copyWithItem` makes a copy of the item stack with the inner `Item` reference changed into a different
item.
- `Cloudy` has been reworked (mostly) from the ground up.
- All methods now take an `ItemStack` argument.
- `MAX_STORMINESS` and `MIN_STORMINESS` have been replaced by the `getMaxStorminess` and `getMinStorminess` methods
respectively.
- `getStorminessLabelKey` has been replaced by the static constant `STORMINESS_LABEL_KEY`.
- `clampStorminess` now accounts for floating-point imprecision.
- `updateStormines` now handles increasing and decreasing storminess values slightly differently.
### Content changes
- Created `astral:placeholder` (`PlaceholderItem`), which is a dummy item that dynamically changes its model and item
name depending on NBT.
- Added an "Enderman Plush" model.
- Added a "Kiwi Plush" model.
- Added a "Handmade Mirror" model.
- Added a "Hatsune Miku Pop! Figurine" model.
- Added a "Coil Head Plush" model.
- Added a "Biblically-Accurate Spiral Plush" model.
- Created `PlaceholderMimicItem`, which nearly perfectly imitates another already-defined item, while *also*
extending `PlaceholderItem`.
- Updated cloudy items
- All items will automatically remove their Storminess NBT when the value stored is `0F`.
- All items have had their increase / decrease rates modified slightly.
- Updated dyed amethyst blocks.
- Must be harvested using a pickaxe.
- Outputs chime sound effects when walked on.
- Supports universal dyeing.
- Grouped together within the recipe book.
- Updated dyed amethyst clusters.
- Must be harvested using a pickaxe.
- Supports universal dyeing.
- Grouped together within the recipe book.
- Updated randomizer blocks.
- Craftable using 8 iron blocks and 1 redstone torch.
- Textures have been modified.
- Turns red in "boolean mode" as a more apparent visual indicator.
- Must be harvested using a stone pickaxe or higher.
- Lightning bolt entities now support the `{PreserveItems:1b}` NBT tag, which prevents hit items from being discarded.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }