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.3 · Reference · The translation layer: the names a 1.21-era reader will reach for that 26.3 dropped, moved or repurposed, 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.3 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 version tables: 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 table: 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.3, 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.3 name. The right column’s class and member names are backticked and therefore verified: those names are in the tree; its italics are file paths, save-file keys and old names. The left column is a name a 1.21-era reader may remember, and 1.21.11 — the last of them, and the only one this project can open — is the one the rows are checked against: most rows record drift that had already happened by 1.21.11, so a reader coming from 1.21.11 will find those left names missing from their own tree too.

“gone” in the right column means no class replaced the name one for one: the responsibility moved into something structurally different or was dropped, and the entry names where it went when it went somewhere. 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.

The rows are the names the corpus’s own pages needed, so the table is not exhaustive — not even over the corpus: a few names the For a 1.21-era reader notes use, such as ItemBlockRenderTypes and LootItemFunctionType, have no row. Three hundred and nine rows, and the distribution is itself a finding: the three biggest tables are commands (41), rendering (39) and items (38), and the fourth is the server (31). 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.3
ResourceLocationIdentifier
LightTextureLightmap
TimerDeltaTracker

Part II — Foundations

the name you remember26.3
TagManagergone
Minecraft.reloadResourcesMinecraft.reloadResourcePacks
ItemStack.save / parseValueOutput / ItemStack.CODEC
ChunkPos.asLongChunkPos.pack / ChunkPos.unpack (a record)
CompositePackResourcesOverlayedPackResources
VanillaPackResources as a pack, VanillaPackResources.asProvidera holder of FixedPathPackResources layers, VanillaPackResources.asResourceManager
SimpleJsonResourceReloadListener.scanDirectorygone — data-pack registry files are read by RegistryDataLoader
RegistryDataLoader.WORLDGEN_REGISTRIES / RegistryLayer.WORLDGENRegistryDataLoader.WORLD_REGISTRIES / RegistryLayer.WORLD, beside a fourth list, RegistryDataLoader.RELOADABLE_REGISTRIES
RegistryCodecs.homogeneousListRegistryCodecs.holderSet
HolderOwner.canSerializeInHolderOwner.canSerialize, asked of the context rather than the holder
BuiltInRegistries.BLOCK_TYPE / BlockTypes / Block.codecgone — a block has no codec
PlacementModifierType / StructurePlacementType / BlockStateProviderTypegone — BuiltInRegistries.PLACEMENT_MODIFIER_TYPE, BuiltInRegistries.STRUCTURE_PLACEMENT and BuiltInRegistries.BLOCK_STATE_PROVIDER_TYPE hold the MapCodecs

Part III — The server

the name you remember26.3
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 registry — Registries.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_CHECK — inverted
disablePlayerMovementCheckGameRules.PLAYER_MOVEMENT_CHECK — inverted
disableRaidsGameRules.RAIDS — inverted
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)
weather on the overworld’s level dataserver-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
ServerLevelData.getScheduledEvents, the overworld’s level data holding the queueMinecraftServer.getScheduledEvents, 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.3
ChunkStoragegone — ChunkMap extends SimpleRegionStorage
ChunkSerializerSerializableChunkData, a record with its own parse and write halves — and a blending_data component
DimensionDataStorageSavedDataStorage (one for the server, one per level)
getLightBlockBlockBehaviour.BlockStateBase.getLightDampening
PalettedContainer.Strategytop-level Strategy + Configuration
ForcedChunksSavedDataTicketStorage
TicketType<T>a registry record with flag bits
DimensionType booleansEnvironmentAttributeMap
DimensionType.ultraWarmattributes the Nether sets, EnvironmentAttributes.FAST_LAVA and EnvironmentAttributes.WATER_EVAPORATES chief among them
DimensionType.piglinSafeEnvironmentAttributes.PIGLINS_ZOMBIFY — inverted
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.getDayTime / ServerLevel.setDayTimeServerClockManager, keyed by WorldClock
data/<id>.datdata/<namespace>/<path>.dat — every saved-data file gained a namespace folder
ChunkStatus.NOISE / SURFACE / CARVERSChunkStatus.TERRAIN, one task doing all three
ProtoChunk.carvingMask (saved with the chunk)gone — the CarvingMask lives for one terrain run
BiomeManager.NoiseBiomeSourceBiomeResolver, which ChunkAccess implements

Part V — Blocks

the name you remember26.3
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
Material (the block property)gone — individual BlockBehaviour.Properties flags. The name survives on a different class; see survived and changed meaning below
BlockEntity.saveToItemBlockItem.setBlockEntityData + BlockEntity.collectComponents
MobEffects.DIG_SPEED / DIG_SLOWDOWNMobEffects.HASTE / MobEffects.MINING_FATIGUE
RedStoneWireBlockRedstoneWireBlock; its connection rule is each block’s BlockBehaviour.shouldRedstoneWireConnectTo
BedBlock.OCCUPIED / BedBlock.PARTAbstractBedBlock.OCCUPIED / AbstractBedBlock.PART
LevelEvent.PARTICLES_DESTROY_BLOCK as the break event (2001)LevelEvent.PARTICLES_AND_SOUND_DESTROY_BLOCK; the old name is now 2014, particles only

Part VI — Entities

the name you remember26.3
Player extends LivingEntityPlayer extends Avatar extends LivingEntity
EntityType.PIG (constants)EntityTypes.PIG + EntityTypeIds.PIG
BlockUtil in coreBlockUtil, in net/minecraft/util — the name did not move, the package did
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
LivingEntity.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)
Entity.invulnerableTime as the hurt cooldownLivingEntity.damageCooldownTime; Entity.invulnerableTime is a separate full-invulnerability timer
Entity.hurtMarkedEntity.syncVelocity
TryFindWaterGoalTryFindLiquidGoal

Part VII — Items and inventories

the name you remember26.3
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 ServerboundPlayerInputPacket → Entity.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.getFireAspect…gone — EnchantmentEffectComponents
EnchantedBookItemgone — DataComponents.STORED_ENCHANTMENTS
Item.getEnchantmentValueDataComponents.ENCHANTABLE
LootContextParam / LootContextParamSetContextKey / ContextKeySet (util/context)
LootDataManager / LootTablesReloadableServerRegistries + BuiltInLootTables
LootTableReferenceNestedLootTable
LootingEnchantFunctionEnchantedCountIncreaseFunction
SetCountFunctionSetItemCountFunction
LootContextParams.KILLER_ENTITYLootContextParams.ATTACKING_ENTITY
AxeItem / ShovelItem / HoeItemgone — DataComponents.BLOCK_TRANSFORMER on a plain Item
RecipeManager as a reload listenerRegistries.RECIPE, read by RegistryDataLoader; the RecipeManager constructor builds the RecipeMap
LootPoolSingletonContainerUniformContainerBase
LootItemFunctions.compose, lists of functions and conditionsone optional modifier per level, and one optional condition on a pool, an entry or a conditional function; several functions are one SequenceFunction
LootItemConditionsLootItemConditionTypes
NumberProvidersplit in two: ContextFloatProvider and ContextIntProvider
ContextAwarePredicate / ConditionReferencegone — a Holder of a LootItemCondition
LootContext.getParameter / getOptionalParameterLootContext.getOptional

Part VIII — The player

the name you remember26.3
Inventory.armor / offhand / compartmentsone 36-slot Inventory.items, and the armour and offhand in the entity’s EntityEquipment through Inventory.EQUIPMENT_SLOT_MAPPING
Inventory.setPickedItemInventory.addAndPickItem / Inventory.pickSlot
Entity.moveToEntity.absSnapTo / Entity.snapTo
GameRenderer.pickMinecraft.pick → LocalPlayer.raycastHitResult
ServerboundInteractPacket.ActionType.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.onConsume → FoodProperties → FoodData.eat
MobEffect.createModifierMobEffect.createModifiers (plural)
ServerboundSwingPacketServerboundPunchPacket up, with no fields; ClientboundSwingAnimationPacket down
ServerGamePacketListenerImpl.handleAnimateServerGamePacketListenerImpl.handlePunch
LocalPlayer.swinggone — Minecraft.startAttack and Minecraft.continueAttack send the punch
LivingEntity.swinging / swingingArm / swingTime / attackAnimLivingEntity.SwingState
ItemStack.getSwingAnimation, DataComponents.SWING_ANIMATIONItemStack.getAttackAnimation + ItemStack.getInteractAnimation, DataComponents.ATTACK_ANIMATION + DataComponents.INTERACT_ANIMATION

Part IX — Networking

the name you remember26.3
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/contents — PlainTextContents 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
FriendlyByteBuf.readList / readMap / readCollection / limitValuegone — ByteBufCodecs.list, ByteBufCodecs.map and ByteBufCodecs.collection, which clamp the allocation
FriendlyByteBuf.readBlockHitResultBlockHitResult.STREAM_CODEC

Part X — The client

the name you remember26.3
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
LayeredDrawbounding-box inference and call 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
key-mapping categories as stringsKeyMapping.Category is a registrable record, not a string
MouseHandler.lastMouseEventTimegone
raw (key, scancode, modifiers, action) on every Screen methodthe client/input records: KeyEvent, MouseButtonEvent, CharacterEvent, PreeditEvent
Font.drawInBatch and every drawString variantFont.prepareText → Font.PreparedText; the drawing verbs are on GuiGraphicsExtractor, drawString’s as GuiGraphicsExtractor.text
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
AbstractSoundInstance.resolveAbstractSoundInstance.getOrResolve
GLFW and its callbacksSDL3: SDLEventHandler.pollEvents drains its events inside RenderSystem.pollEvents, input to KeyboardHandler and MouseHandler, the rest to Window.handleEvent
KeyboardHandler.setup / MouseHandler.setupgone — SDLEventHandler calls the handlers’ public methods
LocalPlayer.tick sending the move packetsLocalPlayer.sendChanges, called by Minecraft.tick after the level’s entities and block entities

Part XI — Rendering

Thirty-nine rows. Four refactors account for more than half of them — extract then render, the GPU layer’s move into com/mojang/renderpearl, the window’s move to SDL, and order-independent transparency — and the rest are the renames and moves around them — models, particles, sections, the camera, and the sky and fog.

the name you remember26.3
MultiBufferSource / BufferSourceSubmitNodeCollector / SubmitNodeStorage / FeatureRenderDispatcher
ShaderInstance, RenderStateShardRenderPipeline + RenderPipelines + BindGroupLayouts
VertexBuffer, Tesselator, BufferUploaderGpuBuffer / GpuBufferSlice, BufferBuilder → MeshData (over a ByteBufferBuilder’s memory), UberGpuBuffer
RenderSystem.setShader / enableBlend / depthMask …fields 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, ChunkSectionLayer.TRIPWIREChunkSectionLayer, with three layers — the tripwire layer is gone
BakedModel, ModelResourceLocationBlockStateModel / ItemModel; block models keyed by BlockState
BlockModelShaper, ItemModelShaper, BlockRenderDispatcher, ItemRendererBlockStateModelSet, ItemModelResolver, ModelBlockRenderer, and for the item draw ItemFeatureRenderer
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
Camera.getPosition, getEntity, getRotation, getLookVectorCamera.position, Camera.entity, Camera.rotation, Camera.forwardVector — the get prefix dropped from these four, though Camera.getNearPlane and Camera.getFluidInCamera kept theirs and new getters such as Camera.getCullFrustum and Camera.getFov carry one
RenderStateShard composition (the texture and layering half)RenderType over a RenderPipeline, catalogued in RenderTypes, built by RenderSetup
BakedQuad as four verticesa ten-component record, with a BakedQuad.MaterialInfo of eight
LiquidBlockRendererFluidRenderer, over a FluidModel
ItemOverrides / getPropertyOverrideSelectItemModel / RangeSelectItemModel / ConditionalItemModel
ScreenManager (the Blaze3D monitor manager)MonitorManager, with Monitor and VideoMode — same package, now fed by SDL’s display events
Window.updateVsynca GpuSurface.PresentMode in the surface configuration
GpuDevice, CommandEncoder, RenderPass in com/mojang/blaze3dstill interfaces, reworked and moved to com/mojang/renderpearl/api, implemented by FrontendGpuDevice and its siblings over the backends in com/mojang/renderpearl/backend/opengl and /vulkan
GLXgone — RenderSystem.initBackendSystem starts SDL, and a backend that fails throws BackendCreationException
Window.isMinimized / Monitor.getPreferredVidModeWindow.isIconified / Monitor.getPreferredVideoMode
ItemInHandRendererFirstPersonHandsAndItems (the tick state and the extract) + FirstPersonHandsAndItemsRenderer (the pose)
NameTagFeatureRenderergone — a name tag is a TextFeatureRenderer.Submit
the transparency post chain (Fabulous)order-independent transparency inside the main pass: LevelRenderer.executeOit, three OitStages
LevelRenderer.addCloudsPass / addWeatherPassgone — clouds and weather draw inside LevelRenderer.addMainPass
ShaderManager.prepare, moj_importShaderManager.loadConfigs, #include resolved by GlslCompiler.compileToSpv
ShaderManager.CompilationCachePipelineCache, swapped in by RenderSystem.setCurrentPipelineCache
GameRenderer.postEffectId / effectActiveGameRenderer.spectatedEntityPostEffect / GameRenderer.spectatedEntityEffectActive, beside the per-frame GameRenderer.requestedPostEffects
DynamicUniforms / DynamicUniformStorageDynamicGpuData / DynamicGpuDataStorageMapped

Part XII — World generation

the name you remember26.3
GenerationStep.Carvinggone — BiomeGenerationSettings.carvers is one flat HolderSet
DensityFunctions.WeirdScaledSamplerIntervalSelectFunction
StructureFeature / ConfiguredStructureFeatureStructure / Registries.STRUCTURE
Feature.RANDOM_PATCH, Feature.FLOWERgone — composed from SimpleBlockFeature + placement
Feature.POINTED_DRIPSTONE / DRIPSTONE_CLUSTERSpeleothemFeature / SpeleothemClusterFeature
AbstractTreeGrower and its subclassesone final TreeGrower with constants
TreeConfiguration.dirtProviderTreeFeature.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’s folder for saved templates, generated/<namespace>/structures/generated/<namespace>/structure/, the singular a data pack’s templates were already read from
level.dat field WorldGenSettingsits own file — WorldGenSettings is SavedData, written to data/minecraft/world_gen_settings.dat; PrimaryLevelData.OLD_WORLD_GEN_SETTINGS is all that is left of the key
ConfiguredFeature / FeatureConfiguration / FeaturePlaceContextgone — a Feature carries its own parameters; its instances are Registries.FEATURE
PlacedFeature.placeWithBiomeCheck / PlacementModifier.getPositionsFeaturePlacer.placeWithBiomeCheck / PlacementModifier.modify
RandomOffsetPlacementOffsetPlacement
ConfiguredWorldCarver / CarverConfiguration / NetherWorldCarvergone — WorldCarver instances in Registries.CARVER; the nether carver is a cave carver
SurfaceRules / SurfaceSystemMaterialRule / MaterialCondition / MaterialSystem
OreVeinifierOreVeinRule
NoiseChunk.forChunk / NoiseChunk.wrapNew and the four cache markersgone — DensityFunctionCompiler compiles once per dimension; one cache node; a SamplerContext per run
DensityFunctions.Marker / BlendAlpha / BlendOffset / BeardifierMarker / Mapped / Ap2 / MulOrAddCacheFunction and InterpolatedFunction, SimpleDensityFunction, UnaryFunction and BinaryFunction, under world/level/levelgen/densityfunction
TreeConfigurationTreeFeature, a record holding the fields
Climate.findSpawnPositionNoiseSpawnFinder.findSpawnPosition
Biome.getMobSettingsEnvironmentAttributes.NATURAL_MOB_SPAWNS
RandomState.samplerRandomState.createClimateSampler

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.3
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 and CriterionProgress 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.critereon / criterionsplit 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, in one dimension
the structure block as the test hostTestInstanceBlock / TestInstanceBlockEntity
ServerAdvancementManager as a reload listenerRegistries.ADVANCEMENT, read by RegistryDataLoader; the manager’s constructor lays the tree out
AdvancementTree.ListenerClientAdvancements.Listener
Advancement.readAdvancement.STREAM_CODEC
EntityPredicate.ADVANCEMENT_CODECgone — LootItemCondition.CODEC
PlayerList.allowCommandsForAllPlayersgone — IntegratedServer.getProfilePermissions answers for singleplayer first, with a guest command-access toggle

The shape changes, not just the names

A rename table flatters the reader: it suggests that if you learn the three hundred and nine rows above you can read the tree. You cannot, because many of those rows are one of seven design changes, and the change is what the corresponding page is about:

  • 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 DataComponents — data components, items and stacks.
  • Hand-written serialisation became codecs. Packet.write is gone: every packet but the bundle carries a StreamCodec the protocol table reads, and most packets are records. 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 copies the live game into render state and then draws from that copy, both halves on the Render thread — 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 fog 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, GenerationStep.Carving and Biome.BiomeCategory are all gone, replaced by item sets, registry records, HolderSets or nothing at all; MobSpawnType and BlockPathTypes stayed enums under new names.
  • 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 split into Entity.hurtServer and Entity.hurtClient — the old name survives, as a @Deprecated final that returns void and forwards to the server half only, so grep finds it and it does nothing on the client; 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.3 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.3 class under the name a Fabric modder has in their head. Only the ones that 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.3 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

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, like the Yarn column above and the italic names in the pages’ For a 1.21-era reader notes, is what the corpus cannot verify, and 1.21.11 is the only 1.21 it can check a name against.
  • The names did not move where you would guess. Rendering is only the second-largest table, behind commands. 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. Where a name changed, the responsibility often moved too — though not always: ClickType is ContainerInput with the same constants, and RedStoneWireBlock is RedstoneWireBlock with the same methods. 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.3 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.
  • One name a 1.21 reader reaches for was never a class. There is no DebugPackets type in 26.3 and there is nothing it was renamed to: the debug traffic is a subscription protocol with one packet per kind (debugging the running game), not a static sender, so the grep that finds nothing is telling the truth.
  • 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. 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.