I am trying to create a python code to search/manipulate the region files to find blocks or to place blocks. In order to do so, I need to know the item ID of blocks. For diamond_ore, this item ID is 56, for example: https://minecraftitemids.com/2
The save format is also completely different from before - IDs are no longer saved directly, but rather, the game uses a palette to translate between global IDs and section-local IDs; for example, prior to 1.13 a section within a Mushroom Island biome might have looked like this, with only the numerical IDs saved, and another array was used to store metadata/block states, again only the numerical values:
Metadata:
Air: 0
Stone: 0
Dirt: 0
Gravel: 0
Coal Ore: 0
Red Mushroom: 0
Brown Mushroom Block (cap texture on top and east): 6
Brown Mushroom Block (cap texture on top and west): 4
Brown Mushroom Block (cap texture on top and north): 2
Brown Mushroom Block (cap texture on top and south): 8
Brown Mushroom Block (cap texture on top): 5
Brown Mushroom Block (stem texture on west, east, north, south): 10
Mycelium: 0
Snow Layer: 0
Now it might look like this, with the block names saved as well so the game can translate the local IDs to the actual block name, which is all that exists in-game (numerical IDs are still saved because they take up far less space than strings; the actual block names are also in the format of "minecraft:stone" and the entries are a block state instead of just an ID; the metadata array no longer exists and many blocks were split into separate blocks, such as mushroom stems, which used to be a variant of red/brown mushroom blocks, and snowy grass/mycelium, which used to be based on whether there was snow on top when it was rendered, now they have an actual state, hence the bug where you can find snowy grass without snow on it):
Air: 0
Cave Air: 1
Stone: 2
Dirt: 3
Gravel: 4
Coal Ore: 5
Red Mushroom: 6
Brown Mushroom Block (cap texture on top and east): 7
Brown Mushroom Block (cap texture on top and west): 8
Brown Mushroom Block (cap texture on top and north): 9
Brown Mushroom Block (cap texture on top and south): 10
Brown Mushroom Block (cap texture on top): 11
Mushroom Stem (stem texture on west, east, north, south): 12
Mycelium: 13
Mycelium (snowy): 14
Snow Layer: 15
To further complicate matters, the game no longer stores IDs in a regular array; previously there was a byte array with 4096 elements for each 16x16x16 section, plus another 2048 element array for metadata, with each block using half of a byte, which was saved with the exact same format used in memory, now there is a variable length array of 64 bit longs whose size depends on the number of palette entries (for 1-16 blocks there are 4 bits per block and 256 longs, for 17-32 blocks there are 5 bits and 342 longs, and so on, up to a maximum of 12 bits per block and 820 longs for up to 4096 unique blocks, the maximum number of blocks in a section), with each long split into 4-12 bit fields (e.g. for 1-16 blocks entry 1 uses bits 1-4, entry 2 uses bits 5-8, and so on. If there aren't enough bits left within a long the game goes to the next one; for 5 bits per entry there will be 12 entries per long with 4 bits left over).
I am trying to create a python code to search/manipulate the region files to find blocks or to place blocks. In order to do so, I need to know the item ID of blocks. For diamond_ore, this item ID is 56, for example: https://minecraftitemids.com/2
But when looking at soul soil, for example (https://minecraftitemids.com/8) I do not find the item ID!
Where can I find a complete list of item ID's for all of the blocks?
Blocks/Items added with 1.13 or newer don't have a numeric ID anymore
With this update they changed the ID-system
The save format is also completely different from before - IDs are no longer saved directly, but rather, the game uses a palette to translate between global IDs and section-local IDs; for example, prior to 1.13 a section within a Mushroom Island biome might have looked like this, with only the numerical IDs saved, and another array was used to store metadata/block states, again only the numerical values:
Now it might look like this, with the block names saved as well so the game can translate the local IDs to the actual block name, which is all that exists in-game (numerical IDs are still saved because they take up far less space than strings; the actual block names are also in the format of "minecraft:stone" and the entries are a block state instead of just an ID; the metadata array no longer exists and many blocks were split into separate blocks, such as mushroom stems, which used to be a variant of red/brown mushroom blocks, and snowy grass/mycelium, which used to be based on whether there was snow on top when it was rendered, now they have an actual state, hence the bug where you can find snowy grass without snow on it):
To further complicate matters, the game no longer stores IDs in a regular array; previously there was a byte array with 4096 elements for each 16x16x16 section, plus another 2048 element array for metadata, with each block using half of a byte, which was saved with the exact same format used in memory, now there is a variable length array of 64 bit longs whose size depends on the number of palette entries (for 1-16 blocks there are 4 bits per block and 256 longs, for 17-32 blocks there are 5 bits and 342 longs, and so on, up to a maximum of 12 bits per block and 820 longs for up to 4096 unique blocks, the maximum number of blocks in a section), with each long split into 4-12 bit fields (e.g. for 1-16 blocks entry 1 uses bits 1-4, entry 2 uses bits 5-8, and so on. If there aren't enough bits left within a long the game goes to the next one; for 5 bits per entry there will be 12 entries per long with 4 bits left over).
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?