Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Naming drift

Verified against Minecraft 26.2 · Reference · The translation layer: every name a 1.21-era reader will reach for that 26.2 does not have, and what it is called now.

Rule three of this corpus is newest version only: no page says “in 1.21 this was…”, because version-difference prose is the first thing to rot and the last thing anyone rereads. That rule costs something, and this page is where the cost is paid back once. Every page assumes you are reading the 26.2 tree; this page assumes you are not, yet, and are still typing the names you learned somewhere else.

Two audiences. A reader coming from 1.21 — the version most public writing, most tutorials and most model weights are anchored to — needs the first table: the old name on the left, what to grep for on the right. A reader coming from Yarn (Fabric’s community mappings) needs the last one: not a version difference at all, just a different name for the same class in the same version.

The one sentence: if a name in your head does not appear in the tree, it is probably on this page.

How to read the tables

The left column is italic, not backticked. Most of these names do not exist in 26.2, and tools/verify_names.py — which checks every backticked identifier on every page against the decompile — would reject the page if they were. Italics is the corpus’s mark for a name, but not a 26.2 name. The right column is backticked and therefore verified: those names are in the tree.

“gone” in the right column means exactly that: there is no replacement class, the responsibility moved into something structurally different, and the entry names where it went. Those are the interesting rows — a rename is a nuisance, a disappearance is a design change, and the page named beside each part explains it.

Every row here was found the same way: a fact-sheet agent reading the 26.2 decompile went looking for a name it expected and did not find it. The table is therefore not exhaustive — it is exhaustive over the names the corpus needed. Two hundred and forty-three rows, and the distribution is itself a finding: the three biggest tables are commands (36), the server (31) and items (30), and the fourth is rendering (27). The client was rewritten around extract-then-render, which is why almost nothing at the top of the render stack kept its name — but the permission rewrite and the game-rule registry moved more names than the renderer did.

The four you will hit in the first ten minutes

Identifier is ResourceLocation. Lightmap is LightTexture. DeltaTracker is Timer, and partialTick is now a DeltaTracker.Timer you ask rather than a float you are handed. And Gui no longer means the HUD: the HUD is Hud, held as Gui.hud, while Gui is the screen and overlay manager that also owns Gui.screen and Gui.setScreen — so a 1.21-era Minecraft.setScreen call site is now on Gui. Both Gui and Hud exist, which is the single most confusing pair of names in the tree.

The tables

Everywhere

the name you remember26.2
ResourceLocationIdentifier
LightTextureLightmap
TimerDeltaTracker

Part II — Foundations

the name you remember26.2
TagManagergone
Minecraft.reloadResourcesMinecraft.reloadResourcePacks
ItemStack.save / parseValueOutput / ItemStack.CODEC
ChunkPos.asLongChunkPos.pack / ChunkPos.unpack (a record)

Part III — The server

the name you remember26.2
DO_DAYLIGHT_CYCLEGameRules.ADVANCE_TIME
DO_MOB_SPAWNINGGameRules.SPAWN_MOBS
DO_WEATHER_CYCLEGameRules.ADVANCE_WEATHER
GameRules packageworld/level/gamerules
GameRules.Key<T> / GameRules.Value / BooleanValue / IntegerValue / GameRules.Type (all nested)top-level GameRule, with GameRuleType, GameRuleTypeVisitor, GameRuleMap for the values and GameRuleCategory for the grouping
game rules as a hard-coded mapa registryRegistries.GAME_RULE / BuiltInRegistries.GAME_RULE, bootstrapped by GameRules
level.dat field GameRules, ids camelCase and unnamespacedfield game_rules, ids namespaced (minecraft:advance_time) — the whole rename table is GameRuleRegistryFix
doEntityDropsGameRules.ENTITY_DROPS
doImmediateRespawnGameRules.IMMEDIATE_RESPAWN
doInsomniaGameRules.SPAWN_PHANTOMS
doLimitedCraftingGameRules.LIMITED_CRAFTING — the name survives elsewhere, as a component of ClientboundLoginPacket and a field on LocalPlayer
doPatrolSpawning / doTraderSpawning / doWardenSpawningGameRules.SPAWN_PATROLS / GameRules.SPAWN_WANDERING_TRADERS / GameRules.SPAWN_WARDENS
doVinesSpreadGameRules.SPREAD_VINES
enableCommandBlocks and commandBlocksEnabledone rule, GameRules.COMMAND_BLOCKS_WORK
spawnerBlocksEnabledGameRules.SPAWNER_BLOCKS_WORK
commandModificationBlockLimitGameRules.MAX_BLOCK_MODIFICATIONS
minecartMaxSpeedGameRules.MAX_MINECART_SPEED
snowAccumulationHeightGameRules.MAX_SNOW_ACCUMULATION_HEIGHT
spawnRadiusGameRules.RESPAWN_RADIUS
disableElytraMovementCheckGameRules.ELYTRA_MOVEMENT_CHECKinverted
disablePlayerMovementCheckGameRules.PLAYER_MOVEMENT_CHECKinverted
disableRaidsGameRules.RAIDSinverted
doFireTick + allowFireTicksAwayFromPlayer (two booleans)one integer, GameRules.FIRE_SPREAD_RADIUS_AROUND_PLAYER (0 none, 128 near players only, −1 everywhere)
spawnChunkRadius, entitiesWithPassengersCanUsePortals, gameLoopFunctiongone with no replacement — the fix simply deletes them
day time on ServerLevelServerClockManager (world/clock)
per-level weatherserver-global WeatherData
GameProfile on the player listsNameAndId (a record of UUID and name) — PlayerList.canPlayerLogin, PlayerList.isWhiteListed, PlayerList.op, the ban/op/whitelist files
ServerPlayer.sendAllPlayerInfo / sendActivePlayerEffectsPlayerList.sendAllPlayerInfo / PlayerList.sendActivePlayerEffects
MinecraftServer.getScheduledEvents returning a per-level queuethe same name, returning a server-wide TimerQueue saved data, advanced only by the overworld’s ServerLevel.tickTime
ServerLevel.updateSkyBrightness reading day timethe method survives, declared on Level, and now reads EnvironmentAttributes.SKY_LIGHT_LEVEL through EnvironmentAttributeSystem
ChunkMap.forEachBlockTickingChunk meaning block-tickingit walks the entity-ticking set; the name did not follow the split

Part IV — The world

the name you remember26.2
ChunkStoragegone — ChunkMap extends SimpleRegionStorage
DimensionDataStorageSavedDataStorage (two of them)
getLightBlockBlockBehaviour.BlockStateBase.getLightDampening
PalettedContainer.Strategytop-level Strategy + Configuration
ForcedChunksSavedDataTicketStorage
TicketType<T>a registry record with flag bits
DimensionType booleansEnvironmentAttributeMap
DimensionType.ultraWarmsplit four ways: EnvironmentAttributes.FAST_LAVA, EnvironmentAttributes.WATER_EVAPORATES, EnvironmentAttributes.INCREASED_FIRE_BURNOUT, EnvironmentAttributes.SNOW_GOLEM_MELTS
DimensionType.piglinSafeEnvironmentAttributes.PIGLINS_ZOMBIFYinverted
DimensionType.bedWorksEnvironmentAttributes.BED_RULE, a BedRule record, not a boolean
DimensionType.hasRaidsEnvironmentAttributes.CAN_START_RAID
DimensionType.naturalEnvironmentAttributes.NETHER_PORTAL_SPAWNS_PIGLINS and neighbours
DimensionType.fixedTimeDimensionType.hasFixedTime, a bare boolean — the time itself moved to WorldClock and Timelines.OVERWORLD_DAY
DimensionType.ambientLightunchanged; one of the three visual fields that did not become an attribute, with DimensionType.skybox and DimensionType.cardinalLightType
Schedule (the villager’s)EnvironmentAttributes.VILLAGER_ACTIVITY on Timelines.VILLAGER_SCHEDULE
Level.dayTimeServerClockManager, keyed by WorldClock
data/<id>.datdata/<namespace>/<id>.dat — every saved-data file gained a namespace folder

Part V — Blocks

the name you remember26.2
ItemInteractionResultgone — InteractionResult.TryEmptyHandInteraction
DirectionPropertygone — EnumProperty<Direction>
Level.markAndNotifyBlockgone — inline in Level.setBlock
BlockBehaviour.onRemoveBlockBehaviour.affectNeighborsAfterRemoval + BlockEntity.preRemoveSideEffects
doTileDropsGameRules.BLOCK_DROPS
BlockModelShaperBlockStateModelSet / BlockModelSet
RenderShape.ENTITYBLOCK_ANIMATEDgone — RenderShape.INVISIBLE / RenderShape.MODEL only
Player.canInteractWithBlockPlayer.isWithinBlockInteractionRange
Block.rebuildCachegone — BlockBehaviour.BlockStateBase.initCache from the Blocks static init
Materialgone — individual BlockBehaviour.Properties flags
BlockEntity.saveToItemBlockItem.setBlockEntityData + BlockEntity.collectComponents
MobEffects.DIG_SPEED / DIG_SLOWDOWNMobEffects.HASTE / MobEffects.MINING_FATIGUE

Part VI — Entities

the name you remember26.2
Player extends LivingEntityPlayer extends Avatar extends LivingEntity
EntityType.PIG (constants)EntityTypes.PIG + EntityTypeIds.PIG
MobSpawnTypeEntitySpawnReason (+ EntitySpawnRequest)
SpawnPlacements.TypeSpawnPlacementType / SpawnPlacementTypes
Entity.hurt(DamageSource, float) returning a booleansplit into Entity.hurtServer and Entity.hurtClient. Both old shapes survive as deprecated finals — Entity.hurt delegating to the server half, Entity.hurtOrSimulate as the boolean-returning successor — so grep still finds the name
doMobLootGameRules.MOB_DROPS
LivingEntity.isDamageSourceBlockedgone — DataComponents.BLOCKS_ATTACKS
Schedule / ScheduleBuildergone — Timeline + EnvironmentAttribute
BlockPathTypesPathType
Mob.brainProviderLivingEntity.makeBrain(Brain.Packed)
Entity.moveTo / absMoveToEntity.snapTo / Entity.absSnapTo
Entity.maxUpStep (field)Attributes.STEP_HEIGHT
Entity.updateFluidHeightAndDoFluidPushingEntityFluidInteraction
Entity.lerpToEntity.moveOrInterpolateTo + InterpolationHandler
EntityDataSerializers.OPTIONAL_UUID / COMPOUND_TAGgone
UUID-keyed AttributeModifierIdentifier-keyed record
AttributeMap.getDirtyAttributesAttributeMap.getAttributesToSync + AttributeMap.getAttributesToUpdate
PlayerRendererAvatarRenderer (serves players and mannequins, keyed by skin model)

Part VII — Items and inventories

the name you remember26.2
InteractionResultHoldergone — InteractionResult.Success.heldItemTransformedTo
UseAnimItemUseAnimation
Item.getFoodPropertiesDataComponents.FOOD on the stack
ItemStack.getTag / getOrCreateTaggone — components
LivingEntity.triggerItemUseEffectsConsumable.emitParticlesAndSounds
FoodProperties effects listConsumable.onConsumeEffects
ClickTypeContainerInput
MultiPlayerGameMode.handleInventoryMouseClickMultiPlayerGameMode.handleContainerInput
ClientboundSetCarriedItemPacketsplit: ClientboundSetCursorItemPacket + ClientboundSetHeldSlotPacket
ClientboundSetSlotPacketClientboundContainerSetSlotPacket
ClientboundHorseScreenOpenPacketClientboundMountScreenOpenPacket
Container.startOpen(Player)Container.startOpen(ContainerUser)
Recipe.getResultItem / getIngredientsRecipe.assemble / PlacementInfo. The first is gone outright; the second is off the Recipe interface and survives only as a test-visible method on ShapedRecipe
Ingredient.EMPTYgone — Ingredient.CODEC rejects an empty literal list, but a tag that resolves to nothing still yields an empty one, hence Ingredient.isEmpty
ClientboundUpdateRecipesPacket carrying recipesproperty sets + the stonecutter input set; the book gets RecipeDisplayEntrys
net.minecraft.advancements.CriteriaTriggersCriteriaTriggers, moved to net/minecraft/advancements/triggers
Player.permissionLevel / hasPermissions(int)Player.permissions → a PermissionSet, queried by named Permissions keys
ServerboundPlayerCommandPacket.Action.PRESS_SHIFT_KEY / RELEASE_SHIFT_KEYgone — sneak rides ServerboundPlayerInputPacketEntity.setShiftKeyDown
Mannequin on the clientClientMannequin, installed by swapping the mutable Mannequin.constructor factory at client startup
data/<ns>/recipes/data/<ns>/recipe/ (singular)
EnchantmentCategoryEnchantment.EnchantmentDefinition item sets
Enchantment.getDamageBonus, EnchantmentHelper.getFireAspectgone — EnchantmentEffectComponents
EnchantedBookItemgone — DataComponents.STORED_ENCHANTMENTS
Item.getEnchantmentValueDataComponents.ENCHANTABLE
LootContextParam / LootContextParamSetContextKey / ContextKeySet (util/context)
LootDataManager / LootTablesReloadableServerRegistries + BuiltInLootTables
LootTableReferenceNestedLootTable
LootingEnchantFunctionEnchantedCountIncreaseFunction
SetCountFunctionSetItemCountFunction
LootContextParams.KILLER_ENTITYLootContextParams.ATTACKING_ENTITY

Part VIII — The player

the name you remember26.2
Inventory.armor / offhand / compartmentsone 36-slot Inventory.items + Inventory.EQUIPMENT_SLOT_MAPPING
Inventory.setPickedItemInventory.addAndPickItem / Inventory.pickSlot
Entity.moveToEntity.absSnapTo / Entity.snapTo
GameRenderer.pickMinecraft.pickLocalPlayer.raycastHitResult
ServerboundInteractPacket.Action.ATTACKServerboundAttackPacket (a record of one int)
GameRules.NATURAL_REGENERATIONGameRules.NATURAL_HEALTH_REGENERATION
isCritArrow / Player.sweepAttackPlayer.canCriticalAttack / Player.isSweepAttack + Player.doSweepAttack, all three private. isCritArrow was never a Player method and is still live on AbstractArrow
LivingEntity.eat / Player.eatgone — Consumable.onConsumeFoodPropertiesFoodData.eat
MobEffect.createModifierMobEffect.createModifiers (plural)

Part IX — Networking

the name you remember26.2
Connection.setListener / setProtocol / getCurrentProtocolgone — Connection.setupInboundProtocol / Connection.setupOutboundProtocol
ConnectionProtocol.getById / packet tablesgone — a bare enum; ids are ProtocolInfoBuilder.addPacket order in IdDispatchCodec
Connection.NETWORK_WORKER_GROUP etc.EventLoopGroupHolder (in server/network)
MemoryConnectiongone — Connection.isMemoryConnection
ensureRunningOnSameThread(…, BlockableEventLoop)PacketUtils.ensureRunningOnSameThread with a PacketProcessor
Packet.write(FriendlyByteBuf)gone — a per-packet StreamCodec constant the protocol reads
ClientboundAddPlayerPacket / ClientboundAddMobPacketgone — ClientboundAddEntityPacket
ClientboundUpdateViewPositionPacketClientboundSetChunkCacheCenterPacket
ClientboundUpdateViewDistancePacketClientboundSetChunkCacheRadiusPacket
ClientboundLevelChunkPacketClientboundLevelChunkWithLightPacket
routine ClientboundTeleportEntityPacketClientboundEntityPositionSyncPacket
ClientboundGameProfilePacketClientboundLoginFinishedPacket (+ a session id)
ServerboundLoginStartPacketServerboundHelloPacket
ClientboundEncryptionRequestPacket / responseClientboundHelloPacket / ServerboundKeyPacket
ClientboundSetCompressionPacketClientboundLoginCompressionPacket
ClientboundResourcePackPacketClientboundResourcePackPushPacket / …PopPacket
MinecraftServer.getSessionServiceMinecraftServer.services
PlayerChunkSender in server/levelserver/network
Component.Serializer (Gson)ComponentSerialization (codecs; NBT on the wire)
TextComponent / TranslatableComponent / …network/chat/contentsPlainTextContents etc.
ComponentUtils.updateForEntityComponentUtils.resolve with a ResolutionContext
SignedMessageHeader / MessageSignerSignedMessageLink / SignedMessageChain.Encoder
ChatPreview and its packetsgone
ClientboundSetTimePacket(gameTime, dayTime, …)a game time plus a WorldClock update map

Part X — The client

the name you remember26.2
Gui (the HUD)Hud, held as Gui.hud; the name Gui now means the screen/overlay manager
Minecraft.screen / Minecraft.setScreenGui.screen / Gui.setScreen
GuiGraphicsGuiGraphicsExtractor (records states; does not draw)
Screen.render / every render* on GuiScreen.extractRenderState / every extract* on Hud
LayeredDrawcall order plus GuiRenderState.nextStratum
Options.hideGuiHud.isHidden, published as GuiRenderState.isHudHidden
Minecraft.getPartialTick, TimerDeltaTracker.Timer and its three questions
Minecraft.destroygone — Minecraft.stop, then Minecraft.exitWorldAndClose and Minecraft.close
Options.keyBindingsOptions.keyMappings; KeyMapping.Category is a registrable record, not a string
Options.mouseSensitivitythe field is Options.sensitivity with an accessor of that name; mouseSensitivity survives only as the key in options.txt
MouseHandler.lastMouseEventTimegone
raw (key, scancode, modifiers, action) on every Screen methodthe client/input records: KeyEvent, MouseButtonEvent, CharacterEvent, PreeditEvent
ClientChunkCache.ChunkArrayClientChunkCache.Storage
Font.drawInBatch and every drawString variantFont.prepareTextFont.PreparedText; the drawing verbs are on GuiGraphicsExtractor
Font.StringRenderOutputFont.PreparedText plus Font.GlyphVisitor
BakedGlyph (a class)an interface; the sheet implementation is BakedSheetGlyph, effects are EffectGlyph
RawGlyph / SheetGlyphInfoUnbakedGlyph (info and bake) and GlyphBitmap (pixels and upload)
GlyphProviderBuilder / GlyphProviderBuilderTypeGlyphProviderDefinition / GlyphProviderType
Style.withFont taking an idstill Style.withFont, but the type is FontDescription, which may be a sprite rather than a font
FontSet.getGlyph as public APIprivate — FontSet.source then GlyphSource.getGlyph

Part XI — Rendering

Twenty-seven rows, and almost all of them are one refactor: extract then render.

the name you remember26.2
MultiBufferSource / BufferSourceSubmitNodeCollector / SubmitNodeStorage / FeatureRenderDispatcher
ShaderInstance, RenderStateShardRenderPipeline + RenderPipelines + BindGroupLayouts
VertexBuffer, Tesselator, BufferUploaderGpuBuffer / GpuBufferSlice, ByteBufferBuilderMeshData, UberGpuBuffer
RenderSystem.setShader / enableBlend / depthMaskfields of a RenderPipeline
VertexFormat.Mode, VertexFormat.IndexType, TextureFormatPrimitiveTopology, IndexType, GpuFormat
Window.updateDisplay, vsync as a swap intervalGpuSurface.present, vsync as a GpuSurface.PresentMode
LightTexture.pack and friendsLightCoordsUtil
DimensionSpecialEffectsDimensionType.skybox + EnvironmentAttributes + Timeline
FogParameters, RenderSystem.setShaderFogColorFogData, RenderSystem.setShaderFog (a uniform slice)
Level.getSkyColor, ClientLevel.getStarBrightness, ClientLevel.effectsEnvironmentAttributeProbe.getValue on an EnvironmentAttribute
LevelRenderer.renderLevel / renderSky / renderChunkLayerLevelRenderer.render and the LevelRenderer.addSkyPass family of frame-graph passes
LevelRenderer.blockChanged / setSectionDirty / allChangedthe same names on LevelExtractor
ChunkRenderDispatcher, RenderChunk, CompiledChunkSectionRenderDispatcher, its SectionRenderDispatcher.RenderSection, CompiledSectionMesh
RenderType.chunkBufferLayers (five layers)ChunkSectionLayer — three layers
BakedModel, ModelResourceLocationBlockStateModel / ItemModel; block models keyed by BlockState
BlockModelShaper, ItemModelShaper, BlockRenderDispatcher, ItemRendererBlockStateModelSet, ItemModelResolver, ModelBlockRenderer
BlockElement / BlockElementFace, AtlasSet, ItemColorsCuboidModelElement / CuboidFace, AtlasManager, ItemTintSource
EntityRenderer.render, RenderLayer.renderEntityRenderer.extractRenderState + EntityRenderer.submit
TextureSheetParticle, sheet ParticleRenderTypesSingleQuadParticle + SingleQuadParticle.Layer
ParticleGroup (a limit record)ParticleLimit; ParticleGroup is now the per-render-type bucket
Camera.setupCamera.update + Camera.extractRenderState
RenderStateShard composition (the texture/target/layering half)RenderType over a RenderPipeline, catalogued in RenderTypes, built by RenderSetup
BakedQuad as four verticesa ten-component record, with a BakedQuad.MaterialInfo of six
LiquidBlockRendererFluidRenderer, over a FluidModel
ItemOverrides / getPropertyOverrideSelectItemModel / RangeSelectItemModel / ConditionalItemModel
ScreenManager (the Blaze3D monitor manager)MonitorManager, with Monitor and VideoMode — same package, same GLFW monitor callback
Window.setVsynca GpuSurface.PresentMode in the surface configuration

Part XII — World generation

the name you remember26.2
GenerationStep.Carvinggone — BiomeGenerationSettings.carvers is one flat HolderSet
DensityFunctions.WeirdScaledSamplerDensityFunctions.IntervalSelect
StructureFeature / ConfiguredStructureFeatureStructure / Registries.STRUCTURE
Feature.RANDOM_PATCH, Feature.FLOWERgone — composed from Feature.SIMPLE_BLOCK + placement
Feature.POINTED_DRIPSTONE / DRIPSTONE_CLUSTERFeature.SPELEOTHEM / Feature.SPELEOTHEM_CLUSTER
AbstractTreeGrower and its subclassesone final TreeGrower with constants
TreeConfiguration.dirtProviderTreeConfiguration.belowTrunkProvider
Biome.BiomeCategory / Biome.getDownfallgone
MultiNoiseBiomeSource.PresetMultiNoiseBiomeSourceParameterList.Preset
BiomeSpecialEffects.fogColor / skyColor / music / ambient soundEnvironmentAttributes.* via Biome.getAttributes
the +8 chunk population offsetgone — decoration starts at the chunk corner, InSquarePlacement scatters
StructureTemplateManager folder structures/structure/

Part XIII — Commands and data packs

The permission rewrite is the largest single break in this table: the integer permission level is gone from the whole command API, replaced by PermissionSet and PermissionCheck in net/minecraft/server/permissions. The ints survive only in ops.json, in server.properties and on the wire.

the name you remember26.2
ResourceLocationArgumentIdentifierArgument (the registry id is unchanged)
CommandSourceStack.hasPermission(int)CommandSourceStack.permissions + PermissionSet.hasPermission
CommandSourceStack.getPermissionLevelgone — a source carries a PermissionSet. PermissionLevel itself is very much alive: LevelBasedPermissionSet, server.properties, ServerOpListEntry and the JSON-RPC schema all still speak it
CommandSourceStack.withPermission(int)CommandSourceStack.withPermission taking a PermissionSet
SharedSuggestionProvider.hasPermission(int)gone — the interface extends PermissionSetSupplier
Commands.LEVEL_GAMEMASTERS as an intsame name, now a PermissionCheck
Commands.hasPermission(int)Commands.hasPermission taking a PermissionCheck, returning a PermissionProviderCheck
ServerPlayer.hasPermissions(int)ServerPlayer.permissions
MinecraftServer.getProfilePermissions returning an intthe same name returning a LevelBasedPermissionSet
MinecraftServer.getFunctionCompilationLevelMinecraftServer.getFunctionCompilationPermissions
Commands.LEVEL_ALL / LEVEL_MODERATORS / LEVEL_ADMINS / LEVEL_OWNERS as intsall four are PermissionChecks too — PermissionCheck.AlwaysPass for the first, PermissionCheck.Require for the rest
ServerPlayer.setPermissionLevel(int)PlayerList.sendPlayerPermissionLevel on the server; LocalPlayer.setPermissions on the client
ColorArgumentTeamColorArgument, yielding a TeamColor rather than a ChatFormatting
PlayerTeam.getColor returning a ChatFormattingreturns an optional TeamColor, its own enum carrying a TextColor
TestFunctionArgument / TestClassNameArgumentgone — /test addresses tests as registry ids through ResourceSelectorArgument and TestFinder
net.minecraft.advancements.Criterion / CriterionTrigger / SimpleCriterionTriggerall moved to net/minecraft/advancements/triggers; CriterionTriggerInstance is the one that stayed behind in net/minecraft/advancements
ServerOpListEntry.getLevelServerOpListEntry.permissions
ParserUtils.parseJsongone — SnbtGrammar plus ParserBasedArgument
ItemInput.createItemStack(int, boolean)ItemInput.createItemStack with one argument; the guard is GiveCommand.MAX_ALLOWED_ITEMSTACKS
ServerFunctionManager.ExecutionContext (nested)top-level ExecutionContext in net/minecraft/commands/execution
CommandFunction.Entry / CommandEntry / FunctionEntrygone — a line is a BuildContexts.Unbound, a macro line a MacroFunction.MacroEntry
CommandFunction.CacheableFunction (nested)top-level CacheableFunction, codec-backed
Commands.performCommand returning a success countreturns nothing; results are a CommandResultCallback pair
data/<ns>/functions/, data/<ns>/tags/functions/singular — function/ and tags/function/
maxCommandChainLengthGameRules.MAX_COMMAND_SEQUENCE_LENGTH
maxCommandForkCountGameRules.MAX_COMMAND_FORKS
announceAdvancementsGameRules.SHOW_ADVANCEMENT_MESSAGES
net.minecraft.advancements.critereonsplit three ways: net/minecraft/advancements/triggers, net/minecraft/advancements/predicates, and advancements/predicates/entity for the entity half
AdvancementListAdvancementTree (+ AdvancementNode, AdvancementHolder)
FrameTypeAdvancementType
CriterionTrigger.addPlayerListener / removePlayerListenergone — triggers are stateless; subscriptions live in PlayerAdvancements
LootContextParamSetContextKeySet
@GameTest, @GameTestGenerator, @BeforeBatch, @AfterBatchgone — GameTestInstance in Registries.TEST_INSTANCE
GameTestRegistry / TestFunctiongone — Registries.TEST_FUNCTION + TestFunctionLoader, and TestData
a test’s batch as a stringGameTestInstance.batch — the batch is a TestEnvironmentDefinition
the structure block as the test hostTestInstanceBlock / TestInstanceBlockEntity

The shape changes, not just the names

A rename table flatters the reader: it suggests that if you learn the two hundred and forty-three rows above you can read the tree. You cannot, because a dozen of these rows are one design change each, and the change is what the corresponding page is about. The recurring ones:

  • Tags on an item became components. ItemStack.getTag / getOrCreateTag have no replacement; a stack is an Item plus a PatchedDataComponentMap and every former tag key is a DataComponentType in DataComponentsdata components, items and stacks.
  • Hand-written serialisation became codecs. Packet.write is gone: a packet is a record with a StreamCodec the protocol table reads. ItemStack.save is gone: there is ItemStack.CODEC and, for saved data, the ValueOutput façade — packets and stream codecs, codecs, NBT and JSON.
  • Rendering split into extract and render. GuiGraphics, EntityRenderer.render, LevelRenderer.renderLevel, MultiBufferSource and every RenderSystem state setter are gone or repurposed, because the frame now builds an immutable render state on the game thread and draws from it — the frame, Blaze3D, entity rendering.
  • Per-dimension and per-biome constants became one attribute system. DimensionSpecialEffects and most of BiomeSpecialEffects are gone; fog, sky, water colour, ambient sound and music are EnvironmentAttributes resolved through an EnvironmentAttributeProbe over a stack of layers — lightmap, fog and sky, biomes.
  • Enums of behaviour became registries of data. EnchantmentCategory, MobSpawnType, BlockPathTypes, GenerationStep.Carving and Biome.BiomeCategory are all gone, replaced by item sets, registry records, HolderSets or nothing at all.
  • UUIDs became identifiers. An AttributeModifier is keyed by Identifier, not a UUID, which is why a data pack can now name one — attributes.
  • Sides split. Entity.hurt became Entity.hurtServer and Entity.hurtClient; Player.attack is still there but the packet that reaches it is ServerboundAttackPacket, a record of one integer, and ServerboundInteractPacket is right-click only. The general rule: where 1.21 had one method that checked Level.isClientSide, 26.2 tends to have two methods — damage and death, the sword swing.

Yarn

Yarn is Fabric’s community mapping set. It is not a different version of the game and nothing on this list is a change: it is the same 26.2 class under the name a Fabric modder has in their head. Only the ones that actually trip people are listed — where the Yarn and Mojang names differ enough that grep fails.

Both columns are italic here, because Yarn names are not in the decompile and verify_names.py cannot check them; the Mojang column is the one this corpus uses everywhere else, and every one of those names is backticked and verified on its own page.

YarnMojang (this corpus)
World / ServerWorld / ClientWorldLevel / ServerLevel / ClientLevel
WorldChunkLevelChunk
MinecraftClientMinecraft
PlayerEntity / ServerPlayerEntity / ClientPlayerEntityPlayer / ServerPlayer / LocalPlayer
ClientPlayNetworkHandlerClientPacketListener
ServerPlayNetworkHandlerServerGamePacketListenerImpl
ClientConnectionConnection
Text / MutableTextComponent / MutableComponent
TextRendererFont
TextHandlerStringSplitter
TextVisitFactoryStringDecomposer
OrderedTextFormattedCharSequence
StringVisitableFormattedText
FontStorageFontSet
GlyphAtlasTextureFontTexture
DrawContextGuiGraphicsExtractor — and in 26.2 it does not draw; see the drift table
NbtCompound / NbtList / NbtElementCompoundTag / ListTag / Tag
RegistryEntry / RegistryEntryListHolder / HolderSet
Registries / RegistryKeysBuiltInRegistries / Registries
Vec3dVec3
BoxAABB
HandInteractionHand
ActionResultInteractionResult
Inventory (the interface)Container
PlayerInventoryInventory
ScreenHandler / ScreenHandlerTypeAbstractContainerMenu / MenuType
StatusEffect / StatusEffectInstanceMobEffect / MobEffectInstance
EntityAttribute / EntityAttributeInstanceAttribute / AttributeInstance
ParticleEffectParticleOptions
BlockPos.MutableBlockPos.MutableBlockPos
IdentifierIdentifier — Yarn was right first; Mojang renamed to match in 26.2

The last row is the joke that keeps giving: the single most-cited example of “Yarn names are better” stopped being an example, and a decade of Fabric code now compiles against a Mojang-named class with the Yarn name.

What a rename table cannot tell you

  • A verified name is not a correct claim. verify_names.py proves the right-hand column exists; it cannot prove the left-hand column ever did. The 1.21 side of this table is the only unverifiable content in the corpus, which is why it is confined to one page.
  • The names did not move where you would guess. Rendering is the fourth-largest table, behind commands, the server and items. Two rewrites nobody advertised — permissions ceasing to be integers, and game rules becoming a registry — renamed more identifiers than the render-stack refactor did, and the render one is the famous half only because its classes are the ones tutorials name.
  • Renames cluster with rewrites. No part of the tree renamed a class and kept its design; where the name changed, the responsibility usually moved too. Reading the row is not enough, which is what the linked page is for.
  • Two subsystems have no rows at all, and that is the answer. Dialogs (net/minecraft/server/dialog and its client screens) and the JSON-RPC management server postdate 1.21 entirely: there is no old name to look up, and a reader who cannot find one is not missing a row. Game tests are the opposite case — the whole 1.21 API is gone, which is why they have five.
  • Minecraft.setScreen is a trap rather than a rename. Minecraft.setScreenAndShow exists in 26.2 and a 1.21-era reader grepping for the old name will land on it, then wonder why the screen stack behaves differently. The method that replaced the old one is Gui.setScreen.
  • Some names survived and changed meaning, which is worse than a rename because grep still finds them: Gui (now the screen manager, not the HUD), Material (now a texture reference in client/resources/model/sprite, not a block property), ParticleGroup (now a per-render-type bucket, not a count limit), Strategy (now top-level, not nested in PalettedContainer), and MultiVariant, whose name survives only in the data-generator package while the runtime type is gone.

Where to look

Identifier, then Holder and HolderSet (net/minecraft/core), then DataComponents — those three carry more of the drift than any others. After that, pick the part you are lost in and read its page rather than its rows.


Rules: names, never code · how the system works, not how the code reads · newest version only · every backticked name passes tools/verify_names.py.