Quirks
Quirks are often unintentional or unintuitive behaviors that occur due to poorly written or erroneous code. In spite of that, these are part of the Vanilla game, and a 100% accurate reimplementation should implement them as well.
Blocks
Wooden slab
Wooden slabs before 1.3.1 were retextured stone slabs. As a result, they required a Pickaxe to mine effectively, and produced stone particles when hit. The item was replaced by the modern wooden slab in 1.3.1, and renamed to "Petrified Oak Slab" in 1.13 (See MC Wiki).
Items
TODO
Generation
Ice and Snow
Ice is generated during the terrain shape stage anywhere the temperature is less than 0.5. However this does not line up completely with the later determined biomes, which then determine where ice and snow can form via random ticking.
| Unticked | Ticked |
|---|---|
![]() | ![]() |
This becomes more apparent when the relevant values are visualized.
| Biomes (Map Colors) + Temp < 0.5 (Red) |
|---|
Biome map with Map colors, Red marking where temperature values are less than 0.5
Snow depends on the same system to determine where it can appear, though its placed later in the population stage.
NOTE
Seed for this section is -1712183887779554298, showing the area around chunk x: -1, z:6
Farlands
The farlands are an extremely well-known terrain-generation artifact that occurs approximately +/-12,550,821 away from (0,0). The Minecraft Wiki has a highly detailed explanation of why they happen but the simplified reason can be summed up as follows.
To read data from the perlin-noise permutation table, the position the noise is sampled at must be turned into an integer.
Due to how java Java converts between types (see Casting), the resulting 32-bit Integer (int) always lands on the same permutation table entry, giving us the familiar, infinitely stretching tunnels.
Using a signed 64-bit Integer (long) can fix this problem but it changes the tree and terrain generation slightly due to rounding differences.
Nether
The Nether generator is very closely related to the overworld generation.
Not using the 2D fast path
The Nether samples the continentalness and depth noises with a max vertical size of 1, which results in it not using the 2D fast-path that was added in Alpha 1.2.0 for 2D Perlin noise. This actually matches what the Overworld generator did before Alpha 1.2.0.
Gravel and Soulsand don't generate along shores
While the laval level was changed to 32 for the main ocean of Lava, it's still 64 in the surface replacement step, resulting in Gravel and Soulsand not generating as intended.
| Original | Fixed |
|---|---|
![]() | ![]() |
Redstone
Quasi-connectivity
TODO
Double-trigger
If a Dispenser is already being powered by a lever or redstone torch, a buttons can trigger Dispensers twice on both when it presses and resets. This is because the Dispenser gets a redstone-based block update, then checks if its being powered, discovering the power by the lever/redstone torch.
Entities
Entity Id overflow
The id of entities is stored as a signed 32-bit integer, which has a maximum value of 2,147,483,647. While it's unlikely for anyone to reach or suprass this number under normal circumstances, there are certain effects that potentially occur if this number ever overflows. Any situation where the game just immediately crashes will be ignored.
Networking
Spawn Object Packet
The spawn object packet determines if an entity, such as an Arrow, has an initial velocity by checking if the owner entity id is greater than 0. If the global entity id overflows into the negatives, all arrows and fireballs would be sent without an initial velocity.



