diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/StatelessGame.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/StatelessGame.java
index 2855e20..c9efbb0 100644
--- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/StatelessGame.java
+++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/StatelessGame.java
@@ -23,6 +23,7 @@ public class StatelessGame extends Game {
 
     private int timeLimit = 0;
     private int timePlayed = 0;
+
     public StatelessGame(DynamicRegistry.Key<DimensionType> dimensionType, String gameName, Score score) {
         super(dimensionType);
         this.score = score;
diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/anvilRun/AnvilRun.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/anvilRun/AnvilRun.java
index 1cd2900..38e8082 100644
--- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/anvilRun/AnvilRun.java
+++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/anvilRun/AnvilRun.java
@@ -5,6 +5,7 @@ import eu.mhsl.minenet.minigames.score.LastWinsScore;
 import eu.mhsl.minenet.minigames.instance.Dimension;
 import eu.mhsl.minenet.minigames.util.BatchUtil;
 import eu.mhsl.minenet.minigames.world.generator.terrain.CircularPlateTerrainGenerator;
+import net.minestom.server.MinecraftServer;
 import net.minestom.server.coordinate.Pos;
 import net.minestom.server.entity.Entity;
 import net.minestom.server.entity.EntityType;
@@ -13,6 +14,8 @@ import net.minestom.server.event.entity.EntityTickEvent;
 import net.minestom.server.event.player.PlayerMoveEvent;
 import net.minestom.server.instance.batch.AbsoluteBlockBatch;
 import net.minestom.server.instance.block.Block;
+import net.minestom.server.timer.Scheduler;
+import net.minestom.server.timer.TaskSchedule;
 import org.jetbrains.annotations.NotNull;
 
 import java.util.ArrayList;
@@ -23,11 +26,13 @@ class AnvilRun extends StatelessGame {
 
     final int spawnHeight = 30;
     final int radius;
-    final List<Entity> anvils = new ArrayList<>();
+    final int speed;
+    final List<Pos> anvilSpawnPositions = new ArrayList<>();
 
-    public AnvilRun(int radius, int pvpEnabled) {
+    public AnvilRun(int radius, int speed) {
         super(Dimension.THE_END.key, "Anvil Run", new LastWinsScore());
         this.radius = radius;
+        this.speed = speed;
         this.setGenerator(new CircularPlateTerrainGenerator(radius));
     }
 
@@ -40,12 +45,8 @@ class AnvilRun extends StatelessGame {
                 if(new Pos(x, 0, z).distance(new Pos(0, 0, 0)) > radius) continue;
 
                 int height = super.rnd.nextInt(100, 500);
-                Entity anvil = new Entity(EntityType.FALLING_BLOCK);
-                ((FallingBlockMeta) anvil.getEntityMeta()).setBlock(Block.ANVIL);
-                anvil.setNoGravity(true);
-                anvil.setInstance(this, new Pos(x+0.5, height, z+0.5));
 
-                anvils.add(anvil);
+                anvilSpawnPositions.add(new Pos(x+0.5, height, z+0.5));
 
                 batch.setBlock(x, spawnHeight-1, z, Block.SNOW_BLOCK);
             }
@@ -54,11 +55,25 @@ class AnvilRun extends StatelessGame {
         BatchUtil.loadAndApplyBatch(batch, this, () -> callback.complete(null));
     }
 
+    protected void spawnAnvil(Pos spawnPosition) {
+        Entity anvil = new Entity(EntityType.FALLING_BLOCK);
+        ((FallingBlockMeta) anvil.getEntityMeta()).setBlock(Block.ANVIL);
+        anvil.setInstance(this, spawnPosition);
+    }
+
     @Override
     protected void onStart() {
         super.onStart();
 
-        anvils.forEach(anvil -> anvil.setNoGravity(false));
+        Scheduler scheduler = MinecraftServer.getSchedulerManager();
+        scheduler.submitTask(() -> {
+            if(anvilSpawnPositions.isEmpty()) return TaskSchedule.stop();
+            for(int i = 0; i < speed; i++) {
+                Pos position = anvilSpawnPositions.remove(super.rnd.nextInt(0, anvilSpawnPositions.size()-1));
+                spawnAnvil(position);
+            }
+            return TaskSchedule.seconds(1);
+        });
     }
 
     @Override
diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/anvilRun/AnvilRunFactory.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/anvilRun/AnvilRunFactory.java
index 403acc0..5901c68 100644
--- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/anvilRun/AnvilRunFactory.java
+++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/anvilRun/AnvilRunFactory.java
@@ -26,13 +26,12 @@ public class AnvilRunFactory implements GameFactory {
     public ConfigManager configuration() {
         return new ConfigManager()
             .addOption(new NumericOption("radius", Material.HEART_OF_THE_SEA, TranslatedComponent.byId("optionCommon#radius"), 5, 10, 15, 20, 25, 30))
-            .addOption(new NumericOption("pvpEnabled", Material.STICK, TranslatedComponent.byId("game_Deathcube#optionPvpEnabled"), 1, 0));
-
+            .addOption(new NumericOption("speed", Material.STICK, TranslatedComponent.byId("game_Deathcube#speed"), 10, 25, 50, 100, 250, 500));
     }
 
     @Override
     public Game manufacture(Room parent, Map<String, Option<?>> configuration) {
-        return new AnvilRun(configuration.get("radius").getAsInt(), configuration.get("pvpEnabled").getAsInt()).setParent(parent);
+        return new AnvilRun(configuration.get("radius").getAsInt(), configuration.get("speed").getAsInt()).setParent(parent);
     }
 
     @Override
diff --git a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/deathcube/Deathcube.java b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/deathcube/Deathcube.java
index fe95674..fc79e93 100644
--- a/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/deathcube/Deathcube.java
+++ b/src/main/java/eu/mhsl/minenet/minigames/instance/game/stateless/types/deathcube/Deathcube.java
@@ -24,7 +24,7 @@ class Deathcube extends StatelessGame {
         this.radius = radius;
         this.height = height + 49;
         this.percentage = percentage;
-        this.setGenerator(new CircularPlateTerrainGenerator(radius+10).setPlateHeight(50).setGenerateBorders(true));
+        this.setGenerator(new CircularPlateTerrainGenerator(radius+10).setPlateHeight(50));
 
 //        if(pvpEnabled == 1) eventNode().addChild( // TODO update
 //                PvPConfig.emptyBuilder()
@@ -57,12 +57,20 @@ class Deathcube extends StatelessGame {
     @Override
     protected void onPlayerMove(@NotNull PlayerMoveEvent playerMoveEvent) {
         super.onPlayerMove(playerMoveEvent);
-        if(isBeforeBeginning) if(playerMoveEvent.getNewPosition().y() > 51.5) playerMoveEvent.setCancelled(true);
+        if(playerMoveEvent.getNewPosition().y() < 48) {
+            playerMoveEvent.setCancelled(true);
+            playerMoveEvent.getPlayer().teleport(getSpawn());
+            return;
+        }
+        if(isBeforeBeginning && playerMoveEvent.getNewPosition().y() > 51.5) {
+            playerMoveEvent.setCancelled(true);
+            return;
+        }
         if(playerMoveEvent.getNewPosition().y() > height) getScore().insertResult(playerMoveEvent.getPlayer());
     }
 
     @Override
     public Pos getSpawn() {
-        return new Pos(0, radius+5, 30);
+        return new Pos(0, 50, -(radius+5));
     }
 }