🌍 Map & Environment API¶
This section covers interacting with the physical game world, weather, buildings, and zones.
Map Controller¶
Сосредоточен на Локальной карте, выбранной по map_id. Он управляет физическим ландшафтом и условиями в непосредственной близости от поселения.
Scope
Этот контроллер имеет дело с окружающей средой, а не с сущностями внутри неё. Для пешек или предметов см. их соответствующие контроллеры.
Возможности:
- Изменение локальной погоды.
- Запрос размера и границ карты.
- Изменение ландшафта (установка полов, очистка от мусора).
GET
/api/v1/map/things
¶
/api/v1/map/things
¶
Возвращает полный список всех объектов (things), присутствующих на текущей карте.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/map/things?map_id=0
Response:
{
"success": true,
"data": [
{
"thing_id": 2328,
"def_name": "ChunkGranite",
"label": "granite chunk",
"categories": [
"StoneChunks"
],
"position": {
"x": 41,
"y": 0,
"z": 1
},
"stack_count": 1,
"market_value": 0.0,
"is_forbidden": false,
"quality": -1,
"hit_points": 300,
"max_hit_points": 300
},
{
"thing_id": 4895,
"def_name": "MealSurvivalPack",
"label": "packaged survival meal",
"categories": [
"FoodMeals"
],
"position": {
"x": 13,
"y": 0,
"z": 62
},
"stack_count": 1,
"market_value": 24.0,
"is_forbidden": true,
"quality": -1,
"hit_points": 50,
"max_hit_points": 50
},
<...>
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
GET
/api/v1/maps
¶
/api/v1/maps
¶
Получает список всех загруженных в данный момент карт в игровой сессии.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/maps
Response:
{
"success": true,
"data": [
{
"id": 0,
"index": 0,
"seed": 16622162,
"faction_id": "14",
"is_player_home": true,
"is_pocket_map": false,
"is_temp_incident_map": false,
"size": "(150, 1, 150)"
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:38:45.9289233Z"
}
GET
/api/v1/map/pawns
¶
/api/v1/map/pawns
¶
Получает список всех поселенцев/пешек, присутствующих на указанной карте. Возвращает ключевую информацию о состоянии, такую как здоровье, настроение и положение для каждого.
curl --request GET \
--url 'http://localhost:8765/api/v1/map/pawns?mapId=0'
Response:
{
"success": true,
"data": [
{
"id": 148,
"name": "Val",
"gender": "Female",
"age": 25,
"health": 1.0,
"mood": 0.85,
"hunger": 0.2,
"position": {
"x": 102,
"y": 0,
"z": 115
}
},
{
"id": 149,
"name": "Stumpy",
"gender": "Male",
"age": 42,
"health": 0.65,
"mood": 0.4,
"hunger": 0.8,
"position": {
"x": 105,
"y": 0,
"z": 112
}
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T14:30:00.0000000Z"
}
GET
/api/v1/map/terrain
¶
/api/v1/map/terrain
¶
Возвращает полные данные о сетке ландшафта и пола для указанной карты.
Примечание к формату данных: Для оптимизации пропускной способности эта конечная точка использует кодирование длин серий (Run-Length Encoding, RLE) и палитру (Palette Mapping).
palette: Список уникальных определений ландшафта (например, "Soil", "WaterDeep").grid: Сжатый список целых чисел, представляющих ячейки карты. Формат — пары[count, palette_index].
Пример декодирования: Сетка [10, 0, 5, 2] означает "10 ячеек palette[0], за которыми следуют 5 ячеек palette[2]".
Example:
curl --request GET \
--url http://localhost:8765/api/v1/map/terrain?map_id=0
Response:
{
"success": true,
"data": {
"width": 250,
"height": 250,
"palette": [
"Soil",
"Gravel",
"SoilRich",
"WaterDeep"
],
"grid": [
22,
0,
5,
1,
500,
0,
10,
3
],
"floor_palette": [
"WoodPlankFloor",
"TileSandstone"
],
"floor_grid": [
62400,
0,
50,
1,
50,
2
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-14T13:12:28.8217513Z"
}
GET
/api/v1/map/things-at
¶
/api/v1/map/things-at
¶
Возвращает список объектов, расположенных в определенной ячейке по её координатам.
Примечание: В отличие от стандартных GET-запросов, эта конечная точка требует тело JSON, содержащее координаты.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/map/things-at \
--header 'Content-Type: application/json' \
--data '{
"map_id": 0,
"position": { "x": 15, "y": 0, "z": 25 }
}'
Request Body:
{
"map_id": 0,
"position": {
"x": 15,
"y": 0,
"z": 25
}
}
Response:
{
"success": true,
"data": [
{
"thing_id": 4895,
"def_name": "MealSurvivalPack",
"label": "packaged survival meal",
"position": { "x": 15, "y": 0, "z": 25 },
"stack_count": 10
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-14T13:40:00.000Z"
}
GET
/api/v1/map/things/radius
¶
/api/v1/map/things/radius
¶
Возвращает список всех объектов, найденных в указанном радиусе вокруг центральной точки. Полезно для поиска ближайших ресурсов или врагов.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/map/things/radius?map_id=0&x=120&z=120&radius=10"
Response:
{
"success": true,
"data": [
{
"thing_id": 2328,
"def_name": "ChunkGranite",
"label": "granite chunk",
"position": { "x": 121, "y": 0, "z": 119 },
"stack_count": 1
},
{
"thing_id": 5012,
"def_name": "Steel",
"label": "steel",
"position": { "x": 118, "y": 0, "z": 122 },
"stack_count": 35
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-14T13:42:00.000Z"
}
GET
/api/v1/map/ore
¶
/api/v1/map/ore
¶
Возвращает сжатый словарь всех залежей руды на карте.
Структура:
* Ключи — это имена определений руды (например, "MineableSteel").
* cells содержит индексы ячеек карты, где находится руда.
* hp содержит текущее здоровье блока руды в соответствующем индексе (параллельные массивы).
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/map/ore?map_id=0"
Response:
{
"success": true,
"data": {
"map_width": 250,
"ores": {
"MineableSteel": {
"max_hp": 1500,
"cells": [
12500,
12501,
12502
],
"hp": [
1500,
1500,
850
]
},
"MineableGold": {
"max_hp": 500,
"cells": [
3005
],
"hp": [
500
]
}
}
},
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
GET
/api/v1/map/fog-grid
¶
/api/v1/map/fog-grid
¶
Извлекает сетку видимости (туман войны) для текущей карты.
fog_data — это плоское строковое представление сетки, где Index = (z * Width) + x.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/map/fog-grid?map_id=0"
Response:
{
"success": true,
"data": {
"map_id": 0,
"width": 250,
"height": 250,
"fog_data": "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+fw=="
},
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
GET
/api/v1/map/plants
¶
/api/v1/map/plants
¶
Возвращает список всех растений, расположенных на указанной карте. Сюда входят дикие растения (деревья, кусты, трава) и посеянные культуры.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/map/plants?map_id=0"
Response:
{
"success": true,
"data": [
{
"thing_id": 1024,
"def_name": "Plant_TreeOak",
"label": "oak tree",
"position": { "x": 45, "y": 0, "z": 88 },
"growth": 0.85
},
{
"thing_id": 1025,
"def_name": "Plant_Potato",
"label": "potato plant",
"position": { "x": 50, "y": 0, "z": 50 },
"growth": 0.45
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-14T14:12:00.000Z"
}
GET
/api/v1/map/weather
¶
/api/v1/map/weather
¶
Получает текущие погодные условия и температуру для текущей активной карты (карты, которую просматривает игрок).
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/map/weather?map_id=0'
Response:
{
"success": true,
"data": {
"weather": "Rain",
"temperature": 19.7876511
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:39:54.5380426Z"
}
GET
/api/v1/map/animals
¶
/api/v1/map/animals
¶
Получает список всех животных, присутствующих в данный момент на активной карте. Сюда входят как дикие животные, так и прирученные/собственные (питомцы, скот, животные караванов).
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/map/animals?map_id=0'
Response:
{
"success": true,
"data": [
{
"id": 3633,
"name": "Colin",
"def": "Yak",
"faction": "PlayerColony",
"position": {
"x": 67,
"y": 119,
"z": 0
},
"pregnant": false
},
{
"id": 8547,
"name": "Hare",
"def": "Hare",
"position": {
"x": 50,
"y": 40,
"z": 0
},
"pregnant": false
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:41:34.3358819Z"
}
GET
/api/v1/map/zones
¶
/api/v1/map/zones
¶
Получает список всех определенных зон и областей на активной карте. Зоны назначаются игроком, а области имеют конкретное назначение, такие как постройка крыши, очистка от загрязнения и т. д.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/map/zones?map_id=0'
Response:
{
"success": true,
"data": {
"zones": [],
"areas": [
{
"id": 0,
"cells_count": 0,
"label": "Home",
"base_label": "Home",
"type": "Area_Home"
},
{
"id": 1,
"cells_count": 0,
"label": "Build roof",
"base_label": "Build roof",
"type": "Area_BuildRoof"
},
{
"id": 2,
"cells_count": 0,
"label": "No roof",
"base_label": "No roof",
"type": "Area_NoRoof"
},
{
"id": 3,
"cells_count": 0,
"label": "Snow clear",
"base_label": "Snow clear",
"type": "Area_SnowClear"
},
{
"id": 4,
"cells_count": 0,
"label": "Pollution clear",
"base_label": "Pollution clear",
"type": "Area_PollutionClear"
},
{
"id": 5,
"cells_count": 0,
"label": "Area 1",
"base_label": "Area 1",
"type": "Area_Allowed"
}
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:42:50.3515476Z"
}
GET
/api/v1/map/building/info
¶
/api/v1/map/building/info
¶
Получает подробную информацию о конкретном здании на активной карте по его уникальному идентификатору.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/building/info?id=51058'
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:53:16.733319Z"
}
POST
/api/v1/map/weather/change
¶
/api/v1/map/weather/change
¶
Вручную изменяет текущие погодные условия на активной карте.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/map/weather/change?map_id=0&name=Clear'
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:53:16.733319Z"
}
GET
/api/v1/map/power/info
¶
/api/v1/map/power/info
¶
Предоставляет подробную информацию об энергосети на текущей карте, включая генераторы, аккумуляторы, потребителей, баланс сети и статус потока энергии.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/map/power/info?map_id=0
Response:
{
"success": true,
"data": {
"produce_power_buildings": [],
"consume_power_buildings": [],
"store_power_buildings": [],
"current_power": 0,
"total_possible_power": 0,
"currently_stored_power": 0,
"total_power_storage": 0,
"total_consumption": 0,
"consumption_power_on": 0
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:48:05.7377482Z"
}
GET
/api/v1/map/creatures/summary
¶
/api/v1/map/creatures/summary
¶
Возвращает сводный подсчет и классификацию всех существ (пешек) на текущей карте.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/map/creatures/summary?map_id=0
Response:
{
"success": true,
"data": {
"colonists_count": 3,
"prisoners_count": 0,
"enemies_count": 0,
"animals_count": 5,
"insectoids_count": 0,
"mechanoids_count": 0
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:49:21.2287056Z"
}
GET
/api/v1/map/farm/summary
¶
/api/v1/map/farm/summary
¶
Получает сводку по всей фермерской деятельности на текущей карте, включая посаженные культуры, стадии роста, плодородие почвы и ожидаемую урожайность.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/map/farm/summary?map_id=0
Response:
{
"success": true,
"data": {
"total_growing_zones": 0,
"total_plants": 0,
"total_expected_yield": 0,
"total_infected_plants": 0,
"growth_progress_average": 0.0,
"crop_types": []
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:52:41.9403791Z"
}
POST
/api/v1/map/zone/growing
¶
/api/v1/map/zone/growing
¶
Создать новую зону выращивания для определенного типа растений в списке целевых ячеек. Ячейки, находящиеся вне границ или уже занятые другими зонами, будут пропущены.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/map/zone/growing' \
--header 'content-type: application/json' \
--data '{
"map_id": 0,
"plant_def": "Plant_Rice",
"point_a": {"x":120,"y":0,"z":130},
"point_b": {"x":125,"y":0,"z":135}
}'
Request:
{
"map_id": 0,
"plant_def": "Plant_Rice",
"point_a": {"x":120,"y":0,"z":130},
"point_b": {"x":125,"y":0,"z":135}
}
Response:
{
"success": true,
"data": {
"zone": {
"id": 5,
"cells_count": 36,
"label": "Growing zone 1",
"base_label": "Growing zone"
},
"plant_def_name": "Plant_Rice",
"plant_count": 6,
"def_expected_yield": 174,
"expected_yield": 0,
"infected_count": 0,
"growth_progress": 0.202831179,
"is_sowing": true,
"soil_type": "Mud",
"fertility": 0.6,
"has_dying": false,
"has_dying_from_pollution": false,
"has_dying_from_no_pollution": false
},
"errors": [],
"warnings": [],
"timestamp": "2026-03-28T13:51:53.9267279Z"
}
GET
/api/v1/map/rooms
¶
/api/v1/map/rooms
¶
Возвращает список всех комнат на карте с их характеристиками, такими как роль, температура и количество ячеек.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/map/rooms?map_id=0
Response:
{
"success": true,
"data": {
"rooms": [
{
"id": 5,
"role_label": "none",
"temperature": 4.217273,
"cells_count": 0,
"touches_map_edge": false,
"is_prison_cell": false,
"is_doorway": false,
"open_roof_count": 0,
"contained_beds_ids": []
},
{
"id": 61,
"role_label": "bedroom",
"temperature": 4.217273,
"cells_count": 6,
"touches_map_edge": false,
"is_prison_cell": false,
"is_doorway": false,
"open_roof_count": 6,
"contained_beds_ids": [
8408
]
}
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:57:48.1578638Z"
}
GET
/api/v1/map/buildings
¶
/api/v1/map/buildings
¶
Получает исчерпывающий список всех зданий и сооружений, присутствующих на активной карте.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/map/buildings?map_id=0'
Response:
{
"success": true,
"data": [
{
"id": 8880,
"def": "Turret_MiniTurret",
"label": "steel mini-turret",
"position": {
"x": 60,
"y": 0,
"z": 86
},
"type": "Building_TurretGun"
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:46:33.2115192Z"
}
POST
/api/v1/map/destroy/corpses
¶
/api/v1/map/destroy/corpses
¶
Уничтожает все трупы на карте.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/map/destroy/corpses
POST
/api/v1/map/destroy/forbidden
¶
/api/v1/map/destroy/forbidden
¶
Уничтожает все запрещенные предметы на карте.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/map/destroy/forbidden
POST
/api/v1/map/destroy/rect
¶
/api/v1/map/destroy/rect
¶
Уничтожает все объекты в указанном прямоугольнике на карте.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/map/destroy/rect \
--header 'content-type: application/json' \
--data '{
"map_id": 0,
"point_a": {"x": 7, "y": 0, "z": 7},
"point_b": {"x": 32, "y": 0, "z": 32}
}'
Request:
{
"map_id": 0,
"point_a": {"x": 7, "y": 0, "z": 7},
"point_b": {"x": 32, "y": 0, "z": 32}
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T11:04:27.9729153Z"
}
POST
/api/v1/map/repair/positions
¶
/api/v1/map/repair/positions
¶
Ремонтирует предметы, размещенные по предоставленному списку позиций.
POST
/api/v1/map/repair/rect
¶
/api/v1/map/repair/rect
¶
Ремонтирует все подлежащие ремонту предметы в указанном прямоугольнике на карте.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/map/repair/rect \
--header 'content-type: application/json' \
--data '{
"map_id": 0,
"point_a": {"x": 7, "y": 0, "z": 7},
"point_b": {"x": 32, "y": 0, "z": 32}
}'
Request:
{
"map_id": 0,
"point_a": {"x": 7, "y": 0, "z": 7},
"point_b": {"x": 32, "y": 0, "z": 32}
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T11:04:27.9729153Z"
}
POST
/api/v1/map/droppod
¶
/api/v1/map/droppod
¶
Создает десантную капсулу (drop pod) в указанной позиции с заданным содержимым.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/map/droppod' \
--header 'content-type: application/json' \
--data '{
"map_id": 0,
"position": {"x": 15, "y": 0, "z": 15},
"items": [{"def_name": "ComponentIndustrial", "quality": 3, "count": 1}],
"open_delay": true
}'
Request:
{
"map_id": 0,
"position": {"x": 15, "y": 0, "z": 15},
"items": [{"def_name": "ComponentIndustrial", "quality": 3, "count": 1}],
"open_delay": true
}
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T11:04:27.9729153Z"
}
POST
/api/v1/map/zone/stockpile
¶
/api/v1/map/zone/stockpile
¶
Создать новую зону склада на карте с определенными границами координат и фильтрами предметов.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/map/zone/stockpile' \
--header 'content-type: application/json' \
--data '{
"map_id": 0,
"point_a": {"x": 10, "y": 0, "z": 10},
"point_b": {"x": 15, "y": 0, "z": 15},
"name": "High Quality Steel",
"priority": 4,
"allowed_item_defs": ["Steel"],
"allowed_item_categories": [],
"min_hit_points_percent": 0.5,
"max_hit_points_percent": 1.0,
"min_quality": "Normal",
"max_quality": "Legendary"
}'
Request:
{
"map_id": 0,
"point_a": {"x": 10, "y": 0, "z": 10},
"point_b": {"x": 15, "y": 0, "z": 15},
"name": "High Quality Steel",
"priority": 4,
"allowed_item_defs": ["Steel"],
"allowed_item_categories": [],
"min_hit_points_percent": 0.5,
"max_hit_points_percent": 1.0,
"min_quality": "Normal",
"max_quality": "Legendary"
}
Response:
{
"success": true,
"data": {
"zone_id": 6,
"name": "Stockpile 3",
"cells_count": 36,
"priority": 0,
"success": true,
"message": "Stockpile 'Stockpile 3' created successfully with 36 cells."
},
"errors": [],
"warnings": [],
"timestamp": "2026-03-28T13:52:52.7387655Z"
}
POST
/api/v1/map/zone/stockpile/update
¶
/api/v1/map/zone/stockpile/update
¶
Обновить параметры существующей зоны склада, включая разрешенные предметы, категории и фильтры качества/ОЗ.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/map/zone/stockpile/update' \
--header 'content-type: application/json' \
--data '{
"zone_id": 142,
"name": "Updated Steel & Wood",
"priority": 5,
"add_item_defs": ["WoodLog"],
"remove_item_defs": [],
"add_item_categories": [],
"remove_item_categories": [],
"min_hit_points_percent": 0.1,
"max_hit_points_percent": 1.0,
"min_quality": "Awful",
"max_quality": "Legendary"
}'
Request:
{
"zone_id": 142,
"name": "Updated Steel & Wood",
"priority": 5,
"add_item_defs": ["WoodLog"],
"remove_item_defs": [],
"add_item_categories": [],
"remove_item_categories": [],
"min_hit_points_percent": 0.1,
"max_hit_points_percent": 1.0,
"min_quality": "Awful",
"max_quality": "Legendary"
}
Response:
{
"success": true,
"data": {
"zone_id": 142,
"name": "Updated Steel & Wood",
"cells_count": 36,
"priority": 5,
"success": true,
"message": null
},
"errors": [],
"warnings": [],
"timestamp": "2026-03-28T14:35:00.0000000Z"
}
DELETE
/api/v1/map/zone/stockpile/delete
¶
/api/v1/map/zone/stockpile/delete
¶
Удалить зону склада по её ID.
Example:
curl --request DELETE \
--url 'http://localhost:8765/api/v1/map/zone/stockpile/delete?zone_id=142'
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2026-03-28T14:40:00.0000000Z"
}
POST
/api/v1/map/building/power
¶
/api/v1/map/building/power
¶
Переключить состояние питания (вкл/выкл) для переключаемого здания (например, солнечные лампы, турели, производственные станки) через его компонент CompFlickable.
Example:
curl --request POST \
--url 'http://localhost:8765/api/v1/map/building/power?buildingId=123&powerOn=true'
Response:
{
"success": true,
"errors": [],
"warnings": [],
"timestamp": "2026-03-28T16:00:00.0000000Z"
}
GET
/api/v1/datetime
¶
/api/v1/datetime
¶
Возвращает текущую игровую дату и время в соответствии с мировым календарем RimWorld.
Пример:
curl --request GET \
--url http://localhost:8765/api/v1/datetime
Ответ:
{
"success": true,
"data": {
"datetime": "12th of Aprimay, 5500, 17h"
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:05:35.3244951Z"
}
GET
/api/v1/datetime/tile
¶
/api/v1/datetime/tile
¶
Возвращает игровую дату и время с учётом сезонного смещения конкретного тайла мира.
Пример:
curl --request GET \
--url 'http://localhost:8765/api/v1/datetime/tile?tile=42'
Ответ:
{
"success": true,
"data": {
"datetime": "12th of Aprimay, 5500, 17h"
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-10T19:05:35.3244951Z"
}
Глобальная карта¶
Работает на планетарном масштабе. Этот контроллер взаимодействует с объектами, которые существуют на карте мира, а не на локальной карте колонии.
- Караваны: Отслеживание перемещения, ожидаемого времени прибытия (ETA) и инвентаря путешествующих групп.
- Поселения: Поиск баз других фракций и мест выполнения квестов.
- Гексы (Tiles): Запрос данных о биоме, температуре и ландшафте для конкретных секторов мира.
GET
/api/v1/world/caravans
¶
/api/v1/world/caravans
¶
Возвращает список всех активных караванов, находящихся в данный момент на карте мира. Сюда входят караваны игрока и видимые караваны других фракций. Возвращает подробности о местоположении, пункте назначения и содержимом (существа/предметы).
Example:
curl --request GET \
--url http://localhost:8765/api/v1/world/caravans
Response:
{
"success": true,
"data": [
{
"id": 11,
"name": "Rosa's caravan",
"is_player_controlled": true,
"position": {
"x": 1,
"y": 65,
"z": -75
},
"tile": 232,
"pawns": [
{
"id": 74,
"name": "Rosa"
}
],
"items": [
{
"thing_id": 74,
"def_name": "Human",
"label": "Rosa<color=#999999FF>, Explorer</color>",
"categories": [],
"position": {
"x": 143,
"y": 0,
"z": 62
},
"stack_count": 1,
"market_value": 840.0,
"is_forbidden": false,
"quality": -1,
"hit_points": 0,
"max_hit_points": 0
}
],
"mass_usage": 0.75,
"mass_capacity": 28.0,
"forageability": "Forageable",
"visibility": "0.16"
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-13T11:01:59.5952054Z"
}
GET
/api/v1/world/settlements
¶
/api/v1/world/settlements
¶
Возвращает список всех постоянных поселений (баз) на карте мира. Сюда входят колонии игрока и базы других фракций. Полезно для поиска торговых партнеров или целей для рейдов.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/world/settlements
Response:
{
"success": true,
"data": [
{
"id": 0,
"name": "Planeton",
"tile": 2241,
"faction": {
"load_id": 0,
"def_name": "OutlanderCivil",
"name": "Dinium",
"is_player": false,
"leader_title": "Spiritual Bodhisattva",
"leader_id": 10
}
},
{
"id": 1,
"name": "Borne",
"tile": 1031,
"faction": {
"load_id": 1,
"def_name": "TribeCivil",
"name": "Union of Cheñoalo",
"is_player": false,
"leader_title": "Anima Chief",
"leader_id": 19
}
},
{
"id": 2,
"name": "Carsium",
"tile": 387,
"faction": {
"load_id": 2,
"def_name": "Empire",
"name": "Imperium of God",
"is_player": false,
"leader_title": "High Stellarch",
"leader_id": 25
}
},
{
"id": 3,
"name": "Colony",
"tile": 232,
"faction": {
"load_id": 14,
"def_name": "PlayerColony",
"name": "New Arrivals",
"is_player": true,
"leader_title": "Spirit Curate",
"leader_id": 0
}
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-13T11:02:36.2212158Z"
}
GET
/api/v1/world/sites
¶
/api/v1/world/sites
¶
Возвращает список временных объектов мира. Сюда входят места выполнения квестов, лагеря бандитов, тайники с предметами, засады и другие локации, созданные событиями.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/world/sites
Response:
{
"success": true,
"data": [
{
"id": 12,
"name": "outpost",
"tile": 712,
"faction": {
"load_id": 7,
"def_name": "PirateWaster",
"name": "Gas Crew",
"is_player": false,
"leader_title": "Moral Thug",
"leader_id": 59
}
},
{
"id": 13,
"name": "bandit camp",
"tile": 2720,
"faction": {
"load_id": 7,
"def_name": "PirateWaster",
"name": "Gas Crew",
"is_player": false,
"leader_title": "Moral Thug",
"leader_id": 59
}
}
],
"errors": [],
"warnings": [],
"timestamp": "2025-12-13T11:04:31.8428299Z"
}
GET
/api/v1/world/tile
¶
/api/v1/world/tile
¶
Возвращает подробную экологическую и географическую информацию о конкретном секторе мира (tile) на основе его ID. Возвращает данные о биоме, температуре, высоте над уровнем моря, а также о дорогах и реках.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/world/tile?id=12345"
Response:
{
"success": true,
"data": {
"id": 232,
"biome": "Tundra",
"elevation": 1592.0,
"temperature": -4.1,
"rainfall": 269.0,
"hilliness": "SmallHills",
"roads": [
"DirtRoad",
"DirtRoad"
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-13T11:05:29.488063Z"
}
GET
/api/v1/world/caravan/path
¶
/api/v1/world/caravan/path
¶
Возвращает текущий статус перемещения и запланированный путь для конкретного каравана в мире.
Example:
curl --request GET \
--url "http://localhost:8765/api/v1/world/caravan/path?caravan_id=12"
Response:
{
"success": true,
"data": {
"id": 12,
"moving": true,
"current_tile": 150,
"next_tile": 151,
"progress": 0.45,
"destination_tile": 180,
"path": [
151,
152,
160,
180
]
},
"timestamp": "2025-12-11T19:46:05.7088803Z"
}
GET
/api/v1/world/player/settlements
¶
/api/v1/world/player/settlements
¶
Возвращает список всех поселений, принадлежащих фракции игрока.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/world/player/settlements
Response:
{
"success": true,
"data": [
{
"id": 123,
"name": "Player's Hope",
"tile": 5678,
"faction": {
"load_id": 3,
"def_name": "PlayerColony",
"name": "New Arrivals",
"is_player": true
}
}
],
"errors": [],
"warnings": [],
"timestamp": "2026-01-04T12:00:00.000Z"
}
GET
/api/v1/world/grid/area
¶
/api/v1/world/grid/area
¶
Возвращает список секторов мира в пределах заданного радиуса от центрального сектора.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/world/grid/area?tile_id=12345&radius=5'
Response:
{
"success": true,
"data": [
{
"id": 12345,
"biome": "Tundra",
"elevation": 100.0,
"temperature": -10.0,
"rainfall": 200.0,
"hilliness": "SmallHills",
"roads": [],
"rivers": [],
"lat": 60.0,
"lon": -30.0,
"is_polluted": false,
"pollution": 0.0
}
],
"errors": [],
"warnings": [],
"timestamp": "2026-01-04T12:00:00.000Z"
}
GET
/api/v1/world/tile/coordinates
¶
/api/v1/world/tile/coordinates
¶
Возвращает широту и долготу для конкретного ID сектора.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/world/tile/coordinates?id=12345'
Response:
{
"success": true,
"data": {
"lat": 60.0,
"lon": -30.0
},
"errors": [],
"warnings": [],
"timestamp": "2026-01-04T12:00:00.000Z"
}
GET
/api/v1/world/tile/details
¶
/api/v1/world/tile/details
¶
Возвращает подробную информацию о конкретном секторе.
Example:
curl --request GET \
--url 'http://localhost:8765/api/v1/world/tile/details?id=12345'
Response:
{
"success": true,
"data": {
"id": 12345,
"biome": "Tundra",
"elevation": 100.0,
"temperature": -10.0,
"rainfall": 200.0,
"hilliness": "SmallHills",
"roads": [
"279644:StoneRoad",
"279641:StoneRoad"
],
"rivers": [
"279640:Creek",
"279686:Creek"
],
"lat": 60.0,
"lon": -30.0,
"is_polluted": false,
"pollution": 0.0,
"time_zone": "2",
"forageability": 0.5,
"growing_period": "Year-round",
"movement_difficulty": 1.0,
"stone_types": [
"Sandstone",
"Granite"
]
},
"errors": [],
"warnings": [],
"timestamp": "2026-01-04T12:00:00.000Z"
}
GET
/api/v1/world/grid
¶
/api/v1/world/grid
¶
Возвращает всю сетку мира, предоставляя список всех секторов с их основной информацией.
Example:
curl --request GET \
--url http://localhost:8765/api/v1/world/grid
Response:
{
"success": true,
"data": [
{
"id": 0,
"biome": "Ocean",
"elevation": -100.0,
"temperature": 10.0,
"rainfall": 500.0,
"hilliness": "Flat",
"roads": [
"279644:StoneRoad",
"279641:StoneRoad"
],
"rivers": [
"279640:Creek",
"279686:Creek"
],
"lat": -90.0,
"lon": 0.0,
"is_polluted": false,
"pollution": 0.0
}
],
"errors": [],
"warnings": [],
"timestamp": "2026-01-04T12:00:00.000Z"
}
Строительство¶
Контроллер Builder Controller предоставляет инструменты для программного построения и деконструкции. Он позволяет копировать, вставлять и создавать чертежи областей карты.
POST
/api/v1/builder/copy
¶
/api/v1/builder/copy
¶
Скопировать указанную область карты, включая здания, объекты и
местность. Скопированные данные можно использовать для вставки через /api/v1/builder/paste.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/builder/copy \
--header 'content-type: application/json' \
--data '{
"from": { "x": 100, "z": 100 },
"to": { "x": 110, "z": 110 }
}'
Response:
{
"map_id": 0,
"point_a": {"x": 10, "y": 0, "z": 10},
"point_b": {"x": 16, "y": 0, "z": 16}
}
Response:
{
"success":true,
"data": {
"width":7,
"height":7,
"floors": [
{"def_name":"Concrete","rel_x":1,"rel_z":1},
{"def_name":"Concrete","rel_x":3,"rel_z":2}],
"buildings": [
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":0,"rel_z":0,"rotation":0},
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":3,"rel_z":0,"rotation":0},
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":0,"rel_z":1,"rotation":0},
]
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-11T19:15:20.9851409Z"
}
POST
/api/v1/builder/paste
¶
/api/v1/builder/paste
¶
Вставить ранее скопированную область в новое место на карте.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/builder/paste \
--header 'content-type: application/json' \
--data '{
"at": { "x": 150, "z": 150 }
}'
Request:
{
"map_id": 0,
"position": {"x": 80, "y": 0, "z": 80},
"blueprint": {
"width":7,
"height":7,
"floors": [
{"def_name":"Concrete","rel_x":1,"rel_z":1},
{"def_name":"Concrete","rel_x":3,"rel_z":2}],
"buildings": [
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":0,"rel_z":0,"rotation":0},
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":3,"rel_z":0,"rotation":0},
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":0,"rel_z":1,"rotation":0},
]
},
"clear_obstacles": true,
}
Response:
{
"success":true,
"errors":[],
"warnings":[],
"timestamp":"2025-12-31T12:18:40.2019606Z"
}
POST
/api/v1/builder/check-zone
¶
/api/v1/builder/check-zone
¶
Проверяет, можно ли создать зону в заданных ячейках, не совершая фактического создания. Возвращает количество свободных, занятых и выходящих за границы карты ячеек.
Пример:
curl --request POST \
--url http://localhost:8765/api/v1/builder/check-zone \
--header 'content-type: application/json' \
--data '{
"map_id": 0,
"point_a": {"x": 50, "y": 0, "z": 50},
"point_b": {"x": 55, "y": 0, "z": 55}
}'
Запрос:
{
"map_id": 0,
"point_a": {"x": 50, "y": 0, "z": 50},
"point_b": {"x": 55, "y": 0, "z": 55}
}
Ответ:
{
"success": true,
"data": {
"free_cells": 30,
"occupied_cells": 6,
"out_of_bounds_cells": 0,
"can_create": true
},
"errors": [],
"warnings": [],
"timestamp": "2025-12-31T12:18:40.2019606Z"
}
POST
/api/v1/builder/blueprint
¶
/api/v1/builder/blueprint
¶
Вставляет постройку в виде чертежа, создавая задание для поселенцев.
Example:
curl --request POST \
--url http://localhost:8765/api/v1/builder/blueprint \
--header 'content-type: application/json' \
--data '{
"at": { "x": 150, "z": 150 }
}'
Request:
{
"map_id": 0,
"position": {"x": 80, "y": 0, "z": 80},
"blueprint": {
"width":7,
"height":7,
"floors": [
{"def_name":"Concrete","rel_x":1,"rel_z":1},
{"def_name":"Concrete","rel_x":3,"rel_z":2}],
"buildings": [
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":0,"rel_z":0,"rotation":0},
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":3,"rel_z":0,"rotation":0},
{"def_name":"Wall","stuff_def_name":"WoodLog","rel_x":0,"rel_z":1,"rotation":0},
]
},
}
Response:
{
"success":true,
"errors":[],
"warnings":[],
"timestamp":"2025-12-31T12:18:40.2019606Z"
}