1.21 Migration Guide
Major Changes
Tag names
With 1.21, Mojang has stopped hard coding the blocks
, entity_types
, fluids
, game_events
and items
tag folders, they are now treated the same as other types of tags, with singular names:
Old | New |
---|---|
Old blocks | New block |
Old entity_types | New entity_type |
Old fluids | New fluid |
Old game_events | New game_event |
Old items | New item |
This change means that scripts need to be updated to reference the new folder, all instances of <tag:items:
now needs to become <tag:item:
, you can safely use your text editor’s ‘find and replace in files’ feature to perform the following replacements:
Replace | With |
---|---|
Replace <tag:blocks: | With <tag:block: |
Replace <tag:entity_types: | With <tag:entity_type: |
Replace <tag:fluids: | With <tag:fluid: |
Replace <tag:game_events: | With <tag:game_event: |
Replace <tag:items: | With <tag:item: |
RecipeInput
To use the crafttweaker.api.recipe.type.Recipe
class in older versions, such as to query a recipe, scripts would need to look like the following:
In 1.21, Mojang has introduced a new class to replace Container
, crafttweaker.api.recipe.input.RecipeInput
, which functions similarly to Container
, the above script now needs to look like:
Ingredient
The crafttweaker.api.item.Ingredient
class has been moved to crafttweaker.api.ingredient.Ingredient
ResourceLocation
The constructor for crafttweaker.api.resource.ResourceLocation
has been removed, ResourceLocation
s can still be constructed using the bracket handler: <resource:namespace:path>
, but can also be constructed by using the new parse
and fromNameSpaceAndPath
methods:
LootingLevelEvent
The NeoForge crafttweaker.neoforge.api.event.entity.living.LootingLevelEvent
event has been removed.
There is no replacement for this at this time, but may be in the future: https://github.com/neoforged/NeoForge/issues/1112