diff --git a/game/core/src/main/java/net/minecraft/core/world/generate/chunk/ChunkFeatureDecorator.java b/game/core/src/main/java/net/minecraft/core/world/generate/chunk/ChunkFeatureDecorator.java
index e8edf3c8d..6742380cf 100644
--- a/game/core/src/main/java/net/minecraft/core/world/generate/chunk/ChunkFeatureDecorator.java
+++ b/game/core/src/main/java/net/minecraft/core/world/generate/chunk/ChunkFeatureDecorator.java
@@ -3,6 +3,8 @@ package net.minecraft.core.world.generate.chunk;
 import it.unimi.dsi.fastutil.objects.Object2IntMap;
 import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
 import net.minecraft.core.block.BlockLogicSand;
+import net.minecraft.core.util.HardIllegalArgumentException;
+import net.minecraft.core.util.collection.NamespaceID;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.chunk.Chunk;
 import org.jetbrains.annotations.NotNull;
@@ -29,8 +31,16 @@ public abstract class ChunkFeatureDecorator
 
     public abstract void registerDecorations();
 
-    public final @NotNull ChunkFeatureDecorator register(final int seed, final @NotNull ChunkDecoration decoration) {
-        this.decorations.put(decoration, seed);
+    public final @NotNull ChunkFeatureDecorator register(final @NotNull String id, final @NotNull ChunkDecoration decoration) {
+        try {
+            return this.register(new NamespaceID(id), decoration);
+        } catch (final @NotNull HardIllegalArgumentException e) {
+            throw new IllegalArgumentException(e);
+        }
+    }
+
+    public final @NotNull ChunkFeatureDecorator register(final @NotNull NamespaceID id, final @NotNull ChunkDecoration decoration) {
+        this.decorations.put(decoration, id.toString().hashCode());
 
         return this;
     }
diff --git a/game/core/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/hell/ChunkDecoratorOverworldHell.java b/game/core/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/hell/ChunkDecoratorOverworldHell.java
index cfd089622..f719594bc 100644
--- a/game/core/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/hell/ChunkDecoratorOverworldHell.java
+++ b/game/core/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/hell/ChunkDecoratorOverworldHell.java
@@ -28,7 +28,7 @@ public class ChunkDecoratorOverworldHell
 
     @Override
     public void registerDecorations() {
-        this.register(0, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/lava_lake_1", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             if (rand.nextInt(32) == 0) {
                 final int xx = worldX + rand.nextInt(16) + 8;
                 final int yy = minY + rand.nextInt(rangeY);
@@ -37,7 +37,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(1, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/lava_lake_2", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             if (rand.nextInt(16) == 0) {
                 final int xx = worldX + rand.nextInt(16) + 8;
                 final int yy = minY + rand.nextInt(rangeY - 16) + 8;
@@ -53,7 +53,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(2, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/underground_water", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             for (int i = 0; i < 50; i++) {
                 final int xx = worldX + rand.nextInt(16) + 8;
                 final int yy = minY + rand.nextInt(rangeY / 2);
@@ -64,7 +64,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(3, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/dungeon", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             for (int i = 0; i < 8; i++) {
                 final int xx = worldX + rand.nextInt(16) + 8;
                 final int yy = minY + rand.nextInt(rangeY);
@@ -77,7 +77,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(4, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/labyrinth", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             for (int i = 0; i < 1; i++) {
                 final int xx = worldX + rand.nextInt(16) + 8;
                 final int zz = worldZ + rand.nextInt(16) + 8;
@@ -93,7 +93,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(5, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/clay", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             for (int i = 0; i < 20; i++) {
                 final int xx = worldX + rand.nextInt(16);
                 final int yy = minY + rand.nextInt(rangeY);
@@ -102,7 +102,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(6, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/dirt_ore", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             for (int i = 0; i < 20; i++) {
                 final int xx = worldX + rand.nextInt(16);
                 final int yy = minY + rand.nextInt(rangeY);
@@ -111,7 +111,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(7, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/gravel_ore", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             for (int i = 0; i < 10; i++) {
                 final int xx = worldX + rand.nextInt(16);
                 final int yy = minY + rand.nextInt(rangeY);
@@ -120,7 +120,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(8, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/coal_ore", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             for (int i = 0; i < 20; i++) {
                 final int xx = worldX + rand.nextInt(16);
                 final int yy = minY + rand.nextInt(rangeY);
@@ -129,7 +129,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(9, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/iron_ore", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             for (int i = 0; i < 20; i++) {
                 final int xx = worldX + rand.nextInt(16);
                 final int yy = minY + rand.nextInt(rangeY / 2);
@@ -138,7 +138,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(10, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/gold_ore", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             for (int i = 0; i < 2; i++) {
                 final int xx = worldX + rand.nextInt(16);
                 final int yy = minY + rand.nextInt(rangeY / 4);
@@ -147,7 +147,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(11, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/redstone_ore", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             for (int i = 0; i < 8; i++) {
                 final int xx = worldX + rand.nextInt(16);
                 final int yy = minY + rand.nextInt(rangeY / 8);
@@ -156,7 +156,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(12, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/diamond_ore", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             for (int i = 0; i < 1; i++) {
                 final int xx = worldX + rand.nextInt(16);
                 final int yy = minY + rand.nextInt(rangeY / 8);
@@ -165,7 +165,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(13, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/lapis_ore", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             for (int i = 0; i < 1; i++) {
                 final int xx = worldX + rand.nextInt(16);
                 final int yy = minY + rand.nextInt(rangeY / 8) + rand.nextInt(rangeY / 8);
@@ -174,7 +174,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(14, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/oak_tree", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             final double d = 0.5D;
             int treeDensity = (int) ((this.treeDensityNoise.getValue((double) worldX * d, (double) worldZ * d) / 8D + rand.nextDouble() * 4D + 4D) / 3D);
             if (rand.nextInt(10) == 0) {
@@ -196,7 +196,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(15, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/dead_bush", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             for (int i = 0; i < 10; i++) {
                 final int xx = worldX + rand.nextInt(16) + 8;
                 final int yy = minY + rand.nextInt(rangeY);
@@ -205,7 +205,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(16, (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/underground_lava_1", (world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             for (int i = 0; i < 5; i++) {
                 final int xx = worldX + rand.nextInt(16) + 8;
                 final int yy = minY + rand.nextInt(rand.nextInt(rangeY - 8) + 8);
@@ -214,7 +214,7 @@ public class ChunkDecoratorOverworldHell
             }
         });
 
-        this.register(17, ((world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
+        this.register("minecraft:decoration/overworld/hell/underground_lava_2", ((world, chunk, worldX, worldZ, minY, maxY, rangeY, rand) -> {
             for (int i = 0; i < 20; i++) {
                 final int xx = worldX + rand.nextInt(16) + 8;
                 final int yy = minY + rand.nextInt(rand.nextInt(rand.nextInt(rangeY - rangeY / 8) + 8) + 8);
