This changelog is archived and covers Anvil up to 0.9.101. From 1.0.0 on, release notes are published on GitHub Releases.
Table of Contents
0.9.x
- 0.9.101
- 0.9.99
- 0.9.98
- 0.9.97
- 0.9.96
- 0.9.95
- 0.9.94
- 0.9.93
- 0.9.92
- 0.9.91
- 0.9.9
- 0.9.8.71
- 0.9.8.6
- 0.9.8.5
- 0.9.8.4
- 0.9.8.3
- 0.9.8.2
- 0.9.8.1
- 0.9.8
- 0.9.7.5
- 0.9.7.4
- 0.9.7.3
- 0.9.7.2
- 0.9.7.1
- 0.9.7
- 0.9.6.6
- 0.9.6.5
- 0.9.6.4
- 0.9.6.3
- 0.9.6.2
- 0.9.6.1
- 0.9.6
- 0.9.5.3
- 0.9.5.2
- 0.9.5.1
- 0.9.5
- 0.9.4.6
- 0.9.4.5
- 0.9.4.4
- 0.9.4.3
- 0.9.4.2
- 0.9.4.1
- 0.9.4
- 0.9.3.1
- 0.9.3
- 0.9.2
- 0.9.1
- 0.9.0 - Modular Architecture
0.8.x Series
0.7.x Series
0.6.x Series
0.5.x Series
0.4.x Series
0.3.x Series
0.2.x Series
Early Development
0.9.x
0.9.101
Anvil
- Sound files given with forward-slash paths are copied under their file name: before, only backslashes were split on, so a
path/to/sound.oggsource kept its whole path as its name.
Kit
- Wood set doors make double doors like vanilla: a door placed with a door on its left and none on its right hinges on the right and opens the other way, so the pair opens from the middle. Doors from other namespaces count whatever way they face, the set's own doors only when they face the same way. Added the
hinge_rightstate and theBlockWoodSetDoorcomponent (wood_set_door), which needs that state. - The wood set redstone consumer script is now
redstone-consumer.ts(wasredstoneConsumer.ts); the generated script index turns kebab-case module names intoregister<Name>Component.
0.9.99
Anvil
- Fixed
blocks.jsonnesting its blocks under a"blocks"key, which the game ignores: they now sit next toformat_version, like vanilla. This affected every block with custom sounds. - Added
block.client.sound_group(BlockSoundGroup.Wood), which gives a block the sounds of a vanilla sound group throughblocks.json, with no sound files (block_soundis still how you make your own).BlockSoundGrouplists the vanilla groups, andBlocksJSONObject.add_blocktakes the group. process_subcommandtakesexit_on_error, which exits with the subprocess's return code when it fails. The script build andanvil builduse it, so a failed build fails the CI job instead of carrying on.- A Blockbench model already loaded as another source can also be loaded as
items, this is particularly useful for Item Embeds and because there are no item model exports. - The generated GitHub release workflow runs on Ubuntu and can also be started by hand, never runs two releases of a ref at once, installs
mcanvilat least as new as the Anvil that generated it, plus the project'srequirements.txt, and builds with local export on. It releases only when no release exists for the version (any other API error fails the job instead of guessing), checks that the build made the.mcaddonor.mcworldthe target needs, and tags the pushed commit.
Kit
- Added
WoodSet.map_color(color)(andmap_color=oncreate_wood_set) to the wood set kit: the color every block of the set has on a map, "#e6d063" by default. Each block'screatetakes it as a keyword-onlymap_color. - Added
WoodSet.sound_group(group, parts)andWoodSet.options(parts, **options)to the wood set kit: the first sets the vanilla sound group of some parts, the second passes keyword arguments to theircreate, like the ids of the sounds the scripts play (open_sound,close_soundfor doors, trapdoors and fence gates,on_sound,off_soundfor buttons and pressure plates). A block's own sounds from files are made withblock.client.block_sound(...)on the built part. - Wood set blocks have vanilla sounds: the
woodgroup,hanging_signfor the hanging sign andgrassfor leaves and saplings, as oak has. - Wood set doors, trapdoors, fence gates, buttons and pressure plates play their vanilla open, close and click sounds: the game only plays those for vanilla blocks, so the scripts play them (also when redstone opens or closes them).
BlockWoodSetInteractable,BlockWoodSetRedstoneConsumerandBlockWoodSetTogglabletake their ids asopen_sound,close_sound,on_soundandoff_sound. - Wood set blocks now use
BlockLiquidDetectionlike vanilla Bedrock: slabs, stairs, fences, fence gates, doors, trapdoors, signs, hanging signs and leaves can be waterlogged, and saplings pop off and drop their loot when water flows into them. Leaves that decay while waterlogged leave their water behind. - Wood set doors, trapdoors and fence gates keep their open state when the world reloads. A
poweredstate remembers the last redstone power, so they only open or close when it changes (before, any redstone update without power closed them). Doors count as powered while either half is. Blocks usingBlockWoodSetRedstoneConsumerneed apoweredstate.
Repository
- Anvil's own GitHub workflows are split into
main,test,version,release,publish_pypianddocs(renamed frombuild_docs), replacingpublish_to_pypiandpublish_to_test_pypi.
0.9.98
Anvil
Block.descriptor()takes states as keywords (leaves.descriptor(natural=True)uses the block's own namespace) and no longer exports empty tags.- Fixed
MinecraftBlockDescriptorturning state values into strings, so a boolean state was exported as"True"and ignored by the game (feature-placed blocks kept the default state). Values now keep their type. - Added
BlockItemVisual.item_display_transforms(), which replaces theitem_display_transformsof a Blockbench model with your own per display slot (or keeps the rest withmerge=True). In theguislot,fit_to_frameis exported when given:Trueas{},Falseas an explicitfalse. No other slot accepts it. It only works on a visual made from a collection, and the transforms are shared by every block using that collection's geometry. - Added loot table condition support (
LootConditions) forLootTablepools and entries (pool.conditions,entry.conditions), supportingmatch_tool,random_chance,random_chance_with_looting,random_difficulty_chance,random_regional_difficulty_chance,killed_by_player,killed_by_player_or_pets,killed_by_entity,entity_killed,has_variant,has_mark_variant, andentity_properties. - Enhanced
TreeFeaturewith method chaining, support forpoplar_trunkandpoplar_canopy, and shorthand builder methods for all trunk and canopy types (trunk,fancy_trunk,acacia_trunk,cherry_trunk,fallen_trunk,mangrove_trunk,mega_trunk,poplar_trunk,canopy,fancy_canopy,acacia_canopy,cherry_canopy,mangrove_canopy,mega_canopy,mega_pine_canopy,pine_canopy,poplar_canopy,roofed_canopy,spruce_canopy,random_spread_canopy). - Feature and feature rule files use the game version (
MANIFEST_BUILD) as their format version, like the other content types. - Breaking:
SnapToSurfaceFeaturetakessearch_rangein place ofvertical_search_range, which the game no longer accepts from format version 1.26.50, and supports thewallsurface andallow_non_air_placement. - Added
MinecraftItemTags.Leavesand the other item tags missing from the enum.
Kit
- A built
WoodSetexposes the feature its saplings grow into astree_feature, so what builds the tree from the set (.tree(lambda palm: ...)) doesn't need to hand it back through a closure. - Wood sets ship their two Blockbench models (
wood_setandwood_set_boat): when either is missing fromassets/bbmodels,build()asks whether to copy the base into the project, and never overwrites an existing model. WoodSet.build()no longer special-cases the leaves and the sapling: every part is created and stored the same way.- Wood set saplings grow on random ticks instead of a scheduled tick, with vanilla's two stages (the
stagestate): a random tick (1 in 7, light 9 or more above) or a bone meal (45% in survival, with particles, using one) advances a stage, and the second stage places the tree. Bone meal in creative places it at once. WoodSet.sapling_on(blocks)sets the blocks the sapling can be planted on (dirt, grass, sand... by default).WoodSet.leaf_distance(blocks)sets how far from a log the leaves can still hold on (4 by default, like vanilla), for trees whose canopies reach further.- Wood set leaves carry the
minecraft:leavesitem tag, so vanilla recipes that take it (smelting leaves into leaf litter) work with them without a recipe of the kit's own. - Added the
WoodSetclass to the wood set kit: configure it with.tree()and.leaf_drop(item, chance, count)(extra leaf drops like the oak apple, for breaking and decaying), then.build(). It maps part names to parts as before.create_wood_setremains as a shortcut, now withleaf_drops=. Breaking:WoodSetwas the type of whatcreate_wood_setreturned and is now this class. - Wood set leaves now behave like vanilla leaves: natural leaves decay on random ticks (the scheduled tick that never fired on generated leaves is gone), any log or wood within 4 blocks holds them up through any leaves, and flammability and blast resistance match vanilla. The kit's logs and wood carry the
logtag. create_wood_set(tree=...)also takes a function that receives the finished set and returns the tree, so the tree can use the set's own blocks (the sapling is made last).- Added
WoodBlock.LEAVESandWoodBlock.SAPLINGto wood sets (<name>_leaves,<name>_sapling, withBlockWoodSetLeavesandBlockWoodSetSaplingfor their scripts):- Leaves work like vanilla's: they have a
naturalstate, off for leaves a player placed, which stay forever. Whatever generates leaves (a feature, a jigsaw structure, a script) sets it on, and only those leaves decay, when none of the set's logs or wood is within 4 blocks through leaves of the same kind, dropping a sapling or sticks by chance. - Shears and silk touch drop the leaves themselves; any other way drops a sapling or sticks by chance. These drops are defined in the block's loot table using
match_toolandrandom_chanceconditions, handled natively by the game engine rather than by break scripts. - Saplings go on dirt-like blocks, grow by random ticks or bone meal through two stages, and then place the feature given as
treetocreate_wood_set, aFeatureor its identifier. A set with saplings requires it (aValueErrorotherwise, unlessWoodBlock.SAPLINGis excluded), and the kit makes no trees of its own: the caller builds and queues the feature, which can use the set's blocks by their identifiers (<namespace>:<name>_log, and<namespace>:<name>_leaveswithnaturalon).
- Leaves work like vanilla's: they have a
create_wood_setreturns aWoodSet, a typed dict of what it made, oneWoodSetPart(block, item)per block named likeWoodBlockin lowercase (wood["planks"],wood["boat"]; boats hold their entity). Parts left out withexcludeare missing.- Wood sets share their Blockbench models: every block uses the
wood_setmodel and every boat thewood_set_boatmodel, instead of<name>_planksand<name>_boatper set, so a set only differs by its names and textures. Each shared model must hold the textures of every set (<name>_planks,<name>_log,<name>_boatand so on). Existing projects rename<name>_planks.bbmodeltowood_set.bbmodeland<name>_boat.bbmodeltowood_set_boat.bbmodel, and merge the textures of their sets into them. Adding the same block culling rule twice to a geometry now keeps one, so blocks sharing a geometry can each add it. - Wood set buttons and pressure plates define
minecraft:redstone_producerin their base components as well as their permutations, which format 1.26.20 and later require. They also keep ticking only while pressed (a looping tick in thepoweredpermutation); the base components have a tick that runs once and stops, which a block with anonTickscript needs, and their script releases them with a short timer as well, in case the engine does not start the tick when a script presses them. - Wood set signs and hanging signs tick once, not every tick: the text is drawn on the first tick and again when it is edited, dyed or made to glow, since it stays in the world until the sign is broken.
refreshSignText(block)in the sign script draws it again for scripts that change a sign's properties. - Wood set signs and hanging signs now stack to 16, like vanilla. Boats and chest boats already stacked to 1, and every other block keeps the default of 64.
0.9.97
Kit
- Wood set signs: the wall sign and the standing sign are now one block,
<name>_sign, with astandingstate that picks its shape:- Standing (the default) turns in 16 steps and is selected by a post; not standing hangs flat against the side of a block in one of four directions.
- Placing the sign item on the side of a block turns
standingoff and points the sign at that block. It breaks with the block below, or with the wall it hangs on. WoodBlock.WALL_SIGNandWoodBlock.STANDING_SIGNare replaced byWoodBlock.SIGN.BlockWoodSetSigntakeswall_text_offset(where the text sits on a wall) in place ofwall_sign.- Added
SupportedBy.SigntoBlockWoodSetSupport.
- Wood set logs and wood: stripping with an axe is now done in a world event (
registerStrippableEvents), so the blocks no longer handle interactions themselves, which stopped other blocks from being placed against them. create_wood_set(name, exclude=())now lists the blocks to leave out instead of the ones to create (everything is created by default), as aWoodBlock, several combined with|, or a list:create_wood_set("rotten", [WoodBlock.DOOR, WoodBlock.BOAT]). Theblocksargument is removed.
0.9.96
Anvil
- Added the
--debugflag toanvil build, enabling debug mode for that build. - Component dependencies of a permutation can now be satisfied by the block's root components.
- Bumped the geometry format version to
1.26.0. - Declared
requestsas a dependency (it was imported but only installed indirectly).
Models
- Added
anvil.api.models, builders for model files made in code:Geometry(*.geo.json): a tree of bones holding cubes and locators, withclone(),merge(),translate()andscale(). Cubes use box UV (uv=(u, v)) or per-face UVs as keyword arguments (north=((0, 0), (4, 4)),up=((4, 0), (4, 4), 90), or a dict for amaterial_instance).Animations(*.animations.json): many animations in one file, with position/rotation/scale keyframes, particle, sound and timeline events, andvalidate()against aGeometry.VoxelShape(*.shape.json): named groups of boxes, built like aGeometry.
- Geometry, animation and culling shape references now accept these objects as well as names:
- Entities and attachables:
geometry(...),animation(...)andreuse_assets.geometry(...)/reuse_assets.animation(...). BlockGeometry,BlockItemVisualandBlockEmbeddedVisualaccept aGeometry.BlockGeometry.block_culling()accepts aVoxelShape, and gives a code-built geometry its own culling rules.
- Entities and attachables:
Blockbench
- The Blockbench importer now builds
anvil.api.modelsobjects and lives in the internalanvil.lib.blockbenchpackage. Imported models export the same files as before. - Collections:
- Groups nested inside a collection are resolved with their full children.
- A node is no longer exported twice when one of its ancestors is also in the collection.
queue_modelchecks the collection identifier.
- Block culling rules are now one file per geometry (
<model>or<model>.<collection>), checked against that geometry's bones;cube_indexis checked against the bone's actual cubes. - Voxel shapes mirror the model's groups; exporting a voxel shape from a model with no bounding boxes now raises an error, and inverted boxes are normalized.
- Animations:
- Empty particle and sound effects are skipped.
- Sounds without a locator no longer write
"locator": null. - Several events on the same keyframe are all kept.
- Animation files are exported under their source folder.
- Keyframe values are trimmed, and a blank value counts as 0 like in Blockbench, instead of exporting an invalid Molang expression.
- Loading the same
.bbmodelunder two sources (e.g. as an item and as a block) now raises an error. - Duplicate bone names in a model now raise an error instead of silently dropping a bone.
- A model with both top-level cubes and a
rootgroup keeps all cubes. override_bounding_boxnow also applies to geometries that were already built.
Blocks
- Added the
BlockReplaceablecomponent. BlockEntityno longer writes an emptycontainerwhen noslot_countis given.BlockMapColoraccepts any color format.BlockItemVisualandBlockEmbeddedVisualsupport Blockbench collections (collection=) andbone_visibility().placement_directiononly writes the fields that are set.- Removed a duplicate definition of
BlockDestructionParticles. - Fixed
BlockGeometry.n_way_visual_rotation(), which always failed; it now takes the axes as keywords like the visual components:n_way_visual_rotation(y=...).
Molang
- Breaking:
Query.AllandQuery.Anytake the compared queries as a list:Query.All(query, [a, b]). - Breaking:
Query.AllTagstakes a list of tags,Query.AllTags(["minecraft:is_axe"]), and raises an error when given a single string.
Enums
- Breaking: block state enums were renamed and regrouped:
BlockFaces→BlockFaceValuesBlockFacesTrait→FacingDirectionValues(which also replacesFacingDirectionsTrait)CardinalDirectionsTrait→CardinalDirectionsValuesVerticalHalfTrait→VerticalHalfValuesBlockCorner→BlockCornerValuesBlockCardinalConnection→CardinalConnectionStates
- Added the
BlockCornerStateandMultiblockPartStateenums.
Items
CraftingItemCatalogis now a true singleton, so groups added from different places end up in one catalog file instead of overwriting each other.CraftingItemCatalog.add_group()extends an existing group instead of adding a duplicate.
Schemas
MinecraftBlockDescriptorcan match blocks by tags alone:tagsis now a Molang expression (e.g.Query.AllTags([...])) andnameis optional. Block states still require a name.
Vanilla
- Added
MinecraftBlockTags.CornerableStairsandMinecraftBlockTags.HasFenceConnections. - Added
MinecraftItemTags.CopperTier.
Kit
- Added
anvil.kit.blocks.wood_set:create_wood_set(name, blocks=WoodBlock.ALL)creates a complete wood set (planks, logs, wood, stripped variants, slabs, stairs, fences, fence gates, doors, trapdoors, buttons, pressure plates, wall signs, standing signs, hanging signs, boats and chest boats). The set includes:- Its recipes.
- Vanilla wood tags, so every vanilla wood recipe accepts its planks, slabs and logs.
- Vanilla fuel values.
- Creative inventory placement next to the vanilla blocks, or in its own group with
own_creative_group=True. - The TypeScript components the blocks need, generated for every wood set in the project.
- Wall signs and standing signs (16-way rotation), placed with a single
<name>_signitem like vanilla signs, that ask for their text in a form when placed, store it in the block's dynamic properties, and show it again for editing when used (needsscriptui). - Hanging signs: one block hung under a block or on its side (cardinal rotation, a separate bone for each), 4 lines of 9 characters, broken with the block holding it.
- Signs can be dyed and made to glow with a glow ink sac (an ink sac removes the glow), in vanilla's dye colours and glow outline.
- Boats (two seats) and chest boats (one seat and a 27-slot chest, opened by sneaking) sharing one model. They float, face away from the player when placed, steer like vanilla boats (A/D turn, W/S row), can be leashed, and animate their paddles and shake when hit. They break after a few quick hits, or at once with an axe or in creative, dropping their item (not in creative) and the chest's contents.
- Its custom components as classes in
anvil.kit.blocks.wood_set.components:BlockWoodSetSign(text position, scale, line length, double-sided text),BlockWoodSetSupport(breaks the block with the block below, the one it was placed against or the one it faces, set withSupportedBy),BlockWoodSetInteractable,BlockWoodSetRedstoneConsumer,BlockWoodSetStrippable,BlockWoodSetTogglableandBlockWoodSetSlab.
anvil.kit.world.ldtknow explains how to install Amulet (pip install mcanvil[ldtk]) when it is missing.
Documentation
- Added the Models API pages and a Kit page, which notes that the kit may change between minor versions while
anvil.apiis the stable layer. - Updated the PBR guide to
BlockFaceValues.
0.9.95
Anvil
- Updated
EntityProjectileandEntityAIRangedAttackscheme - Added
ServerSoundDefinitionsupport, requires the Preview flag. - Manifest setting text is now localized.
0.9.94
Anvil
- Fixed format versions
0.9.93
Anvil
- Updated format version to
1.26.50. - Updated
@minecraft/npm package versions. - Particles now check for the existence of non vanilla particles referenced in the particle events.
- Behaviour Pack settings can now be used without setting the
previewflag to true.
Actor
- Updated
EntityAngerLevel,EntityProjectile,EntityAIRangedAttackcomponents. - Updated
EntityProjectilecomponent and itson_hitsubcomponents (wind_burst_on_hit,catch_fire_on_hit,thrown_potion_effect,arrow_effect,impact_damage,spawn_chance,stick_in_ground) according to the latest Bedrock documentation. - Added
EntityFreezingImmune,EntityFreezingVulnerable,EntityCanStandOnPowderSnowcomponents.
Blocks
- Added the new
BlockEntitycomponent.
Vanilla
- Added new Abandoned Camp Feature/Structure entries.
- Added all new Wool Stairs and Wool Slabs 16 color block factories.
- Added all new Cushion item factories.
- Added the new Cushion entity factory.
- Added a new
minecraft:leavesblock tag.
0.9.92
Anvil
- Added cross-platform support for Linux and macOS alongside Windows. Operating systems outside of Windows, Linux, and macOS are explicitly disallowed and raise an
OSError. - Added
local_export(bool) configuration option under[ANVIL]inanvilconfig.json.- When enabled (or running on non-Windows), exports development resource packs, behavior packs, and worlds into an isolated
./output/com.mojang/directory structure (output/com.mojang/development_resource_packs/RP_<name>,output/com.mojang/development_behavior_packs/BP_<name>,output/com.mojang/minecraftWorlds/<name>), preventing namespace collisions with packaged distribution archives (.mcaddon,.mcworld,.zip,.pdf) in./output/. - On Windows with
local_export: false, continues exporting to Minecraft Bedrock AppData folders (RELEASE_COM_MOJANGorPREVIEW_COM_MOJANG). - On non-Windows platforms,
local_exportis enforced asTrueat runtime.
- When enabled (or running on non-Windows), exports development resource packs, behavior packs, and worlds into an isolated
- Updated
Directory.create()to safely support absolute paths cross-platform without prepending./. - Updated
anvil init --vscodeworkspace launcher to support cross-platform commands (starton Windows,openon macOS, andxdg-openon Linux). - Updated
anvil clean/anvil clearand build-time pack cleanup (clean_old_dev) to dynamically locate and clear development packs fromoutput/com.mojangwhen local export is active. - Simplified
esbuild.jsscaffolding template to drop local path guessing and rely exclusively on the--outdirargument supplied duringanvil build. - Updated documentation and README with badges and setup instructions for Windows, Linux, and macOS.
Blockbench
- Added support for locator
rotationandignore_inherited_scaleproperties in Blockbench models. - Fixed newline handling in animation particle keyframes, allowing particle scripts, effects, and locators to be parsed cleanly without formatting issues.
- Added
VOXEL_SHAPE_VERSION(1.21.110) format version constant.
Components
- Added
add_stamp(bool) option under[ANVIL]inanvilconfig.jsonto configure whether metadata stamps are prepended to generated files. - Restricted
EntityAIHide.poi_typewith strictLiteral["bed", "jobsite", "meeting_area"]typing.
0.9.91
CLI & Scaffolding
- Enhanced
AnvilValidator.check_new_versions()to detect outdated packages across both npm dependencies and pip (mcanvil), outputting a clear, color-coded terminal table. - Updated project scaffolding template
package.jsonto include default"build"(node esbuild.js) and"test"(npx tsc --noemit) npm scripts. - Updated
esbuild.jsscaffolding template to targetBP_${projectName}behavior pack output directory and dynamically exclude@minecraft/server-uibased on thescriptuiconfig flag. - Updated GitHub Actions release workflow template to use Node.js version 24.
- Comprehensive documentation updates for the
anvil initcommand (aliasanvil create), clarifying valid flags and providing guidance on removed CLI options (--pbr,--random_seed/--seed, and--fullns).
Core
- Updated behavior pack module dependencies (
ManifestBP) so that@minecraft/serverand@minecraft/server-uipreview module versions are only used when bothpreviewandexperimentalflags are enabled.
0.9.9
Blockbench
- Added Voxel Shape support for Blockbench models. Now you can generate bounding boxes for your blocks in Blockbench and queue them to export using BlockGeometry.block_culling with full support for collections.
Blocks
- Added
BlockInstrumentSoundblock component for mapping note block sounds toupanddownblock faces. - Enhanced
multi_blocktrait in_BlockTraits:- Added support for horizontal directions (
"north","south","east","west") under experimental flag. - Added strict trait conflict validation:
multi_blockcannot be combined withplacement_positionorconnectiontraits. - Restricted
multi_block+placement_directionusage toPlacementDirectionTrait.CardinalDirection.
- Added support for horizontal directions (
Features
- Added
MultiBlockFeaturefor placing multi-blocks in worldgen.
Actors & Entities
- Added
EntityNotPickableFromInsidecomponent to prevent cursor targeting when the player's camera lies inside the entity's collision box. - Updated
EntityApplyKnockbackRules,EntityProjectileandEntityAIUseKineticWeaponwith the new schema. - Updated
EntityMovementMeterscalculation precision to 4 decimal places.
Vanilla
- Added
"minecraft:cushion"to vanilla entity IDs list. - Added ~80 new block factories:
- Colored wool slabs, double slabs, and stairs for all 16 wool colors (
{Color}WoolDoubleSlab,{Color}WoolSlab,{Color}WoolStairs). - Full Poplar wood block set (
PoplarButton,PoplarDoor,PoplarDoubleSlab,PoplarFence,PoplarFenceGate,PoplarHangingSign,PoplarLog,PoplarPlanks,PoplarPressurePlate,PoplarSapling,PoplarShelf,PoplarSlab,PoplarStairs,PoplarStandingSign,PoplarTrapdoor,PoplarWallSign,PoplarWood). StrippedPoplarLogandStrippedPoplarWood.- Poplar leaf variants (
OrangePoplarLeaves,RedPoplarLeaves,YellowPoplarLeaves). - New blocks:
RedShrub,ShelfMushroom, andStrawBed.
- Colored wool slabs, double slabs, and stairs for all 16 wool colors (
0.9.8.71
Anvil
- The
Fontsobject will now create thedefault8texture in the resource pack instead of/assets - Update format version to
1.26.34. - Increased the file path length from 80 to 96.
- Fixed molang condition test unit.
Actors
- You can now customize your initial state name in client/server animation controller with "default" as the default name.
- Server animations now require a list of commands/events instead of a star-args.
- Creating a render controller with the same name will now return the existing controller if it exists instead of overwriting it.
Blocks
- Added
minecraft:sixteen_way_rotationtrait.
Molang
- Renamed
Molang.molang_condition()toMolang.condition()
0.9.8.6
Anvil & Schemas
- Added core schema classes
NoiseDescriptorandNoiseBlockSpecifierto represent surface/subsurface builder schemas with validation supporting the Bedrock 1.26.30 interval rules.
Biomes
- Updated surface and subsurface builders (
_BaseBiomeSurfaceBuilder.set_noise_gradient_builder) to support new noise gradient schemas. - Enhanced the
BiomeNoiseGradientcomponent withnoise,noise_block_specifiers, andnon_replaceable_blocksbuilders while maintaining legacy list-style compatibility. - Promoted
minecraft:sulfur_cavestoMinecraftBiomeTypes.
Items
- Added item factories for
SulfurSpikeandMusicDiscBounce. - Added promoted tags for
minecraft:sulfur_cube_archetype_bouncy,minecraft:sulfur_cube_archetype_regular, andminecraft:sulfur_cube_archetype_stickyunderMinecraftItemTags. - Updated
ItemUseModifierswith thestart_usingparameter.
Blocks
- Added block factories for
Cinnabar,CinnabarBrickSlab,CinnabarBrickStairs,CinnabarBrickWall,Sulfur,SulfurSpike, andPotentSulfur. - Added
BlockPrecipitationInteractionscomponent. - Supported
n_way_visual_rotationforBlockGeometry,BlockItemVisual, andBlockEmbeddedVisual. - Exposed
PlacementDirectionTrait.SixteenWayRotation. - Added the
lava_flammableparameter onBlockFlammable.
Actors & Entities
- Added the
SulfurCubeentity factory. - Added
hide_held_itemsoption to the entity client description. - Updated
EntityAIPickupItemswith thestop_if_holding_itemfield. - Added
execute_event_on_home_blockto entity events, sequence steps, and randomize steps. - Supported direct definition of
play_soundandemit_particlein sequence and randomize event builders. - Added new actor components:
EntityBounciness,EntityAirDragModifier,EntityApplyKnockbackRules,EntityPushableByEntity(with full preset options),EntityAreaAttack,EntityLeashable, andEntityLeashableTo. - Added
unleashevent response capabilities for entity server events. - Added
redstone_strength_at_positionquery filter.
0.9.8.5
Anvil
- Added a
--cleancommand-line flag to the build CLI command to clear previous project development packs before compiling. - Improved the
CameraPresetto support settinglistenerto a boolean or custom position string, configuring inputcontrol_scheme, setting search cones for targeting assist limits, validating rotation boundaries, and improved docstrings. - Added the
ControlSchemesenumeration representing different Bedrock camera control schemes (camera_relative,camera_relative_strafe,player_relative,player_relative_strafe,locked_player_relative_strafe). - Updated the packaging system to bundle the
dbdirectory for world templates. - Enhanced color validation system to properly support RGB/RGBA lists and corrected hex string checks.
- Simplified the generated GitHub Release Workflow template to directly pull the package target settings from
anvilconfig.json. - Added unit tests covering blockbench parsing, camera presets, components, LDtk levels, PBR settings, and world icons.
Actors
- Added a new
.config(...)method to the entity server description to set configurations likesummonable,spawnable,experimental,runtime_identifier, andspawn_categoryin a single call. - Deprecated properties
Summonable,Spawnable,Experimental, andRuntimeIdentifieron the server description. - Added support for configuring a custom
initial_statefor animation controllers via.animation_controllerandadd_controller(defaults to"default"). - Refactored
add(),remove(), andqueue_command()on_BaseEvent,_Randomize, and_Sequenceclasses to accept a list of strings (list[str]) instead of varargs, with added type enforcement. - Updated sound event registrations to avoid queueing empty sound definitions, automatically prepending the namespace to music references, and tracking modification state.
- Enhanced the
EntityProjectilecomponent constructor with support for configuration parameters:hit_nearest_passenger,ignored_entities,isolated_physics,owner_launch_immunity_ticks, andreflect_immunity.
Blocks
- Added
Block.override_vanilla_texture(...)to extract textures from a Blockbench model and export them as a block's texture layout (as a.texture_set.jsonfile), bypassing the generation of block configuration files (server/client JSON files) for doing vanilla texture updates. - Updated
Block.descriptor(...)to guarantee all block state keys are serialized as strings. - Renamed the block tag component identifier to
"minecraft:tags"(previously"minecraft:tag").
Biomes
- Updated client biome files to use the
.client_biome.jsonextension (previously.biome.json). - Updated component identifiers to use their string representations instead of the
.identifierattribute. - Simplified
fog_appearanceto take aFogobject directly. - Automatically queue client biomes when the parent biome is queued.
Blockbench
- Added advanced support for rendering layered/blended textures from Blockbench files, with native blending using Pillow (supporting blend modes such as overlay, multiply, hard_light, screen, darken, lighten, default, behind, alpha_mask, set_opacity, divide, and color).
- Support exporting textures in formats other than PNG (including WebP, TGA, JPEG/JPG).
- Support specifying a custom destination directory when queueing textures.
PBR
- Completely modularized the PBR API. The monolithic
pbr.pyhas been split into multiple dedicated modules:atmosphere,color_grading,cubemap,fallback,fog(moved to the PBR namespace),lighting,shadow,texture_set, andwater. - Introduced granular Minecraft version configuration mapping for each PBR settings file type.
- Updated PBR JSON templates (
vv_atmosphere_settings.jsont,vv_fog_settings.jsont, andvv_local_lighting.jsont) to align with current Bedrock schema requirements, including wrapping identifiers under description blocks and updating local light settings. - Updated all API guides and examples to reference the correct sub-modules.
UI & Dialogues
- Updated NPC screen dialogue components (
npc_name,text) and dialogue buttons (name) to wrap user-provided text/names inside the translation schema format ({"rawtext": [{"translate": ...}]}).
World / LDtk
- Updated the LDtk world generator tool to write separate
<level_name>.jsonfiles underscripts/javascript/content/levels/instead of writing a single massiveentities.tsfile. - Added support for calculating Minecraft coordinates (
corner_0,corner_1), capturing custom spawn points, and ignoring entities configured withdo_not_spawn.
0.9.8.4
Anvil
- Added
subtitlesupport to all sound events. You can now add your subtitle to your entity, block or individual sound event. Subtitles are localized automatically.
Actors
- Added
spawns_above_block_filtermethod to Entity Spawn rules.
0.9.8.3
Actors
- Fixed
EntityPushableByBlockandEntityPushableByEntityscheme forcing objects rather than booleans. - Removed
goal_radiusfromEntityAISleepas it seems to be silently removed.
0.9.8.2
Anvil
- Dropped the following libraries: numpy, pygithub, halo, pandas.
- Updated format versions.
- Improved component clashes and dependency validation.
Actors
- Updated entity component scheme.
- Added
on_pickup_item_startandon_pickup_item_endtoEntityAIPickupItems. - Added
EntityOnEquipmentChanged,EntitySpawnOnDeathComponents. - Added
EntityAirDragModifier,EntityUseUniformAirDrag,EntityApplyKnockbackRulesComponents. Require Experimental toggle. - Refactored
EntityAIFollowTargetCaptaintoEntityAIFollowTargetLead. - Updated
EntityKnockbackResistance, `` - Added
has_same_equipment_in_slot_asfilter.
Blocks
- Added validation for placement_direction
y_rotation_offset. - Block tags have been completely changed, now requiring the use of
BlockTagComponentwith a new format. Anvil will handle old code using the permutation tag method so no immediate changes are need, but that will be removed inv1.0. Updating the code is advised. - Added
BlockChestObstructioncomponent.
Items
- Added new sulfur item tags.
Features
- Added
embed_in_surfacetoSnapToSurfaceFeaturefeature. - Added
rotate_around_centertoStructureTemplateFeaturefeature. - Feature can now be used in
JigsawStructureTemplatePool.
Vanilla
- Added
SulfurCavesbiome type under the experimental flag. - Added
SulfurCubeentity type under the experimental flag. - Added
ChiseledCinnabar,ChiseledSulfur,Cinnabar,CinnabarBrickSlab,CinnabarBrickStairs,CinnabarBrickWall,CinnabarBricks,CinnabarSlab,CinnabarStairs,CinnabarWall,PolishedCinnabar,PolishedCinnabarSlab,PolishedCinnabarStairs,PolishedSulfur,PolishedSulfurSlab,PolishedSulfurStairs,PolishedSulfurWall,PotentSulfur,Sulfur,SulfurBrickSlab,SulfurBrickWall,SulfurBricks,SulfurCubeBucket,SulfurCubeSpawnEgg,SulfurSlab,SulfurStairsitems under the experimental flag.
Biomes
- Added
BiomeSubSurfaceBuilderbiome component. Details are virtually non existent on the component, until further information can be found, the component inherits fromBiomeSurfaceBuilder. - Added
BiomeNoiseGradientcomponent. Note: Thenoise_descriptorfield is completely undocumented on the learning portal.
0.9.8.1
Anvil
- Fixed github workflows executing on linux.
Molang
- Fixed
deprecatedmodule import.
0.9.8
CLI
- Added new build arguments:
--nocompileto skip compilation entirely.--workflowto generate (or update) a github workflow that handles packaging and publishing releases on github pushes.--minifyto override the anvilconfig minify parameter and force anvil to minify JSON and JS.--no-arch->--noarch.
Anvil
- Fixed AnvilIO bundling typescript .map files.
Molang
- Added Null Coalescing
[??]as XOR operatorQuery.Variant() ^ 5. - Added
[]array access to Molang. - Added
molang_condition,molang_return,molang_block,molang_loopandmolang_for_eachas class methods to the Molang class. - Added
this,break_andcontinue_as properties to the Molang class.
0.9.7.5
Anvil
- Fixed python build tool skipping over template files.
0.9.7.4
Anvil
- Added missing init files.
0.9.7.3
CLI
- Fixed command launch on github workflows.
0.9.7.2
Anvil
- Added a new github workflow generated with your projects, the workflow will automatically compiles and creates an
.mcaddonand.zip. Then creates a new release in your repository using the latest push version and changelog. - Setting up the ground work for unit tests.
Blocks
- Improved the TagComponent.
0.9.7.1
Anvil
- Added community contribution support with new issue templates, an updated
CONTRIBUTING.md, and refreshed README guidance. - Work is being done to add strict typing to the entire Anvil framework.
CLI
- Split the cli file into smaller focused command files in
./cli_commands. - Added command aliases to existing commands, the old commands still work fine.
- Added a new command
anvil process-sounds/anvil sounds. This command will take all of your sounds inassets/soundsof the formats.wav,.mp3and.oggand processes them usingffmpeg. The script will convert them all to.ogg, normalizes loudness, lufs and sample rate. NOTE: this is a destructive process, runanvil sounds --helpfor more information.
Features & Feature Rules.
- Added
DistributionMixintoScatterFeatureallowing the configuration of the feature distribution. #1 - Removed unused
DistributionMixinfromSearchFeature. #1 DistributionMixiniteration now allows Molang. #2
Vanilla
- Changed how vanilla Items, Entities and Blocks are accessed. This will not break existing scripts but should improve performance negligibly.
0.9.7
Anvil
- Localization now uses
localization.csvinstead oflocalization.xlsx, with one column per Minecraft-supported language and incremental sync during export. ANVIL.compile()now supports packaging in the same call throughzip,mcaddon,mcworld,apply_overlay, andgenerate_technical_notesoptions.- Reworked file serialization and archive generation around new
AnvilIOandAnvilArchivehelpers backed byorjson, and moved localization storage to CSV-based workflows which improved compilation performance by a factor of 8. - Added Python
3.13support and updated package build requirements.
CLI
- Added
anvil clearto remove the current project's generated development packs. - Added
anvil profileto record apy-spyspeedscope trace for the current project. - Added pack size report to
anvil runon packages of typeaddon.
Actors
- Added broad Bedrock actor component coverage, including
EntitySpawnEggInteraction,EntityAnnotationBreakDoor,EntityAttackCooldown,EntityCombatRegeneration,EntityDamageOverTime,EntityDefaultLookAngle,EntityFloatsInLiquid,EntityGroundOffset,EntityInputAirControlled,EntityRemoveInPeaceful,EntitySoundVolume,EntityUnderwaterMountBreathing,EntityUsesLegacyFriction,EntityVibrationDamper,EntityWalkAnimationSpeed, andEntityWantsJockey. - Added interaction and gameplay actor components including
EntityBlockClimber,EntityBlockSensor,EntityBribeable,EntityCelebrateHunt,EntityHeartbeat,EntityHome,EntityInsomnia,EntityLeashableTo,EntityMobEffectImmunity,EntityTamemount,EntityTradeTable,EntityBalloonable,EntityBarter,EntityBoostable,EntityBreakBlocks,EntityDash,EntityDryingOutTimer,EntityFlocking,EntityGenetics,EntityGiveable,EntityGrowsCrop,EntityItemControllable,EntityManagedWanderingTrader,EntityPeek,EntityRaidTrigger,EntityRailMovement,EntityRailSensor,EntityRavagerBlocked,EntitySuspectTracking,EntityTeleport,EntityTrail,EntityTrust,EntityTrusting, andEntityVibrationListener. - Added player-state and utility actor components including
EntityPlayerExhaustion,EntityPlayerExperience,EntityPlayerLevel,EntityPlayerSaturation,EntityStrength, and experimentalEntityReflectProjectiles, and added a compatibility stub for the removedEntityPushablecomponent that redirects users to the replacement pushable components. - Added broad Bedrock actor AI goal coverage for combat, targeting, locomotion, and idle behavior, including
EntityAINearestPrioritizedAttackableTarget,EntityAIKnockbackRoar,EntityAIRandomStroll,EntityAILookAtPlayer,EntityAIRandomLookAround,EntityAIHurtByTarget,EntityAIMeleeAttack,EntityAIRangedAttack,EntityAISummonEntity,EntityAIDelayedAttack,EntityAIMoveToBlock,EntityAIEquipItem,EntityAISendEvent,EntityAIMoveTowardsTarget,EntityAIRandomSitting,EntityAIStayWhileSitting,EntityAIRandomSwim,EntityAIRandomBreach,EntityAIMoveToWater,EntityAIMoveToLand,EntityAIMoveToLava,EntityAILookAtTarget,EntityAIFollowParent,EntityAIPlayerRideTamed,EntityAIFollowOwner,EntityAIPanic,EntityAIChargeAttack,EntityAIRamAttack,EntityAIAvoidMobType,EntityAILeapAtTarget,EntityAIOcelotAttack,EntityAIOwnerHurtByTarget,EntityAIOwnerHurtTarget,EntityAIRandomSearchAndDig,EntityAIStompAttack,EntityAIRandomHover,EntityAIRoar,EntityAIFloatWander,EntityAILayDown,EntityAIMeleeBoxAttack,EntityAITimerFlag1,EntityAITimerFlag2,EntityAITimerFlag3,EntityAIRunAroundLikeCrazy,EntityAISlimeKeepOnJumping, andEntityAIRiseToLiquidLevel. - Added rider, pet, interaction, and environment AI goals including
EntityAIAdmireItem,EntityAIBarter,EntityAIBeg,EntityAIBreakDoor,EntityAIControlledByPlayer,EntityAICroak,EntityAIDoorInteract,EntityAIFleeSun,EntityAILayEgg,EntityAIMoveOutdoors,EntityAIOpenDoor,EntityAIPlayDead,EntityAIRestrictOpenDoor,EntityAIRestrictSun,EntityAITempt,EntityAIMoveToLiquid,EntityAIMoveToVillage,EntityAIMoveTowardsHomeRestriction,EntityAIMoveTowardsRestriction,EntityAIOfferFlower,EntityAIPetSleepWithOwner,EntityAIRandomLookAroundAndSit,EntityAISwell,EntityAITakeFlower,EntityAITeleportToOwner,EntityAIAquaticChargeAttack,EntityAIChargeHeldItem,EntityAIDrinkPotion,EntityAIFollowCaravan,EntityAIHoldGround,EntityAIJumpAroundTarget, andEntityAIJumpToBlock. - Added village, utility, and vanilla-specialized AI goals including
EntityAICelebrate,EntityAIDefendTrustedTarget,EntityAIDefendVillageTarget,EntityAIFloatTempt,EntityAILookAtEntity,EntityAIMoveAroundTarget,EntityAIMoveToPOI,EntityAINap,EntityAIStrollTowardsVillage,EntityAICelebrateSurvive,EntityAIFindCover,EntityAIFindUnderwaterTreasure,EntityAIFireAtTarget,EntityAIGoHome,EntityAIOcelotSitOnBlock,EntityAIRaidGarden,EntityAISwimIdle,EntityAIVexCopyOwnerTarget,EntityAIVexRandomMove,EntityAIRoll,EntityAIScared,EntityAIEmerge,EntityAISniff,EntityAISneeze,EntityAISnacking,EntityAISwimWander,EntityAISwimWithEntity,EntityAIDropItemFor,EntityAIFindMount,EntityAIFollowTargetCaptain,EntityAIGuardianAttack,EntityAIMoveThroughVillage,EntityAISonicBoom,EntityAIStayNearNoteblock,EntityAIStompTurtleEgg,EntityAIEatCarriedItem,EntityAIEndermanLeaveBlock,EntityAIEndermanTakeBlock,EntityAIGoAndGiveItemsToNoteblock,EntityAIGoAndGiveItemsToOwner,EntityAIInvestigateSuspiciousLocation,EntityAIMountPathing,EntityAIStalkAndPounceOnTarget,EntityAIEatBlock,EntityAIEatMob,EntityAITransportItems,EntityAISilverfishMergeWithStone,EntityAISilverfishWakeUpFriends,EntityAISkeletonHorseTrap,EntityAISlimeAttack,EntityAISlimeFloat,EntityAISlimeRandomDirection,EntityAISquidDive,EntityAISquidFlee,EntityAISquidIdle,EntityAISquidMoveAwayFromGround, andEntityAISquidOutOfWater. - Updated the new actor component docstrings to follow Microsoft Learn wording, including constructor argument types and default values.
- Refreshed components docstrings against current Microsoft Learn pages, including updated summaries, constructor parameter descriptions, and repaired Learn links for moved component pages.
- Render controllers now support
Molangexpressions for material bindings. - Component group properties now validate Minecraft's 32-property limit when defining custom properties.
Features
- Added a new world generation API under
anvil.api.features, includingFeatureRulesupport and feature definitions for aggregate, cave carver, fossil, geode, growing plant, multiface, Nether cave carver, ore, partially exposed blob, scatter, search, sculk patch, sequence, single block, snap to surface, structure template, surface relative threshold, tree, underwater cave carver, vegetation patch, and weighted random features. - Added feature distribution helpers, biome filter integration for feature rules, and support for the
pregeneration_passplacement pass. - Note: There is a mismatch between what the scheme says on the Learn Portal and what Minecraft accepts. If you find any bugs please report them.
Molang
- Added
Context.ItemSlot().
0.9.6.6
Blockbench
- Added support for multiblock collections, now you can reference the specific collections in your models and the collections will be exported as separate geometries. This is useful for multiblock structures and blocks with different states that require different geometries. For example, a door can have a "bottom" collection and a "top" collection, and you can reference them in your block description as
BlockGeometry("door", collection="bottom")andBlockGeometry("door", collection="top").
Actors
- Fixed
EntityPushableByBlockidentifier. - Updated
EntityAIFollowMobscheme.
0.9.6.5
Anvil
- Updated to support Minecraft
1.26.10release.
Actors
- Added
EntityGameEventMovementTracking,EntityAIRandomFly,EntityAICircleAroundAnchor,EntityAISwoopAttack,EntityAISwimUpForBreathcomponents. - Added
held_item_scalemethod toEntityClientdescription. - Split
EntityPushablecomponent intoEntityPushableByEntityandEntityPushableByBlockcomponents. - Updated
EntityAgeablecomponent to support baby growth halting.
Items
- Added
ItemDurabilitySensor,ItemSeedcomponents.
Blocks
BlockSelectionBoxcomponent now supports a boolean value for multiblock support.- Added Multiblock trait support to Blocks.
Vanilla
- Added
GoldenDandelionitem and block.
0.9.6.4
Anvil
- Updated to support Minecraft
1.26.2release.
Actors
- the texture array method in render controllers now support a query to determine the texture index, this avoid manually writing the indexing logic in the textures method.
0.9.6.3
Anvil
- Added a new Ask DeepWiki badge to the readme file, this badge will link to the Anvil ai generated documentation on the DeepWiki platform.
- Update the minecraft version to
1.26.0following the new versioning scheme adopted by Minecraft. For more information about this change, please refer to the official Minecraft New Version Numbering System. - Updated format versions.
Actors
- Added
EntityAIInspectBookshelf,EntityJumpDynamic,EntityOffspringcomponents. - Updated some components to support new features and changes in Minecraft
1.26.0.
Blocks
- Updated
BlockCollisionBoxcomponent to support multiple collision boxes, additionally increased the max allowed height from 16 to 24. - Added
ConnectionTrait,BlockCardinalConnectionandBlockConnectionRulecomponent. - Added
BlockRedstoneConsumer,BlockSupport,BlockLeashable. - Updated
BlockLiquidDetectioncomponent to support liquid clipping. - Added
CornerAndCardinaltoPlacementPositionTraitenum, AddedBlockCornerenum. - Added
AlphaMaskedTinttoBlockMaterialenum.
Jigsaw Structures
- Updated jigsaw rules to properly support the capped processor.
Biomes
- Added
BiomeVillageTypecomponent. - Updated
MinecraftBiomeTagsenum to include new biome tags.
0.9.6.2
Anvil
- Exported json files are now sorted alphabetically for better readability.
- Anvil raised errors now display the traceback for a single error.
- Added new documentation.
Actors
- Added
EntityIsHiddenWhenInvisible,EntityHurtOnCondition,EntityHide,EntityAnnotationOpenDoor,EntityDweller,EntityEconomyTradeTable,EntityScheduler,EntityTradeResupply,EntityShareables,EntityArmorEquipmentSlotMapping,EntityAIHide,EntityAITradeWithPlayer,EntityAIPickupItems,EntityAIMoveIndoors,EntityAILookAtTradingPlayer,EntityAIShareItems,EntityAIMoveTowardsDwellingRestriction,EntityAITradeInterest,EntityAIMakeLove,EntityAIReceiveLove,EntityAIWork,EntityAIWorkComposter,EntityAIHarvestFarmBlock,EntityAIFertilizeFarmBlock,EntityAIPlay,EntityAIMingle,EntityAISleep,EntityAIExploreOutskirtsandEntityAIBreedcomponents. - Client spawn egg now require using
TextureComponentfor full PBR support. - Server event name includes a built-in events Literal.
- Calling a Server event with the same name will now return the existing event instead of overwriting it.
Blockbench
- Blockbench api now handles exporting animation sound events properly.
- Animation rotations now are properly calculated.
World
- Added Trade Table API to manage trade tables,
anvil.api.world.trade_tables. - Loot Table explorer map entry function now support Jigsaw structures.
Kit
- Added
anvil.kit.world.potionsAPImodule to create vanilla like custom potions. - Added
anvil.kit.actors.componentsmodule to host custom components that can be used across different projects.
0.9.6.1
Anvil
- Updated to support Minecraft
1.21.132release. - Fixed some Jigsaw structures and sets field data types.
0.9.6
Anvil
- Anvil now passes the behaviour pack script path to the bundling script as
--outdirargument. - Added Pack Configuration functionality, now you can use
ManifestRPandManifestBPclasses to register pack settings. for more information about this feature, please refer to the official Configurable Packs Documentation. - Improved the AnvilTranslator language handling.
- Updated manifest format version to
3. - Anvil now has a custom JSON parser that supports pretty printing JSON files with proper indentation and spacing. The minify flag is still supported to export single line JSON files. And will handle Minecraft objects gracefully without having to call
.identifieron every object. - Added Dimension Configuration support. You can now use the
DimensionConfiguration()fromanvil.api.world.dimensions. You can read more about this feature in the official Dimension Configuration Documentation. - Anvil now uses a placeholder pack_icon for simple compilation if no pack_icon is provided in marketing. Anvil will still raise an error during packaging if no pack_icon is provided.
- Updated format versions.
Blockbench
- Major improvements to Blockbench file parsing.
- Blockbench will not parse
fit_to_frameoption for block model visuals and will always default to true, as this option is no longer allowed in Minecraft1.21.130onwards.
Molang
- Added
GetPackSetting(),IsPackSettingEnabled()andIsPackSettingSelected()queries. These queries can be used to read pack settings defined in the pack configuration.
Actors
- Updated
EntityAddRider,EntityTameable,EntityAINearestAttackableTarget,EntityBurnsInDaylightandEntityAIFloat. - Added
EntityRotationLockedToVehicle,EntityHealable,EntityExhaustionValuesandEntityAIUseKineticWeapon.
Items
- Added
ItemSwingSounds,ItemKineticWeapon,ItemPiercingWeaponcomponents. - Updated
ItemUseModifiersandItemCooldowncomponents.
Blocks
- Added
descriptor()method to theBlockclass. This method can be used to get a block descriptor for block including specific block states and tags. This will return the identified if no states or tags are provided otherwise it will return a custom block descriptor{"name": str, "states": {}, "tags": []}.
Vibrant Visuals
- Added Cubemap settings to the pbr api.
- PBR keyframed settings now use
Keyframedataclass for instead of manual dicts.
Molang
- Added
TempVarvariable type for temporary variables. - Added
EntityBiomeHasAllTags,EntityBiomeHasAnyTags,EntityBiomeHasAnyIdentifier,GetKineticItemDelay,GetKineticItemDamageDuration,GetKineticItemKnockbackDuration,GetKineticItemDismountDuration,KineticWeaponDelay,KineticWeaponDamageDuration,KineticWeaponKnockbackDuration,KineticWeaponDismountDuration,TicksSinceLastKineticWeaponHitqueries.
Vanilla
- Updated Minecraft vanilla definitions to 1.21.130
Filters
- Added
is_controlling_passenger_familyandhas_item_with_componentfilters.
0.9.5.3
Anvil
- All components referencing textures now require using
TextureComponentsto define texture maps including the color map. Particlesnow require you specifying the particle texture in addition to optional Normal, Height, MER and MERS maps.
Items
ItemIconcomponent now supports normal, height, MER and MERS maps.ItemIconcan now reference blockbench files for icons, useful if you're using a billboard entity with the same texture as the item icon.
0.9.5.2
Anvil
- Completely dropped support for
functions,tick.jsonandcommands, these features are very limited and a much better and advanced scripting system is available through the Minecraft ScriptingAPI. - Resolved import issues with some modules.
0.9.5.1
CLI
- Added
anvil loopbackcommand to enable minecraft loopback networking on Windows systems. Also starts http://localhost:7003/ in the default browser.
Anvil
- Fixed support for PBR texture sets in entities.
ItemTexturesObject,BlockTexturesObjectandEntityTexturesObjectnow support texture and use a singleton pattern to avoid overwriting definitions.AnvilTranslatoruses a singleton pattern to avoid overwriting translations.TextureSetrequire thepbrflag to be enabled in Anvil configuration.AnvilConfigis now a singleton to avoid overwriting configuration values.- Updated format versions.
- Introduced a new JSON parser for pretty printing JSON files, this is the default behavior. The minify flag is still supported to export single line JSON files.
BlocksJSONObject,MusicDefinitionandSoundDefinitionuse a singleton pattern to avoid overwriting definitions.- Massively improved sound registration through Entities and Blocks client methods, everything is now properly namespaced and referenced and integrates Entity and Block events.
- Standalone sound references can still be added using
SoundDefinitionclass.
- Standalone sound references can still be added using
Items
- Removed
group,categoryandis_hidden_in_commandsfrom Item description, these are now handled through themenu_category()method.
Blocks
- Removed
group,categoryandis_hidden_in_commandsfrom Block description, these are now handled through themenu_category()method. - Removed
BlockDefaultcomponent. All block client can be handled throughBlockMaterialInstanceand the block client instance.
Blockbench
- Blockbench now raises errors if newlines are detected in animation keyframes, a very common mistake.
0.9.5
Anvil
- Updated Anvil to support Minecraft
1.21.120 - Anvil now display better console errors and warnings.
- Anvil now targets the new Minecraft GDK builds, this is handled automatically and does not require any changes on your side except for the typescript bundling script and the vscode launch configuration if you are using vscode.
- All color fields in anvil now use the new
anvil.lib.convert_colorfunction, which allows you to support any type of color[RGB | RGBA | RGB255 | RGBA255 | HexRGB | HexRGBA]and convert them to any of those formats. All Minecraft components handle conversion automatically so you can use your favourite type (HexRGBA) everywhere with no worries about the type. - Removed
pbrandrandom_seedfrom the cli create tool. The flags are still available in anvilconfig.json. - Added
--vscodeflag to the cli create tool to generate a vscode launch configuration and code workspace file.
Actors
- Added
EntityAIDig,EntityAIDrinkMilk,EntityAIAvoidBlockcomponents.
Blocks
- Rewrote
BlockMaterialInstancecompletely, this is a BREAKING change and will require updating. BlockMaterialInstanceis easier to use with builtin support forflipbook textures,texture setsandtexture variations.- Updated
BlockGeometryclass, the geometry name is now optional. The default minecraft full_block geometry will be used if blockbench is referenced. - Updated
BlockItemVisualclass, the geometry name is now optional. The default minecraft full_block geometry will be used if blockbench is referenced.
Items
- Added
ItemSwingDurationandItemCompostablecomponents.
Loot Tables
- Added missing loot table functions.
Molang
- Added the new Math easing functions.
Blockbench
- Updated the blockbench api to support Blockbench 5.0.0, this is not a versioned update. All of your models must be updated to Blockbench^5.0.0.
0.9.4.6
Anvil
- Fixed missing templates and kit folders from built package.
0.9.4.5
Anvil
- Minor tweaks to the documentation and code formatting.
0.9.4.4
Anvil
- Fixed circular import issue.
- Anvil now supports Minecraft Preview GDK migration from UWP, current Minecraft release still uses old UWP paths.
0.9.4.3
Vanilla
- Updated Minecraft vanilla definitions to 1.21.111
0.9.4.2
Documentation
- Added Entity tutorial.
- Added Block tutorial.
- Added Item tutorial.
- Added Localization guide.
Anvil
- Updated format versions.
Biomes
- Biomes no longer require experimental features to be enabled.
Actors
- Renamed
EntityInputAirControlledtoEntityFreeCameraControlled. - Renamed
EntityDashtoEntityDashAction. - Added
EntityVerticalMovementAction,EntityOnDeath,EntityOnFriendlyAnger,EntityOnHurt,EntityOnHurtByPlayer,EntityOnIgnite,EntityOnStartLanding,EntityOnStartTakeoff,EntityOnTargetAcquired,EntityOnTargetEscaped,EntityOnWakeWithOwnercomponents. - Updated the
EntityExperienceRewardcomponent.
0.9.4.1
Anvil
- Added a new cli command
anvil export-worldto export the world from the.mcworldfile to theworlddirectory. this works exactly like theextract_worldargument in theAnvil.compile()method.
Actors
- Added
EntityPersistent,EntityAIMoveToRandomBlockcomponents.
Blocks
- Added
block_cullingmethod to theBlockGeometrycomponent.
0.9.4
Anvil
- Preparing for Full Anvil Release.
- Moved the Filters class from api.actors.components to lib.filters.
- Added all missing filters.
Biomes
- Added a new api to manage biome components.
- Added Biomes server components.
- Moved BiomeCustomization class to the Biomes api, the customization options are now more accessible through the Biome Client property, similar to Entities and Blocks.
Recipes
- Added support for Potion Brewing Recipes.
- Added support for Shapeless, Shaped, and Stonecutter custom block tags.
Loot Tables
- The loot table classes are now up to date with the current Anvil API architecture.
- Added missing loot table functions.
Actors
- Separated the Spawn Rule classes from the actors classes, now you can write spawn rules without needing to create an entity.
0.9.3.1
- Fixed some templates.
- Fixed "en_US" lang files not exporting.
- Cleaned up some CLI print statements during compilation.
0.9.3
- PyPI version fix
0.9.2
Anvil
- Cleaned up the codebase, removed unused imports and files.
- Removed the Logger class as the code now relies heavily on exceptions.
- Added 3 new entries to the anvilConfig file:
- ENTRY_POINT: This is the entry point for the Anvil CLI, it can be used to run Anvil from a specific python file.
- NOTE: The
anvil runstill requires theanvilconfig.jsonfile to be present in the working directory.
- NOTE: The
- SCRIPT_BUNDLE_SCRIPT: This is the javascript compilation/bundling script that will be used to bundle the TypeScript/JavaScript files.
- MINIFY: This option enables/disables minification of json files.
- ENTRY_POINT: This is the entry point for the Anvil CLI, it can be used to run Anvil from a specific python file.
-
Changed the anvil project hierarchy.
- The new hierarchy is designed to be more intuitive and easier to navigate.
-
The new hierarchy is as follows:
-
Anvil now uses esbuild by default to bundle the TypeScript files into JavaScript files.
- esbuild is recommended by Microsoft for bundling TypeScript files for Minecraft Bedrock Edition.
- The Compiling/Bundling script can be changed in the
anvilconfig.jsonfile. So you can use your own bundling script if you wish.
- Updated format versions.
- Anvil now uses Templates for file generation instead of hardcoded jsons.
- Added a new translator module, this new module shouldn't effect your existing code at all. However it introduced a new localization.xlsx file for managing translations. Now you can choose to manually translate your strings using this, automatically translate them using the Google Translate API, or a combination of both. You can also choose to only compile and translate specific languages.
- The file is generated automatically in the root directory of your projects and is populated with all the localization keys from your code.
- If you already manually or automatically translated your strings, and then changed a value in your code, the translation of that string will be removed and that language will not be exported unless the key is updated.
Blockbench
- Blockbench API can now export Generic models containing meshes. This is not a fully supported feature, and likely will not be supported in the future. The API expects meshes containing Minecraft like cubic clusters with a Cubic scale of 1 meters squared.
- This was tested with .OBJ files exported from Minecraft using Mineways.
- Blockbench can export global animation rotation.
- Added
override_bounding_boxargument to geometry registration in Entity and Block descriptions.
Kit
- Added a new module
anvil.kit.- The module contains useful functions and classes used for different purposes across different projects by startkma.
- Added
ldtk()classanvil.kit.world. This class can be used to load and parse LDtk files then convert them to Minecraft worlds.- ldtk can be a little confusing to work with here, but it was powerful for the creation of Beyond: Platformer.
- A tutorial on how to use the
ldtk()class will be available in the documentation sometime in the future.
- Added
add_entity_outline()function to theanvil.kit.actors.materialsmodule. This function can be used to add 2 materials used for entity outlines.- The function will add the
baseandoutlinematerials to the entity.materials file. - The
basematerial is used for the base model, while theoutlinematerial is used for the outline of entities.
- The function will add the
Actors
- Added
is_movingfilter. - Added
EntityAITakeBlocks(),EntityAIPlaceBlock()components.
Items
- Added
ItemStorageItem,ItemStorageWeightLimit,ItemStorageWeightModifierandItemBundleInteractioncomponents.
Blocks
- Added
BlockMovable(),BlockDestructionParticles()component.
0.9.1
Anvil
- Improved Type Hints and IDE autocompletion. Although much more work is needed.
- Improved error handling and raised errors.
- Improved class inheritance and modularity for AddonObjects and Descriptors.
- Exposed the
CustomComponentfrom theanvil.lib.schemasmodule, enabling users to define custom components with support for inheritance. - Relocated many classes for better organization and modularity, your code should be minimally affected by this change.
- Component Groups now validates component dependencies and clashes within the same group or permutation.
0.9.0 - Modular Architecture
Anvil
- Updated to release
1.21.90. - Refactored and rearranged the Anvil codebase to use a more modular approach.
- Creating a new project will no longer generate the folder in "com.mojang/minecraftWorlds", instead the working directory will be used.
- Added a new "assets/world" to host and ".mcworld file" with the same name as the project.
- "assets/world" will now be used to host ".mcstructures" files instead of "assets/structures".
- Added a new argument "extract_world" to Anvil.compile() method, this will extract the world from the ".mcworld" file and place it in the world directory.
- Added a new
JigsawStructureSet()andJigsawStructureTemplatePool()classes to theanvil.api.structuresmodule,JigsawStructureandJigsawStructureProcesscan be initialized from withinJigsawStructureSetandJigsawStructureTemplatePool. - Started moving away from
Enumsto newtypesandLiteralsto better support type checking and IDE autocompletion.
PBR
- Added
AtmosphericSettings(),FogSettings(),ShadowSettings(),WaterSettings(),ColorGradingSettings(),BiomeCustomization(),LightingSettings(),PointLights(),PBRFallback(). - Integrated Texture Sets with Entities and BlockMaterialInstances.
Blockbench
- Blockbench no longer exports cube faces that have texture disabled.
0.8.x
0.8.4
Anvil
- Added Recipe unlocking context to the
Recipe()class.
Blocks
- Added
BlockTick()component.
0.8.3
Anvil
- Updated
MODULE_MINECRAFT_SERVERto[1.17.0]. - Added Aim Assist and Focus Target to the
CameraPreset()class. - Added
Glyph()enum. - Entity Sound Events now support variants.
- Animation controller sound effects now support locators.
Blocks
- Block groups are now namespaced, for example
starktma:group_name. - Added
BlockItemVisual(),BlockLiquidDetection(),BlockDestructionParticles()component.
Items
- Item groups are now namespaced, for example
starktma:group_name.
Components
- Added
MovementSoundDistanceOffset(),RendersWhenInvisible(),Breedable(),IsCollidable(),BodyRotationAxisAligned(),InputAirControlled()components. - Added
home_distance,is_bound_to_creaking_heartFilters.
Molang
- Added
LastInputModeIsAny()andTouchOnlyAffectsHotbar()queries.
0.8.2
Anvil
- Updated
MODULE_MINECRAFT_SERVERto[1.16.0]. - Updated
MODULE_MINECRAFT_SERVER_UIto[1.3.0].
Blocks
- Added
BlockRedstoneConductivity()components.
Components
- Added
DimensionBound(),Transient(),CannotBeAttacked(),IgnoreCannotBeAttacked(),LookedAt()components.
Vanilla
- Added new blocks:
CreakingHeart(),ClosedEyeBlossom(),OpenEyeBlossom(),PaleHangingMoss(),PaleMossBlock(). - Added new entities:
Creaking.
Actors
- Added
play_soundandemit_particleto Entity Events.
Molang
- Added
ClientMemoryTier,ServerMemoryTierandClientMaxRenderDistancequeries.
0.8.1
Anvil
- Updated
GEOMETRY_VERSIONto[1.21.0]. - Updated
MODULE_MINECRAFT_SERVERto[1.13.0]. - Updated
MODULE_MINECRAFT_SERVER_UIto[1.2.0].
Vanilla
- Added 2 new mobs: Bogged and Breeze
- Added new items:
Mace,OminousBottle,WindCharge,TrialKey,OminousTrialKey,BreezeRod,TrialSpawner,FlowPotteryShard,GusterPotteryShard,ScrapePotteryShard,FlowBannerPattern,GlobeBannerPattern,GusterBannerPattern,BoltArmorTrim,FlowArmorTrim,MusicDiscCreator,MusicDiscCreatorMusicBox,MusicDiscPrecipice. - Added new blocks:
Crafter(),TrialSpawner(),Vault(),HeavyCore(). - Expanded the copper family with all the Oxidized and waxed variants of the following blocks:
ChiseledCopper(),CopperGrate(),CopperBulb(),CopperDoor(),CopperTrapdoor()
Commands
- Added new effects to the
Effectsenum:Infested,Oozing,Weaving,WindCharged,RaidOmen,TrailOmen.
Blockbench
- Added support for UV rotations.
- Added support for Item Display Transformation.
Blocks
- Added
scale_pivotandrotation_pivottoBlockTransformation(). - Added
BlockCustomComponents().
Items
- Added
ItemCustomComponents(),ItemRarity()components.
0.8.0 - The Blockbench Update
Blockbench
- Added support for Blockbench files. Entities attachables and blocks no longer require a dedicated model, animation and texture files, instead a single bbmodel must be added to the
assets/bbmodelsfolder.- A blockbench file can store a model and all of its relative textures and animations.
- For instance, if you have an entity named
starktma:vehiclethat references a model calledtruck, you must add a model file namedtruck.bbmodelto theassets/bbmodelsfolder. For example:player.Client.description.geometry("energy_beam"). Anvil will check for a file namedenergy_beam.bbmodelin theassets/bbmodelsdirectory and extract the model from it.player.Client.description.texture("energy_beam", "energy_beam_blue"). Anvil will check for a file namedenergy_beam.bbmodelin theassets/bbmodelsdirectory and extract the textureenergy_beam_bluefrom it.player.Client.description.animation("energy_beam", "energy_beam_charging"). Anvil will check for a file namedenergy_beam.bbmodelin theassets/bbmodelsdirectory and extract the animationenergy_beam_chargingfrom it.
- Blockbench file identifiers should use a namespace prefix, for example
starktma:truck.bbmodel. Anvil will automatically add the namespace to the identifier. - Blockbench animations should contain their name. For example,
energy_beam_charginginstead ofanimation.stark_ap.player.energy_beam. Anvil will automatically format them properly. - Blockbench textures should contain their name. For example,
energy_beam_blueinstead oftexture.stark_ap.player.energy_beam. Anvil will automatically format them properly. - Blockbench animation controllers are not currently supported. the animation controllers must be added manually through Anvil.
- Blockbench
Bézierkeyframes are not supported. Anvil will treat them aslinearkeyframes.
Actors
- Actors will no longer support a texture and geometry shortnames instead the full name will be used. Breaking
- Actors will now require a
blockbench_filenameproperty to reference the blockbench file, in addition to the target texture and animation. Breaking
Anvil
- Resource and behavior packs are now generated in the
development_behavior_packsanddevelopment_resource_packsdirectories instead of the project root folder, this improves the development experience and reduces the commit changes as the packs can be regenerated at any point. - Added a new enumerator
ItemVanillaTagsfor item tags. - Added a new enumerator
BlockVanillaTagsfor block tags.
Features
- Added
SmithingTrimRecipe()class.
Blocks
- Added Block tag to Components and Permutations.
block.server.components.tag()orblock.server.permutation("permutation_name").tag().
0.7.x
0.7.3
Anvil
- Added
behavior_descriptionandresource_descriptiontoanvilconfig.json. - Fixed addons packaging issue.
- Updated
MANIFEST_BUILDto1.20.80. - Updated
ENTITY_SERVER_VERSIONto1.20.80. - Updated
MODULE_MINECRAFT_SERVERto1.10.0. - Updated
ITEM_SERVER_VERSIONto1.20.70. - Updated
CAMERA_PRESET_VERSIONto1.20.80.
Actors
- Added a
reuse_assetsproperty to theEntityClientdescription, this property will allow you to manually enter animation, geometry and controller IDs without Anvil checking for a match in theassetsdirectory. - Added
queryable_geometryproperty to theEntityClientdescription. - Added
should_update_bones_and_effects_offscreenandshould_update_effects_offscreenproperties to theEntityClientdescription. - Updated the
get_vanilla()EntityClientfunction, the change will fixes some issues with retrieving the proper vanilla entity from the public repository. - Added a placeholder
spawn_category()function to theEntityServerdescription. This is not functional in Minecraft at the moment therefore it has no effect. EntityClientspawn_egg()function now supports an index number.- Added
spawn_egg_color()function to theEntityClientdescription.
Commands
- Added the
Hudcommand. - Added a
remove()function to theEffect()class, this function will remove specific effects from the target.
Components
- Added
has_tag(),is_difficulty(),is_sitting()andhas_damaged_equipment()filters. - Updated the
Interact()component. - Added
Inventory(),Dash(),VariableMaxAutoStep(),RiseToLiquidLevel(),Buoyant(),LavaMovement(),ExperienceReward(),Equippable(),Color(),Color2(),BurnsInDaylight(),Boss(),Sittable(),FlyingSpeedMeters(),ConditionalBandwidthOptimization(),ItemHopper(), andBodyRotationBlocked()components.
Features
- Added
extend_player_rendering()to theCameraPreset()class.
Molang
- Added
ArmorSlotDamage()query. BoneOrientationTrs()andBoneOrientationMatrix()queries now return an object withposition,rotationandscaleproperties.
0.7.2
Anvil
- Added an
anvilConstans.tsto theassets/javascriptdirectory. This file will be regenerated on every run of the script and is means to sync the project configuration with ScriptingAPI. - Updated
MANIFEST_BUILDto1.20.70. - Updated
ENTITY_SERVER_VERSIONto1.20.70. - Updated
MODULE_MINECRAFT_SERVERto1.9.0.
Blocks
- Added a menu category and group Enums to block description.
- Added
is_hidden_in_commandsproperty to block description. - Added
AlphaTestSingleSidedvariable to theBlockMaterialenum.
Features
- Rewrote the Recipe class.
- Added
SmeltingRecipe(),SmithingRecipe(),ShapelessRecipe(),StoneCutterRecipe(),ShapedCraftingRecipe()classes.
Vanilla
- Remove the
LEGACYItems()class and added the rest of the items to theItems()class. - Renamed
Grass()block class toGrassBlock(). - Split
Leaves()andLeaves2()block classes toAcaciaLeaves(),BirchLeaves(),DarkOakLeaves(),JungleLeaves(),OakLeaves(),SpruceLeaves(). - Split
DoubleWoodenSlab()block class toAcaciaDoubleSlab(),BirchDoubleSlab(),DarkOakDoubleSlab(),JungleDoubleSlab(),OakDoubleSlab(),SpruceDoubleSlab(). - Split
WoodenSlab()block class toAcaciaSlab(),BirchSlab(),DarkOakSlab(),JungleSlab(),OakSlab(),SpruceSlab(). - Split
Wood()block class toAcaciaWood(),BirchWood(),DarkOakWood(),JungleWood(),OakWood(),SpruceWood(),StrippedOakWood(),StrippedSpruceWood(),StrippedBirchWood(),StrippedJungleWood(),StrippedAcaciaWood(),StrippedDarkOakWood().
Commands
- Added
has_property()method to theTargetSelector()class. - Replace the
SuicideDamageCause enum variable withSelfDestruct.
Components
EntitySensor()range parameter now accepts a tuple for horizontal and vertical range.- Added
was_last_hurt_by()filter.
Molang
- Due to the deprecation of class properties in Python 3.13, all class properties are now converted to methods.
- Added
IsAttached(),HasPlayerRider(),Scoreboard(),RideBodyXRotation(),RideBodyYRotation(),RideHeadXRotation(),RideHeadYRotation(),RiderBodyXRotation(),RiderBodyYRotation(),RiderHeadXRotation()andRiderHeadYRotation()queries.
0.7.1
Anvil
- Updated
MODULE_MINECRAFT_SERVERto1.8.0. - Updated
MANIFEST_BUILDto1.20.60 - Music now references the correct sound definitions.
Actors
- Added
queue_commandandemit_vibrationto Actor events. - Actors can now reference the same animations, same as geometries and textures.
Components
- Added
is_panickingandis_sprintingfilters. - Updated
Ageable()component. EntitySensor()now support multiple sensors.- Added
SlimeKeepOnJumping()component.
Molang
- Added
IsCooldownType,CooldownTime,CooldownTimeRemaining,RelativeBlockHasAnyTags,RelativeBlockHasAllTags,BlockNeighborHasAnyTags,BlockNeighborHasAllTags,BlockHasAllTags,BlockHasAnyTags,BoneOrientationTrsandBoneOrientationMatrixqueries.
0.7.0 - Guidelines & Addon Support
Guidelines
- New packaging type: Addon
- Anvil raises an error when using experimental features in packages of type Addon.
- Anvil raises an error when total block permutations exceed 10,000 in packages of type Addon, and a warning otherwise.
- Anvil raises an error when overriding a vanilla feature (items and entities, including the player) in packages of type Addon.
- All textures are now placed 2 folders deep in the RP directory, this is to avoid overriding 3rd party textures.
RP/textures/namespace/project_name/ - Texture references are now in the format
namespace:texture_name. This is done automatically. - Scores are now enforced to start with
namespace.for packages of type Addon. added a new methodget_new_scoreto anvil definition to generate scores. - Tags are now enforced to start with
namespace.for packages of type Addon. - Loot Tables are now placed 2 folders deep in the BP directory, this is to avoid conflicting with 3rd party loot tables.
BP/loot_tables/namespace/project_name/. - Functions are now placed 2 folders deep in the BP directory, this is to avoid conflicting with 3rd party functions.
BP/functions/namespace/project_name/. - Sound references are now in the format
namespace:sound_name. This is done automatically. - Materials now follow the format
namespace.material_name:base_material.
Anvil
- Split the
core.pyfile into multiple files. This shouldn't cause any issues. - Removed the
fullnscli option, a universal format is now enforced. - Added
addoncli option to set the packaging target. Can be changed fromanvilconfig.json. - Missing config options are now handled on runtime.
AddonObjectsnow all have a single extension format.- Refactored a lot of code, split a lot classes into smaller modules.
- Most of the functionalities are now required to manually import from their respective modules.
- Anvil now flags experimental entities on non experimental environments.
- Resource packs and behavior Packs always have dependencies on each other
- Reimplemented the
get_vanillamethod in Entity clients, work with vanilla entities only. The method retrieves the latest version of theclient_entityfrom the officialbedrock_samplesgithub repository. - Implemented a basic caching system to store retrieved vanilla data, the cached data will be updated in case there is newer release.
- Added a new
identifierproperty to theMaterials()class.
Blocks
- Added a new
BlockDefault()component that allows you to use the blocks.json file to define block visuals. This is a workaround untilBlockUnitCube()is out of experimental. BlockGeometry()andBlockMaterialInstance()are no longer required when usingBlockDefault().- If a display name is not supplied using
BlockDisplayName(), the name will be inferred from the block identifier. Not localized.
Items
- If a display name is not supplied using
ItemDisplayName(), the name will be inferred from the item identifier. Not localized. - Added an
attachableproperty to items to quickly add attachables to items.
Molang
- Added
Contextto the molang module. - Fixed an error that treated some molang expressions as string literals and wrapped them with single quotes.
Blockbench
- As an effort to move towards using
.bbmodelfiles natively, there has been a change to how models and textures are referenced.- Entities and attachables no longer require a dedicated model file, instead a referenced models must be added to the
assets/modelsfolder under their own name.- For instance, if you have an entity named
starktma:vehiclethat references a model calledtruck, you must add a model file namedtruck.geo.jsonto theassets/models/actorsfolder.
- For instance, if you have an entity named
- Entities and attachables no longer require a dedicated texture file, instead a referenced textures must be added to the
assets/texturesfolder under their own name.- For instance, if you have an entity named
starktma:vehiclethat references a texture calledtruck, you must add a texture file namedtruck.pngto theassets/textures/actorsfolder.
- For instance, if you have an entity named
- Entities and attachables textures and models are now placed in the same
actorsfolder. - Entities and attachables no longer exports their models and texture into queued folders, instead everything is exported under the
actorsfolder.
- Entities and attachables no longer require a dedicated model file, instead a referenced models must be added to the
- Adopting blockbench files will facilitate working with assets, additionally the folder structure can no longer be supported with the new enforced guidelines due to the file path limit.
Components
- Added
Tameable()component.
0.6.x
0.6.0 - Configuration Overhaul
Anvil
- Changed the directory configuration of some files to support the new Addons program.
- Changed
Config.initoanvilconfig.json. This is done so it's much easier to integrate with the Scripting API. - A newer guidelines have been introduced to Anvil. Namespaces now require an additional abbreviation of the project name. For instance, if the namespace is
starktmaand the project name isBeyond: Platformer, the namespace will bestarktma_bp. This is done to avoid conflicts with other projects. - Item Texture and Terrain Texture references are now in this format
namespace:name. This change does not require your attention as it's done automatically. - Item and block textures are now save under
RP/textures/namespace/. previously they were saved underRP/textures/. - Added sounds and music will now use
RP/sounds/namespace/instead ofRP/sounds/. - Sounds now use the format
namespace:sound_referenceinstead ofsound_reference. This is does not require your attention as it's done automatically. - Calling
identifieron a sound definitions will return the Sound reference in the formatnamespace:sound_reference. - Moved
Dialogue(),Fog(),LootTable(),Recipe(),Function(),Particle(),CameraPreset(),Structure(),Fonts()andSkinPack()classes toanvil.api.features. - Dialogue scene tags now use the format
namespace:scene_taginstead ofscene_tag. This is does not require your attention as it's done automatically. - Calling
identifieron a dialogue scene will return the scene tag in the formatnamespace:scene_tag. - Calling
identifieron a fog instance will return its identifier. - Moved
Geometry()andAnimations()classes toanvil.api.blockbench, this is in preparation to integrate.bbmodelfiles directly into Anvil without splitting them into multiple json files. - LootTables will be exported to
BP/loot_tables/namespace/ - Calling
pathon a loot table will return its execution path that can be used in Components or Commands. (Must be queued first) - Particle textures will no be copied to
RP/textures/particle/namespace/. - Actor textures are now copied into
RP/textures/namespace/[entity-attachable]/instead ofRP/textures/[entity-attachable]/
Components
- Added
FlyingSpeed(),RandomHover(),Interact(),AngerLevel(),Roar(),FloatWander(),LayDown(),MeleeBoxAttack(),CanJoinRaid(),TimerFlag1(),TimerFlag2(),TimerFlag3()components. - Updated
ENTITY_SERVER_VERSIONto[1.20.50].
Vanilla
- Split the Planks block into 6 individual blocks.
- Split the Stone block into 7 individual blocks.
Items
- Renamed
ItemUseDuration()toItemUseModifiers(). - Added
ItemTags()component. - Updated
ITEM_SERVER_VERSIONto[1.20.50].
Molang
- Added
timer_flag_1,timer_flag_2,timer_flag_3queries.
0.5.x
0.5.4
Anvil
- Updated
MODULE_MINECRAFT_SERVERto[1.6.0]. - Updated
ITEM_SERVER_VERSIONto[1.20.40]. - tsc now runs using
tsconfig.json. The tsconfig options can be added and/or changed butoutDirandincludewill be overwritten by Anvil. - Added a
launch.jsonfor script debugging. - Added
node_modules/to default.gitignore. - Added
scriptuioption toconfig.ini.
Components
- Added
MovementMeters()component that takes speed in m/s instead of whatever Minecraft is using. - Added
MovementMeters(),FollowParent(),PlayerRideTamed(),InputGroundControlled(),FollowOwner(),WaterMovement(),Panic(),ChargeAttack(),RamAttack(),AvoidMobType(),LeapAtTarget(),OcelotAttack(),Angry(),OwnerHurtByTarget(),OwnerHurtTarget(),RandomSearchAndDig(),StompAttack(),FollowMob(),RandomSwim(),RandomBreach()components. - Added
has_damage(),is_daytime(),rider_count()filters.
0.5.3
Anvil
- Renamed
seedcli option torandom_seed. - Updated
ITEM_SERVER_VERSIONto[1.20.30]. - Added a new
generate_technical_notes()method toAnvilclass, the method will generate a pdf file containing a list of every entity, block, attachable, item, particle and sounds that were exported. compile(),mcworld(),mcaddon()are now proper methods instead of properties.- Removed the
scipyrequirement fromsetup.cfg. - Removed and/or replaced rarely used library imports.
- Added a new
CameraPreset()class that creates new camera presets. - Removed the
vanillafolder from theassetsdirectory, this is a step forward towards removing support for cloning vanilla packs. - Scripting API files are now hosted in the
assets/javascriptdirectory, a quality of life improvement towards full support of js scripting. - Anvil CLI will install both
@minecraft/serverand@minecraft/serve-uimodules if thescriptapiflag is set. - Anvil will automatically run
tsc <filename>on every.tsfile inassets/javascriptand copies every.jsfiles preserving the relative paths inBP/scripts. - Moved the scripts folder to host all Python files to
assets/python, you can place your files anywhere you wish to but this is done to keep inline with javascript files. - Anvil now support multiple packs, generation will still take place in a single pack but if you wish to include other packs, add the uuid to
config.iniseparating by a,and copy your pack to their respective locations.
Blocks
- Renamed
FacingDirections,BlockFacesandVerticalHalftoFacingDirectionsTrait,BlockFacesTraitandVerticalHalfTrait. - Renames properties to states in Block Description.
Commands
- Fixed an issue with
Camera()command where the keywordeasewas not parsed. - Added
Time(),Stopsound()commands.
Components
- Added
is_biome(),is_underwater(),on_ground(),in_water()filters. - Added
Biomesenum. - Added
RandomSitting(),StayWhileSitting(),UnderwaterMovement(),RandomSwim(),RandomBreach(),MoveToWater(),MoveToLand(),MoveToLava(),LookAtTarget()components. Rideable()family types are now added by passing family strings usingfamily_types().
Items
- Added
ItemCanDestroyInCreative()andItemHoverTextColor()components.
Tools
StateMachine():active_playercounter now runs all the time regardless of the max player count.
0.5.2
Anvil
- Split
StainedHardenedClay()block into 16 individual blocks. - Split
StainedGlass()block into 16 individual blocks. - Split
StainedGlassPane()block into 16 individual blocks. - Split
ConcretePowder()block into 16 individual blocks. - Entity names starting with a digit will raise an error.
- Updated the
SOUND_DEFINITIONS_VERSIONformat version to[1.20.20]. - Updated
BLOCK_SERVER_VERSIONto[1.20.20]. - sound_definitions now accept both float and integer values for min_distance and max_distance.
- Added support of Random Seed Generation to both CLI and core Anvil.
- Updated some vanilla blocks to use
BlockStates.CardinalDirectioninstead ofBlockStates.Direction.
Components
- Added
can_spread_on_fireparameter to bothDelayedAttack()MeleeAttack().
Molang
- Renamed
block_propertytoblock_state. - Renamed
has_block_propertytohas_block_state.
Commands
- Added
PlayerSleepingPercentage()to theGamerulecommand. - Added
ScriptEvent(). - Added
CameraPresets()andCameraEasing()enums. - Added
Camera()command.
Items
- Added
group,categoryandis_hidden_in_commandsto Item Server description. - Added
ItemWearable()component. - Added
ItemHandEquipped()component. - Added
ItemGlint()component. - Added
ItemUseDuration()component. - Added
ItemStackedByData()component. - Added
ItemUseAnimation()component. - Added
ItemAllowOffHand()component. - Added
ItemShouldDespawn()component. - Added
ItemLiquidClipped()component. - Added
ItemDamage()component. - Added
ItemDigger()component. - Added
ItemEnchantable()component. - Added
ItemFood()component. - Added
ItemsInteractButton()component. - Removed
LEGACYItemHandEquipped()component. - Removed
LEGACYItemFoil()component. - Removed
LEGACYItemStackedByData()component. - Removed
LEGACYItemUseDuration()component. - Removed
LEGACYItemFood()component. - Removed the
_ItemClient()class.
Blocks
- Added
BlockFaceandVerticalHalfblock states. - Removed
BlockClient()class. - Added
traitsproperty to blocks server description. - Added the following enums:
PlacementDirectionTrait,PlacementPositionTrait,CardinalDirections,FacingDirections,BlockFaces,VerticalHalf. - Renamed
propertykeys tostate.
Documentation
- Exposed more APIs.
0.5.1
Anvil
- Added workflows to publish to pypi and testpypi.
- Gone Public!!!!!!!!
0.5.0 - Documentation & Tools
Anvil
- Docs are now build when pushing to the main branch.
- Added a universal way to require project specific configuration.
- To use call
ANVIL.require_config()and pass the required configs as arguments.
- To use call
- Additional work on documentation.
- Fonts can now generate a 'numbers' particle texture that contains numbers from 0-999.
- Replaced
dependecieswithcapabilitiesin resource pack manifest. - Added a new API module
texture_pack(WIP). - Added
GlobalLightingandAtmosphericsto thetexture_packmodule to support the new PBR pipeline. - A
versionfunction will now generate every time there is a compilation, includes the time, Minecraft version and the build version. - Rolled
ITEM_SERVER_VERSIONback to[1.16.0], a lot of necessary functionalities are missing, waiting for[1.12.40]. - Added a new module,
anvil.tools.functions - Added 3 new systems to
anvil.tools.functions:StateMachine,TimedFunctionandStepTimedFunction. - Added a new property to Anvil Core
ANVIL.new_score, this will register and return a new incremental score every time it's called. (Improved the score creation inTimedFunction)
Components
- Added and
_ai_goal()parent class. - Added new components:
MoveTowardsTarget(),EntitySensor(),AmbientSoundInterval(). - Slightly modified the way components are coded, this allows for much easier use of the
removemethod from events. - Fixed a bug that wrapped filters in additional brackets for
all_of,any_ofandnone_ofconditions. - Fixed a bug with
SendEvent()that caused it to not write some important data to the json file therefore causing it to not work.
Actors
- Similar to geometries, animations can now be referenced from other entities, reducing redundancy.
- Entity Sound Events can now specify a min and max distance of a sound.
Commands
- Fixed a bug with the
CameraShake()command returningNoneon export.
UI
- Added a
Credits Constructorclass method toAnvilHUDScreento facilitate creating UI based credits. - Titles and Actionbars will now ignore keywords created in screens other that
anvil_hud.
Documentation
- Finished the tutorial for adding an entity.
- Added a documentation for adding a block.
- Added a tutorial for creating a One Block SkyBlock map.
0.4.x
0.4.2 - 0.4.2.6
Anvil
- Updated to release
1.20.11. - Updated
ITEM_SERVER_VERSIONto[1.12.10] - Added lots of docstrings
- Changed README from rst to md.
- Added basic documentations.
Items
- Added
ItemCooldown,ItemRepairable,ItemMaxStackSize,ItemBlockPlacer,ItemRecord,ItemShooter,ItemProjectile,ItemThrowable.
Commands
- Block states in commands will use equals instead of colon.
UI
- Rewrote the UI trigger mechanic to allow for more complex ui elements.
0.4.1
Anvil
- Added a proper integration of vanilla blocks.
- Added a proper
Blocks()class andBlockStatesEnumerator to thevanillaapi. The vanilla blocks will allow you to customize them using their block states. - Components and Commands will only accept
vanilla.Blocks(),str()andBlock()as inputs and will raise an error otherwise. - Fixed an issue that caused music and sound to not be compiled.
- Classes use proper Enumerators.
- Added
_debuga rawtext attribute to ANVIL. this can be useful to display score and debug text as actionbar if DEBUG = 1. - Added a
_SoundEvent()class tocore.py. This call will serve as sound manager for Minecraft Vanilla sound event triggers.- Sound Events are only supported for Entities as of now, a new method was added to
Entity.Client.descriptionthat allows adding default sound triggers.
- Sound Events are only supported for Entities as of now, a new method was added to
Components
- Components that have block inputs will only accept
vanilla.Blocks(),str()andBlock()instances as inputs and will raise an error otherwise.
Items
- Rolled
ITEM_SERVER_VERSIONback to[1.12.1]. - Added a
Clientproperty to items, used to set theNameandIconof an item as a temporary solution until the full list of item components leave experimental.
Commands
- Added
Setblock()command. - Added
Fill()command. - Added
Music()command. - Updated
Execute().If/Unless.Block()to use block states instead of legacy data values. - Commands that have block inputs will only accept
vanilla.Blocks(),str()andBlock()instances as inputs and will raise an error otherwise. Playsound()no longer appends position by default.Say()now wraps all texts with "" by default.
Molang
- Added the rest of the molang queries.
- Some queries need more information to properly implement therefore they may not work.
0.4.0 - ScriptAPI & PBR Support
Anvil
- Added support for ScriptAPI
- To include scripting in your project use the flag
--scriptapiwhen creating a new project. - Scripts can be added or removed anytime from
config.ini.
- To include scripting in your project use the flag
- Added support for PBR
- To include pbr in your project use the flag
--pbrwhen creating a new project. - PBR can be added or removed anytime from
config.ini.
- To include pbr in your project use the flag
- Removed the #packaging comment from the generated python script, it's outdated and doesn't represent the functionality of the method anymore.
- Updated to release
1.20.1.0. - Preview builds are no longer tracked, instead focusing solely on releases.
- Reusable geometries no longer make copies of the same geometry files, instead only reference them. Referenced entities must be queues before the referencing entity.
- Renamed
Permissionenumerator toInputPermissions. package.pychanges:- Added a lot of docstring.
- Removed
RawText,random_character_generator,CreateImage,GetColors,CreateTreeFromPath,GetPathFromTree,MoveFiles,DownloadFile. - Moved
CreateDirectoriesFromTreetocli.py - Moved
ShortenDictinside theAddonObjectclass.
- Added docstrings to the
clitool. - Started moving from the basic
RaiseErrorto proper Errors. - Removing a component from an Actor no longer results in an error if the component doesn't exist.
- Empty functions will no longer be exported.
- Restructured the Schemes function, now it's a proper class.
- Created a Logger class to track error and operations.
- Removed type subdirectory from RP animation and render controllers.
- Added a version enforcing method to components.
- Implemented the enforcements in the items components.
- Components that require a minimum format version will raise an error if Anvil format version is not equal or higher.
- This change will allow us to work on implementing experimental features safely.
- Added the new Items and Blocks to the vanilla module.
- Added
all_slots_emptyandany_slots_emptyfilters. - Added the
spawn_item_eventkey to theSpawnEntitycomponent class. - Formatted some Logger error messages.
- Updated
ITEM_SERVER_VERSIONto1.20.0
Breaking Behavior
- Config file is no longer automatically initialized, instead it's an
ANVILproperty. - The gloabl variables such as
NAMESPACEandPROJECTNAMEare now accessible through theANVILinstance.NAMESPACE -> ANVIL.NAMESPACE
- Localizing uses a key_value arguments instead of a manual string now
Components
- Added
InsideBlockNotifier(),Transformation(),Equipment(),EquipItem(),FireImmune(),SendEvent()components. - Added
is_raider,is_variant,is_mark_variant,is_skin_idfilters. - Removed the
particleargument from theParticlecomponent, useparticle_on_hitmethod instead.
Blocks
- Custom blocks textures are moved inside an
anvilfolder to separate them from vanilla textures.
Commands
Givecommand always includes the amount and data, this is done to account for possible use of item components.Summoncommand now always wraps nametags inside additional double quotes.nameargument in the target selectors wraps names inside additional double quotes.
UI
- New UI screen will automatically populate the
_ui_defs.jsonfile. - Added an
anvil_commonscreen to host common elements.
0.3.x
0.3.5
Anvil
- Updated the extensions of generated files.
- Vanilla entities are automatically exported to the vanilla directory, regardless of the provided directory.
- Updated to release
1.19.81.01and preview1.20.0.20. - Actors client
scalevalues is properly set to a string. TimedFunctionis no longer tied to an actor and will be executed on the server fake player.- Tags are also no longer required.
- To get the scoreboard objective for the TimedFunction, call it's str representation.
- To test if the TimedFunction has finished it's run, check if the objective is equal to -1.
- Added an error validation for path length exceeding 80 characters.
- Anvil packaging function allows for applying an overlay to keyarts now.
- Replaced the Exporter Parent class with
AddonObjectand moved extensions and paths to each individual class. - Moved
LootTable,Recipe,Particlefrom the oldEngineComponenttoAddonObject. Itemsstill rely onEngineComponentuntil the rework in1.20- Removed unnecessary modules.
- Added an items module in preparation for the new items.
- Pack versioning is now supported using the
releasekey inconfig.ini
Components
- Added
InsideBlockNotifier(),Transformation(),Equipment(),EquipItem()components - Added
is_raider,is_variant,is_mark_variant,is_skin_idfilters.
Blocks
- Fully implemented
BlockTransformation,BlockDisplayNameandBlockCraftingTablecomponents.
Items
- Added the basic Items class.
- Added
ItemDurability,ItemDisplayName,ItemFuel,ItemEntityPlacer. - Partially added
ItemIcon.
Commands
- Added
InputPermission()command. - Added
haspermission,hasitem,gamemodeandscoresarguments to the target Selector. - Added
Scoreboard()command.
Molang
&,|and~binary operators wrap the expression in parentheses().- Added
RotationToCamera(),Health,MaxHealth
Breaking Behavior
To ensure the interpreter functions as intended, it is recommended to wrap expressions in your own parentheses to insure a proper order of operations, as Anvil wraps expressions left to right, it may result in several bugs.
For instance, consider the following example:
Although the expression may seem logical at first, it will be compiled to
To avoid this issue, we suggest writing the expression as follows:
0.3.4
Anvil
- Anvil clones the bedrock samples again, untracked.
https://github.com/Mojang/bedrock-samples.git - Updated to Release
1.19.71.02 - Changed the CHANGELOG, README and TODO to md from rst.
Components
- Added new components:
Projectile(),Explode(),KnockbackRoar(),MobEffect(),SpawnEntity(),AreaAttack(),Loot(),Float(),RandomStroll(),LookAtPlayer(),RandomLookAround(),HurtByTarget(),MeleeAttack(),RangedAttack(),Shooter(),SummonEntity(),Boss(),DelayedAttack(),MoveToBlock(). - Added
actor_health,random_chance,target_distanceFilters.
Commands
- The
hide_particlesargument in particle commands has been improved. - Added
Playsound()command.
Molang
- Added
GetEquippedItemName,Position,PositionDelta,ItemIsCharged,ItemInUseDuration,IsRiding,ModifiedMoveSpeed,IsDelayedAttacking,IsCharged,IsCasting,IsRoaring,MarkVariant - Fixed some bugs with arithmetic operations.
0.3.3
Anvil
- Fixed the attachables class not copying the models to
RP/models/entity. - Updated to Release
1.19.70.02 - Updated to Preview
1.19.80.20 - Fixed a bug with Anvil UI where it caused asserts if no actionbar visibility condition was added.
- Fixed some bugs with the generated font characters clipping into each other.
Blocks
- Updated
BlockSelectionBox(). - Removed
_BlockRotation()and_BlockPartVisibility(). - Added
_BlockTransformation(). - Added
permutation(condition)to block servers.
Components
- Added
Rideable()Component. - Added
is_ridingFilter.
Commands
- Added the
ReplaceItemcommand.
Molang
- Expanded operation support to use Python operation natively.
- Division: a/b
- Floor Division: a//b → math.floor(a/b)
- Modulo: a%b → math.mod(a, b)
- Power: ab** → **math.pow(a, b)**
- Absolute value: abs(a) → math.abs(a)
- Rounded value: round(a) → math.round(a)
- Added
BlockProperty.
0.3.2
Anvil
- Added a public to-do list.
- Added a basic
Animation()class to create animations within Anvil.
Molang
- Added
HeadXRotation,HeadYRotation,IsLocalPlayer,IsItemNameAnyqueries. - Values negation is now supported,
-Query.HeadXRotation. - Arithmetic operations now return a str wrapped in brackets, this is to avoid unintended behavior that may arise because of expressions like this:
q.life_time >= v.timer + 2→q.life_time >= (v.timer + 2)
Commands
- Expanded commands to support nbt.
- Added the Give command class with its nbt components.
- Added the
familyargument to the Target Selector.
Blocks
- Added new components:
BlockCollisionBox,BlockCraftingTable,BlockPlacementFilter.
0.3.1
New
- Added
generate_font()to theFonts()class. Now you'll be able to generate thedefault8texture using a ttf/otf files. - Added
PreferredPath,TargetNearbySensor,NearestAttackableTarget,RandomLookAround, andTimercomponents. - Added a basic
Geometry()class to create models within Anvil. - Added the filters
is_block - Molang now support subtraction and multiplication.
- Added a snippets module to serve as a host for useful and quick functions.
Bug Fixes
- Fixed the ANVIL.mcworld packaging method, now outputs a non corrupted world.
- Fixed the cli tool not creating the config and .gitignore files.
- The workspace no longer lists the Minecraft logs folder, it generally has too many files which makes the IDE slow.
0.3.0 - Materials System
New
- Added a basic Materials class.
- Molang variables can now access initiated variables, else throw errors.
- Added more queries.
Bug Fixes
- 'enum' properties use the 'values' key instead of 'range'.
0.2.x
0.2.6
- Switch to use ConfigParser for the configuration instead of a simple json file.
- Added basic Filters class with few filters.
- Added
EnvironmentSensorclass. - Removed automatic imports from
anvil.__init__, now requires a manual import fromanvil.apimodule. - Added
DistanceFromCamerato Query class. - Updated the Query, Variable and Math classes methods to @staticmethods and @classmethods.
- Removed the requirement of using a block geometry in Blocks as the 16x cube is used by default.
- Removed the oldBlock class.
- Molang now support native comparison operators (==, !=, <, >, <=, >=), wrapping in strings is no longer necessary.
f'{Query.DistanceFromCamera} <= {sensor_range}'is the same asQuery.DistanceFromCamera <= sensor_range
0.2.5
- Sounds
load_on_low_memoryis set toFalseby default. - UI
text_alignmentuseUITextAlignmentnow instead ofUIAnchor.
0.2.4
- Expanded Molang queries.
- Some improvements to the structure.
0.2.3
- Updated the StateManager to use the new Execute commands.
- Added Entity properties.
- Added the Holiday Blocks, Blocks components including Experimental, Events and Event Triggers.
- Added a Score to clock function.
- Added some queries.
0.2.2
- Updated to Python 3.11.
- Moved away from
setup.pytopyproject.toml. - Updated the Dialogue class.
- Added Fog class.
- Added Fog command.
- Updated commands classes.
0.2.1
- Untracked
0.2.0 - Major Architecture Rewrite
- Updated the Exporter to include file extension formats.
- Added a
TerrainTextures()class to manage block textures. - Added Music class to manage music, accessible through
ANVIL.music(). - Updated base classes
_Entityto_Actor. - Added
Attachables()class. - Added mcaddon function to ANVIL. compiles the project and exports as an
.mcaddon. - Exposed more Minecraft entity components.
- FileExtensions are now namespace_format dependent.
- Added a Tools script to host the new
StateManager(),Cinematics()andTimedFunction(). - Due to the change to the source of Vanilla asset packs, Anvil now relies on the Public Mojang repository
Mojang/bedrock-samplesinstead of a local download. - Updated Vanilla Items, Blocks and Entities identifiers to
release 1.19.31andpreview 1.19.50.21. - Implemented a basic UI class with support for element triggers with
titlecommand and HUD modifications. - UI implementations are moved to their own submodule
submodules/ui. - Moved all Actors classes
Entity and Attachableto it's own submodulesubmodules/actors. - Removed the option to download vanilla RP and BP. Vanilla assets are now hosted and maintained by Mojang on GitHub.
get_vanillamethod of entities now pulls directly from GitHub instead of relying on a local copy of Vanilla assets.- Exposed more Minecraft entity components.
Early Development
0.1.0 - Core Foundation
- Fixed incorrect names for White Dye, Black Dye,
- Updated boats icons.
- Finished adding the new spawn rules conditions.
- Updated StateManager.
- Functions with more than 10000 lines of code are now split into multiple functions.
- Entity events now append new entries instead of overwriting them if not called in the same line.
- Added (_run_command) to Entity Events, proceeded with
_. - Added a command validator to the commands namespace.
- Server animations now append new commands instead of overwriting them if not called in the same line.
- Reformatted Tellraw and Titleraw to support text, selector, score and translate of the rawtext components.
- Updated the Exported class to use the os.path.join function.
- Integrated AddDespawnMechanic and OptimizeEntity to the NewEntity class, now included with all entities.
0.0.0 -> 0.1.0
- Anvil was a collection of individual generator scripts with no unified structure or design.