@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
46 lines (45 loc) • 1.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.SoundDefinitionCatalogSchema = void 0;
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
const zod_1 = require("zod");
// SoundReference zod schema
const SoundReferenceSchema = zod_1.z.object({
name: zod_1.z.string(),
is3D: zod_1.z.boolean().optional(),
stream: zod_1.z.boolean().optional(),
volume: zod_1.z.number().optional(),
weight: zod_1.z.number().optional(),
pitch: zod_1.z.number().optional(),
load_on_low_memory: zod_1.z.boolean().optional(),
});
// SoundDefinition zod schema
const SoundDefinitionSchema = zod_1.z.object({
category: zod_1.z.string().optional(),
__use_legacy_max_distance: zod_1.z.union([zod_1.z.literal("true"), zod_1.z.literal("false"), zod_1.z.boolean()]).optional(),
max_distance: zod_1.z.number().optional().nullable(),
min_distance: zod_1.z.number().optional().nullable(),
sounds: zod_1.z.array(zod_1.z.union([zod_1.z.string(), SoundReferenceSchema])),
});
// Catalog w/ format_version zod schema
const CatalogWithFormatVersionSchema = zod_1.z.object({
format_version: zod_1.z.string(),
sound_definitions: zod_1.z.record(zod_1.z.string(), SoundDefinitionSchema),
});
// Flat Catalog zod Schema
const FlatCatalogEntrySchema = zod_1.z.object({
sounds: zod_1.z.array(zod_1.z.union([
zod_1.z.string(),
zod_1.z.object({
name: zod_1.z.string(),
}),
])),
});
// Catalog w/o format_version
const CatalogWithoutFormatVersionSchema = zod_1.z.record(zod_1.z.string(), FlatCatalogEntrySchema);
// Union of both forms for runtime validation
exports.SoundDefinitionCatalogSchema = zod_1.z.union([
CatalogWithFormatVersionSchema,
CatalogWithoutFormatVersionSchema,
]);