VOOZH about

URL: https://minecraft.wiki/w/Block_offset

⇱ Block offset – Minecraft Wiki


Block offset

From Minecraft Wiki
Jump to navigation Jump to search
This article has no navigation boxes.
 
Please add one or more navigation box templates to this article to help with navigation and categorization.
This topic is named from the game code.
 
While a name exists in the game code, it has not been otherwise used officially by Mojang.
👁 Image
A completely filled in 5 by 5 grid of poppies, where each flower is subject to a block offset

Certain non-solid blocks, such as short grass, pointed dripstone, and some flowers do not have their textures or hitboxes centered on blocks they are placed on, and are instead staggered in a pseudorandom manner. The offset of a block depends solely on its X and Z coordinates, and not the world seed. This means that, for example, a row of flowers at the same coordinates will always be staggered the same way between worlds, and this will not be changed by a player breaking or replacing them.

All blocks with an offset have their hitbox and/or texture translated in the X and Z axis. Some blocks such as short grass or the fern additionally have an offset in the Y axis for their textures only. The base X, Y, and Z offsets of a block are consistent between all blocks at a certain coordinate. However, some blocks (such as bamboo[Bedrock Edition only] or pointed dripstone[Java Edition only]) may use the base offset slightly differently than most blocks for block placement.

List of blocks subject to offset

[edit | edit source]

The following is a list of blocks subject to an offset in game. Most blocks have their hitbox offset to match their texture being offset, but some do not.

Blocks subject to offset
Block Hitbox XZ offset Texture XZ offset Hitbox Y offset Texture Y offset
👁 Image
Short Grass

👁 Image
Fern

👁 Image
Short Dry Grass

👁 Image
Tall Dry Grass
Yes Yes Bedrock Edition only Yes
👁 Image
Mangrove Propagule

👁 Image
Dandelion

👁 Image
Golden Dandelion

👁 Image
Torchflower

👁 Image
Poppy

👁 Image
Blue Orchid

👁 Image
Allium

👁 Image
Azure Bluet

👁 Image
Tulips

👁 Image
Oxeye Daisy

👁 Image
Cornflower

👁 Image
Wither Rose

👁 Image
Lily of the Valley

👁 Image
Bamboo Sapling

👁 Image
Bamboo

👁 Image
Pointed Dripstone

👁 Image
Sulfur Spike
Yes Yes No No
👁 Image
Sunflower

👁 Image
Lilac

👁 Image
Rose Bush

👁 Image
Peony

👁 Image
Tall Grass

👁 Image
Large Fern

👁 Image
Pitcher Plant

👁 Image
Warped Roots

👁 Image
Nether Sprouts

👁 Image
Crimson Roots

👁 Image
Hanging Roots
Bedrock Edition only Yes No No
👁 Image
Coral Fans

👁 Image
Dead Coral Fans
Bedrock Edition only Bedrock Edition only No No
👁 Image
Coral

👁 Image
Dead Coral
Bedrock Edition only No[note 1] No No
👁 Image
Tall Seagrass
No Java Edition only No No
👁 Image
Small Dripleaf
No Java Edition only No Java Edition only

Effects of block offset on textures and hitboxes

[edit | edit source]
This section needs expansion.
 
You can help by expanding it.

In Java Edition, X and Z offsets are added to the coordinates of the center of the block to determine the new center of the texture or hitbox. In Bedrock Edition, X and Z offsets are used differently depending on the block. On both versions, the Y offset is directly added to the Y coordinate of the block to determine what Y level a texture will start. A Y offset will always be negative or zero, meaning a block's texture or hitbox may be translated downwards but never upwards.

Calculation of block offset

[edit | edit source]
These calculations are exclusively for Java Edition. The algorithm used in Bedrock Edition is unknown.
 

X and Z offset

[edit | edit source]

The following algorithm is used to calculate X and Z offsets of blocks in Java Edition (except for pointed dripstone and sulfur spikes), given a block's X and Z coordinates.[1] Note that two's compliment arithmetic while treating all integers as signed 64 bit numbers must be used for correct results.[note 2]

temp1=(0x2FC20F*x)XOR(0x6EBFFF5*z)
temp2=(0x285B825*temp1*temp1)+(0x000B*temp1)
x_offset=(((temp2>>16)AND0xF)/15.0-0.5)*0.5
z_offset=(((temp2>>24)AND0xF)/15.0-0.5)*0.5

The X and Z offsets of pointed dripstone and sulfur spikes are given by calculating the x_offset and z_offset above, and clamping the values between -0.125 and 0.125. All other blocks have their X and Z offsets clamped between -0.25 and 0.25.[note 3]

Y offset

[edit | edit source]

The Y offset in Java Edition depends solely on the X and Z coordinates of a block and the block type. For all blocks with a Y offset besides small dripleaf, the Y offset is given by (using the variable temp2 from above):[1]

y_offset=(((temp2>>20)AND0xF)/15.0-1.0)*0.2

The Y offset for small dripleaf is half as much as the Y offset for other blocks at the same coordinates.

Calculator

[edit | edit source]
Block offset calculators
X 0
Z 0
Max offset 1 0.25
0.125-0.25-0.25-0.2
X offset -0.2500
Z offset -0.2500
Y offset -0.2000
Y offset (dripleaf) -0.1000

Notes

[edit | edit source]
  1. MCPE-228149 – Unlike the Coral fans, all Corals only have their hitbox randomly offcentered but not their block
  2. This corresponds to standard arithmetic operations involving the long datatype in Java.
  3. The y_offset however is not clamped
  1. a b From BlockBehaviour#offsetType(OffsetType)
Retrieved from "https://minecraft.wiki/w/Block_offset?oldid=3630231"

Navigation menu