This is a high level, non-exhaustive overview on how to migrate your mod from 1.20.4 to 1.20.5. This does not look at any specific mod loader, just the changes to the vanilla classes.
This primer is licensed under the Creative Commons Attribution 4.0 International, so feel free to use it as a reference and leave a link so that other readers can consume the primer.
If there's any incorrect or missing information, please leave a comment below. Thanks!
There are a number of user-facing changes that are part of vanilla which are not discussed below that may be relevant to modders. You can find a list of them on Misode's version changelog.
Minecraft now uses Java 21. You can download a copy of the JDK used here: https://learn.microsoft.com/en-us/java/openjdk/download#openjdk-21
Windows machines can install this using winget
in PowerShell:
winget install Microsoft.OpenJDK.21
Data components (held within a DataComponentMap
) are a replacement to the CompoundTag
within an ItemStack
. Each data component represents a key-value pair where the key is a string and the value is an object holding the data. Data components can be written to disk or synchronized across the network using codecs. All of vanilla's data components are stored within DataComponents
, where arbitrary data that hasn't been converted to a data component is held within the minecraft:custom_data
key.
The storage of data components has an analog to Maps, where DataComponentMap
represents a read-only map and its implementation PatchedDataComponentMap
represents an identity map. The data component values themselves should always be treated as immutable objects as both the hash code and equality are determined based on both the keys and values.
To hold data components, an object must implement DataComponentHolder
. Currently this is only implement by ItemStack
. The holder itself does not have any write based methods. ItemStack
, on the other hand, does have methods to set
, update
, and remove
attached components. Any operations that wish to modify a component's value should call set
or update
, making sure that the component value is immutable or at least not shallowly referenced somewhere else. Each method takes in a DataComponentType
which represents the key of the value and the type of object being stored.
// For some ItemStack 'stack' that wants a custom name
stack.set(DataComponents.CUSTOM_NAME, Component.literal("Hello world!"));
// To get the custom name
Component name = stack.get(DataComponents.CUSTOM_NAME);
// To update the stored value of the component
stack.update(DataComponents.CUSTOM_NAME, Component.literal("Default if not set"), component ->
component.withStyle(ChatFormatting.BLUE)
);
// To remove the component
stack.remove(DataComponents.CUSTOM_NAME);
To create a custom data component, you must register a DataComponentType
. These can be constructed via DataComponentType$Builder
. The builder has two methods: persistent(Codec)
for if you want the data component to be written to disk, and networkSynchronized(StreamCodec)
for if you want the data component to be synchronized to the client. StreamCodec
s are explained in more detail in the next section. The component type can also cache the currently encoded value if you are writing to disk the same value often via cacheEncoding
.
As an additional utility, Item
s can have a default set of data components via Item$Properties#component
. These values can then be updated for each individual stack.
Any methods regarding items that took in a CompoundTag
are will now take in the direct object type. The list of available data component objects can be found within net.minecraft.world.item.component
.
When communicating across a network, previously, all logic needed to be manually written and read to a FriendlyByteBuf
. However, most of this logic has now been replaced with StreamCodec
s. A StreamCodec
is a type of codec (which doesn't implement Codec
) that holds a function to apply stream-based operations to encode and decode a given object. A StreamCodec
is made up of two parts: the StreamEncoder
and StreamDecoder
.
The StreamEncoder
takes in two generics, O
representing the output to write data to, and T
representing the data object. The StreamDecoder
also takes in two generics, I
representing the input to read data from, and T
representing the constructed data object.
To create a StreamCodec
, you will usually use one of the composite
functions. The composite
function takes in up to 6 pairs of StreamCodec
containing the type to serialize and Function
s representing the getter for the data field. The final parameter represents the constructor for the object. There are a set of default stream codecs located in ByteBufCodecs
.
// A basic stream codec for a record ExampleObject(int, Optional<String>, Holder<Item>)
// Using RegistryFriendlyByteBuf as a registry object is requested
// Otherwise, FriendlyByteBuf should be used
// If no special methods from FriendlyByteBuf are needed, use ByteBuf
public static final StreamCodec<RegistryFriendlyByteBuf, ExampleObject> STREAM_CODEC = StreamCodec.composite(
ByteBufCodecs.INT, ExampleObject::intField,
StreamCodecs.optional(ByteBufCodecs.STRING_UTF8), ExampleObject::optionalStringField,
ByteBufCodecs.holderRegistry(Registries.ITEM), ExampleObject::holderItemField,
ExampleObject::new
);
As many packets have not been updated to use a codec-based approached, they can use Packet#codec
to turn a read/write implementation into a codec. This method takes in a StreamMemberEncoder
instead of a StreamEncoder
as write methods are usually instance methods on the packet class.
// For some ExamplePacket with ExamplePacket(RegistryFriendlyByteBuf) and ExamplePacket#write(RegistryFriendlyByteBuf)
public static final StreamCodec<RegistryFriendlyByteBuf, ExamplePacket> STREAM_CODEC = Packet.codec(
ExamplePacket::write, ExamplePacket::new
);
If read and write methods have suddently disppeared, or the network handling has been moved, it is most likely handled by a StreamCodec
directly within the object class or in a package within net.minecraft.network.codec
. Packets themselves do not contain the StreamCodec
and instead are directly registered via ProtocolInfoBuilder#addPacket
. Packet
s now contain a PacketType
with the name of the packet and the direction the packet is sent.
Here are some of the classes that uses stream codecs for their implementation logic:
net.minecraft.core.particles.ParticleType#getDeserializer
->streamCodec
net.minecraft.network.syncher.EntityDataSerializer
net.minecraft.world.item.crafting.RecipeSerializer#fromNetwork
,toNetwork
->streamCodec
net.minecraft.world.level.gameevent.PositionSourceType#read
,write
->streamCodec
Entities and items now have sub predicates that can be applied for specific entities and items. Entities store this within the type_specific
json object in the EntityPredicate
. Items store this within the predicates
json object in the ItemPredicate
. Each of these are registered to their own built in registry, requiring some codec object.
net.minecraft.advancements.critereon.EntityVariantPredicate
->EntitySubPredicates$EntityVariantPredicateType
- All variant predicates are within
EntitySubPredicates
- All variant predicates are within
Most methods now take in a Holder
of a registry object rather than the registry object directly. As such, direct references should not be used.
net.minecraft.client.renderer.FogRenderer$MobEffectFogFunction#getMobEffect
returns aHolder<MobEffect>
net.minecraft.gametest.framework.GameTestHelper
now takes in aHolder<MobEffect>
net.minecraft.network.chat.ChatType$Bound
now takes in aHolder<ChatType>
net.minecraft.world.effect.MobEffect#addAttributeModifier
now takes in aHolder<Attribute>
net.minecraft.world.effect.MobEffectInstance
now takes in aHolder<MobEffect>
net.minecraft.world.entity.Entity#gameEvent
now takes in aHolder<GameEvent>
net.minecraft.world.item.ArmorItem
now takes in aHolder<ArmorMaterial>
net.minecraft.world.level.LevelAccessor#gameEvent
now takes in aHolder<GameEvent>
net.minecraft.world.level.gameevent.GameEventListener#handleGameEvent
now takes in aHolder<GameEvent>
net.minecraft.world.level.gameevent.GameEventListenerRegistry#visitInRangeListeners
now takes in aHolder<GameEvent>
Many of the methods that were commonly used in ExtraCodecs
has been migrated or combined in some other appropriate place within Codec
or DataResult
. Most of the names are synonymous, so they just need to be replaced with the correct class.
net.minecraft.Util#getOrThrow
,getPartialOrThrow
->com.mojang.serialization.DataResult#getOrThrow
,getPartialOrThrow
- `net.minecraft.util.ExtraCodecs
withAlternative
->com.mojang.serialization.Codec#withAlternative
validate
->com.mojang.serialization.Codec#validate
strictOptionalField
->com.mojang.serialization.Codec#optionalFieldOf
as the method is now strict by defaultoptionalFieldOf
previously has now been replaced bylenientOptionalFieldOf
xor
->Codec#xor
either
->Codec#either
stringResolverCodec
->Codec#stringResolver
recursive
->Codec#recursive
lazyInitializedCodec
->Codec#lazyInitialized
sizeLimitedString
->Codec#sizeLimitedString
A lot of read/write methods have been replaced with Codec equivalents.
net.minecraft.nbt.NbtUtils#readGameProfile
,#writeGameProfile
->ExtraCodecs#GAME_PROFILE
net.minecraft.network.FriendlyByteBuf
writeId
,readById
->Registry#getId
,byId
andFriendlyByteBuf#writeVarInt
readCollection
,writeCollection
,readList
,readMap
,writeMap
,writeOptional
,readOptional
,writeNullable
,readNullable
take in decoders and encoders for streamswriteEither
,readEither
->Codec#either
readComponent
,readComponentTrusted
,writeComponent
->ComponentSerialization#STREAM_CODEC
,TRUSTED_STREAM_CODEC
writeItem
,readItem
->ItemStack#OPTIONAL_STREAM_CODEC
readGameProfile
,writeGameProfile
->ExtraCodecs#GAME_PROFILE
readGameProfileProperties
,writeGameProfileProperties
->ExtraCodecs#PROPERTY_MAP
''readProperty
,writeProperty
->ExtraCodecs#PROPERTY
Most methods that passed around the raw PoseStack
has had the parameter removed. Now, no PoseStack
, or only the relevant Pose
or Matrix4f
, is passed.
net.minecraft.client.renderer.GameRenderer#renderLevel
no longer takes in aPoseStack
net.minecraft.client.renderer.LevelRenderer
prepareCullFrustum
no longer takes in aPoseStack
and only takes in theMatrix4f
that is being operated onrenderLevel
no longer takes in aPoseStack
renderSectionLayer
no longer takes in aPoseStack
renderSky
no longer takes in aPoseStack
and only takes in theMatrix4f
that is being operated on
Matrix4f
is no longer passed into the shader uniforms when setting up level lighting.
com.mojang.blaze3d.platform.Lighting#setupForEntityInInventory
- Setup light direction uniforms for entity displayed in inventorynet.minecraft.client.particle.ParticleEngine#render(PoseStack, MultiBufferSource$BufferSource, LightTexture, Camera, float)
->render(LightTexture, Camera, float)
There is now a separation when it comes to interacting with an item compared interacting with anything else. When interacting where an item is supposed to be called, methods will now return an ItemInteractionResult
. An ItemInteractionResult
can be mapped to an InteractionResult
. The methods below now return an ItemInteractionResult
.
net.minecraft.core.cauldron.CauldronInteraction
interact
fillBucket
emptyBucket
Enchantment
s have been overhauled to now hold a single record known as an EnchantmentDefinition
. This record contains tags for the supported items this enchantment can be applied to, the items it would be considered a primary enchantment, the weight of obtaining the enchantment, the max level the enchantment can be, the minimum and maximum cost of the enchantment, the cost to repair in an anvil, the feature flags, and the slots the enchantment can be applied to.
These values can be created using Enchantment#definition
, while the cost can be computed either via constantCost
for every level, or dynamicCost
for an increasing cost per level. Enchantments still need to be registered like any other built-in registry.
For the tags, there are minecraft:enchantable/*
tags which refer to a list of items that can be applied with that enchant. For example, minecraft:enchantable/sword
contains all swords. If one of these tags do not match your criteria, you can create a separate enchantable tag for specifically your enchantment. It is recommended to add other items via other enchantable tag groups first. This replaces EnchantmentCategory
.
EnchantmentHelper
methods have been replaced to use the ItemEnchantment
s data component object instead of a raw CompoundTag
.
getRarity
->getWeight
getAnvilCost
- The minimum cost needed to repair in an anvilgetDamageBonus(int, MobType)
->getDamageBonus(int, EntityType<?>)
doPostItemStackHurt
- Executes when an item with this enchantment damages an entity
Many of the methods within Block
are now protected, to prevent direct access except through the BlockState
, or has had some changes to its logic. The following methods are now protected:
updateIndirectNeighbourShapes
isPathfindable
updateShape
skipRendering
neighborChanged
onPlace
onRemove
onExplosionHit
useWithoutItem
useItemOn
triggerEvent
getRenderShape
useShapeForLightOcclusion
isSignalSource
getFluidState
hasAnalogOutputSignal
getMaxHorizontalOffset
getMaxVerticalOffset
rotate
mirror
canBeReplaced
getDrops
getSeed
getOcclusionShape
getBlockSupportShape
getInteractionShape
getLightBlock
getMenuProvider
canSurvive
getShadeBrightness
getAnalogOutputSignal
getShape
getCollisionShape
isCollisionShapeFullBlock
isOcclusionShapeFullBlock
getVisualShape
randomTick
tick
getDestroyProgress
spawnAfterBreak
attack
getSignal
entityInside
getDirectSignal
onProjectileHit
propagatesSkylightDown
isRandomlyTicking
getSoundType
Here are some other changes:
isPathfindable(BlockState, BlockGetter, BlockPos, PathComputationType)
->isPathfindable(BlockState, PathComputationType)
use
->useWithoutItem
BlockStateBase$neighborChanged
->handleNeighborChanged
net.minecraft.world.level.block.Block
isRandomlyTicking
->BlockBehaviour#isRandomlyTicking
propagatesSkylightDown
->BlockBehaviour#propagatesSkylightDown
getSoundType
->BlockBehaviour#getSoundType
The hard limit has been raised from 64 to 99 for ItemStack
s.
net.minecraft.client.gui.components.events.ContainerEventHandler#magicalSpecialHackyFocus
has been removed. It did nothing but set the focused element.
net.minecraft.data.worldgen.BootstapContext
has finally been renamed to BootstrapContext
!
The following is a list of useful or interesting additions, changes, and removals that do not deserve their own section in the primer.
Most string transformation utility methods have been moved to net.minecraft.util.StringUtil
with the same name
net.minecraft.Util#isBlank
,isWhitespace
net.minecraft.SharedConstants#isAllowedChatCharacter
,filterText
All network methods for advancements (read
, write
) have been made private or removed. They are replaced by StreamCodec
s taking in a RegistryFriendlyByteBuf
.
The following predicates have been added for handling criteria triggers:
CollectionContentsPredicate
-> Returns true if all contents of a collection match the given predicate(s)CollectionCountsPredicate
-> Returns true if the number of contents that match the given predicate(s) is within the specified boundsCollectionPredicate
-> Returns true depending on the above predicates and whether the size of the collection matches the size specified
A new field called slots
on the EntityPredicate
can now check the entity's inventory for a match.
Recipe book methods that attempt to get a RecipeBookCategories
will now throw a MatchException
if no corresponding category exists.
net.minecraft.client.ClientRecipeBook#getCategory
net.minecraft.client.RecipeBookCategories#getCategories
Most logic within the Gui
class has been separated to private methods. Additionally, some fields have been removed in favor of using their GuiGraphics
counterparts.
renderEffects
,renderJumpMeter
,renderExperienceBar
,renderSelectedItemName
,renderDemoOverlay
is now privaterenderSavingIndicator
is now public and takes in a float representing the tick ratescreenWidth
,screenHeight
->GuiGraphics#guiWidth
,GuiGraphics#guiHeight
itemRenderer
has been completely removed
Map decoration textures are now managed by an atlas that is stiched together. Because of this, the map id is now stored within a record MapId
holding the current id of the map to render as a texture. MapRenderer
uses this MapId
instead of a integer.
To access the texture manager, call Minecraft#getMapDecorationTextures
.
net.minecraft.client.multiplayer.ClientLevel
getMapData(String)
->getMapData(MapId)
overrideMapData(String, MapItemSavedData)
->overrideMapData(MapId, MapItemSavedData)
getAllMapData
returns aMap<MapId, MapItemSavedData>
addMapData(Map<String, MapItemSavedData>)
->addMapData(Map<MapId, MapItemSavedData>)
net.minecraft.world.level.Level
setMapData(String, MapItemSavedData)
->setMapData(MapId, MapItemSavedData)
getFreeMapId
returns aMapId
Font providers now have variant filters. There are currently two available: uniform and japanese variants. These filters determine whether the variant should be used. Most font cosntruction methods allows a filter or a font option to be passed in.
com.mojang.blaze3d.font.GlyphProvider$Conditional
- Filters whether a glyph provider should be added to the list of available providers when loading a font optionnet.minecraft.client.Options#japaneseGlyphVariants
- A new option that, when enabled, will use different variants of Japanese glyphsnet.minecraft.client.gui.font.FontManager#updateOptions
- Reloads the available font options to choose fromnet.minecraft.client.Minecraft#selectMainFont
->updateFontOptions
- This is not one-to-one as the fonts are now options in the menu
net.minecraft.client.gui.font.FontSet#reload
takes in a conditional holding the filters for a glyph provider and the set of font options to reload
Screen#renderBackground
has been broken into three steps: renderPanorama
if the level is null, renderBlurredBackground
which processes the blur effect to apply to the background, and renderMenuBackground
which rends the background texture to the screen. There is also an additional method for rendering a transparent background called renderTransparentBackground
which is called when rendering the background in AbstractContainerScreen
.
renderDirtBackground
-> renderMenuBackground
Some methods in data providers now take in a HolderLookup$Provider
to get any relevant registry objects that are not explicitly accessible or built in.
net.minecraft.data.recipes.RecipeProvider
now takes in aCompletableFuture<HolderLookup.Provider>
buildAdvancement
now takes in aHolderLookup$Provider
Many references to ResourceLocation
s now take in an associated ResourceKey
instead with the generic tied to the registry object in question.
net.minecraft.data.loot.BlockLootSubProvider
now takes in aMap<ResourceKey<LootTable>, LootTable.Builder>
instead of aMap<ResourceLocation, LootTable.Builder>
net.minecraft.data.loot.LootTableProvider(PackOutput, Set<ResourceLocation>, List<LootTableProvider.SubProviderEntry>)
-> `LootTableProvider(PackOutput, Set<ResourceKey>, List<LootTableProvider.SubProviderEntry>, CompletableFuture<HolderLookup.Provider>)net.minecraft.data.loot.LootTableSubProvider#generate(BiConsumer<ResourceLocation, LootTable.Builder>)
->generate(HolderLookup.Provider, BiConsumer<ResourceKey<LootTable>, LootTable.Builder>)
Static methods for writing and reading data have been added to FriendlyByteBuf
which takes in the same parameters of the instance method, along with the ByteBuf
to write to.
Loot data are now handled through dynamic registries, specifically ones that can be reloaded by the /reload
command. This means that any previous references, such as LootDataManager
, no longer exist. They can be queried via reloadableRegistries
in MinecraftServer
or Level
Pack information stored within resources are now stored within a PackLocationInfo
object. Parameters such as name
or isBuiltIn
is stored directly on this object (e.g. id
and knownPackInfo
, respectively). All classes within net.minecraft.server.packs
have been updated to accomdate this change.
A KnownPack
is simply a synced key and version indicating where the resource orginated from. As such, both the server and client must have the same contents as the KnownPack
is used to avoid syncing the entire pack when unnecessary.
Codec#dispatch
now takes in a MapCodec
instead of a Codec
. All other codecs used for dispatch have been updated to a MapCodec
:
net.minecraft.core.particles.ParticleType#codec
net.minecraft.client.renderer.texture.atlas.SpriteSources#register
net.minecraft.client.renderer.texture.atlas.SpriteSourceType
net.minecraft.util.valueproviders.FloatProviderType#codec
net.minecraft.util.valueproviders.IntProviderType#codec
net.minecraft.world.item.crafting.RecipeSerializer#codec
net.minecraft.world.level.biome.BiomeSource#codec
net.minecraft.world.level.chunk.ChunkGenerator#codec
net.minecraft.world.level.gameevent.PositionSourceType#codec
net.minecraft.world.level.levelgen.blockpredicates.BlockPredicateType#codec
net.minecraft.world.level.levelgen.carver.WorldCarver#configuredCodec
net.minecraft.world.level.levelgen.feature.Feature#configuredCodec
net.minecraft.world.level.levelgen.feature.featuresize.FeatureSizeType#codec
net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacerType#codec
net.minecraft.world.level.levelgen.feature.rootplacers.RootPlacerType#codec
net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProviderType#codec
net.minecraft.world.level.levelgen.feature.treedecorators.TreeDecoratorType#codec
net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacerType#codec
net.minecraft.world.level.levelgen.heightproviders.HeightProviderType#codec
net.minecraft.world.level.levelgen.placement.PlacementModifierType#codec
net.minecraft.world.level.levelgen.structure.Structure#simpleCodec
net.minecraft.world.level.levelgen.structure.StructureType#codec
net.minecraft.world.level.levelgen.structure.placement.StructurePlacementType#codec
net.minecraft.world.level.levelgen.structure.pools.StructurePoolElementType#codec
net.minecraft.world.level.levelgen.structure.pools.alias.PoolAliasBinding#codec
net.minecraft.world.level.levelgen.structure.templatesystem.PosRuleTestType#codec
net.minecraft.world.level.levelgen.structure.templatesystem.RuleTestType#codec
net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorType#codec
net.minecraft.world.level.levelgen.structure.templatesystem.rule.blockentity.RuleBlockEntityModifierType#codec
net.minecraft.world.level.storage.loot.entries.CompositeEntryBase#createCodec
net.minecraft.world.level.storage.loot.entries.LootPoolEntryType
net.minecraft.world.level.storage.loot.functions.LootItemFunctionType
net.minecraft.world.level.storage.loot.predicates.LootItemConditionType
net.minecraft.world.level.storage.loot.providers.nbt.LootNbtProviderType
net.minecraft.world.level.storage.loot.providers.number.LootNumberProviderType
net.minecraft.world.level.storage.loot.providers.score.LootScoreProviderType
The pakrat parser has been added to net.minecraft.util.parsing.packrat
to read and parse strings from commands. However, this implementation can be used generically by creating your own grammar.
An EntityAttachment
is a definition of where a given point lies the entity. For example, a name tag could be directly on top of an entity or underneath it. Each EntityAttachment
contains a fallback of where the point should go if there is none set. Multiple points can be registered for a given EntityAttachment
.
EntityAttachment
s are added from the EntityType$Builder
using one of the *Attachments
, *Offset
, or attach
methods. They can then be accessed from the entity using #getAttachments
. To get an attachment vector value, specify the attachment, index, and y rotation, calling EntityAttachments#getNullable
if you want null to be returned, or get
if you want an error to be thrown.
Dyable armor is now a setting on the ArmorMaterial$Layer
and an item tag minecraft:dyeable
rather than a completely separate class. When true, this will tint the armor texture provided. The ItemStack
must have a DYED_COLOR
data component to read the tint color from. The tag allows this component to be added through the armor dyeing crafting table recipe.
PotionBrewing
is now an instance class on the MinecraftServer
that is passed through the Level
. This means all static methods are now instance methods.
Tooltips for a particular object stored on an item (usually for DataComponent
s) are now implemented via TooltipProvider
. This interface has one method which takes in the context of the item tooltip, a consumer to supply the tooltip contents to, and the currently set tooltip flags. Calling this is usualy within Item#appendHoverText
:
@Override
public void appendHoverText(ItemStack stack, Item.TooltipContext ctx, List<Component> tooltips, TooltipFlag flags) {
// Get some TooltipProvider implementation provider
provider.addToTooltip(ctx, tooltips::add, flags);
}
BAD_OMEN
->RAID_OMEN
DEFAULT_BLOCK_USE
(minecraft:default_block_use
)ANY_BLOCK_USE
(minecraft:any_block_use
)CRAFTER_RECIPE_CRAFTED
(minecraft:crafter_recipe_crafted
)FALL_AFTER_EXPLOSION
(minecraft:fall_after_explosion
)
EQUIPMENT
->ORIGIN
,THIS_ENTITY
VAULT
->ORIGIN
,THIS_ENTITY
?BLOCK_USE
->ORIGIN
,THIS_ENTITY
,BLOCK_STATE
SHEARING
->ORIGIN
,THIS_ENTITY
?
com.mojang.blaze3d.vertex.PoseStack$Pose
transformNormal
- Applies a transform to the normal within the given posecopy
- Makes a deep copy of the current pose. Does not add to stack
com.mojang.math.MatrixUtil
isPureTranslation
- Returns true if the matrix has only been translated from the identityisOrthonormal
- Returns true if the upper left 3x3 submatrix is orthogonal
net.minecraft.Util
toMutableList
- Creates a collector for a mutable listgetRegisteredName
- Gets the registry name of an object, or[unregistered]
if not registeredallOf
- Combines all predicates into a single predicate using ANDscopyAndAdd
- Creates a new immuatble list with the added elementcopyAndPut
- Creates a new immutable map with the added element
net.minecraft.client.GuiMessage#icon
- Returns the icon for the message tag when present, otherwise nullnet.minecraft.client.Minecraft#disconnect(Screen, boolean)
where the boolean, when true, will not clear downloaded resource packsnet.minecraft.client.MouseHandler#handleAccumulatedMovement
- Handles the movement of the mouse when running the ticknet.minecraft.client.OptionInstance#createButton(Options)
- Creates a button at (0,0) with a width of 150net.minecraft.client.Options
menubackgroundBlurriness
- A new option to determine how blurry the background of a menu should be
net.minecraft.client.gui.GuiGraphics
containsPointInScissor
- Returns true if the given point is within the top entry of the scissor stackfillRenderType
- Creates a filled quad for the givenRenderType
net.minecraft.client.LayeredDraw
- A class that renders objects on top of each other. The distance between each layer is translated 200 units in the Z direction to allow proper stackingnet.minecraft.client.gui.components.AbstractSelectionList
updateSize
- Updates the size of the list to displayupdateSizeAndPosition
- Updates the size and position of the list to displaygetDefaultScrollbarPosition
- Gets the x position where the scrollbar would normally rendergetListOutlinePadding
- Gets the padding to offset the x position of the scrollbargetRealRowLeft
- Gets the actual left position of the listgetRealRowRight
- Gets the actual right position of the list
net.minecraft.client.gui.components.ChatComponent
storeState
- Returns the current state of the chat messages stored in the componentrestoreState
- Sets the current state of the chat messages to a previous setup
net.minecraft.client.gui.components.CycleButton#create(Component, CycleButton$OnValueChange)
- Constructs a new button at (0,0) of size (150,20)- `net.minecraft.client.gui.components.DebugScreenOverlay
showFpsCharts
- When true, renders the FPS chartlogRemoteSample
- Logs a full sample for the specified sample type
net.minecraft.client.gui.components.FocusableTextWidget#containWithin
- Sets the max width to contain the specified size excluding paddingnet.minecraft.client.gui.components.TabButton$renderMenuBackground
- Renders the background of the screennet.minecraft.client.gui.components.debugchart.AbstractDebugChart
drawDimensions
- Draws the sample and additional informationdrawMainDimension
- Draws the sample to the displaydrawAdditionalDimensions
- Draws additional information about the samplegetValueForAggregation
- Reads the data within the sample storage
net.minecraft.client.gui.components.toasts.SystemToast
onLowDiskSpace
- Creates a system toast that notifies the disk space needed to write the chunk is lowonChunkLoadFailure
- Creates a system toast that notifies the chunk has failed to loadonChunkSaveFailure
- Creates a system toast that notifies the chunk has failed to save
net.minecraft.client.gui.font.FontSet#name
- the name of the font setnet.minecraft.client.gui.font.providers.FreeTypeUtil
- A utility for interactions the Freetype Font API- `net.minecraft.client.gui.layouts.HeaderAndFooterLayout
getContentHeight
- Gets the y position of the contentaddTitleHeader
- Adds a string widget to the header
net.minecraft.client.gui.navigation.ScreenRectangle#containsPoint
- Checks whether the point is within the current rectanglenet.minecraft.client.gui.screens.Screen#setInitialFocus
- This method should be overridden to set the initial focused widget on screennet.minecraft.client.multiplayer.ClientPacketListener
scoreboard
- Gets the sent scoreboard from the serverpotionBrewing
- Gets the sent brewing information from the server
net.minecraft.client.multiplayer.KnownPacksManager
- A class that holds the known packs on the client from the servernet.minecraft.client.multiplayer.RegistryDataCollector
- A collector which holds the contents and tags of the available registriesnet.minecraft.client.multiplayer.TagCollector
- A collector which holds the tags of the available registriesnet.minecraft.client.multiplayer.ServerData
state
- Gets the current state of the server datasetState
- Sets the current state of the server data
net.minecraft.client.particle.Particle$LifetimeAlpha
- A particle utility for handing animated alpha over the particle's lifetime using linear interpolationnet.minecraft.client.renderer.GameRenderer
loadBlurEffect
- Loads the effect of the blur post processor (private)processBlurEffect
- Processes the blur effect, applies the 'Radius' uniform using the menu blackground blurriness optiongetRendertypeCloudsShader
- Gets the shader for the clouds render type
net.minecraft.client.renderer.entity.EntityRenderer#getShadowRadius
- Returns the radius of the entity's shadownet.minecraft.client.renderer.entity.layers.WolfArmorLayer
- Render layer for wolf armornet.minecraft.client.sounds.ChunkedSampleByteBuf
- A byte buffer chunked into multiple byte buffersnet.minecraft.commands.arguments.ResourceOrIdArgument
- An argument that operates on a resource or registry object identifiernet.minecraft.commands.arguments.SlotsArgument
- An argument that operates on a specific slot within a slot rangenet.minecraft.commands.functions.CommandFunction#checkCommandLineLength
- Commands with over 2 million characters will throw an errornet.minecraft.core.BlockBox
- A rectangular prism as defined by two block positionsnet.minecraft.core.BlockPos
min
- Takes the minimum coordinates between two block positions and creates a new onemax
- Takes the maximum coordinates between two block positions and createa a new one
net.minecraft.core.Direction#getNearest
- Gets the direction closest to the normalized vectornet.minecraft.core.Direction$Plane#length
- Gets the number of faces in a given planenet.minecraft.core.Holder
is(Holder)
- Checks if two holders are equivalent, this method is deprecatedgetRegisteredName
- Gets the registry object's identifer
net.minecraft.core.HolderGetter$Provider#get
- Gets a refence holder to a registry object from the registry key and resource keynet.minecraft.core.HolderLookup#createSerializationContext
- Creates a registry ops for the current registries providernet.minecraft.core.HolderSet#empty
- Gets an empty holder setnet.minecraft.core.IdMap#getIdOrThrow
- Gets the id of a registry object or throws an error if not presentnet.minecraft.core.RegistrationInfo
- Holds information related to a specific registry object in a registry (the pack it came from and the lifecycle of the object)net.minecraft.core.Registry
getHolder(ResourceLocation)
- Gets the object holder from its registry idgetRandomElementOf
- Gets a random element from the registry filtered by a tag
net.minecraft.core.RegistrySynchronization$PackedRegistryEntry
- Holds the data for a given registry entrynet.minecraft.data.tags.TagsProvider$TagAppender#addAll
- Adds a list of resource keys to the tagnet.minecraft.gametest.framework.GameTest
skyAccess
- When false, when preparing a test structure, this will spawn barrier blocks on top of the structuremanualOnly
- When true, the test can only be manually triggered and not run as part of all available tests
net.minecraft.gametest.framework.GameTestHelper
spawnItem(Item, Vec3)
- Spawns an item at the specified relative vectorfindOneEntity
- Finds the first entity that matches the typefindClosestEntity
- Finds the closest entity to the specifid (x,y,z) within a given radiusfindEntities
- Finds all entities within the given radius centered at (x,y,z)moveTo
- Moves a mob to the specified position using theMob#moveTo
methodgetEntities
- Get all entities of a given type within the test boundsassertValueEqual
- Asserts that two objects are equivalentassertEntityNotPresent
- Asserts that an entity is not present between the given vectors
net.minecraft.gametest.framework.GameTestListener#testAddedForRerun
- A listener method that is called if the test needs to be rerunnet.minecraft.gametest.framework.GameTestRunner$Builder
- A builder for constructing a runner to run the game testsnet.minecraft.network.RegistryFriendlyByteBuf
- A byte buffer which holds aRegistryAccess
net.minecraft.resources.RegistryDataLoader#load
- Methods have been added to add aLoadingFunction
which handles how the data in the registry is loadednet.minecraft.resources.RegistryOps
injectRegistryContext
- Wraps aDynamic
with some ops into aDynamic
with aRegistryOps
withParent
- Creates aRegistryOps
with the passed inDynamicOps
as a delegate
net.minecraft.resources.ResouceLocation#readNonEmpty
- Reads aResourceLocation
, throwing an error if the reader buffer is emptynet.minecraft.server.MinecraftServer
reloadableRegistries
- Holds an accessor to the dynamic registries on the serversubscribeToDebugSample
- Registers a player to receive debug samplesacceptsTransfers
- Determines whether transfer packets can be sent to the serverreportChunkLoadFailure
- Reports a chunk has failed to loadreportChunkSaveFailure
- Reports a chunk has failed to save
net.minecraft.server.ReloadableServerRegistries
- A class which holds registries that can be reloaded while in game (e.g., loot tables)net.minecraft.server.level.ServerLevel#getPathTypeCache
- Gets the cache ofPathType
s when computed by an entity- `net.minecraft.server.level.ServerPlayer
setSpawnExtraParticlesOnFall
- Sets a boolean to spawn more particles when landing from a fallsetRaidOmenPosition
,clearRaidOmenPosition
,getRaidOmenPosition
- Handles creating a raid from the given position
net.minecraft.util.ListAndDeque
- An interface which defines an object as a list and deque that can be randomly accessedArrayListDeque
now implements this interface
net.minecraft.util.ExtraCodecs
sizeLimitedMap
- Makes sure the map is no larger than the specified sizeoptionalEmptyMap
- Returns an optional map
net.minecraft.util.FastColor
as8BitChannel
- Gets an 8-bit color value from a float between 0-1color(int,int,int)
- Creates an opaque 32-bit color value from RGBopaque
-> Sets the alpha of a color to 255color(int,int)
- Creates a color with the R channel separated from the GBcolorFromFloat
- Creates a 32-bit color value from floats between 0-1
net.minecraft.util.Mth#mulAndTruncate
- Multiplies a fraction by some value. Since integer division is used, the resulting division is floorednet.minecraft.util.NullOps
- An intermediary that only represents a null valuenet.minecraft.util.ParticleUtils
spawnParticleInBlock
- Spawns particles within a blockspawnParticles
- Spawns particles at the given position with some offset
net.minecraft.util.profiling.jfr.JvmProfiler#onRegionFile(Read|Write)
- Handles logic when the region file for a given world has been read from or written tonet.minecraft.world.Container#getMaxStackSize(ItemStack)
- Gets the max stack size for anItemStack
by getting the minimum of the container max stack size and the stack's max stack sizenet.minecraft.world.InteractionResult#SUCCESS_NO_ITEM_USED
- The interaction was successful but the context entity did not use an itemnet.minecraft.world.effect.MobEffect
onEffectAdded
- Called when the effect is first added to the entityonMobRemoved
- Called when the entity has been removed from the level when the effect is appliedonMobHurt
- Called when the entity is hurt when the effect is appliedcreateParticleOptions
- Creates the particle options to spawn around the entitywithSoundOnAdded
- Sets the sound when the effect is added to an entity
net.minecraft.world.effect.MobEffectInstance
is
- Returns true if the effect holders are equalskipBlending
- Tells the effect not to blend with other environmental renderers (e.g. fog)
net.minecraft.world.entity.AnimationState#fastForward
- Speeds up the animation based upon the animation duration and a scale amount between 0-1net.minecraft.world.entity.Crackiness
- Handles the state of how much armor has been damaged, or 'cracked'net.minecraft.world.entity.Entity
getDefaultGravity
- Gets the default gravity value to apply to the entitygetGravity
- Gets the gravity to apply to the entity, or if there is no gravity 0applyGravity
- Applies gravity to the delta movement of the entity.getNearestViewDirection
- Gets the direction nearest to the current view vectorgetDefaultPassengerAttachmentPoint
- Determines the default attachment point based upon the entity's current dimensionsdeflection
- Determines how an entity interacts with this projectilegetPassengerClosestTo
- Gets the passenger closest to the given vectoronExplosionHit
- Handles when the entity is hit with an explosionregistryAccess
- Gets the current registry access
net.minecraft.world.entity.EntityType$Builder#spawnDimensionsScale
- Sets the scale factor to apply to the entity's dimensions when attempting to spawnnet.minecraft.world.entity.EquipmentSlot#BODY
net.minecraft.world.entity.EquipmentSlotGroup
- Indicates a grouping ofEquipmentSlot
snet.minecraft.world.entity.EquipmentTable
- Indicates the drop chances of a givenEquipmentSlot
net.minecraft.world.entity.EquipmentUser
- Indicates that the entity can wear equipment- All
Mob
s andArmorStand
s are equipment users
- All
net.minecraft.world.entity.LivingEntity
getComfortableFallDistance
- Increases the fall distance that the entity can survive without taking damage by three blocksdoHurtEquipment
- Handles when a piece of equipment should be damagedcanUseSlot
- Whether a slot can be used on an entitygetJumpPower(float)
- Gets the power of a jump from the attribute, scaling by a float and the block jump factor and adding the jump boost powergetDefaultDimensions
- Gets the base dimensions for a given posegetSlotForHand
- Gets theEquipmentSlot
for a givenInteractionHand
hasInfiniteMaterials
- Whether the entity has an infinite amount of materials in its inventory. This is currently only used by thePlayer
net.minecraft.world.entity.Mob
getTargetFromBrain
- Gets the attack target of the entity, or null if none is availablestopInPlace
- Stops all navigation and entity movementclampHeadRotationToBody
- Keeps the head movement within the bounds of the bodygetBodyArmorItem
,canWearBodyArmor
,isWearingBodyArmor
,isBodyArmorItem
,setBodyArmorItem
- Logic for handling armor in theBODY
slotmayBeLeashed
- If the entity can be leashed
net.minecraft.world.entity.SlotAccess#of
- Creates aSlotAccess
using a supplier, consumer setupnet.minecraft.world.entity.SpawnPlacements#isSpawnPositionOk
- If the entity can spawn in this positionnet.minecraft.world.entity.ai.attributes.AttributeInstance#addOrUpdateTransientModifier
- Updates a modifier value to the current one if it is already present, otherwise adds itnet.minecraft.world.entity.ai.behavior.Swim#shouldSwim
- Checks whether the entity can swimnet.minecraft.world.entity.ai.navigation.PathNavigation#moveTo
- AmoveTo
method which takes in a close enough distancenet.minecraft.world.entity.monster.AbstractSkeleton
getHardAttackInterval
- After how many ticks the entity will attack when in the hard difficultygetAttackInterval
- After how many ticks the entity will attack when not in the hard difficulty
net.minecraft.world.entity.player.Inventory#contains(Predicate)
- Whether a stack in the inventory matches the predicatenet.minecraft.world.entity.player.Player#canInteractWithEntity
- Whether the player can interact with another entitynet.minecraft.world.entity.projectile.AbstractArrow
getDefaultPickupItem
,setPickupItemStack
- Gets the default pickup item if the actual item stack cannot be obtained or is emptygetSlot
- Gets the slot access of the pickupable stack
net.minecraft.world.entity.projectile.Projectile
getMovementToShoot
- Gets the movement to apply to the entity when shootinghitTargetOrDeflectSelf
- Gets the deflection status of the projectiledeflect
- Deflects the entityonDeflection
- What to do when this projectile is deflected
net.minecraft.world.entity.projectile.ProjectileDeflection
- The status of how a projectile can be deflected, typically on punchnet.minecraft.world.entity.raid.Raider
isCaptain
- Whether the entity is a captain of a raidhasRaid
- If the entity has a raid to do
net.minecraft.world.entity.vehicle.ContainerEntity#getBoundingBox
- Gets the bounding box of the entitynet.minecraft.world.flag.FeatureFlagSet
isEmpty
- Whether there are no feature flags enabledintersects
- Whether two feature flag sets contain at least one similar feature flagsubtract
- Returns a feature flag set without the flags of the parameter
net.minecraft.world.food.FoodConstants#saturationByModifier
- Takes in the number of hearts to heal and how the saturation should be multiplied bynet.minecraft.world.inventory.SlotRange
- Defines a range of slot indexes that can be referenced from some string prefix plus the index (all availableSlotRange
s are inSlotRanges
net.minecraft.world.item.ArmorItem$Type
is nowStringRepresentable
hasTrims
- Whether the armor type supports trims
net.minecraft.world.item.ArmorMaterial#layers
- Stores information about the texture location of the armor typenet.minecraft.world.item.DiggerItem#createAttributes
- Creates the attribute modifiers given for a tier, attack damage, and attack speednet.minecraft.world.item.Item
components
- Gets the data component mapgetDefaultMaxStackSize
- Reads the max stack size of the component, or defaults to 1getAttackDamageBonus
- Applies a bonus to the attack damage when in the main handgetBreakingSound
- The sound even to play when the item breaks$Properties#component
- Adds a data component to the item$Properties#attributes
- Sets the attribute modifiers for the item$TooltipContext
- Holds access to the available registries, tick rate, andMapItemSavedData
when coming from aLevel
net.minecraft.world.item.ItemStack
getPrototype
- Gets the component map from the itemgetComponentsPatch
- Gets the patches to the component map on the currentItemStack
validateComponents
- Validates whether certain components can be on the component mapparse
- Parses the stack from a tagparseOptional
- Parses the stack from a tag, or returns an empty stack when not presentsave
- Saves the stack to a tag, or returns an empty tagtransmuteCopy
- Creates a new copy, providing the component patchtransmuteCopyIgnoreEmpty
- Creates a new copy without checking whether the stack is empty or notlistMatches
- Returns whether two lists of stacks match each other 1-to-1lenientOptionalFieldOf
- Creates a map codec with an optional stackhashItemAndComponents
- Computes the hash code for a given stackhashStackList
- Computes the hash code for a list of stacksset
- Sets a data component valueupdate
- Updates a data component valueapplyComponentsAndValidate
- Applies a component patch and validates the componentsapplyComponents
- Applies a patch to the component map and validatesgetEnchantments
- Gets the item enchantments from the data componentforEachModifier
- Applies a consumer for every modifier in the attribute modifierslimitSize
- Sets the count of the stack if the current count is larger than the limitconsume
- Consumes a single item
net.minecraft.world.item.ProjectileItem
- Defines an item that can function like a projectile. Contains logic for constructing the projectile and shooting it either from the entity or dispenserProjectileWeaponItem
contains protected implementations of these methods to be set when implementingProjectileItem
net.minecraft.world.item.SwordItem#createAttributes
- Creates the attribute modifiers given for a tier, attack damage, and attack speednet.minecraft.world.item.Tier
getIncorrectBlocksForDrops
- A negative restraint preventing certain blocks from receiving a boost from this tiercreateToolProperties
- Creates aTool
given the tag containing the blocks to speed up mining for
net.minecraft.world.level.ExplosionDamageCalculator#getKnockbackMultiplier
- Returns a scalar on how much knockback to apply to the entitynet.minecraft.world.level.SpawnData#isValidPosition
- Whether the entity can spawn within the specified block and sky lightnet.minecraft.world.level.block.BonemealableBlock
getParticlePos
- Gets the position the particle should spawngetType
- Gets the type of effect the bonemeal has on particle spawning
net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity#invalidateCache
- Clears the fuel mapnet.minecraft.world.level.block.entity.BannerBlockEntity#getPatterns
- Gets the stored patterns on the bannernet.minecraft.world.level.block.entity.BlockEntity
applyImplicitComponents
- Reads any data stored on the component input for the block entitycollectImplicitComponents
- Writes any data to be stored on the stackremoveComponentsFromTag
- Removes any information that is stored doubly within theBlockEntityTag
that is handled by a data componentcomponents
,setComponents
- Getters and setters for the stored data component map
net.minecraft.world.level.block.entity.Hopper#isGridAligned
- Returns true if the hopper is always aligned to the block gridnet.minecraft.world.level.block.entity.trialspawner.PlayerDetector$EntitySelector
- Determines how to select an entity from a given contextnet.minecraft.world.level.chunk.storage.RegionFile#getPath
- Gets the path of the region filenet.minecraft.world.level.chunk.storage.RegionFileInfo
- A record which contains the current level name, dimension, and the type of the region (e.g. chunk)net.minecraft.world.level.levelgen.structure.Structure#getMeanFirstOccupiedHeight
- Gets the average height of the four corners of the structurenet.minecraft.world.level.levelgen.structure.BoundingBox#inflatedBy(int, int, int)
- Inflates the size of the box by the specified (x,y,z) in both directionsnet.minecraft.world.level.levelgen.structure.placement.StructurePlacement
applyAdditionalChunkRestrictions
- Returns whether the structure should generate given some level of frequency reductionapplyInteractionsWithOtherStructures
- Returns whether the structure should generate based on the exclusion zones
net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate#updateShapeAtEdge(LevelAccessor, int, DiscreteVoxelShape, BlockPos)
- CallsBlockState#updateShape
on all blocks on the edges of the structurenet.minecraft.world.level.pathfinder.NodeEvaluator#getPathType(Mob, BlockPos)
- Gets the path type by callinggetPathType(PathfindingContext, int, int, int)
where thePathfindingContext
is constructed from the mob and the three integers by unwrapping theBlockPos
net.minecraft.world.level.pathfinder.PathfindingContext
- A context object which holds information related to the current world, cache, and mob positionnet.minecraft.world.level.storage.LevelStorageSource$LevelStorageAccess
estimateDiskSpace
- Returns how much disk space is left to write tocheckForLowDiskSpace
- Checks if the amount of disk space remaining is less than 64MiB
net.minecraft.world.level.storage.LevelSummary#canUpload
- Returns whether the current level summary can be uploaded in a realmnet.minecraft.world.level.storage.loot.ContainerComponentManipulator
- A helper for setting container contents for items in their data components- A list of available manipulators can be found in
ContainerComponentManipulators
- A list of available manipulators can be found in
net.minecraft.world.level.storage.loot.functions.ListOperation
- Defines an operation that can be performed on a listnet.minecraft.world.level.storage.loot.functions.LootItemConditionalFunction#getType
- Gets the item function type that can be conditionally loadednet.minecraft.world.phys.shapes.BitSetDiscreteVoxelShape#isInterior
- Checks whether the position is surrounded by fully encompassing shapes on all sidesnet.minecraft.client.gui.font.providers.FreeTypeUtil#checkError
- Returns true if an error was foundnet.minecraft.client.gui.screens.Screen
advancePanoramaTime
- Updates the panorama by a set interval every frame- Does not use the delta time frame provided in
renderPanorama
- Does not use the delta time frame provided in
clearTooltipForNextRenderPass
- Clears the tooltip rendering data
net.minecraft.nbt.CompoundTag#shallowCopy
- Creates a shallow copy of the tagnet.minecraft.network.protocol.PacketUtils#makeReportedException
- Fills the crash report before returning the reported exception to thrownet.minecraft.server.packs.repository.PackRepository#displayPackList
- Collects all packs into a single string by their idnet.minecraft.world.item.crafting.RecipeManager#getOrderedRecipes
- Gets all recipes ordered by theirRecipeType
net.minecraft.world.level.chunk.ChunkGenerator#validate
- Resolves the feature step data to generate
com.mojang.blaze3d.font.SheetGlyphInfo
getBearingX
->getBearingLeft
getBearingY
->getBearingTop
getUp
->getTop
getDown
->getBottom
com.mojang.blaze3d.font.TrueTypeGlyphProvider
now usesorg.lwjgl.util.freetype
overorg.lwjgl.stb
for font data storagecom.mojang.blaze3d.platform.NativeImage#copyFromFont
->(FT_Face, int)
- This method also returns a boolean, indicating whether the operation was successful
com.mojang.blaze3d.systems.RenderSystem#getModelViewStack
now returns aMatrix4fStack
com.mojang.blaze3d.vertex.PoseStack#mulPoseMatrix
->#mulPose
com.mojang.blaze3d.vertex.SheetedDecalTextureGenerator
now takes in aPoseStack$Pose
com.mojang.blaze3d.vertex.VertexConsumer#putBulkData
now takes in the alpha parameter for the colornet.minecraft.Util#LINEAR_LOOKUP_THRESHOLD
is now publicnet.minecraft.advancements.Advancement#validate(ProblemReporter, LootDataResolver)
->validate(ProblemReporter, HolderGetter$Provider)
net.minecraft.advancements.AdvancementRewards$Builder#loot
,addLootTable
now take in aResourceKey<LootTable>
net.minecraft.client.MouseHandler#turnPlayer
is now privatenet.minecraft.client.Options$FieldAccess#process(String, OptionInstance)
->Options$OptionAccess$process
net.minecraft.client.gui.components.AbstractSelectionList#renderList
->renderListItems
net.minecraft.client.gui.components.AbstractWidget#setTooltipDelay(int)
->setTooltipDelay(Duration)
- `net.minecraft.client.gui.components.ChatComponent
render
now takes in if the chat is focused as a boolean parameterisChatFocused
is now public
net.minecraft.client.gui.components.Checkbox#getBoxSize
is now publicnet.minecraft.client.gui.components.FocusableTextWidget
now takes in an integer representing the padding of the widgetnet.minecraft.client.gui.components.ObjectSelectionList$Entry#mouseClicked
returns true by defaultnet.minecraft.client.gui.components.OptionList
- The constructor now takes in a
OptionsSubScreen
containing the content height and header height addSmall
can now take in a varargs ofOptionInstance
s, a list of widgets, or two widgetsgetMouseOver
now holds an optional ofGuiEventListener
$Entry
->$OptionEntry
,$Entry
is now an abstracted form which takes in the widgets directly
- The constructor now takes in a
net.minecraft.client.gui.components.SpriteIconButton
now takes in aButton$CreateNarration
object- This has been updated for all subclasses and provided a builder option called
narration
- This has been updated for all subclasses and provided a builder option called
net.minecraft.client.gui.components.Tooltip#setDelay
,refreshTooltipForNextRenderPass
,createTooltipPositioner
have been moved toWidgetTooltipHolder
- The holder is stored on an
AbstractWidget
and is final. The tooltip within is mutable
- The holder is stored on an
net.minecraft.client.gui.components.debugchart.AbstractDebugChart
now takes in aSampleStorage
, which is an interface to the oldSampleLogger
(now renamedLocalSampleLogger
)net.minecraft.client.gui.screens.ChatScreen#handleChatInput
no longer returns anythingnet.minecraft.client.gui.screens.ConnectScreen#startConnecting
takes in the currentTransferState
net.minecraft.client.gui.screens.GenericDirtMessageScreen
->GenericMessageScreen
net.minecraft.client.gui.screens.OptionsSubScreen
now holds aHeaderAndFooterLayout
to initialize widgets and reposition themaddTitle
,addFooter
have been added, replacing specificcreateTitle
andcreateFooter
methods in other implementations
net.minecraft.client.gui.screens.Screen#setTooltipForNextRenderPass
is now publicnet.minecraft.client.gui.screens.advancements.AdvancementsScreen
can hold the last screen the user has seennet.minecraft.client.gui.screens.inventory.InventoryScreen#renderEntityInInventory
now takes in a float for the scale parameternet.minecraft.client.gui.screens.worldselection.WorldCreationUiState
setAllowCheats
->setAllowCommands
isAllowCheats
->isAllowCommands
net.minecraft.client.gui.screens.worldselection.WorldOpenFlows
checkForBackupAndLoad(String, Runnable)
->openWorld
checkForBackupAndLoad(LevelStorageAccess, Runnable)
->openWorldLoadLevelData
loadLevel
->openWorldLoadLevelStem
net.minecraft.client.multiplayer.ServerStatusPinger#pingServer
now takes in a runnable that runs on response from the pong packetnet.minecraft.client.particle.FireworkParticles$SparkParticle#setFlicker
->setTwinkle
net.minecraft.client.player.inventory.Hotbar
holds a list ofDynamic
s instead of the raw itemstack listnet.minecraft.client.renderer.EffectInstance
now takes in aResourceProvider
instead of aResourceManager
ResourceManager
implementsResourceProvider
, so there is no major change in implementation
net.minecraft.client.renderer.LevelRenderer#renderClouds
takes in aMatrix4f
containing the pose to transform the clouds to the correct locationnet.minecraft.client.renderer.PanoramaRenderer#render(float, float)
->render(GuiGraphics, int, int, float, float)
net.minecraft.client.renderer.PostChain
now takes in aResourceProvider
instead of aResourceManager
ResourceManager
implementsResourceProvider
, so there is no major change in implementation
net.minecraft.client.renderer.PostChain#addPass
now takes in a boolean which determines whether to useGL_LINEAR
when true orGL_NEAREST
when falsenet.minecraft.client.renderer.PostPass
now takes in aResourceProvider
instead of aResourceManager
ResourceManager
implementsResourceProvider
, so there is no major change in implementation
net.minecraft.client.renderer.PostPass#getFilterMode
- Either
GL_LINEAR
orGL_NEAREST
- Either
net.minecraft.client.renderer.blockentity.SkullBlockRenderer#getRenderType(SkullBlock$Type, GameProfile)
->getRenderType(SkullBlock$Type, ResolvableProfile)
net.minecraft.client.renderer.entity.LivingEntityRenderer#setupRotations
now takes in a scale representing the float parameternet.minecraft.client.renderer.entity.ArrowRenderer#vertex
combines theMatrix4f
andMatrix3f
into aPoseStack$Pose
net.minecraft.client.renderer.entity.EntityRenderer#renderNameTag
now takes in a float representing the partial ticknet.minecraft.client.renderer.entity.layers.StrayClothingLayer
->SkeletonClothingLater
net.minecraft.client.renderer.item.ItemProperties#getProperty(Item, ResourceLocation)
->getProperty(ItemStack, ResourceLocation)
com.mojang.blaze3d.audio.OggAudioStream
replaced bynet.minecraft.client.sounds.FiniteAudioStream
,FloatSampleSource
,JOrbisAudioStream
net.minecraft.commands.CommandBuildContext
now implementsHolderLookup$Provider
, replacingholderLookup
andconfigurable
net.minecraft.commands.arguments.ComponentArgument
now takes in aHolderLookup$Provider
when constructing a text componentnet.minecraft.commands.arguments.ParticleArgument#readParticle
takes in aHolderLookup$Provider
instead of aHolderLookup
specifically for particle typesnet.minecraft.commands.arguments.ResourceLocationArguments
getPredicate
->ResourceOrIdArgument#getLootPredicate
getItemModifier
->ResourceOrIdArgument#getLootModifier
net.minecraft.commands.arguments.StyleArgument
now takes in aHolderLookup$Provider
when constructing a style, orCommandBuildContext
when callingstyle
net.minecraft.commands.arguments.item.ItemInput
no longer implementsPredicate<ItemStack>
net.minecraft.commands.functions.CommandFunction#instantiate
no longer takes in the generic object- The generic object is now stored as an entry directly within the function itself (e.g.
MacroFunction
)
- The generic object is now stored as an entry directly within the function itself (e.g.
net.minecraft.ccommands.functions.FunctionBuilder#addMacro
takes in the generic objectnet.minecraft.core.GlobalPos
is now a record, though there is no change in usagenet.minecraft.core.HolderLookup
the below logic is now applied specifically for$RegistryLookup
filterElements
-> `HolderLookup$RegistryLookup#filterElements)$Delegate
->HolderLookup$RegistryLookup$Delegate
net.minecraft.core.Registry#lifecycle(T)
->registrationInfo(ResourceKey<T>)
net.minecraft.core.RegistrySetBuilder#lookupFromMap
now takes in aHolderOwner
net.minecraft.core.RegistrySetBuilder$CompositeOwner
->$UniversalOwner
- This is not one to one, it is simply a replacement
net.minecraft.core.WritableRegistry#register(ResourceKey, T, Lifecycle)
->register(ResourceKey, T, RegistrationInfo)
net.minecraft.core.dispenser.AbstractProjectileDispenseBehavior
->ProjectileDispenseBehavior
net.minecraft.data.DataProvider#saveStable
also takes in aHolderLookup$Provider
to get theRegistryOps
lookup context- Game test batches have been reimplemented. The logic is now split between
net.minecraft.gametest.framework.GameTestBatch
,GameTestBatchFactory
, andGameTestBatchListener
net.minecraft.gametest.framework.GameTestHelper#makeMockSurvivalPlayer
,makeMockPlayer()
->makeMockPlayer(GameType)
net.minecraft.gametest.framework.GameTestListener#testPassed
,testFailed
now take in aGameTestRunner
net.minecraft.nbt.NbtUtils
readBlockPos
now takes in a key for the int array within theCompoundTag
writeBlockPos
now returns anIntArrayTag
net.minecraft.network.chat.ChatType#CODEC
->#DIRECT_CODEC
net.minecraft.network.chat.Component$Serializer
methods also take in aHolderLookup$Provider
net.minecraft.network.syncher.EntityDataAccessor
is now a recordnet.minecraft.server.MinecraftServer
logTickTime
replaced bygetTickTimeLogger
,isTickTimeLoggingEnabled
endMetricsRecordingTick
is now public
net.minecraft.server.ReloadableServerResources#getLootData
replaced byfullRegistries
net.minecraft.server.level
chunk-querying methods now return aChunkResult
instead of anEither<ChunkAccess, ChunkHolder$ChunkLoadingFailure>
net.minecraft.server.players.PlayerList
setAllowCheatsForAllPlayers
->setAllowCommandsForAllPlayers
isAllowCheatsForAllPlayers
->isAllowCommandsForAllPlayers
net.minecraft.tags.TagNetworkSerialization#deserializeTagsFromNetwork
is now package-privatenet.minecraft.util.SampleLogger
->net.minecraft.util.debugchart.LocalSampleLogger
- This is now an implementation of
SampleStorage
- This is now an implementation of
net.minecraft.util.profiling.jfr.JvmProfiler#onPacketReceived
onPacketSent
now take in thePacketType
instead of an integer.net.minecraft.util.profiling.jfr.stats.NetworkPacketSummary
->IoSummary
net.minecraft.util.random.WeightedEntry$Wrapper
is now a recordnet.minecraft.world.Container#stillValidBlockEntity
now takes in a float representing the radius past the block interaction distance to check whether the block entity can be interacted withnet.minecraft.world.ContainerHelper#saveAllItems
,loadAllItems
now take in aHolderLookup$Provider
net.minecraft.world.InteractionResult#shouldAwardStats
->indicateItemUse
net.minecraft.world.LockCode
is now a recordnet.minecraft.world.RandomizableContainer#getLootTable
,setLootTable
,setBlockEntityLootTable
take in aResourceKey<LootTable>
instead of aResourceLocation
net.minecraft.world.SimpleContainer#fromTag
,createTag
now take in aHolderLookup$Provider
net.minecraft.world.damagesource.CombatRules#getDamageAfterAbsorb
now takes in aDamageSource
to calculate armor breachnet.minecraft.world.effect.MobEffect
applyEffectTick
now returns a boolean that, when false, will remove the effect ifshouldApplyEffectTickThisTick
returns truecreateFactorData
,setFactorDataFactory
has been replaced bygetBlendDurationTicks
,setBlendDuration
getAttributeModifiers
is replaced bycreateModifiers
net.minecraft.world.effect.MobEffectInstance$FactorData
has been replaced by$BlendState
along with the logic to applynet.minecraft.world.entity.AreaEffectCloud#setPotion
->setPotionContents
net.minecraft.world.entity.Entity
now implementSyncedDataHolder
to handle network communication for entity propertiesdefineSynchedData
now takes in aSynchedEntityData$Builder
setSecondsOnFire
->igniteForSeconds
- There is also an
igniteForTicks
variant
- There is also an
calculateViewVector
is now publicgetMyRidingOffset
,ridingOffset
->getVehicleAttachmentPoint
getPassengerAttachmentPoint
now returns aVec3
getHandSlots
,getArmorSlots
,getAllSlots
,setItemSlot
are no longer onEntity
, but still onLivingEntity
getEyeHeight
is now final and reads from the entity's dimensions- Eye height is set through
EntityType$Builder
- Eye height is set through
getNameTagOffsetY
is now replaced by anEntityAttachment
getFeetBlockState
->getInBlockState
net.minecraft.world.entity.EntityDimensions
is now a recordnet.minecraft.world.entity.EntityType
spawn
,create
now takes in aConsumer
of the entity to spawn rather than aCompoundTag
updateCusutomEntityTag
now takes in aCustomData
object instead of aCompoundTag
getDefaultLootTable
now returns aResourceKey<LootTable>
getAABB
->getSpawnAABB
net.minecraft.world.entity.LivingEntity
getScale
->getAgeScale
getScale
still exists and handles scaling based on an attribute property
net.minecraft.world.entity.Mob#finalizeSpawn
no longer takes in aCompoundTag
net.minecraft.world.entity.SpawnPlacements$Type
->SpawnPlacementsType
- All
SpawnPlacementType
s are inSpawnPlacementTypes
- All
net.minecraft.world.entity.TamableAnimal
setTame
now takes in a second boolean that, when true, applies any side effects from tamingreassessTameGoals
->applyTamingSideEffects
net.minecraft.world.entity.ai.attributes.AttributeInstance
getModifiers
is now package-privateremoveModifier
is now public
net.minecraft.world.entity.ai.attributes.AttributeModifier
is now a record$Operation
ADDITION
->ADD_VALUE
MULTIPLY_BASE
->ADD_MULTIPLIED_BASE
MULTIPLY_TOTAL
->ADD_MULTIPLIED_TOTAL
net.minecraft.world.entity.ai.behavior.BehaviorUtils#lockGazeAndWalkToEachOther
now takes in an integer representing the close enough distancenet.minecraft.world.entity.ai.village.poi.PoiManager
now takes in aRegionStorageInfo
net.minecraft.world.entity.animal.Animal#isFood
is now abstractnet.minecraft.world.entity.player.Player
disableShield
no longer takes in a booleangetPickRange
->blockInteractionRange
,entityInteractionRange
net.minecraft.world.entity.projectile.AbstractArrow#deflect
->Entity#deflection
net.minecraft.world.entity.raid.Raid
getMaxBadOmenLevel
->getMaxRaidOmenLevel
getBadOmenLevel
->getRaidOmenLevel
setBadOmenLevel
->setRaidOmenLevel
absorbBadOmen
->absorbRaidOmen
and returns whether the entity has the effectgetLeaderBannerInstance
now takes in aHolderGetter<BannerPattern>
net.minecraft.world.entity.raid.Raids#createOrExtendRaid
now takes in aBlockPos
the raid is centered aroundnet.minecraft.world.food.FoodData#eat
no longer takes in anItem
net.minecraft.world.food.FoodProperties
is now a recordfastFood
has been replaced by aeatSeconds
float representing timeBuilder$saturationMod
->saturationModifier
Builder$alwaysEat
->alwaysEdible
Builder$meat
has been replaced with item tags for the given entity (e.g.,minecraft:wolf_food
net.minecraft.world.inventory.tooltip.BundleTooltip
stores its information withinBundleContents
via#contents
net.minecraft.world.item.AdventureModeCheck
->AdventureModePredicate
net.minecraft.world.item.ArmorMaterial
is now a recordgetDurabilityForType
->ArmorItem$Type#getDurability
getDefenseForType
->defense
net.minecraft.world.item.AxeItem
is now publicnet.minecraft.world.item.CrossbowItem#performShooting
is now an instance methodnet.minecraft.world.item.HoeItem
is now publicnet.minecraft.world.item.Item
verifyTagAfterLoad
->verifyComponentsAfterLoad
getMaxStackSize
->ItemStack#getMaxStackSize
getMaxDamage
->ItemStack#getMaxDamage
canBeDepleted
->ItemStack#isDamageableItem
isCorrectToolForDrops
now takes in anItemStack
appendHoverText
holds anItem$TooltipContext
instead of aLevel
getDefaultAttributeModifiers
now returns anItemAttributeModifiers
canBeHurtBy
->ItemStack#canBeHurtBy
net.minecraft.world.item.ItemStack
now implementsDataComponentHolder
- The constructor takes in a
DataComponentPatch
orPatchedDataComponentMap
instead of aCompoundTag
save(CompoundTag)
->save(HolderLookup$Provider, Tag)
hurt
->hurtAndBreak
- A
Runnable
is the last parameter which determines what to do when a stack exceeds the max damage
- A
hurtAndBreak(int, T, Consumer<T>)
->hurtAndBreak(int, LivingEntity, EquipmentSlot)
isSameItemSameTags
->isSameItemSameComponents
getTooltipLines(Player, TooltipFlag)
->getTooltipLines(Item$TooltipContext, Player, TooltipFlag)
hasAdventureModePlaceTagForBlock
->canPlaceOnBlockInAdventureMode
hasAdventureModeBreakTagForBlock
->canBreakBlockInAdventureMode
- The constructor takes in a
net.minecraft.world.item.ItemStackLinkedSet#createTypeAndTagSet
->createTypeAndComponentsSet
net.minecraft.world.item.ItemUtils#onContainerDestroyed
now takes aIterable<ItemStack>
instead of aStream<ItemStack>
net.minecraft.world.item.SmithingTemplateItem#createArmorTrimTemplate
takes in a varargs ofFeatureFlag
snet.minecraft.world.item.SpawnEggItem#spawnsEntity
,getType
now takes in anItemStack
instead of aCompoundTag
net.minecraft.world.item.alchemy.Potion#getName
now takes in anOptional<Holder<Potion>>
net.minecraft.world.item.alchemny.PotionUtils
->PotionContents
- Method names are roughly equivalent, ignorning all instances where a tag is wanted
net.minecraft.world.item.armortrim.ArmorTrim
now takes in a boolean indicating whether the tooltip component will show up- This tooltip can be toggled via
withTooltip
- This tooltip can be toggled via
net.minecraft.world.item.crafting.Recipe
assemble(C, RegistryAccess)
->assemble(C, HolderLookup.Provider)
getResultItem(RegistryAccess)
->getResultItem(HolderLookup.Provider)
net.minecraft.world.item.crafting.RecipeCache#get
now returns aOptional<RecipeHolder<CraftingRecipe>>
net.minecraft.world.item.crafting.RecipeManager
getRecipeFor(RecipeType<T>, C, Level, ResourceLocation)
now returns anOptional<RecipeHolder<T>>
- The
RecipeHolder
contains theResourceLocation
- The
byType
now returns aCollection<RecipeHolder
instead of aMap<ResourceLocation, RecipeHolder<T>>
net.minecraft.world.item.traiding.MerchantOffer
now takes inItemCost
s for cost stack instead ofItemStack
snet.minecraft.world.level.BaseCommandBlock#setName
->setCustomName
net.minecraft.world.level.Level
getMapData
,setMapData
,getFreeMapId
now take in aMapId
instead of an integercreateFireworks
now takes in aList<FireworkExplosion>
instead of aCompoundTag
net.minecraft.world.level.SpawnData
now takes in anEquipmentTable
, which contains the armor an entity should spawn withnet.minecraft.world.level.StructureManager
getStructureWithPiecesAt
now takes in some set ofSturcture
scheckStructurePresence
now takes in aStructurePlacement
net.minecraft.world.level.block.Block#appendHoverText
now takes in anItem$TooltipContext
instead of aBlockGetter
net.minecraft.world.level.block.EnchantmentTableBlock
->EnchantingTableBlock
net.minecraft.world.level.block.FlowerBlock
now takes in aSuspiciousStewEffects
net.minecraft.world.level.block.entity.BeehiveBlockEntity
addOccupantWithPresetTicks
->addOccupant
storeBee(CompoundTag, int, boolean)
->storeBee(BeehiveBlockEntity$Occupant)
net.minecraft.world.level.block.entity.BlockEntity
load
->loadAdditional
saveAdditional
,saveWithFullMetadata
,saveWithId
,saveWithoutMetadata
,saveToItem
,loadStatic
,getUpdateTag
now takes in aHolderLookup$Provider
net.minecraft.world.level.block.entity.RandomizableContainerBlockEntity
getItems
->BaseContainerBlockEntity#getItems
setItems
->BaseContainerBlockEntity#setItems
net.minecraft.world.level.block.entity.trialspawner.PlayerDetector#detect(ServerLevel, BlockPos, int)
->detect(ServerLevel, PlayerDetector$EntitySelector, BlockPos, double, boolean)
net.minecraft.world.level.block.state.StateHolder#getValues
now returns a regularMap
as it stores anReference2ObjectArrayMap
net.minecraft.world.level.chunk.ChunkAccess#getBlockEntityNbtForSaving
now takes in aHolderLookup$Provider
net.minecraft.world.level.chunk.ChunkStatus
->net.minecraft.world.level.chunk.status.ChunkStatus
- Some other classes that were inner classes have also been moved to the
net.minecraft.world.level.chunk.status
package (e.g.ChunkType
)
- Some other classes that were inner classes have also been moved to the
net.minecraft.world.level.gameevent.GameEvent
is now a record`net.minecraft.world.level.gameevent.GameEventListener$Holder
->GameEventListener$Provider
net.minecraft.world.level.levelgen.WorldDimensions(Map<ResourceKey<LevelStem>, LevelStem>)
is the new base constructor, the previous constructor with theRegistry
still existsnet.minecraft.world.level.levegen.presets.WorldPreset#createRegistry
->dimensionsInOrder
net.minecraft.world.level.levelgen.structure.StructureCheck#checkStart
now takes in aStructurePlacement
net.minecraft.world.level.levelgen.structure.StructurePiece#createChest
now takes in aResourceKey<LootTable>
instead of aResourceLocation
net.minecraft.world.level.levelgen.structure.StructurePiece#createDispenser
now takes in aResourceKey<LootTable>
instead of aResourceLocation
net.minecraft.world.level.pathfinder.BlockPathTypes
->PathType
net.minecraft.world.level.pathfinder.NodeEvaluator
getGoal
->getTarget
getTargetFromNode
->getTargetNodeAt
- Gets the node based on a position rather than supplying the node itself
BlockPathTypes getBlockPathType(BlockGetter, int, int, int, Mob)
->PathType getPathTypeOfMob(PathfindingContext, int, int, int, Mob)
BlockPathTypes getBlockPathType(BlockGetter, int, int, int)
->PathType getPathType(PathfindingContext, int, int, int)
net.minecraft.world.level.pathfinder.SwimNodeEvaluator
isDiagonalNodeValid
->hasMalus
getCachedBlockType
returnsPathType
net.minecraft.world.level.pathfinder.WalkNodeEvaluator
isDiagonalValid
removes the accepted node value, only returning whether the diagonal can be made- Checking the accepted node has been moved to a separate
isDiagonalValid(Node)
method
- Checking the accepted node has been moved to a separate
getBlockPathTypes
,evaluateBlockPathType
->getPathTypeWithinMobBB
getCachedBlockType
->getCachedPathType
getBlockPathTypeStatic
->getPathTypeStatic
checkNeighbourBlocks(BlockGetter, BlockPos$MutableBlockPos, BlockPathTypes)
->checkNeighbourBlocks(PathfindingContext, int, int, int, PathType)
getBlockPathTypeRaw
->getPathTypeFromState
isBurningBlock
->NodeEvaluator#isBurningBlock
net.minecraft.world.level.saveddata.SavedData
save(CompoundTag)
->save(CompoundTag, HolderLookup.Provider)
save(File)
->save(File, HolderLookup.Provider)
$Factory(Supplier<T>, Function<CompoundTag, T>, DataFixTypes)
->$Factory(Supplier<T>, BiFunction<CompoundTag, HolderLookup.Provider, T>, DataFixTypes)
net.minecraft.world.level.saveddata.maps.MapBanner
is now a recordnet.minecraft.world.levle.saveddata.maps.MapDecoration$Type
->MapDecorationType
MapDecorationType
is now a built-in registry object
net.minecraft.world.level.storage.LevelData#getXSpawn
,getYSpawn
,getZSpawn
->getSpawnPos
net.minecraft.world.level.storage.LevelSummary#hasCheats
->hasCommands
net.minecraft.world.level.storage.ServerLevelData#getAllowCommands
->isAllowCommands
net.minecraft.world.level.storage.WorldData#getAllowCommands
->isAllowCommands
net.minecraft.world.level.storage.WritableLevelData#setXSpawn
,setYSpawn
,setZSpawn
,setSpawnAngle
->setSpawn
net.minecraft.world.level.storage.loot.LootContext
now takes in aHolderGetter$Provider
getResolver
now returns theHolderGetter$Provider
net.minecraft.world.level.storage.loot.LootDataType
is now a recordnet.minecraft.world.level.storage.loot.entries.LootTableReference
->NestedLootTable
net.minecraft.world.ticks.ContainerSingleItem#getContainerBlockEntity
->$BlockContainerSingleItem#getContainerBlockEntity
net.minecraft.client.Minecraft#setLevel(ClientLevel)
->setLevel(ClientLevel, ReceivingLevelScreen$Reason)
net.minecraft.client.OptionInstance$IntRange
now takes in a boolean that applies the option change immediately instead of after 0.6 seconds. The value is not considered saved at that moment when applied immediatelynet.minecraft.client.gui.font.providers.FreeTypeUtil#checkError
->assertError
checkError
is now a boolean-returning method that doesn't throw an error
net.minecraft.core.particles.DustParticleOptionsBase
->ScalableParticleOptionsBase
net.minecraft.nbt.CompoundTag#entries
->entrySet
- This is a logic replacement, the returns are similar to those of a
Map
- This is a logic replacement, the returns are similar to those of a
net.minecraft.network.PacketListener#shouldPropagateHandlingExceptions
->onPacketError
- This is a logic replacement as the new method simply decides how to handle the error
com.mojang.blaze3d.systems.RenderSystem#inverseViewRotationMatrix
along with subsequent getters and settersnet.minecraft.client.Minecraft#is64Bit
net.minecraft.client.gui.components.AbstractSelectionList#setRenderBackground
net.minecraft.client.gui.components.DebugScreenOverlay#logTickDuration
net.minecraft.client.gui.font.FontManager#setRenames
,getActualId
net.minecraft.client.gui.screens.MenuScreen#create
no longer checks nullability ofMenuType
net.minecraft.client.gui.screens.Screen#hideWidgets
net.minecraft.client.gui.screens.achievement.StatsUpdateListener
net.minecraft.client.gui.screens.worldselection.WorldOpenFlows#loadBundledResourcePack
net.minecraft.client.multiplayer.ClientLevel#setScoreboard
net.minecraft.client.multiplater.MultiPlayerGameMode
getPickRange
hasFarPickRange
net.minecraft.client.multiplayer.ServerData
setEnforcesSecureChat
enforcesSecureChat
net.minecraft.client.renderer.GameRenderer
cycleEffect
getPositionTexColorNormalShader
getPositionTexLightmapColorShader
net.minecraft.commands.arguments.ArgumentSignatures#get
net.minecraft.core.RegistryCodecs
withNameAndId
networkCodec
fullCodec
$RegistryEntry
net.minecraft.core.dispenser.DispenseItemBehavior#getEntityPokingOutOfBlockPos
net.minecraft.server.level.ChunkHolder#getFullChunk
net.minecraft.util.JavaOps
net.minecraft.world.effect.AttributeModifierTemplate
net.minecraft.world.entity.Entity#setMaxUpStep
net.minecraft.world.entity.LivingEntity
getMobType
getEyeHeight
,getStandingEyeHeight
net.minecraft.world.entity.MobType
net.minecraft.world.entity.ai.goal.GoalSelector
getRunningGoals
setNewGoalRate
net.minecraft.world.entity.player.Player#isValidUsername
net.minecraft.world.entity.projectile.ThrowableItemProjectile#getItemRaw
net.minecraft.world.item.BlockItem#getBlockEntityData
net.minecraft.world.item.Vanishable
net.minecraft.world.item.DyeableArmorItem
net.minecraft.world.item.DyeableHorseArmorItem
net.minecraft.world.item.DyeableLeatherItem
net.minecraft.world.item.EnchantedGoldenAppleItem
net.minecraft.world.item.FireworkStarItem#appendHoverText(CompoundTag, List<Component>)
net.minecraft.world.item.HorseArmorItem
net.minecraft.world.item.Item
shouldOverrideMultiplayerNbt
getRarity
isEdible
getFoodProperties
isFireResistant
net.minecraft.world.item.ItemStack
of
hasTag
getTag
getOrCreateTag
getOrCreateTagElement
getTagElement
removeTagKey
getEnchantmentTags
setTag
setHoverName
hasCustomHoverName
addTagElement
getBaseRepairCost
setRepairCost
getAttributeModifiers
isEdible
$TooltipPart
net.minecraft.world.item.SuspiciousStewItem
saveMobEffects
appendMobEffects
listPotionEffects
net.minecraft.world.item.armortrim.ArmorTrim
setTrim
getTrim
appendUpgradeHoverText
net.minecraft.world.item.crafting.Ingredient
toNetwork
fromNetwork
net.minecraft.world.level.Level#dimensionTypeId
net.minecraft.world.level.NaturalSpawner#isSpawnPositionOk
net.minecraft.world.level.block.entity.BaseContainerBlockEntity#setCustomName
net.minecraft.world.level.block.entity.BeehiveBlockEntity#addOccupant
net.minecraft.world.level.storage.loot.LootDataId
- Basically a
ResourceKey
- Basically a
net.minecraft.world.level.storage.loot.LootDataManager
- Basically a
HolderGetter$Provider
- Basically a
net.minecraft.world.level.storage.loot.LootDataResolver