#
# Intave Locate Mappings
# Licensed under the Polyform Perimeter License v1.0.0
# Copyright (c) 2026 Intave Contributors
#

AxisAlignedBB -> {
  [1.17-1.20.4] -> "net/minecraft/world/phys/AxisAlignedBB"
  [1.21-26.1.2] -> "net/minecraft/world/phys/AABB"
  fields {
    [1.17-1.20.4] -> {
      "minX" -> "a"
      "minY" -> "b"
      "minZ" -> "c"
      "maxX" -> "d"
      "maxY" -> "e"
      "maxZ" -> "f"
    }
#   [1.21-26.1.2] Keep names
  }
}

Block -> {
  [1.17-26.1.2] -> "net/minecraft/world/level/block/Block"
  methods {
    [1.18-1.20.4] -> {
      "getDamage(RIBlockData;REntityHuman;RIBlockAccess;RBlockPosition;)F" -> "a(RIBlockData;REntityHuman;RIBlockAccess;RBlockPosition;)F"
    }
    [1.21-26.1.2] -> {
      "getDamage(RIBlockData;REntityHuman;RIBlockAccess;RBlockPosition;)F" -> "getDestroyProgress(RIBlockData;REntityHuman;RIBlockAccess;RBlockPosition;)F"
    }
    [1.18-1.18.9] -> {
      "getBlockData()RIBlockData;" -> "n()RIBlockData;"
    }
    [1.19-1.19.2] -> {
      "getBlockData()RIBlockData;" -> "m()RIBlockData;"
    }
    1.19.3 -> {
      "getBlockData()RIBlockData;" -> "n()RIBlockData;"
    }
    1.19.4 -> {
      "getBlockData()RIBlockData;" -> "o()RIBlockData;"
    }
    [1.20-1.20.2] -> {
      "getBlockData()RIBlockData;" -> "n()RIBlockData;"
    }
    [1.20.3-1.20.4] -> {
      "getBlockData()RIBlockData;" -> "o()RIBlockData;"
    }
    [1.21-26.1.2] -> {
      "getBlockData()RIBlockData;" -> "defaultBlockState()RIBlockData;"
    }
    [1.18-1.18.1] -> {
      "getItem()RItem;" -> "k()RItem;"
    }
    [1.18.2-1.19.3] -> {
      "getItem()RItem;" -> "l()RItem;"
    }
    [1.19.4-1.20.4] -> {
      "getItem()RItem;" -> "k()RItem;"
    }
    [1.21-26.1.2] -> {
      "getItem()RItem;" -> "asItem()RItem;"
    }
    [1.18-1.18.2] -> {
      "getStates()RBlockStateList;" -> "m()RBlockStateList;"
    }
    [1.19-1.19.3] -> {
      "getStates()RBlockStateList;" -> "k()RBlockStateList;"
    }
    1.19.4 -> {
      "getStates()RBlockStateList;" -> "n()RBlockStateList;"
    }
    [1.20-1.20.3] -> {
      "getStates()RBlockStateList;" -> "l()RBlockStateList;"
    }
    1.20.4 -> {
      "getStates()RBlockStateList;" -> "n()RBlockStateList;"
    }
    [1.21-26.1.2] -> {
      "getStates()RBlockStateList;" -> "getStateDefinition()RBlockStateList;"
      "c_(RIBlockData;)RFluid;" -> "getFluidState(RIBlockData;)RFluid;"
    }
  }
}

Blocks -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/block/Blocks"
  [1.21-26.1.2] -> "net/minecraft/world/level/block/Blocks"
  fields {
    [1.17-1.20.4] -> {
      "AIR" -> "a"
    }
#   [1.21-26.1.2] Keep name
  }
}

BlockBase -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/block/state/BlockBase"
  [1.21-26.1.2] -> "net/minecraft/world/level/block/state/BlockBehaviour"
  methods {
    [1.21-26.1.2] -> {
      "c_(RIBlockData;)RFluid;" -> "getFluidState(RIBlockData;)RFluid;"
    }
  }
}

BlockPosition -> {
  [1.17-1.20.4] -> "net/minecraft/core/BlockPosition"
  [1.21-26.1.2] -> "net/minecraft/core/BlockPos"
  methods {
    [1.18-1.20.4] -> {
      "getX()I" -> "u()I"
      "getY()I" -> "v()I"
      "getZ()I" -> "w()I"
    }
#   [1.21-26.1.2] Keep names
  }
}

BlockPosition$MutableBlockPosition -> {
  [1.17-1.20.4] -> "net/minecraft/core/BlockPosition$MutableBlockPosition"
  [1.21-26.1.2] -> "net/minecraft/core/BlockPos$MutableBlockPos"
}

Chunk -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/chunk/Chunk"
  [1.21-26.1.2] -> "net/minecraft/world/level/chunk/LevelChunk"
}

LightChunk {
  [1.20-26.1.2] -> "net/minecraft/world/level/chunk/LightChunk"
}

ChunkProviderServer -> {
  [1.17-1.20.4] -> "net/minecraft/server/level/ChunkProviderServer"
  [1.21-26.1.2] -> "net/minecraft/server/level/ServerChunkCache"
  methods {
    [26.1.1-26.1.2] -> {
      "c(II)RLightChunk;" -> "getChunkNow(II)RLightChunk;"
    }
  }
}

DataWatcher -> {
  [1.17-1.20.4] -> "net/minecraft/network/syncher/DataWatcher"
  [1.21-26.1.2] -> "net/minecraft/network/syncher/SynchedEntityData"
  methods {
    [1.18-1.19.9] -> {
      "set(RDataWatcherObject;Ljava/lang/Object;)V" -> "b(RDataWatcherObject;Ljava/lang/Object;)V"
      "get(RDataWatcherObject;)Ljava/lang/Object;" -> "a(RDataWatcherObject;)Ljava/lang/Object;"
    }
    [1.20-1.20.4] -> {
      "set(RDataWatcherObject;Ljava/lang/Object;)V" -> "b(RDataWatcherObject;Ljava/lang/Object;)V"
      "get(RDataWatcherObject;)Ljava/lang/Object;" -> "b(RDataWatcherObject;)Ljava/lang/Object;"
    }
#   [1.21-26.1.2] Keep names
  }
}

DataWatcherObject -> {
  [1.17-1.20.4] -> "net/minecraft/network/syncher/DataWatcherObject"
  [1.21-26.1.2] -> "net/minecraft/network/syncher/EntityDataAccessor"
}

DamageSource -> {
  [1.17-26.1.2] -> "net/minecraft/world/damagesource/DamageSource"
}

DamageSources -> {
  [1.19.4-26.1.2] -> "net/minecraft/world/damagesource/DamageSources"
}

Entity -> {
  [1.17-26.1.2] -> "net/minecraft/world/entity/Entity"
  fields {
    [1.17-1.17.9] -> {
      "yaw" -> "ay"
      "pitch" -> "az"
      "onGround" -> "z"
    }
    [1.18-1.18.9] -> {
      "yaw" -> "aA"
      "pitch" -> "aB"
      "onGround" -> "z"
    }
    [1.19-1.19.3] -> {
      "yaw" -> "aA"
      "pitch" -> "aB"
      "onGround" -> "y"
    }
    1.19.4 -> {
      "yaw" -> "aE"
      "pitch" -> "aF"
      "onGround" -> "N"
    }
    [1.20-1.20.4] -> {
      "yaw" -> "aG"
      "pitch" -> "aH"
      "onGround" -> "aJ"
    }
    [1.21-26.1.2] -> {
      "yaw" -> "yRot"
      "pitch" -> "xRot"
      "onGround" -> "onGround"
    }
    [1.17-1.18.1] -> {
      "entityCount" -> "b"
    }
    [1.18.2-1.19.3] -> {
      "entityCount" -> "c"
    }
    [1.19.4-1.20.4] -> {
      "entityCount" -> "d"
    }
    [1.21-26.1.2] -> {
      "entityCount" -> "ENTITY_COUNTER"
    }
  }
  methods {
    [1.18-1.19.2] -> {
      "getDataWatcher()RDataWatcher;" -> "ai()RDataWatcher;"
    }
    1.19.3 -> {
      "getDataWatcher()RDataWatcher;" -> "al()RDataWatcher;"
    }
    [1.19.4-1.20.2] -> {
      "getDataWatcher()RDataWatcher;" -> "aj()RDataWatcher;"
    }
    [1.20.3-1.20.4] -> {
      "getDataWatcher()RDataWatcher;" -> "an()RDataWatcher;"
    }
    [1.21-26.1.2] -> {
      "getDataWatcher()RDataWatcher;" -> "getEntityData()RDataWatcher;"
    }
    [1.18-1.18.9] -> {
      "getWidth()F" -> "cT()F"
      "getHeight()F" -> "cU()F"
    }
    [1.19-1.19.1] -> {
      "getWidth()F" -> "cX()F"
      "getHeight()F" -> "cY()F"
    }
    1.19.2 -> {
      "getWidth()F" -> "cW()F"
      "getHeight()F" -> "cX()F"
    }
    1.19.3 -> {
      "getWidth()F" -> "db()F"
      "getHeight()F" -> "dc()F"
    }
    1.19.4 -> {
      "getWidth()F" -> "dc()F"
      "getHeight()F" -> "dd()F"
    }
    [1.20-1.20.1] -> {
      "getWidth()F" -> "dd()F"
      "getHeight()F" -> "de()F"
    }
    1.20.2 -> {
      "getWidth()F" -> "df()F"
      "getHeight()F" -> "dg()F"
    }
    [1.20.3-1.20.4] -> {
      "getWidth()F" -> "dg()F"
      "getHeight()F" -> "dh()F"
    }
    [1.21-26.1.2] -> {
      "getWidth()F" -> "getBbWidth()F"
      "getHeight()F" -> "getBbHeight()F"
    }
  }
}

EntityHuman -> {
  [1.17-1.20.4] -> "net/minecraft/world/entity/player/EntityHuman"
  [1.21-26.1.2] -> "net/minecraft/world/entity/player/Player"
}

EntityTypes -> {
  [1.17-1.20.4] -> "net/minecraft/world/entity/EntityTypes"
  [1.21-26.1.2] -> "net/minecraft/world/entity/EntityType"
  methods {
    [1.21-26.1.2] -> {
      "a(Ljava/lang/String;)Ljava/util/Optional;" -> "byString(Ljava/lang/String;)Ljava/util/Optional;"
    }
  }
}

EntitySize -> {
  [1.17-1.20.4] -> "net/minecraft/world/entity/EntitySize"
  [1.21-26.1.2] -> "net/minecraft/world/entity/EntityDimensions"
  fields {
    [1.17-1.20.4] -> {
      "width" -> "a"
      "height" -> "b"
    }
#   [1.21-26.1.2] Keep names
  }
}

EntityLiving -> {
  [1.17-1.20.4] -> "net/minecraft/world/entity/EntityLiving"
  [1.21-26.1.2] -> "net/minecraft/world/entity/LivingEntity"
  fields {
    [1.17-1.17.9] -> {
      "maxNoDamageTicks" -> "aU"
    }
    [1.18-1.18.1] -> {
      "maxNoDamageTicks" -> "aV"
    }
    [1.18.2-1.18.3] -> {
      "maxNoDamageTicks" -> "aU"
    }
    [1.18.4-1.20.1] -> {
      "maxNoDamageTicks" -> "aQ"
    }
    [1.20.2-1.20.4] -> {
      "maxNoDamageTicks" -> "aR"
    }
    [1.21-26.1.2] -> {
      "maxNoDamageTicks" -> "invulnerableDuration"
    }
  }
}

EntityPlayer -> {
  [1.17-1.20.4] -> "net/minecraft/server/level/EntityPlayer"
  [1.21-26.1.2] -> "net/minecraft/server/level/ServerPlayer"
  fields {
    [1.17-1.19.9] -> {
      "playerConnection" -> "b"
      "inventory" -> "co"
    }
    [1.20-1.20.4] -> {
      "playerConnection" -> "c"
      "inventory" -> "co"
    }
    [1.21-26.1.2] -> {
      "playerConnection" -> "connection"
      "inventory" -> "inventory"
    }
  }
  methods {
    [1.18-1.18.1] -> {
      "getInventory()RPlayerInventory;" -> "fq()RPlayerInventory;"
    }
    [1.18.2-1.18.9] -> {
      "getInventory()RPlayerInventory;" -> "fr()RPlayerInventory;"
    }
    [1.19-1.19.1] -> {
      "getInventory()RPlayerInventory;" -> "fB()RPlayerInventory;"
    }
    1.19.2 -> {
      "getInventory()RPlayerInventory;" -> "fA()RPlayerInventory;"
    }
    1.19.3 -> {
      "getInventory()RPlayerInventory;" -> "fE()RPlayerInventory;"
    }
    1.19.4 -> {
      "getInventory()RPlayerInventory;" -> "fJ()RPlayerInventory;"
    }
    [1.20-1.20.1] -> {
      "getInventory()RPlayerInventory;" -> "fN()RPlayerInventory;"
    }
    1.20.2 -> {
      "getInventory()RPlayerInventory;" -> "fR()RPlayerInventory;"
    }
    [1.20.3-1.20.4] -> {
      "getInventory()RPlayerInventory;" -> "fS()RPlayerInventory;"
    }
    [1.21-26.1.2] -> {
      "getInventory()RPlayerInventory;" -> "getInventory()RPlayerInventory;"
    }
  }
}

EnumMainHand -> {
  [1.17-1.20.4] -> "net/minecraft/world/entity/EnumMainHand"
  [1.21-26.1.2] -> "net/minecraft/world/entity/HumanoidArm"
}

Fluid -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/material/Fluid"
  [1.21-26.1.2] -> "net/minecraft/world/level/material/FluidState"
  methods {
    [1.18-1.20.4] -> {
      "isSource()Z" -> "b()Z"
      "isEmpty()Z" -> "c()Z"
    }
    [1.21-26.1.2] -> {
      "isSource()Z" -> "isSource()Z"
      "isEmpty()Z" -> "isEmpty()Z"
      "d()F" -> "getOwnHeight()F"
    }
  }
}

Fluids -> {
  [26.1.1-26.1.2] -> "net/minecraft/world/level/material/Fluids"

  fields {
    [26.1.1-26.1.2] -> {
      "EMPTY" -> "EMPTY"
      "FLOWING_WATER" -> "FLOWING_WATER"
      "WATER" -> "WATER"
      "FLOWING_LAVA" -> "FLOWING_LAVA"
      "LAVA" -> "LAVA"
    }
  }
}

GeneratorAccess -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/GeneratorAccess"
  [1.21-26.1.2] -> "net/minecraft/world/level/LevelAccessor"
}

Holder -> {
  [1.21-26.1.2] -> "net/minecraft/core/Holder"
}

IBlockAccess -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/IBlockAccess"
  [1.21-26.1.2] -> "net/minecraft/world/level/BlockGetter"
  methods {
    [1.18-1.20.4] -> {
      "getType(RBlockPosition;)RIBlockData;" -> "a_(RBlockPosition;)RIBlockData;"
      "getFluid(RBlockPosition;)RFluid;" -> "b_(RBlockPosition;)RFluid;"
      "rayTrace(RRayTrace;)RMovingObjectPositionBlock;" -> "a(RRayTrace;)RMovingObjectPositionBlock;"
    }
    [1.21-26.1.2] -> {
      "getType(RBlockPosition;)RIBlockData;" -> "getBlockState(RBlockPosition;)RIBlockData;"
      "getFluid(RBlockPosition;)RFluid;" -> "getFluidState(RBlockPosition;)RFluid;"
      "rayTrace(RRayTrace;)RMovingObjectPositionBlock;" -> "clip(RRayTrace;)RMovingObjectPositionBlock;"
    }
  }
}

IBlockData -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/block/state/IBlockData"
  [1.21-26.1.2] -> "net/minecraft/world/level/block/state/BlockState"
  methods {
    [1.18-1.20.4] -> {
      "getBlock()RBlock;" -> "b()RBlock;"
      "getShape(RIBlockAccess;RBlockPosition;)RVoxelShape;" -> "j(RIBlockAccess;RBlockPosition;)RVoxelShape;"
      "getCollisionShape(RIBlockAccess;RBlockPosition;)RVoxelShape;" -> "k(RIBlockAccess;RBlockPosition;)RVoxelShape;"
      "get(RIBlockState;)Ljava/lang/Comparable;" -> "c(RIBlockState;)Ljava/lang/Comparable;"
    }
    [1.18-1.18.9] -> {
      "getMaterial()RMaterial;" -> "c()RMaterial;"
    }
    [1.19-1.19.9] -> {
      "getMaterial()RMaterial;" -> "d()RMaterial;"
    }
    [1.18-1.18.1] -> {
      "getStateMap()Lcom/google/common/collect/ImmutableMap;" -> "t()Lcom/google/common/collect/ImmutableMap;"
    }
    1.18.2 -> {
      "getStateMap()Lcom/google/common/collect/ImmutableMap;" -> "u()Lcom/google/common/collect/ImmutableMap;"
    }
    [1.19-1.19.2] -> {
      "getStateMap()Lcom/google/common/collect/ImmutableMap;" -> "w()Lcom/google/common/collect/ImmutableMap;"
    }
    [1.19.3-1.19.9] -> {
      "getStateMap()Lcom/google/common/collect/ImmutableMap;" -> "y()Lcom/google/common/collect/ImmutableMap;"
    }
    [1.20-1.20.4] -> {
      "getBlock()RBlock;" -> "b()RBlock;"
      "getStateMap()Lcom/google/common/collect/ImmutableMap;" -> "C()Lcom/google/common/collect/ImmutableMap;"
    }
    [1.21-26.1.2] -> {
      "getBlock()RBlock;" -> "getBlock()RBlock;"
      "getStateMap()Ljava/util/Map;" -> "getValues()Ljava/util/Map;"
      "get(RIBlockState;)Ljava/lang/Comparable;" -> "getValue(RIBlockState;)Ljava/lang/Comparable;"
    }
  }
}

IBlockState -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/block/state/properties/IBlockState"
  [1.21-26.1.2] -> "net/minecraft/world/level/block/state/properties/Property"
  methods {
    [1.18-1.20.4] -> {
      "getType()Ljava/lang/Class;" -> "g()Ljava/lang/Class;"
      "getName()Ljava/lang/String;" -> "f()Ljava/lang/String;"
      "getValues()Ljava/util/Collection;" -> "a()Ljava/util/Collection;"
    }
    [1.21-1.21.2] -> {
      "getType()Ljava/lang/Class;" -> "getValueClass()Ljava/lang/Class;"
      "getName()Ljava/lang/String;" -> "getName()Ljava/lang/String;"
      "getValues()Ljava/util/Collection;" -> "getPossibleValues()Ljava/util/Collection;"
    }
    [1.21.3-26.1.2] -> {
      "getType()Ljava/lang/Class;" -> "getValueClass()Ljava/lang/Class;"
      "getName()Ljava/lang/String;" -> "getName()Ljava/lang/String;"
      "getValues()Ljava/util/Collection;" -> "getPossibleValues()Ljava/util/List;"
    }
  }
}

BlockStateList -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/block/state/BlockStateList"
  [1.21-26.1.2] -> "net/minecraft/world/level/block/state/StateDefinition"
  methods {
    [1.21-26.1.2] -> {
#      "a()Ljava/util/List;" -> "getPossibleStates()Ljava/util/List;"
      "a()Lcom/google/common/collect/ImmutableList;" -> "getPossibleStates()Lcom/google/common/collect/ImmutableList;"
    }
  }
}

BlockStateInteger -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/block/state/properties/BlockStateInteger"
  [1.21-26.1.2] -> "net/minecraft/world/level/block/state/properties/IntegerProperty"
  methods {
    [1.18-1.20.4] -> {
      "getValues()Ljava/util/Collection;" -> "a()Ljava/util/Collection;"
    }
    [1.21-1.21.2] -> {
      "getValues()Ljava/util/Collection;" -> "getPossibleValues()Ljava/util/Collection;"
    }
    [1.21.3-26.1.2] -> {
      "getValues()Ljava/util/Collection;" -> "getPossibleValues()Ljava/util/List;"
    }
  }
}

BlockStateBoolean -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/block/state/properties/BlockStateBoolean"
  [1.21-26.1.2] -> "net/minecraft/world/level/block/state/properties/BooleanProperty"
}

BlockStateEnum -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/block/state/properties/BlockStateEnum"
  [1.21-26.1.2] -> "net/minecraft/world/level/block/state/properties/EnumProperty"
  methods {
    [1.21-26.1.2] -> {
      "getValues()Ljava/util/Collection;" -> "getPossibleValues()Ljava/util/Collection;"
    }
  }
}

IChatBaseComponent -> {
  [1.17-1.20.4] -> "net/minecraft/network/chat/IChatBaseComponent"
  [1.21-26.1.2] -> "net/minecraft/network/chat/Component"
}

IChunkProvider -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/chunk/IChunkProvider"
  [1.21-26.1.2] -> "net/minecraft/world/level/chunk/ChunkSource"
}

InventoryClickType -> {
  [1.17-1.20.4] -> "net/minecraft/world/inventory/InventoryClickType"
  [1.21-1.21.11] -> "net/minecraft/world/inventory/ClickType"
  [26.1.1-26.1.2] -> "net/minecraft/world/inventory/ContainerInput"
}

IRegistry -> {
  [1.17-1.19.2] -> "net/minecraft/core/IRegistry"
  [1.19.3-26.1.2] -> "net/minecraft/core/registries/BuiltInRegistries"
  fields {
    [1.17-1.17.9] -> {
      "ENTITY_TYPE" -> "Y"
    }
    [1.18-1.18.1] -> {
      "ENTITY_TYPE" -> "Z"
    }
    1.18.2 -> {
      "ENTITY_TYPE" -> "W"
    }
    [1.19-1.19.2] -> {
      "ENTITY_TYPE" -> "X"
    }
    [1.19.3-1.20.4] -> {
      "ENTITY_TYPE" -> "l"
    }
#   [1.21-26.1.2] Keep names
  }
}

Item -> {
  [1.17-26.1.2] -> "net/minecraft/world/item/Item"
}

ItemStack -> {
  [1.17-26.1.2] -> "net/minecraft/world/item/ItemStack"
  methods {
    [1.18-1.19.9] -> {
      "getItem()RItem;" -> "c()RItem;"
    }
    [1.20-1.20.4] -> {
      "getItem()RItem;" -> "d()RItem;"
    }
#   [1.21-26.1.2] Keep names
  }
}

IWorldReader -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/IWorldReader"
  [1.21-26.1.2] -> "net/minecraft/world/level/LevelReader"
}

Material -> {
  [1.17-1.19.9] -> "net/minecraft/world/level/material/Material"
  methods {
    [1.18-1.19.9] -> {
      "isReplaceable()Z" -> "e()Z"
    }
  }
}

BlockData -> {
  [1.20-1.20.4] -> "net/minecraft/world/level/block/state/BlockBase$BlockData"
  [1.21-26.1.2] -> "net/minecraft/world/level/block/state/BlockBehaviour$BlockStateBase"
  methods {
    [1.20-1.20.4] -> {
      "isReplaceable()Z" -> "r()Z"
    }
    [1.21-26.1.2] -> {
      "isReplaceable()Z" -> "canBeReplaced()Z"
    }
  }
}

MinecraftServer -> {
  [1.17-1.20.4] -> "net/minecraft/server/MinecraftServer"
  [1.21-26.1.2] -> "net/minecraft/server/dedicated/DedicatedServer"
}

MinecraftKey -> {
  [1.17-1.20.4] -> "net/minecraft/resources/MinecraftKey"
  [1.21-1.21.7] -> "net/minecraft/resources/ResourceLocation"
  [1.21.8-26.1.2] -> "net/minecraft/resources/Identifier"
}

MovingObjectPosition -> {
  [1.17-1.20.4] -> "net/minecraft/world/phys/MovingObjectPosition"
  [1.21-26.1.2] -> "net/minecraft/world/phys/HitResult"
  fields {
    [1.17-1.20.4] -> {
      "pos" -> "a"
    }
    [1.21-26.1.2] -> {
      "pos" -> "location"
    }
  }
  methods {
    [1.18-1.20.4] -> {
      "getType()RMovingObjectPosition$EnumMovingObjectType;" -> "c()RMovingObjectPosition$EnumMovingObjectType;"
    }
#   [1.21-26.1.2] Keep names
  }
}

MovingObjectPosition$EnumMovingObjectType -> {
  [1.17-1.20.4] -> "net/minecraft/world/phys/MovingObjectPosition$EnumMovingObjectType"
  [1.21-26.1.2] -> "net/minecraft/world/phys/HitResult$Type"
}

MovingObjectPositionEntity -> {
  [1.17-1.20.4] -> "net/minecraft/world/phys/MovingObjectPositionEntity"
  [1.21-26.1.2] -> "net/minecraft/world/phys/EntityHitResult"
}

MovingObjectPositionBlock -> {
  [1.17-1.20.4] -> "net/minecraft/world/phys/MovingObjectPositionBlock"
  [1.21-26.1.2] -> "net/minecraft/world/phys/BlockHitResult"
}

NetworkManager -> {
  [1.17-1.20.4] -> "net/minecraft/network/NetworkManager"
  [1.21-26.1.2] -> "net/minecraft/network/Connection"
}

Packet -> {
  [1.17-1.20.4] -> "net/minecraft/network/protocol/Packet"
  [1.21-26.1.2] -> "net/minecraft/network/protocol/Packet"
}

PacketDataSerializer -> {
  [1.17-1.20.4] -> "net/minecraft/network/PacketDataSerializer"
  [1.21-26.1.2] -> "net/minecraft/network/FriendlyByteBuf"
}

PacketLoginInStart -> {
  [1.17-1.20.4] -> "net/minecraft/network/protocol/login/PacketLoginInStart"
  [1.21-26.1.2] -> "net/minecraft/network/protocol/login/ClientboundHelloPacket"
}

PacketPlayOutScoreboardTeam -> {
  [1.17-1.20.4] -> "net/minecraft/network/protocol/game/PacketPlayOutScoreboardTeam"
  [1.21-26.1.2] -> "net/minecraft/network/protocol/game/ClientboundSetPlayerTeamPacket"
}

PacketPlayOutPosition$EnumPlayerTeleportFlags -> {
  [1.17-1.19.3] -> "net/minecraft/network/protocol/game/PacketPlayOutPosition$EnumPlayerTeleportFlags"
  [1.19.4-1.21.2] -> "net/minecraft/world/entity/RelativeMovement"
  [1.21.3-26.1.2] -> "net/minecraft/world/entity/Relative"
  fields {
    [1.17-1.20.4] -> {
      "X_ROT" -> "d"
      "Y_ROT" -> "e"
    }
#   [1.21-26.1.2] Keep names
  }
  methods {
    [1.8-1.21.11] -> {
      "unpack(I)Ljava/util/Set;" -> "a(I)Ljava/util/Set;"
    }
}

PacketPlayInEntityAction$EnumPlayerAction -> {
  [1.17-1.20.4] -> "net/minecraft/network/protocol/game/PacketPlayInEntityAction$EnumPlayerAction"
  [1.21-26.1.2] -> "net/minecraft/network/protocol/game/ServerboundPlayerCommandPacket$Action"
}

PacketPlayOutGameStateChange$a -> {
  [1.17-1.20.4] -> "net/minecraft/network/protocol/game/PacketPlayOutGameStateChange$a"
  [1.21-26.1.2] -> "net/minecraft/network/protocol/game/ClientboundGameEventPacket$Type"
}

PlayerConnection -> {
  [1.17-1.20.4] -> "net/minecraft/server/network/PlayerConnection"
  [1.21-26.1.2] -> "net/minecraft/server/network/ServerGamePacketListenerImpl"
}

PlayerInventory -> {
  [1.17-1.20.4] -> "net/minecraft/world/entity/player/PlayerInventory"
  [1.21-26.1.2] -> "net/minecraft/world/entity/player/Inventory"
  methods {
    [1.18-1.20.4] -> {
      "getItem(I)RItemStack;" -> "a(I)RItemStack;"
    }
#   [1.21-26.1.2] Keep names
  }
}

RayTrace -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/RayTrace"
  [1.21-26.1.2] -> "net/minecraft/world/level/ClipContext"
}

RayTrace$BlockCollisionOption -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/RayTrace$BlockCollisionOption"
  [1.21-26.1.2] -> "net/minecraft/world/level/ClipContext$Block"
  fields {
    [1.17-1.20.4] -> {
      "COLLIDER" -> "a"
      "OUTLINE" -> "b"
      "VISUAL" -> "c"
    }
#   [1.21-26.1.2] Keep names
  }
}

RayTrace$FluidCollisionOption -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/RayTrace$FluidCollisionOption"
  [1.21-26.1.2] -> "net/minecraft/world/level/ClipContext$Fluid"
  fields {
    [1.17-1.20.4] -> {
      "NONE" -> "a"
      "SOURCE_ONLY" -> "b"
      "ANY" -> "c"
    }
#   [1.21-26.1.2] Keep names
  }
}

RegistryBlocks -> {
  [1.17-1.20.4] -> "net/minecraft/core/RegistryBlocks"
  [1.21-26.1.2] -> "net/minecraft/core/DefaultedRegistry"
  methods {
    [1.18-1.20.4] -> {
      "fromId(I)Ljava/lang/Object;" -> "a(I)Ljava/lang/Object;"
    }
    [1.21-26.1.2] -> {
      "fromId(I)Ljava/lang/Object;" -> "byId(I)Ljava/lang/Object;"
    }
  }
}

Scoreboard -> {
  [1.17-26.1.2] -> "net/minecraft/world/scores/Scoreboard"
}

ScoreboardTeam -> {
  [1.17-1.20.4] -> "net/minecraft/world/scores/ScoreboardTeam"
  [1.21-26.1.2] -> "net/minecraft/world/scores/PlayerTeam"
}

ScoreboardTeamBase$EnumNameTagVisibility -> {
  [1.17-1.20.4] -> "net/minecraft/world/scores/ScoreboardTeamBase$EnumNameTagVisibility"
  [1.21-26.1.2] -> "net/minecraft/world/scores/Team$Visibility"
  fields {
    [1.17-1.20.4] -> {
      "ALWAYS" -> "a"
      "NEVER" -> "b"
      "HIDE_FOR_OTHER_TEAMS" -> "c"
      "HIDE_FOR_OWN_TEAM" -> "d"
    }
#   [1.21-26.1.2] Keep names
  }
}

ServerConnection -> {
  [1.17-1.20.4] -> "net/minecraft/server/network/ServerConnection"
  [1.21-26.1.2] -> "net/minecraft/server/network/ServerConnectionListener"
}

TagKey -> {
  [1.18.2-26.1.2] -> "net/minecraft/tags/TagKey"
}

Tag$e -> {
  [1.17-1.18.1] -> "net/minecraft/tags/Tag$e"
  [1.18.2-26.1.2] -> "net/minecraft/tags/TagKey"
}

Tag -> {
  [1.17-1.18.9] -> "net/minecraft/tags/Tag"
}

TagsFluid -> {
  [1.17-1.20.4] -> "net/minecraft/tags/TagsFluid"
  [1.21-26.1.2] -> "net/minecraft/tags/FluidTags"
  fields {
    [1.17-1.18.1] -> {
      "WATER" -> "b"
      "LAVA" -> "c"
    }
    [1.18.2-1.20.4] -> {
      "WATER" -> "a"
      "LAVA" -> "b"
    }
#   [1.21-26.1.2] Keep names
  }
}

Vec3D -> {
  [1.17-1.20.4] -> "net/minecraft/world/phys/Vec3D"
  [1.21-26.1.2] -> "net/minecraft/world/phys/Vec3"
  fields {
    [1.17-1.18.9] -> {
      "x" -> "b"
      "y" -> "c"
      "z" -> "d"
    }
    [1.19-1.20.4] -> {
      "x" -> "c"
      "y" -> "d"
      "z" -> "e"
    }
    [1.21.4-26.1.2] -> {
      "c" -> "ZERO"
    }
  }
}

VoxelShape -> {
  [1.17-26.1.2] -> "net/minecraft/world/phys/shapes/VoxelShape"
  methods {
    [1.18-1.20.1] -> {
      "toList()Ljava/util/List;" -> "d()Ljava/util/List;"
    }
    [1.20.2-1.20.4] -> {
      "toList()Ljava/util/List;" -> "e()Ljava/util/List;"
    }
    [1.21-26.1.2] -> {
      "toList()Ljava/util/List;" -> "toAabbs()Ljava/util/List;"
    }
  }
}

VoxelShapes -> {
  [1.17-1.20.4] -> "net/minecraft/world/phys/shapes/VoxelShapes"
  [1.21-26.1.2] -> "net/minecraft/world/phys/shapes/Shapes"
  methods {
    [1.21-26.1.2] -> {
      "a()RVoxelShape;" -> "empty()RVoxelShape;"
      "b()RVoxelShape;" -> "block()RVoxelShape;"
    }
  }
}

World -> {
  [1.17-1.20.4] -> "net/minecraft/world/level/World"
  [1.21-26.1.2] -> "net/minecraft/world/level/Level"
  methods {
    [1.18-1.18.1] -> {
      "getChunkProvider()RIChunkProvider;" -> "L()RIChunkProvider;"
    }
    [1.18.2-1.18.9] -> {
      "getChunkProvider()RIChunkProvider;" -> "K()RIChunkProvider;"
    }
    [1.19-1.19.2] -> {
      "getChunkProvider()RIChunkProvider;" -> "I()RIChunkProvider;"
    }
    1.19.3 -> {
      "getChunkProvider()RIChunkProvider;" -> "J()RIChunkProvider;"
    }
    1.19.4 -> {
      "getChunkProvider()RIChunkProvider;" -> "I()RIChunkProvider;"
    }
    [1.20-1.20.2] -> {
      "getChunkProvider()RIChunkProvider;" -> "J()RIChunkProvider;"
    }
    [1.20.3-1.20.4] -> {
      "getChunkProvider()RIChunkProvider;" -> "L()RIChunkProvider;"
    }
    [1.21-26.1.2] -> {
      "getChunkProvider()RIChunkProvider;" -> "getChunkSource()RIChunkProvider;"
    }
  }
}

WorldServer -> {
  [1.17-1.20.4] -> "net/minecraft/server/level/WorldServer"
  [1.21-26.1.2] -> "net/minecraft/server/level/ServerLevel"
  methods {
    [1.18-1.20.4] -> {
      "rayTrace(RRayTrace;)RMovingObjectPositionBlock;" -> "a(RRayTrace;)RMovingObjectPositionBlock;"
    }
    [1.18-1.20.2] -> {
      "getChunkProvider()RChunkProviderServer;" -> "k()RChunkProviderServer;"
    }
    [1.20.3-1.20.4] -> {
      "getChunkProvider()RChunkProviderServer;" -> "l()RChunkProviderServer;"
    }
    [1.21-26.1.2] -> {
      "getChunkProvider()RChunkProviderServer;" -> "getChunkSource()RChunkProviderServer;"
      "rayTrace(RRayTrace;)RMovingObjectPositionBlock;" -> "clip(RRayTrace;)RMovingObjectPositionBlock;"
    }
  }
}

PositionMoveRotation -> {
  [1.21.4-26.1.2] -> "net/minecraft/world/entity/PositionMoveRotation"
}

