diff --git a/server/src/cmd.rs b/server/src/cmd.rs
index 832289ec9f..5d95344c40 100644
--- a/server/src/cmd.rs
+++ b/server/src/cmd.rs
@@ -3108,28 +3108,36 @@ fn handle_battlemode(
 ) -> CmdResult<()> {
     let ecs = server.state.ecs();
     let settings = ecs.read_resource::<Settings>();
-    if !settings.battle_mode.allow_choosing() {
-        return Err("Toggling battlemode is disabled.".to_owned());
-    }
     if let Some(mode) = parse_args!(args, String) {
-        let world = &server.world;
-        let index = &server.index;
-        let sim = world.sim();
-        let pos = position(server, target, "target")?;
-        let chunk_pos = Vec2::from(pos.0).map(|x: f32| x as i32);
-        let chunk = sim
-            .get(chunk_pos)
-            .ok_or("Cannot get current chunk for target")?;
-        let site_ids = &chunk.sites;
-        let mut in_town = false;
-        for site_id in site_ids.iter() {
-            let site = index.sites.get(*site_id);
-            if matches!(site.kind, SiteKind::Settlement(_)) {
-                in_town = true;
-                break;
-            }
+        if !settings.battle_mode.allow_choosing() {
+            return Err("Toggling battlemode is disabled.".to_owned());
         }
 
+        #[cfg(feature = "worldgen")]
+        let in_town = {
+            let world = &server.world;
+            let index = &server.index;
+            let sim = world.sim();
+            let pos = position(server, target, "target")?;
+            let chunk_pos = Vec2::from(pos.0).map(|x: f32| x as i32);
+            let chunk = sim
+                .get(chunk_pos)
+                .ok_or("Cannot get current chunk for target")?;
+            let site_ids = &chunk.sites;
+            let mut in_town = false;
+            for site_id in site_ids.iter() {
+                let site = index.sites.get(*site_id);
+                if matches!(site.kind, SiteKind::Settlement(_)) {
+                    in_town = true;
+                    break;
+                }
+            }
+            in_town
+        };
+        // just skip this check, if worldgen is disabled
+        #[cfg(not(feature = "worldgen"))]
+        let in_town = true;
+
         if !in_town {
             return Err("You can change battle_mode only in town".to_owned());
         }