@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
1 lines • 2.44 kB
JavaScript
;(self.webpackChunkmctools_app=self.webpackChunkmctools_app||[]).push([[68],{69068:(e,t,n)=>{n.d(t,{ContentWriter:()=>a});var s=n(59701),o=n(14466);function i(e){const t=e.split("/");return t[t.length-1]}function r(e){return e.content instanceof Uint8Array||"string"==typeof e.content?e.content:JSON.stringify(e.content,null,2)}function c(e,t,n){if(0===n.length)return;const o=e.ensureFolder(t);for(const e of n)s.Ay.writeFileIfNew(o,i(e.path),r(e))}function l(e,t,n){const o=e.ensureFile(t);if(o.isContentLoaded||e.fileExists(t)){const e=s.Ay.getJsonObject(o);if(e&&"object"==typeof e){const t=s.Ay.deepMergeJsonObjects(e,n);return void o.setContent(JSON.stringify(t,null,2))}}o.setContent(JSON.stringify(n,null,2))}class a{static async writeGeneratedContent(e,t){const n=await e.ensureDefaultBehaviorPackFolder(),a=await e.ensureDefaultResourcePackFolder();if(n&&(c(n,"entities",t.entityBehaviors),c(n,"blocks",t.blockBehaviors),c(n,"items",t.itemBehaviors),c(n,"loot_tables",t.lootTables),c(n,"recipes",t.recipes),c(n,"spawn_rules",t.spawnRules)),a){c(a,"entity",t.entityResources),c(a,"render_controllers",t.renderControllers);for(const e of t.geometries){const t=e.path.split("/"),n=t.length>=2?t[t.length-2]:"entity",o=a.ensureFolder("models").ensureFolder(n);s.Ay.writeFileIfNew(o,i(e.path),r(e))}for(const e of t.textures){const t=e.path.split("/"),n=t.length>=2?t[t.length-2]:"entity",s=a.ensureFolder("textures").ensureFolder(n),r=i(e.path);if(s.fileExists(r)){o.Ay.debug(`Skipping texture "${r}" — file already exists`);continue}const c=s.ensureFile(r);e.content instanceof Uint8Array?c.setContent(e.content):Array.isArray(e.content)?c.setContent(new Uint8Array(e.content)):"string"==typeof e.content?c.setContent(e.content):(o.Ay.debug("WARNING: Texture content is object, will serialize as JSON"),c.setContent(JSON.stringify(e.content,null,2)))}t.terrainTextures&&l(a.ensureFolder("textures"),"terrain_texture.json",t.terrainTextures.content),t.itemTextures&&l(a.ensureFolder("textures"),"item_texture.json",t.itemTextures.content),t.blocksCatalog&&l(a,i(t.blocksCatalog.path),t.blocksCatalog.content),t.soundDefinitions&&l(a,i(t.soundDefinitions.path),t.soundDefinitions.content),t.musicDefinitions&&l(a,i(t.musicDefinitions.path),t.musicDefinitions.content);for(const e of t.sounds){const t=e.path.split("/");l(t.length>=2?a.ensureFolder(t.slice(0,-1).join("/")):a,i(e.path),e.content)}}await e.save()}}}}]);