duplicate_entities
Duplicate one or more entities in PlayCanvas Editor by providing their UUIDs. Enables efficient replication of 3D web application components.
Instructions
Duplicate one or more entities
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Array of entity IDs to duplicate. The root entity cannot be duplicated. | |
| rename | No |
Implementation Reference
- src/tools/entity.ts:38-48 (registration)MCP tool registration for 'duplicate_entities', including input schema (ids: array of EntityId, optional rename boolean) and handler that calls WSS 'entities:duplicate'.
mcp.tool( 'duplicate_entities', 'Duplicate one or more entities', { ids: z.array(EntityIdSchema).nonempty().describe('Array of entity IDs to duplicate. The root entity cannot be duplicated.'), rename: z.boolean().optional() }, ({ ids, rename }) => { return wss.call('entities:duplicate', ids, { rename }); } ); - extension/main.js:273-281 (handler)WebSocket server handler implementing the duplication logic using PlayCanvas Editor API: fetches entities by IDs, calls api.entities.duplicate, returns JSON.
wsc.method('entities:duplicate', async (ids, options = {}) => { const entities = ids.map((id) => api.entities.get(id)); if (!entities.length) { return { error: 'Entities not found' }; } const res = await api.entities.duplicate(entities, options); log(`Duplicated entities: ${res.map((entity) => entity.get('resource_id')).join(', ')}`); return { data: res.map((entity) => entity.json()) }; }); - src/server.ts:78-78 (registration)Top-level call to register all entity tools, including 'duplicate_entities', on the MCP server.
registerEntity(mcp, wss); - src/tools/entity.ts:41-44 (schema)Input schema for duplicate_entities tool: ids (non-empty array of EntityIdSchema), optional rename boolean.
{ ids: z.array(EntityIdSchema).nonempty().describe('Array of entity IDs to duplicate. The root entity cannot be duplicated.'), rename: z.boolean().optional() },